Sadržaj:
- Pribor
- Korak 1: Dobivanje GPS podataka
- Korak 2: Slanje GPS podataka putem radija
- Korak 3: Pohranjivanje podataka pomoću modula SD kartice
- Korak 4: Slanje i pohranjivanje GPS podataka
- Korak 5: Hvala
Video: Pametna bova [GPS, radio (NRF24) i modul SD kartice]: 5 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
Ova serija pametnih plutača prikazuje naš (ambiciozan) pokušaj izgradnje znanstvene bove koja može poduzeti značajna mjerenja o moru upotrebom proizvoda dostupnih u prodaji. Ovo je drugi od četiri vodiča - provjerite jeste li ažurirani, a ako trebate brzi uvod u projekt, pogledajte naš sažetak.
Dio 1: Izrada valova i mjerenja 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!
Pribor
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
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 knjižnice čine sve izuzetno jednostavnim. Provedimo vas kroz kôd …
#uključi
#include // Objekt TinyGPS ++ TinyGPSPlus gps; // serijska veza s GPS uređajem SoftwareSerial ss (4, 3); struct dataStruct {dvostruka zemljopisna širina; dvostruka zemljopisna dužina; nepotpisani dugi datum; nepotpisano dugo vrijeme; } gpsData; void setup () {Serial.begin (115200); ss.početak (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 ("Nevažeća lokacija"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Nevažeći datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Neispravno vrijeme"); }} void printResults () {Serial.print ("Lokacija:"); Serijski.ispis (gpsData.latitude, 6); Serial.print (","); Serijski.ispis (gpsData.longitude, 6); Serial.print ("Datum:"); Serijski.ispis (gpsData.date); Serial.print ("Vrijeme:"); Serijski.ispis (gpsData.time); Serial.println (); }
(Pogledajte video za ovaj kôd na
Korak 2: Slanje GPS podataka putem radija
Pretpostavimo da je bova u moru radi mjerenja, ali želimo vidjeti podatke bez namakanja nogu ili dovođenja bove 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 od I2C -a, ali je i dalje vrlo jednostavan za korištenje zbog knjižnice NRF24. Pomoću GPS modula 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 radijskim modulom - pogledajte shemu.
Odašiljač
#uključi
#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); Radio RF24 (8, 7); // CE, CSN struktura dataStruct {dvostruka širina; dvostruka zemljopisna dužina; nepotpisani dugi datum; nepotpisano dugo vrijeme; } gpsData; void setup () {Serial.begin (115200); ss.početak (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; }}
PRIJAMNIK
#uključi
#include #include RF24 radio (8, 7); // CE, CSN struktura dataStruct {dvostruka širina; dvostruka zemljopisna dužina; nepotpisani dugi datum; nepotpisano dugo vrijeme; } 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:"); Serijski.ispis (gpsData.latitude, 6); Serial.print (","); Serijski.ispis (gpsData.longitude, 6); Serial.print ("Datum:"); Serijski.ispis (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
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 toliko velika, pa će čak i mala SD kartica lako moći pohraniti podatke vrijedne jedan dan.
#uključi
#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {dvostruka zemljopisna širina; dvostruka zemljopisna dužina; nepotpisani dugi datum; nepotpisano dugo vrijeme; } gpsData; void setup () {Serial.begin (115200); ss.početak (9600); if (! SD.begin (5)) {Serial.println ("Kartica nije uspjela ili nije prisutna"); povratak; } 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 ("Nevažeća lokacija"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Nevažeći datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Neispravno vrijeme"); }} void printResults () {Serial.print ("Lokacija:"); Serijski.ispis (gpsData.latitude, 6); Serial.print (","); Serijski.ispis (gpsData.longitude, 6); Serial.print ("Datum:"); Serijski.ispis (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"); }}
(Razgovaramo o ovom kodu u videu
Korak 4: Slanje i pohranjivanje GPS podataka
Korak 5: Hvala
Prijavite se na našu mailing listu!
1. dio: Izrada valova i mjerenje temperature
Dio 2: GPS NRF24 radio i SD kartica
3. dio: Raspored napajanja bovi
4. dio: Raspoređivanje bove
Preporučeni:
Ploča za prebacivanje SIM kartice leta: 7 koraka (sa slikama)
Ploča za prebacivanje sim kartica za letače: Nakon što sam proveo mnogo godina u zajednici letećih sim -ova i uključio se u sve složenije zrakoplove, zaželio sam se želje za sposobnošću držanja ruku na fizičkim prekidačima umjesto pokušaja letenja desnom rukom dok koristim m
Pametna bova [Sažetak]: 8 koraka (sa slikama)
Pametna bova [Sažetak]: Svi volimo obalu. Kao kolektiv, okupljamo se na njemu za praznike, za uživanje u sportovima na vodi ili za život. No, obala je dinamično područje prepušteno na milost i nemilost valovima. Rast razine mora gricka plaže i snažne ekstremne događaje poput hurri
Modul SD kartice s Arduinom: Kako čitati/pisati podatke: 14 koraka
Modul SD kartice s Arduinom: Kako čitati/pisati podatke: PregledSnimanje podataka jedan je od najvažnijih dijelova svakog projekta. Postoji nekoliko načina za pohranu podataka prema vrsti i veličini podataka. SD i mikro SD kartice jedne su od najpraktičnijih među uređajima za pohranu, koji se koriste u
NRF24 dvosmjerni radio za telemetriju: 9 koraka (sa slikama)
NRF24 dvosmjerni radio za telemetriju: Bok dečki, moje ime je Pedro Castelani i donosim vam svoje prve upute: izgradnja dvosmjernog radija s arduinom za, pa, sve što vam treba. U ovom projektu napravit ćemo dva odvojena kruga koji će djelovati i kao prijemnik i kao prijenosnik
Modul SD kartice s ESP8266: 6 koraka
Modul SD kartice s ESP8266: U ovom sklopu imamo SD karticu povezanu s ESP8266. Stavili smo DHT22, koji mjeri temperaturu i vlažnost i šalje te podatke na SD karticu. Na krugu prikazuje vlažnost od 43,40 i temperaturu od 26,80. Svaki put kad ja