สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: รับข้อมูล GPS
- ขั้นตอนที่ 2: การส่งข้อมูล GPS ทางวิทยุ
- ขั้นตอนที่ 3: การจัดเก็บข้อมูลโดยใช้โมดูลการ์ด SD
- ขั้นตอนที่ 4: การส่งและจัดเก็บข้อมูล GPS
- ขั้นตอนที่ 5: ขอบคุณ
วีดีโอ: ทุ่นอัจฉริยะ [GPS, Radio (NRF24) และโมดูลการ์ด SD]: 5 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ชุดทุ่นอัจฉริยะนี้แสดงแผนภูมิความพยายาม (ทะเยอทะยาน) ของเราในการสร้างทุ่นทางวิทยาศาสตร์ที่สามารถทำการวัดที่มีความหมายเกี่ยวกับทะเลโดยใช้ผลิตภัณฑ์ที่วางจำหน่าย นี่คือบทช่วยสอนสองในสี่ - ตรวจสอบให้แน่ใจว่าคุณได้รับข้อมูลล่าสุด และหากคุณต้องการคำแนะนำเบื้องต้นเกี่ยวกับโครงการอย่างรวดเร็ว โปรดดูสรุปของเรา
ส่วนที่ 1: การวัดคลื่นและอุณหภูมิ
ในบทช่วยสอนนี้ เราจะแสดงวิธีรับข้อมูล GPS จัดเก็บในการ์ด SD และส่งไปที่ใดที่หนึ่งโดยใช้วิทยุ
เราทำสิ่งนี้เพื่อติดตามตำแหน่งของทุ่นลอยน้ำของเรา วิทยุหมายความว่าเราสามารถรับชมจากระยะไกลได้ และการ์ด SD หมายความว่าหากมีบางสิ่งแตกหักและมันออกไปเดินเล่น เราสามารถดาวน์โหลดข้อมูลที่รวบรวมไว้ระหว่างการเดินทางโดยไม่ได้วางแผนไว้ - หากเราสามารถดึงข้อมูลได้!
เสบียง
โมดูล GPS - Amazon
โมดูลการ์ด SD - Amazon
การ์ด SD - Amazon
2 X โมดูลวิทยุ (NRF24L01+) - Amazon
2 X Arduino - อเมซอน
ขั้นตอนที่ 1: รับข้อมูล GPS
ทุ่นอัจฉริยะทำการวัดเซ็นเซอร์ขณะอยู่ในทะเล รวมถึงตำแหน่ง GPS และวันที่และเวลา ดูแผนผังซึ่งแสดงให้เห็นว่าเราตั้งค่าวงจรอย่างไร โมดูล GPS สื่อสารผ่านการเชื่อมต่อแบบอนุกรม ดังนั้นเราจึงใช้ไลบรารีอนุกรมของซอฟต์แวร์ Arduino เช่นเดียวกับไลบรารี GPS ขนาดเล็กเพื่อสื่อสารกับโมดูลดังกล่าว ไลบรารีเหล่านี้ทำให้ทุกอย่างง่ายสุดๆ มาทำความรู้จักกับโค้ดกัน…
#รวม
#include // วัตถุ TinyGPS++ จีพีเอส TinyGPSPlus; // การเชื่อมต่อแบบอนุกรมกับอุปกรณ์ GPS SoftwareSerial ss (4, 3); โครงสร้าง dataStruct { ละติจูดสองเท่า; ลองจิจูดสองเท่า วันที่ยาวไม่ได้ลงนาม; ไม่ได้ลงนามเป็นเวลานาน } ข้อมูล gps; การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); ss.begin(9600); } void loop(){ ในขณะที่ (ss.available() > 0){ if (gps.encode(ss.read())){ getInfo(); พิมพ์ผลลัพธ์ (); } } } เป็นโมฆะ getInfo(){ if (gps.location.isValid()){ gpsData.latitude = gps.location.lat(); gpsData.longitude = gps.location.lng(); } อื่น { Serial.println ("ตำแหน่งไม่ถูกต้อง"); } if (gps.date.isValid()) { gpsData.date = gps.date.value(); } อื่น { Serial.println ("วันที่ไม่ถูกต้อง"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } อื่น { Serial.println ("เวลาไม่ถูกต้อง"); } } ถือเป็นโมฆะ printResults(){ Serial.print("Location:"); Serial.print (gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print(" วันที่: "); Serial.print (gpsData.date); Serial.print(" เวลา: "); Serial.print (gpsData.time); Serial.println(); }
(ดูวิดีโอสำหรับรหัสนี้ได้ที่
ขั้นตอนที่ 2: การส่งข้อมูล GPS ทางวิทยุ
สมมุติว่าทุ่นอยู่ในทะเลเพื่อวัด แต่เราต้องการดูข้อมูลโดยไม่ทำให้เท้าเปียกหรือยกทุ่นขึ้นฝั่ง ในการรับการวัดจากระยะไกล เราใช้โมดูลวิทยุที่เชื่อมต่อกับ Arduino ทั้งสองด้านของการสื่อสาร ในอนาคต เราจะแทนที่ Arduino ฝั่งผู้รับด้วย raspberry pi วิทยุทำงานเหมือนกันกับอินเทอร์เฟซทั้งสองนี้ ดังนั้นการสลับไปมาจึงค่อนข้างตรงไปตรงมา
โมดูลวิทยุสื่อสารโดยใช้ SPI ซึ่งต้องการการเชื่อมต่อมากกว่า I2C เล็กน้อย แต่ยังใช้งานได้ง่ายมากเนื่องจากไลบรารี NRF24 การใช้โมดูล GPS สำหรับการวัดเซ็นเซอร์ เราจะส่งข้อมูลจาก Arduino ตัวหนึ่งไปยังอีกตัวหนึ่ง เราจะเชื่อมต่อ GPS และโมดูลวิทยุเข้ากับ Arduino และอีกด้านหนึ่งคือ Arduino กับโมดูลวิทยุ - ดูแผนผัง
เครื่องส่ง
#รวม
#include #include #include #include TinyGPSPlus gps; ซอฟต์แวร์Serial ss(4, 3); วิทยุ RF24(8, 7); // CE, CSN จัดโครงสร้าง dataStruct {ละติจูดสองเท่า; ลองจิจูดสองเท่า วันที่ยาวไม่ได้ลงนาม; ไม่ได้ลงนามเป็นเวลานาน } ข้อมูล gps; การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); ss.begin(9600); Serial.println("กำลังตั้งค่าวิทยุ"); // ตั้งค่าตัวส่งสัญญาณวิทยุ radio.begin(); วิทยุ openWritingPipe(0xF0F0F0F0E1LL); radio.setChannel(0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening(); radio.enableDynamicPayloads(); วิทยุ.powerUp(); Serial.println("กำลังเริ่มส่ง"); } วงเป็นโมฆะ () { ในขณะที่ (ss.available () > 0){ if (gps.encode(ss.read())){ getInfo(); radio.write(&gpsData, sizeof(gpsData)); } } } เป็นโมฆะ getInfo(){ if (gps.location.isValid()){ gpsData.longitude = gps.location.lng(); gpsData.latitude = gps.location.lat (); } อื่น ๆ { gpsData.longitude = 0.0; gpsData.latitude = 0.0; } if (gps.date.isValid()) { gpsData.date = gps.date.value(); } อื่น ๆ { gpsData.date = 0; } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } อื่น ๆ { gpsData.time = 0; } }
ผู้รับ
#รวม
#include #include RF24 วิทยุ(8, 7); // CE, CSN จัดโครงสร้าง dataStruct {ละติจูดสองเท่า; ลองจิจูดสองเท่า วันที่ยาวไม่ได้ลงนาม; ไม่ได้ลงนามเป็นเวลานาน } ข้อมูล gps; การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); // ตั้งค่าเครื่องรับวิทยุ radio.begin(); radio.openReadingPipe(1, 0xF0F0F0F0E1LL); radio.setChannel(0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.startListening(); radio.enableDynamicPayloads(); วิทยุ.powerUp(); } วงเป็นโมฆะ () { if (radio.available ()) { radio.read (&gpsData, sizeof (gpsData)); Serial.print("ตำแหน่ง: "); Serial.print (gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print(" วันที่: "); Serial.print (gpsData.date); Serial.print(" เวลา: "); Serial.print (gpsData.time); Serial.println();} }
(ดูวิดีโอสำหรับรหัสนี้ได้ที่
ขั้นตอนที่ 3: การจัดเก็บข้อมูลโดยใช้โมดูลการ์ด SD
โมดูลวิทยุมีความน่าเชื่อถือ แต่บางครั้งคุณจำเป็นต้องมีแผนฉุกเฉินในกรณีที่มีการตัดไฟที่ฝั่งเครื่องรับ หรือหากวิทยุเคลื่อนที่ออกนอกระยะ แผนฉุกเฉินของเราคือโมดูลการ์ด SD ซึ่งช่วยให้เราจัดเก็บข้อมูลที่เรารวบรวมได้ ปริมาณข้อมูลที่รวบรวมไม่มากนัก ดังนั้นแม้แต่การ์ด SD ขนาดเล็กก็สามารถจัดเก็บข้อมูลมูลค่าหนึ่งวันได้อย่างง่ายดาย
#รวม
#include #include #include TinyGPSPlus gps; ซอฟต์แวร์Serial ss(4, 3); โครงสร้าง dataStruct { ละติจูดสองเท่า; ลองจิจูดสองเท่า วันที่ยาวไม่ได้ลงนาม; ไม่ได้ลงนามเป็นเวลานาน } ข้อมูล gps; การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); ss.begin(9600); ถ้า (!SD.begin(5)) { Serial.println ("การ์ดล้มเหลวหรือไม่มีอยู่"); กลับ; } Serial.println("การ์ดเริ่มต้น"); ไฟล์ dataFile = SD.open("gps_data.csv", FILE_WRITE); ถ้า (dataFile) { dataFile.println ("ละติจูด, ลองจิจูด, วันที่, เวลา"); dataFile.close(); } อื่น { Serial.println ("ไม่สามารถเปิดไฟล์ได้"); } } วงเป็นโมฆะ () { ในขณะที่ (ss.available () > 0){ if (gps.encode(ss.read())){ getInfo(); พิมพ์ผลลัพธ์ (); saveInfo(); } } } เป็นโมฆะ getInfo(){ if (gps.location.isValid()){ gpsData.latitude = gps.location.lat(); gpsData.longitude = gps.location.lng(); } อื่น { Serial.println ("ตำแหน่งไม่ถูกต้อง"); } if (gps.date.isValid()) { gpsData.date = gps.date.value(); } อื่น { Serial.println ("วันที่ไม่ถูกต้อง"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } อื่น { Serial.println ("เวลาไม่ถูกต้อง"); } } ถือเป็นโมฆะ printResults(){ Serial.print("Location:"); Serial.print (gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print(" วันที่: "); Serial.print (gpsData.date); Serial.print(" เวลา: "); Serial.print (gpsData.time); Serial.println(); } เป็นโมฆะ saveInfo(){ ไฟล์ dataFile = SD.open("gps_data.csv", FILE_WRITE); ถ้า (dataFile) { dataFile.print (gpsData.latitude); dataFile.print(", "); dataFile.print(gpsData.ลองจิจูด); dataFile.print(", "); dataFile.print(gpsData.date); dataFile.print(", "); dataFile.println (gpsData.time); dataFile.close(); } อื่น ๆ { Serial.println ("ไม่มี datafile"); } }
(เราคุยผ่านโค้ดนี้ในวิดีโอ
ขั้นตอนที่ 4: การส่งและจัดเก็บข้อมูล GPS
ขั้นตอนที่ 5: ขอบคุณ
ลงชื่อสมัครใช้รายชื่อผู้รับจดหมายของเรา!
ส่วนที่ 1: การวัดคลื่นและอุณหภูมิ
ส่วนที่ 2: GPS NRF24 วิทยุและการ์ด SD
ส่วนที่ 3: การจัดตารางอำนาจไปยังทุ่น
ส่วนที่ 4: การปรับใช้ทุ่น
แนะนำ:
BOSEBerry Pi Internet Radio: 4 ขั้นตอน (พร้อมรูปภาพ)
BOSEBerry Pi Internet Radio: ฉันชอบฟังวิทยุ! ฉันใช้วิทยุ DAB ในบ้าน แต่พบว่าการรับสัญญาณค่อนข้างหยาบและเสียงขาดหาย ดังนั้นฉันจึงตัดสินใจสร้างวิทยุอินเทอร์เน็ตของตัวเอง ฉันมีสัญญาณ wifi แรงรอบบ้านและพี่ชายดิจิทัล
ทุ่นอัจฉริยะ [สรุป] : 8 ขั้นตอน (พร้อมรูปภาพ)
ทุ่นอัจฉริยะ [สรุป]: เราทุกคนรักชายทะเล พวกเรารวมตัวกันเพื่อไปเที่ยวพักผ่อน เล่นกีฬาทางน้ำ หรือทำมาหากิน แต่ชายฝั่งเป็นพื้นที่ที่มีพลวัตแห่งคลื่น ระดับน้ำทะเลที่สูงขึ้นกัดกินชายหาดและเหตุการณ์สุดขั้วอย่างเฮอริเท
NRF24 Two-Way Radio for Telemetry: 9 ขั้นตอน (พร้อมรูปภาพ)
NRF24 Two-Way Radio for Telemetry: สวัสดีทุกคน ฉันชื่อ Pedro Castelani และฉันกำลังนำคำแนะนำแรกของฉันมาให้คุณ: การสร้างวิทยุสองทางด้วย Arduino สำหรับสิ่งที่คุณต้องการ ในโครงการนี้ เราจะทำ วงจรแยกสองวงจรซึ่งจะทำหน้าที่เป็นทั้งตัวรับและส่งสัญญาณ
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ
วิธีเชื่อมต่อ DeLorme Earthmate GPS LT-20 กับ Google Earth ของคุณสำหรับแผนที่การติดตาม GPS ที่ยอดเยี่ยม: 5 ขั้นตอน
วิธีเชื่อมต่อ DeLorme Earthmate GPS LT-20 กับ Google Earth ของคุณสำหรับแผนที่การติดตาม GPS ที่ยอดเยี่ยม: ฉันจะแสดงวิธีเชื่อมต่ออุปกรณ์ GPS กับโปรแกรม Google Earth ยอดนิยมโดยไม่ต้องใช้ Google Earth Plus ฉันไม่มีงบประมาณมากดังนั้นฉันสามารถรับประกันได้ว่าจะถูกที่สุด