Агуулгын хүснэгт:

Ухаалаг хөвүүр [GPS, радио (NRF24) ба SD картны модуль]: 5 алхам (зурагтай)
Ухаалаг хөвүүр [GPS, радио (NRF24) ба SD картны модуль]: 5 алхам (зурагтай)

Видео: Ухаалаг хөвүүр [GPS, радио (NRF24) ба SD картны модуль]: 5 алхам (зурагтай)

Видео: Ухаалаг хөвүүр [GPS, радио (NRF24) ба SD картны модуль]: 5 алхам (зурагтай)
Видео: Explore the Beauty of Capri, Italy Walking Tour - 4K 60fps - with Captions 2024, Арваннэгдүгээр
Anonim
Image
Image

Энэхүү Ухаалаг Хөвүүр цуврал нь бэлэн байгаа бүтээгдэхүүнийг ашиглан далайн талаар утга учиртай хэмжилт хийх шинжлэх ухааны хөвүүр бүтээх бидний оролдлого юм. Энэ бол дөрөвний хоёр нь болох зааварчилгаа юм - шинэчлэгдсэн эсэхээ шалгаарай, хэрэв танд төслийн талаар хурдан танилцуулах шаардлагатай бол манай хураангуйг үзнэ үү.

1 -р хэсэг: Долгион ба температурын хэмжилт хийх

Энэхүү гарын авлагад бид GPS -ийн өгөгдлийг хэрхэн олж авах, SD картанд хадгалах, радио ашиглан хаа нэг газар илгээх аргыг харуулах болно.

Бид далайд хөвж буй хөвөх онгоцны байршлыг хянах зорилгоор үүнийг хийсэн. Радио гэдэг нь бид үүнийг алсаас үзэх боломжтой гэсэн үг бөгөөд SD карт нь гэнэт ямар нэгэн зүйл эвдэрч, тэнүүчлэх үед бид төлөвлөөгүй аялалынхаа үеэр цуглуулсан өгөгдлийг татаж авах боломжтой болно.

Хангамж

GPS модуль - Амазон

SD картны модуль - Амазон

SD карт - Амазон

2 X радио модуль (NRF24L01+) - Амазон

2 X Arduino - Амазон

Алхам 1: GPS өгөгдөл авах

Радиогоор GPS өгөгдөл илгээх
Радиогоор GPS өгөгдөл илгээх

Ухаалаг хөвүүр нь далайд сууж байхдаа GPS -ийн байршил, цагийг багтаасан мэдрэгчийн хэмжилтийг хийдэг. Бид хэлхээг хэрхэн яаж тохируулж байгааг харуулсан схемийг үзнэ үү. GPS модуль нь цуваа холболтоор холбогддог тул бид Arduino програм хангамжийн цуваа номын сан, түүнтэй харилцах жижиг GPS номын санг ашиглаж байна. Эдгээр номын сан нь бүх зүйлийг маш энгийн болгодог. Кодоор дамжуулж үзье …

#оруулах

#include // TinyGPS ++ объект TinyGPSPlus gps; // SoftwareSerial ss (4, 3) GPS төхөөрөмжийн цуваа холболт; struct dataStruct {давхар өргөрөг; давхар уртраг; гарын үсэг зураагүй урт огноо; удаан хугацаагаар гарын үсэг зураагүй; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); }}} хүчингүй 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 ("Буруу цаг"); }} void printResults () {Serial.print ("Байршил:"); Цуваа.хэвлэх (gpsData.latitude, 6); Serial.print (","); Цуваа.хэвлэх (gpsData.longitude, 6); Serial.print ("Огноо:"); Serial.print (gpsData.date); Serial.print ("Цаг:"); Serial.print (gpsData.time); Serial.println (); }

(Энэ кодын видеог https://www.youtube.com/embed/xz1ix76U28E дээрээс үзнэ үү)

Алхам 2: GPS -ийн өгөгдлийг радиогоор илгээх

Радиогоор GPS өгөгдөл илгээх
Радиогоор GPS өгөгдөл илгээх

Хөвүүр далайд байгаа гэж бодъё, гэхдээ бид хөлөө норгохгүй, хөвүүрийг эрэг дээр аваачихгүйгээр өгөгдлийг харахыг хүсч байна. Хэмжилтийг алсаас авахын тулд бид холбооны хоёр талд Arduino -той холбогдсон радио модулийг ашиглаж байна. Ирээдүйд бид хүлээн авагч талын Arduino-ийг бөөрөлзгөнө pi-ээр солих болно. Радио нь эдгээр хоёр интерфэйстэй ижил төстэй ажилладаг тул тэдгээрийг хооронд нь солих нь маш энгийн юм.

Радио модуль нь SPI ашиглан холбогддог бөгөөд энэ нь I2C -ээс хэд хэдэн холболт шаарддаг боловч NRF24 номын сангийн ачаар ашиглахад хялбар хэвээр байна. Мэдрэгчийн хэмжилт хийх GPS модулийг ашиглан бид түүний өгөгдлийг нэг Arduino -аас нөгөө рүү дамжуулдаг. Бид GPS болон радио модулийг Arduino -д, нөгөө талд нь Arduino -ийг радио модультай холбох гэж байна - схемийг үзнэ үү.

Дамжуулагч

#оруулах

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 радио (8, 7); // CE, CSN struct dataStruct {давхар өргөрөг; давхар уртраг; гарын үсэг зураагүй урт огноо; удаан хугацаагаар гарын үсэг зураагүй; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Радио тохируулах"); // дамжуулагч радио радио тохируулах.begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Илгээж эхэлж байна"); } void loop () {while (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; }}

Хүлээн авагч

#оруулах

#оруулах #оруулах RF24 радио (8, 7); // CE, CSN struct dataStruct {давхар өргөрөг; давхар уртраг; гарын үсэг зураагүй урт огноо; удаан хугацаагаар гарын үсэг зураагүй; } gpsData; void setup () {Serial.begin (115200); // Радио хүлээн авагчийг тохируулах.begin (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.startListening (); radio.enableDynamicPayloads (); radio.powerUp (); } void loop () {if (radio.available ()) {radio.read (& gpsData, sizeof (gpsData)); Serial.print ("Байршил:"); Цуваа.хэвлэх (gpsData.latitude, 6); Serial.print (","); Цуваа.хэвлэх (gpsData.longitude, 6); Serial.print ("Огноо:"); Serial.print (gpsData.date); Serial.print ("Цаг:"); Serial.print (gpsData.time); Serial.println ();}}

(Энэ кодын видеог https://www.youtube.com/embed/xz1ix76U28E дээрээс үзнэ үү)

Алхам 3: SD картны модулийг ашиглан өгөгдлийг хадгалах

SD картны модулийг ашиглан өгөгдлийг хадгалах
SD картны модулийг ашиглан өгөгдлийг хадгалах

Радио модуль нь нэлээд найдвартай боловч заримдаа хүлээн авагчийн талд цахилгаан тасарсан эсвэл радио нь хязгаараас хэтэрсэн тохиолдолд танд гэнэтийн ослын төлөвлөгөө хэрэгтэй болно. Бидний болзошгүй төлөвлөгөө бол цуглуулсан өгөгдлийг хадгалах боломжийг олгодог SD картны модуль юм. Цуглуулж буй мэдээллийн тоо тийм ч том биш тул жижиг SD карт ч гэсэн нэг өдрийн өгөгдлийг хялбархан хадгалах боломжтой болно.

#оруулах

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {давхар өргөрөг; давхар уртраг; гарын үсэг зураагүй урт огноо; удаан хугацаагаар гарын үсэг зураагүй; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Карт амжилтгүй болсон, эсвэл байхгүй байна"); буцах; } Serial.println ("картыг эхлүүлсэн."); File dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Өргөрөг, уртраг, огноо, цаг"); dataFile.close (); } өөр {Serial.println ("үгүй файлыг нээж чадахгүй байна"); }} void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); 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 ("Буруу цаг"); }} void printResults () {Serial.print ("Байршил:"); Цуваа.хэвлэх (gpsData.latitude, 6); Serial.print (","); Цуваа.хэвлэх (gpsData.longitude, 6); Serial.print ("Огноо:"); Serial.print (gpsData.date); Serial.print ("Цаг:"); Serial.print (gpsData.time); Serial.println (); } void saveInfo () {File dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.print (gpsData.latitude); dataFile.print (","); dataFile.print (gpsData.longitude); dataFile.print (","); dataFile.print (gpsData.date); dataFile.print (","); dataFile.println (gpsData.time); dataFile.close (); } өөр {Serial.println ("үгүй өгөгдлийн файл байхгүй"); }}

(Бид энэ кодыг https://www.youtube.com/embed/xz1ix76U28E видеон дээр ярьж байна)

Алхам 4: GPS өгөгдлийг илгээх, хадгалах

GPS өгөгдлийг илгээх, хадгалах
GPS өгөгдлийг илгээх, хадгалах
GPS өгөгдлийг илгээх, хадгалах
GPS өгөгдлийг илгээх, хадгалах

Алхам 5: Баярлалаа

Баярлалаа!
Баярлалаа!

Манай захидлын жагсаалтад бүртгүүлнэ үү!

1 -р хэсэг: Долгион ба температурын хэмжилт хийх

2 -р хэсэг: GPS NRF24 радио ба SD карт

3 -р хэсэг: Хөвүүрт хүч хуваарилах

4 -р хэсэг: Хөвүүрийг байрлуулах

Зөвлөмж болгож буй: