Sadržaj:

Pametna plutača [GPS, radio (NRF24) i modul SD kartice]: 5 koraka (sa slikama)
Pametna plutača [GPS, radio (NRF24) i modul SD kartice]: 5 koraka (sa slikama)

Video: Pametna plutača [GPS, radio (NRF24) i modul SD kartice]: 5 koraka (sa slikama)

Video: Pametna plutača [GPS, radio (NRF24) i modul SD kartice]: 5 koraka (sa slikama)
Video: Topcon HiPer VR GNSS prijemnik 2024, Juli
Anonim
Image
Image

Ova serija pametnih plutača prikazuje naš (ambiciozan) pokušaj izgradnje znanstvene bove koja može poduzeti značajna mjerenja o moru pomoću proizvoda dostupnih na tržištu. Ovo je drugi od četiri vodiča - provjerite jeste li ažurirani, a ako vam je potreban brz uvod u projekt, pogledajte naš sažetak.

Dio 1: Izrada valova i mjerenje temperature

U ovom vodiču pokazat ćemo vam kako doći do GPS podataka, pohraniti ih na SD karticu i poslati ih putem radija.

To smo učinili kako bismo mogli pratiti lokaciju naše bove na moru. Radio znači da ga možemo gledati daljinski, a SD kartica znači da se slučajno nešto pokvari i ode na lutanje, možemo preuzeti podatke koje je prikupio tijekom neplaniranog izleta - ako ga ikada uspijemo dohvatiti!

Supplies

GPS modul - Amazon

Modul SD kartice - Amazon

SD kartica - Amazon

2 X Radio modula (NRF24L01+) - Amazon

2 X Arduino - Amazon

Korak 1: Dobivanje GPS podataka

Slanje GPS podataka putem radija
Slanje GPS podataka putem radija

Pametna bova vrši mjerenje senzora dok sjedi u moru, uključujući GPS lokaciju i datum i vrijeme. Pogledajte shemu koja prikazuje kako smo postavili krug. GPS modul komunicira putem serijske veze, pa za komunikaciju s njim koristimo serijsku biblioteku softvera Arduino, kao i malu GPS biblioteku. Ove biblioteke čine sve super jednostavnim. Provedimo vas kroz kôd …

#include

#include // Objekat TinyGPS ++ TinyGPSPlus gps; // serijska veza s GPS uređajem SoftwareSerial ss (4, 3); struct dataStruct {dvostruka širina; dvostruka geografska dužina; nepotpisani dugi datum; nepotpisano dugo; } 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 (); } else {Serial.println ("Neispravna lokacija"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Neispravan datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Neispravno vrijeme"); }} void printResults () {Serial.print ("Lokacija:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Datum:"); Serial.print (gpsData.date); Serial.print ("Vrijeme:"); Serial.print (gpsData.time); Serial.println (); }

(Pogledajte video zapis za ovaj kôd na

Korak 2: Slanje GPS podataka putem radija

Slanje GPS podataka putem radija
Slanje GPS podataka putem radija

Pretpostavimo da je bova u moru radi mjerenja, ali želimo vidjeti podatke bez da smo smočili noge ili izbacili bovu na obalu. Za daljinska mjerenja koristimo radio modul spojen na Arduino s obje strane komunikacije. U budućnosti ćemo Arduino sa prijemnika zamijeniti pi sa malinom. Radio radi slično s oba ova sučelja pa je zamjena prilično jednostavna.

Radio modul komunicira pomoću SPI -a, koji zahtijeva nekoliko više veza nego I2C, ali je i dalje vrlo jednostavan za korištenje zbog biblioteke NRF24. Koristeći GPS modul za mjerenje senzora, prenosimo njegove podatke s jednog Arduina na drugi. Spojit ćemo GPS i radio modul na Arduino, a s druge strane Arduino s radio modulom - pogledajte shemu.

Odašiljač

#include

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); Radio RF24 (8, 7); // CE, CSN struktura dataStruct {dvostruka širina; dvostruka geografska dužina; nepotpisani dugi datum; nepotpisano dugo; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Postavljanje radija"); // Postavljanje odašiljača radio 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 ("Počinje slanje"); } 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; }}

RECEIVER

#include

#include #include RF24 radio (8, 7); // CE, CSN struktura dataStruct {dvostruka širina; dvostruka geografska dužina; nepotpisani dugi datum; nepotpisano dugo; } gpsData; void setup () {Serial.begin (115200); // Postavljanje prijemnika radio 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 ("Lokacija:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Datum:"); Serial.print (gpsData.date); Serial.print ("Vrijeme:"); Serial.print (gpsData.time); Serial.println ();}}

(Pogledajte video za ovaj kôd na

Korak 3: Pohranjivanje podataka pomoću modula SD kartice

Pohranjivanje podataka pomoću modula SD kartice
Pohranjivanje podataka pomoću modula SD kartice

Radio modul je prilično pouzdan, ali ponekad vam je potreban plan za slučaj nepredviđenih situacija u slučaju nestanka struje na prijemniku ili ako se radio pomakne izvan dometa. Naš plan za nepredviđene situacije je modul SD kartice koji nam omogućuje pohranu podataka koje prikupljamo. Količina prikupljenih podataka nije tako velika, pa će čak i mala SD kartica lako moći pohraniti podatke vrijedne jedan dan.

#include

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {dvostruka širina; dvostruka geografska dužina; nepotpisani dugi datum; nepotpisano dugo; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Kartica nije uspjela ili nije prisutna"); return; } Serial.println ("kartica inicijalizirana."); Datoteka dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Latitude, Longitude, Date, Time"); dataFile.close (); } else {Serial.println ("ne mogu otvoriti datoteku"); }} 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 ("Neispravna lokacija"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Neispravan datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Neispravno vrijeme"); }} void printResults () {Serial.print ("Lokacija:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Datum:"); Serial.print (gpsData.date); Serial.print ("Vrijeme:"); 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 ("nope bez datoteke podataka"); }}

(O ovom kodu razgovaramo u videu

Korak 4: Slanje i skladištenje GPS podataka

Slanje i skladištenje GPS podataka
Slanje i skladištenje GPS podataka
Slanje i skladištenje GPS podataka
Slanje i skladištenje GPS podataka

Korak 5: Hvala

Hvala!
Hvala!

Prijavite se na našu mailing listu!

Dio 1: Mjerenje valova i temperature

Dio 2: GPS NRF24 radio i SD kartica

Dio 3: Raspored napajanja bovi

Dio 4: Raspoređivanje bove

Preporučuje se: