Агуулгын хүснэгт:
- Хангамж
- Алхам 1: GPS өгөгдөл авах
- Алхам 2: GPS -ийн өгөгдлийг радиогоор илгээх
- Алхам 3: SD картны модулийг ашиглан өгөгдлийг хадгалах
- Алхам 4: GPS өгөгдлийг илгээх, хадгалах
- Алхам 5: Баярлалаа
Видео: Ухаалаг хөвүүр [GPS, радио (NRF24) ба SD картны модуль]: 5 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:00
Энэхүү Ухаалаг Хөвүүр цуврал нь бэлэн байгаа бүтээгдэхүүнийг ашиглан далайн талаар утга учиртай хэмжилт хийх шинжлэх ухааны хөвүүр бүтээх бидний оролдлого юм. Энэ бол дөрөвний хоёр нь болох зааварчилгаа юм - шинэчлэгдсэн эсэхээ шалгаарай, хэрэв танд төслийн талаар хурдан танилцуулах шаардлагатай бол манай хураангуйг үзнэ үү.
1 -р хэсэг: Долгион ба температурын хэмжилт хийх
Энэхүү гарын авлагад бид GPS -ийн өгөгдлийг хэрхэн олж авах, SD картанд хадгалах, радио ашиглан хаа нэг газар илгээх аргыг харуулах болно.
Бид далайд хөвж буй хөвөх онгоцны байршлыг хянах зорилгоор үүнийг хийсэн. Радио гэдэг нь бид үүнийг алсаас үзэх боломжтой гэсэн үг бөгөөд SD карт нь гэнэт ямар нэгэн зүйл эвдэрч, тэнүүчлэх үед бид төлөвлөөгүй аялалынхаа үеэр цуглуулсан өгөгдлийг татаж авах боломжтой болно.
Хангамж
GPS модуль - Амазон
SD картны модуль - Амазон
SD карт - Амазон
2 X радио модуль (NRF24L01+) - Амазон
2 X Arduino - Амазон
Алхам 1: 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 -ийн өгөгдлийг радиогоор илгээх
Хөвүүр далайд байгаа гэж бодъё, гэхдээ бид хөлөө норгохгүй, хөвүүрийг эрэг дээр аваачихгүйгээр өгөгдлийг харахыг хүсч байна. Хэмжилтийг алсаас авахын тулд бид холбооны хоёр талд 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 карт ч гэсэн нэг өдрийн өгөгдлийг хялбархан хадгалах боломжтой болно.
#оруулах
#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 өгөгдлийг илгээх, хадгалах
Алхам 5: Баярлалаа
Манай захидлын жагсаалтад бүртгүүлнэ үү!
1 -р хэсэг: Долгион ба температурын хэмжилт хийх
2 -р хэсэг: GPS NRF24 радио ба SD карт
3 -р хэсэг: Хөвүүрт хүч хуваарилах
4 -р хэсэг: Хөвүүрийг байрлуулах
Зөвлөмж болгож буй:
Ухаалаг хөвүүр [Дүгнэлт]: 8 алхам (зурагтай)
Ухаалаг хөвүүр [Дүгнэлт]: Бид бүгд далайн эрэгт дуртай. Хамт олны хувьд бид амралтаараа усан спортоор хичээллэх эсвэл амьжиргаагаа залгуулахаар тэнд ирдэг. Гэхдээ эрэг бол долгионы өршөөлд байдаг динамик бүс юм. Далайн түвшин нэмэгдэж байгаа нь далайн эрэг, шуурга гэх мэт хүчтэй үйл явдлуудыг амсдаг
Arduino -тэй SD картны модуль: Өгөгдлийг хэрхэн унших/бичих: 14 алхам
Arduino -тэй SD картны модуль: Өгөгдлийг хэрхэн унших/бичих вэ: Тойм Мэдээллийг хадгалах нь төсөл бүрийн хамгийн чухал хэсгүүдийн нэг юм. Өгөгдлийн төрөл, хэмжээгээр нь хадгалах хэд хэдэн арга байдаг. SD болон микро SD картууд нь хадгалах төхөөрөмжүүдийн дунд хамгийн практик нь юм
Bluetooth -ээр дамжуулан SD картны модуль бүхий Arduino -аас Андройд утас хүртэлх температур ба чийгшлийн мэдээлэл бүртгэгч: 5 алхам
Температур ба чийгшлийн мэдээллийг бүртгэгч нь Arduino -аас Android утас руу SD картын модуль ашиглан Bluetooth -ээр холбогдоно уу: Сайн байцгаана уу, энэ бол миний анхны зааварчилгаа юм. Ихэнхдээ бид төслүүддээ мэдрэгч ашигладаг боловч өгөгдөл цуглуулах, хадгалах, шууд утас эсвэл бусад төхөөрөмж рүү дамжуулах арга замыг хайж олох
Хамгийн хямд Arduino Sd картны модуль: 5 алхам
Хамгийн хямд Arduino Sd картны модуль: Тодорхойлолт: SD картны модулийг стандарт sd карт руу өгөгдөл дамжуулахад ашигладаг. Зүүг гаргах нь Arduino-той шууд нийцдэг бөгөөд бусад микро контроллертой ашиглаж болно. Энэ нь бидэнд их хэмжээний хадгалалт, өгөгдөл бүртгэх боломжийг нэмж өгдөг
Arduino + SD картны модуль: 5 алхам
Arduino + SD картны модуль: Сайн уу найзуудаа YOUTUBE видеог үзээрэй, танд хангалттай. Дэлгэрэнгүй мэдээлэл авахыг хүсвэл бүртгүүлэхээ бүү мартаарай https://www.blogger.com/blogger.g?blogID=2433497353797882246#editor/target=post;postID=5655686325161138749;onPu