GPS (Neo-6m) Portable Tracker with Micro SD Card Module
Telemetry วงโคจร: GPS Tracker บันทึกลง MicroSD
การอ่านค่าจากเซ็นเซอร์อุณหภูมิเป็นการทำงานแบบ Local แต่การอ่านค่าจากโมดูล GPS เป็นการเชื่อมต่อ Arduino เข้ากับกลุ่มดาวเทียมขนาดมหึมามูลค่านับพันล้านดอลลาร์ที่ลอยอยู่เหนือพื้นโลก 12,000 ไมล์โดยตรง โปรเจกต์ GPS Portable Tracker บังคับให้นักพัฒนาต้องจัดการกับการแยกวิเคราะห์สตริงความเร็วสูงและซับซ้อน (NMEA decoding) พร้อมทั้งจัดการกับกระบวนการเขียนข้อมูลผ่านฮาร์ดแวร์ SPI ที่มีความหน่วงสูง ซึ่งจำเป็นต่อการบันทึกข้อมูลลงในการ์ด MicroSD อย่างถาวร

เอ็นจิ้นการแยกวิเคราะห์ประโยค NMEA (TinyGPS++)
โมดูล U-Blox NEO-6M สื่อสารผ่าน Serial มาตรฐาน (โดยทั่วไปคือ TX ไปยัง Pin 4 ของ Arduino, RX ไปยัง Pin 3 โดยใช้ SoftwareSerial)
- ข้อมูลดิบที่ส่งออก: GPS ไม่ได้ส่งค่า "New York" ออกมา ทุกๆ หนึ่งวินาที มันจะปล่อยสตริงที่เข้ารหัสซึ่งไม่สามารถเข้าใจได้และเต็มไปด้วยความโกลาหลที่คั่นด้วยเครื่องหมายจุลภาค:
$GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62 - คุณต้องใช้โครงสร้างไลบรารี
<TinyGPS++.h> - ทุกครั้งที่
SoftwareSerial.available()ทำงาน คุณจะป้อนอักขระทีละตัวเข้าสู่เอ็นจิ้นการเข้ารหัส:
while (gpsSerial.available() > 0) {
gps.encode(gpsSerial.read()); // Feeds the raw characters to the parser!
}
if (gps.location.isUpdated()) {
double currentLat = gps.location.lat(); // Instantly outputs clean decimal math (e.g. 37.8136)!
}
การเขียน Lat/Long ลงในการ์ด SD ผ่าน SPI
เมื่อ C++ ดึงข้อมูล Lat=37.8, Lng=-122.4 ได้แล้ว จะต้องบันทึกข้อมูลนั้นอย่างถาวรก่อนที่ Arduino จะสูญเสียพลังงานบนโดรนหรือรถยนต์
- MicroSD Card Module ใช้บัส SPI ที่สำคัญ (
MOSI/MISO/SCK) - การเปิดและปิดไฟล์บนการ์ด SD
(SD.open("track.csv"))ใช้เวลาไม่กี่มิลลิวินาที ซึ่งอาจบล็อกบัฟเฟอร์SoftwareSerialโดยไม่ตั้งใจ และทำให้ Arduino พลาดข้อมูลดาวเทียม GPS ทั้งหมดได้! - การดำเนินการ: โค้ดใช้อาร์เรย์จัดรูปแบบที่ได้รับการปรับปรุงประสิทธิภาพอย่างมาก มันเชื่อมสตริง:
Lat, Lng, Alt, Time, Speed, เปิดไฟล์ CSV, ส่งสตริงออกไปอย่างรวดเร็วด้วยprintln()เพียงครั้งเดียว, และสั่งfile.close()ทันที!
เมทริกซ์ฮาร์ดแวร์ดาวเทียม
- Arduino Uno/Nano (ประสิทธิภาพการทำงานมาตรฐานก็เพียงพอแล้ว)
- U-Blox NEO-6M GPS Module (ต้องมีเสาอากาศเซรามิกทรงสี่เหลี่ยมแบบแอคทีฟติดอยู่ โดยทั่วไปแล้วจะไม่สามารถรับสัญญาณดาวเทียมเพื่อระบุตำแหน่ง 3D ได้เลยเมื่ออยู่ในอาคาร)
- SPI MicroSD Card Adapter Module + การ์ด SD เปล่าขนาด 8GB
- แบตเตอรี่แพ็ค (Power Bank หรือ 9V) สำหรับพกพาฮาร์ดแวร์ออกไปใช้งานภายนอกภายใต้ท้องฟ้าที่เปิดโล่ง!