Mundarija:

Aqlli buoy [GPS, radio (NRF24) va SD -karta moduli]: 5 qadam (rasmlar bilan)
Aqlli buoy [GPS, radio (NRF24) va SD -karta moduli]: 5 qadam (rasmlar bilan)

Video: Aqlli buoy [GPS, radio (NRF24) va SD -karta moduli]: 5 qadam (rasmlar bilan)

Video: Aqlli buoy [GPS, radio (NRF24) va SD -karta moduli]: 5 qadam (rasmlar bilan)
Video: BUNGE JAN 31, 2019 KIPINDI CHA MASWALI NA MAJIBU 2024, Iyul
Anonim
Image
Image

Bu Smart Buoy seriyasi bizning (shuhratparast) ilmiy mahsulotni yaratishga bo'lgan urinishimizni ko'rsatadi, u dengizdan chiqadigan mahsulotlar yordamida mazmunli o'lchovlarni amalga oshirishi mumkin. Bu to'rtdan ikkitasi - bu yangiliklardan xabardor bo'lishingizga ishonch hosil qiling va agar sizga loyiha bilan tezkor tanishish kerak bo'lsa, bizning xulosamiz bilan tanishing.

1 -qism: To'lqin va haroratni o'lchash

Ushbu qo'llanmada biz sizga GPS ma'lumotlarini qanday olish, SD -kartada saqlash va radio yordamida qayerga yuborish kerakligini ko'rsatamiz.

Biz buni dengizda suzuvchi qayiq qayerda joylashganligini kuzatib borish uchun qildik. Radio shuni anglatadiki, biz uni masofadan turib ko'rishimiz mumkin, SD -karta esa tasodifan biror narsa buzilib, sayrga ketishini bildiradi, agar biz uni rejadan tashqari ekskursiya paytida to'plagan bo'lsak, yuklab olamiz!

Ta'minotlar

GPS moduli - Amazon

SD -karta moduli - Amazon

SD -karta - Amazon

2 ta radio modul (NRF24L01+) - Amazon

2 X Arduino - Amazon

1 -qadam: GPS ma'lumotlarini olish

Radio orqali GPS ma'lumotlarini yuborish
Radio orqali GPS ma'lumotlarini yuborish

Aqlli qayiq dengizda o'tirgan joyida sensori o'lchovlarini, shu jumladan GPS joylashuvi va vaqtini o'lchaydi. Biz sxemani qanday o'rnatganimizni ko'rsatadigan sxemaga qarang. GPS moduli ketma -ket ulanish orqali aloqa o'rnatadi, shuning uchun biz Arduino dasturiy seriyali kutubxonasidan va GPS -kutubxonasidan foydalanamiz. Bu kutubxonalar hamma narsani juda oddiy qiladi. Keling, sizni kod orqali ko'rib chiqaylik …

#qo'shing

#include // TinyGPS ++ obyekti TinyGPSPlus gps; // SoftwareSerial ss GPS qurilmasiga ketma -ket ulanish (4, 3); struct dataStruct {ikki kenglik; ikki uzunlik; imzosiz uzoq sana; uzoq vaqt imzolanmagan; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } boshqa {Serial.println ("Manzil noto'g'ri"); } agar (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Yaroqsiz sana"); } agar (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Noto'g'ri vaqt"); }} void printResults () {Serial.print ("Manzil:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Sana:"); Serial.print (gpsData.date); Serial.print ("Vaqt:"); Serial.print (gpsData.time); Serial.println (); }

(Bu kod uchun videoni https://www.youtube.com/embed/xz1ix76U28E manzilida ko'ring)

2 -qadam: GPS ma'lumotlarini radio orqali yuborish

Radio orqali GPS ma'lumotlarini yuborish
Radio orqali GPS ma'lumotlarini yuborish

Aytaylik, shamshir dengizda o'lchovlarni olib bormoqda, lekin biz oyog'imizni ho'l qilmasdan yoki qayiqni qirg'oqqa olib chiqmasdan turib ma'lumotlarni ko'rishni xohlaymiz. O'lchovlarni masofadan turib olish uchun biz aloqa ikki tomonida Arduino -ga ulangan radio moduldan foydalanamiz. Kelgusida biz qabul qiluvchi tomoni Arduino-ni malina pi bilan almashtiramiz. Radio ikkala interfeys bilan bir xil ishlaydi, shuning uchun ularni almashtirish juda oddiy.

Radio moduli SPI yordamida aloqa o'rnatadi, bu I2C -ga qaraganda bir nechta ulanishni talab qiladi, lekin NRF24 kutubxonasi tufayli hali ham ulardan foydalanish oson. Sensor o'lchovlari uchun GPS moduli yordamida biz uning ma'lumotlarini bir Arduino -dan boshqasiga o'tkazamiz. Biz GPS va radio modulni Arduino -ga, boshqa tomondan esa radio -modulli Arduino -ga ulaymiz - sxemaga qarang.

Transmitter

#qo'shing

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 radiosi (8, 7); // Idoralar, CSN strukturasi dataStruct {ikki kenglik; ikki uzunlik; imzosiz uzoq sana; uzoq vaqt imzolanmagan; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Radio sozlanishi"); // radio radio.begin () uzatgichini sozlash. radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Yuborish boshlandi"); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); radio.write (& gpsData, sizeof (gpsData)); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat (); } boshqa {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } agar (gps.date.isValid ()) {gpsData.date = gps.date.value (); } boshqa {gpsData.date = 0; } agar (gps.time.isValid ()) {gpsData.time = gps.time.value (); } boshqa {gpsData.time = 0; }}

QABUL QILISH

#qo'shing

#include #include RF24 radiosi (8, 7); // Idoralar, CSN strukturasi dataStruct {ikki kenglik; ikki uzunlik; imzosiz uzoq sana; uzoq vaqt imzolanmagan; } gpsData; void setup () {Serial.begin (115200); // radio radio.begin () qabul qilgichini qabul qilgichni sozlash; 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 ("Manzil:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Sana:"); Serial.print (gpsData.date); Serial.print ("Vaqt:"); Serial.print (gpsData.time); Serial.println ();}}

(Bu kod uchun videoni https://www.youtube.com/embed/xz1ix76U28E manzilida ko'ring)

3 -qadam: SD -karta moduli yordamida ma'lumotlarni saqlash

SD -karta moduli yordamida ma'lumotlarni saqlash
SD -karta moduli yordamida ma'lumotlarni saqlash

Radio moduli juda ishonchli, lekin ba'zida qabul qiluvchi tomondan elektr uzilishi yoki radio masofadan tashqariga chiqsa, favqulodda vaziyat rejasi kerak bo'ladi. Favqulodda vaziyatlar rejasi - bu biz to'plagan ma'lumotlarni saqlashga imkon beradigan SD -karta moduli. To'plangan ma'lumotlar miqdori unchalik katta emas, shuning uchun hatto kichik SD -karta ham bir kunlik ma'lumotni osongina saqlay oladi.

#qo'shing

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {ikki kenglik; ikki uzunlik; imzosiz uzoq sana; uzoq vaqt imzolanmagan; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Karta ishlamay qoldi, yoki mavjud emas"); qaytish; } Serial.println ("karta ishga tushirildi."); Fayl ma'lumotlariFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Kenglik, uzunlik, sana, vaqt"); dataFile.close (); } else {Serial.println ("yo'q, faylni ochib bo'lmaydi"); }} void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); saveInfo (); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("Manzil noto'g'ri"); } agar (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Yaroqsiz sana"); } agar (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Noto'g'ri vaqt"); }} void printResults () {Serial.print ("Manzil:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Sana:"); Serial.print (gpsData.date); Serial.print ("Vaqt:"); 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 (); } else {Serial.println ("yo'q fayllar yo'q"); }}

(Biz bu kod orqali https://www.youtube.com/embed/xz1ix76U28E videoda gaplashamiz)

4 -qadam: GPS ma'lumotlarini yuborish va saqlash

GPS ma'lumotlarini yuborish va saqlash
GPS ma'lumotlarini yuborish va saqlash
GPS ma'lumotlarini yuborish va saqlash
GPS ma'lumotlarini yuborish va saqlash

5 -qadam: Rahmat

Rahmat!
Rahmat!

Bizning pochta ro'yxatimizga a'zo bo'ling!

1 -qism: To'lqin va haroratni o'lchash

2 -qism: GPS NRF24 radio va SD -karta

3 -qism: Buoyga quvvatni rejalashtirish

4 -qism: Buoyni joylashtirish

Tavsiya: