Բովանդակություն:

Smart Buoy [GPS, ռադիո (NRF24) և SD քարտի մոդուլ]. 5 քայլ (նկարներով)
Smart Buoy [GPS, ռադիո (NRF24) և SD քարտի մոդուլ]. 5 քայլ (նկարներով)

Video: Smart Buoy [GPS, ռադիո (NRF24) և SD քարտի մոդուլ]. 5 քայլ (նկարներով)

Video: Smart Buoy [GPS, ռադիո (NRF24) և SD քարտի մոդուլ]. 5 քայլ (նկարներով)
Video: Smart Buoy [Episode 2] - GPS, Radio (NRF24) and a SD card module tutorial 2024, Հուլիսի
Anonim
Image
Image

Այս Smart Buoy շարքը ներկայացնում է գիտական նավ կառուցելու մեր (հավակնոտ) փորձը, որը կարող է իմաստալից չափումներ կատարել ծովի վերաբերյալ ՝ դուրս գրպանից պատրաստված արտադրանքով: Սա չորսից երկուսն են ՝ համոզվեք, որ արդիական եք, և եթե նախագծի արագ ներածման կարիք ունեք, ստուգեք մեր ամփոփագիրը:

Մաս 1. Ալիքների և ջերմաստիճանի չափումներ կատարելը

Այս ձեռնարկում մենք ձեզ ցույց ենք տալիս, թե ինչպես ստանալ GPS տվյալներ, պահել դրանք SD քարտի վրա և դրանք ինչ -որ տեղ ուղարկել ռադիոյի միջոցով:

Մենք դա արեցինք, որպեսզի կարողանանք հետևել մեր ծովային նավակի գտնվելու վայրի մասին: Ռադիոն նշանակում է, որ մենք կարող ենք դիտել այն հեռակա կարգով, իսկ SD քարտը նշանակում է, որ միանգամից ինչ -որ բան խախտում է և գնում թափառման, մենք կարող ենք ներբեռնել այն տվյալները, որոնք նա հավաքել է իր չպլանավորված էքսկուրսիայի ընթացքում, եթե երբևէ կարողանանք այն վերականգնել:

Պարագաներ

GPS մոդուլ - Amazon

SD քարտի մոդուլ - Amazon

SD քարտ - Amazon

2 X ռադիո մոդուլներ (NRF24L01+) - Amazon

2 X Arduino - Ամազոն

Քայլ 1: GPS տվյալների ձեռքբերում

GPS տվյալների փոխանցում ռադիոյի միջոցով
GPS տվյալների փոխանցում ռադիոյի միջոցով

Խելացի նավը սենսորային չափումներ է կատարում ծովում նստած վիճակում, ներառյալ GPS- ի գտնվելու վայրը և տվյալների ժամանակը: Նայեք սխեմային, որը ցույց է տալիս, թե ինչպես ենք մենք միացնում միացումը: GPS մոդուլը հաղորդակցվում է սերիական կապի միջոցով, ուստի մենք դրա հետ շփվելու համար օգտագործում ենք Arduino ծրագրաշարի սերիական գրադարանը, ինչպես նաև փոքրիկ GPS գրադարանը: Այս գրադարանները ամեն ինչ շատ պարզ են դարձնում: Եկեք ձեզ փոխանցենք ծածկագիրը…

#ներառում

#ներառել // TinyGPS ++ օբյեկտը TinyGPSPlus gps; // Սերիական միացում GPS սարքին SoftwareSerial ss (4, 3); struct dataStruct {երկակի լայնություն; կրկնակի երկայնություն; անստորագիր երկար ամսաթիվ; երկար ժամանակ անստորագիր; } gpsData; void setup () {Serial.begin (115200); ss. սկիզբ (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 (); } else {Serial.println ("Անվավեր տեղադրություն"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Անվավեր ամսաթիվ"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Անվավեր ժամանակ"); }} void printResults () {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 (); }

(Դիտեք այս ծածկագրի տեսանյութը

Քայլ 2. GPS տվյալների փոխանցում ռադիոյի միջոցով

GPS տվյալների փոխանցում ռադիոյի միջոցով
GPS տվյալների փոխանցում ռադիոյի միջոցով

Ենթադրենք, որ բոյը չափումներ է կատարում ծովում, բայց մենք ուզում ենք տեսնել տվյալները ՝ առանց ոտքերը թրջելու կամ նավակը ափ հանելու: Չափումները հեռակա կարգով ստանալու համար մենք օգտագործում ենք ռադիո մոդուլ, որը միացված է Arduino- ին կապի երկու կողմերում: Հետագայում ստացողի կողմից Arduino- ն կփոխարինենք ազնվամորու pi- ով: Ռադիոն նման կերպ աշխատում է այս երկու ինտերֆեյսերի հետ, այնպես որ դրանք փոխանակելը բավականին պարզ է:

Ռադիո մոդուլը հաղորդակցվում է SPI- ի միջոցով, որը պահանջում է մի քանի ավելի շատ կապեր, քան I2C- ն, բայց այնուամենայնիվ իսկապես հեշտ է օգտագործել NRF24 գրադարանի պատճառով: Սենսորային չափումների համար օգտագործելով GPS մոդուլը, մենք փոխանցում ենք դրա տվյալները մեկ Arduino- ից մյուսը: Մենք մտադիր ենք միացնել GPS- ը և ռադիո մոդուլը Arduino- ին, իսկ մյուս կողմից ՝ Arduino- ն ռադիո մոդուլի հետ:

Հաղորդիչ

#ներառում

#ներառել #ներառել #ներառել #ներառել TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 ռադիո (8, 7); // CE, CSN struct dataStruct {կրկնակի լայնություն; կրկնակի երկայնություն; անստորագիր երկար ամսաթիվ; երկար ժամանակ անստորագիր; } gpsData; void setup () {Serial.begin (115200); ss. սկիզբ (9600); Serial.println («Ռադիոյի կարգավորում»); // Կարգավորել հաղորդիչ ռադիո radio.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)); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat (); } else {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {gpsData.date = 0; } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {gpsData.time = 0; }}

ՌԵՍԻՎԵՐ

#ներառում

#ներառել #ներառել RF24 ռադիո (8, 7); // CE, CSN struct dataStruct {կրկնակի լայնություն; կրկնակի երկայնություն; անստորագիր երկար ամսաթիվ; երկար ժամանակ անստորագիր; } gpsData; void setup () {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 (); radio.powerUp (); } void loop () {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 քարտի մոդուլի միջոցով տվյալների պահպանում

Ռադիո մոդուլը բավականին հուսալի է, բայց երբեմն ձեզ անհրաժեշտ է արտակարգ իրավիճակների ծրագիր, եթե ստացողի կողմից հոսանքազրկում կա, կամ եթե ռադիոն հեռանում է տիրույթից: Մեր արտակարգ իրավիճակների ծրագիրը SD քարտի մոդուլ է, որը թույլ է տալիս մեզ պահել մեր հավաքած տվյալները: Հավաքագրված տվյալների քանակն այնքան էլ մեծ չէ, այնպես որ նույնիսկ փոքր SD քարտը հեշտությամբ կկարողանա մեկ օրվա արժեքի տվյալներ պահել:

#ներառում

#ներառել #ներառել #ներառել TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {երկակի լայնություն; կրկնակի երկայնություն; անստորագիր երկար ամսաթիվ; երկար ժամանակ անստորագիր; } gpsData; void setup () {Serial.begin (115200); ss. սկիզբ (9600); եթե (! SD.begin (5)) {Serial.println ("Քարտը ձախողվեց, կամ ներկա չէ"); վերադարձ; } Serial.println («քարտը սկզբնականացված է»); Ֆայլի dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Լայնություն, երկայնություն, ամսաթիվ, ժամ"); dataFile.close (); } else {Serial.println ("ոչ, ֆայլը չի կարող բացվել"); }} 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 ("Անվավեր տեղադրություն"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Անվավեր ամսաթիվ"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Անվավեր ժամանակ"); }} void printResults () {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 (); } 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 ("ոչ, ոչ տվյալների ֆայլ"); }}

(Այս կոդի միջոցով մենք խոսում ենք տեսանյութում ՝

Քայլ 4: GPS տվյալների ուղարկում և պահում

GPS տվյալների ուղարկում և պահում
GPS տվյալների ուղարկում և պահում
GPS տվյալների ուղարկում և պահում
GPS տվյալների ուղարկում և պահում

Քայլ 5: Շնորհակալություն:

Շնորհակալություն
Շնորհակալություն

Գրանցվեք մեր Փոստային ցուցակին:

Մաս 1. Ալիքի և ջերմաստիճանի չափում

Մաս 2. GPS NRF24 ռադիո և SD քարտ

Մաս 3. Էլեկտրաէներգիայի պլանավորում

Մաս 4. Բոյոյ տեղակայելը

Խորհուրդ ենք տալիս: