Cuprins:
- Provizii
- Pasul 1: Obținerea datelor GPS
- Pasul 2: Trimiterea datelor GPS prin radio
- Pasul 3: Stocarea datelor folosind un modul de card SD
- Pasul 4: Trimiterea și stocarea datelor GPS
- Pasul 5: Mulțumesc
Video: Smart Buoy [GPS, radio (NRF24) și un modul card SD]: 5 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Această serie Smart Buoy prezintă încercarea noastră (ambițioasă) de a construi o geamandură științifică care poate lua măsurători semnificative despre mare folosind produse de pe raft. Acesta este tutorialul doi din patru - asigurați-vă că sunteți la curent și, dacă aveți nevoie de o introducere rapidă a proiectului, consultați rezumatul nostru.
Partea 1: Efectuarea măsurătorilor de undă și temperatură
În acest tutorial, vă arătăm cum să obțineți date GPS, cum să le stocați pe un card SD și să le trimiteți undeva cu ajutorul radio.
Am făcut acest lucru pentru a putea urmări locația geamandurii noastre maritime. Radioul înseamnă că îl putem viziona de la distanță, iar cardul SD înseamnă că, din întâmplare, ceva se strică și merge la o rătăcire, putem descărca datele pe care le-a colectat în timpul excursiei sale neplanificate - dacă vom reuși vreodată să le recuperăm!
Provizii
Modul GPS - Amazon
Modul card SD - Amazon
Card SD - Amazon
2 module radio X (NRF24L01 +) - Amazon
2 X Arduino - Amazon
Pasul 1: Obținerea datelor GPS
Geamandura inteligentă face măsurători ale senzorului așezat în mare, inclusiv locația GPS și data și ora. Aruncați o privire la schema care arată modul în care am configurat circuitul. Modulul GPS comunică prin conexiune serială, așa că folosim biblioteca serială a software-ului Arduino, precum și mica bibliotecă GPS pentru a comunica cu acesta. Aceste biblioteci fac totul foarte simplu. Să vă prezentăm codul …
#include
#include // Obiectul TinyGPS ++ TinyGPSPlus gps; // Conexiunea serială la dispozitivul GPS SoftwareSerial ss (4, 3); struct dataStruct {latitudine dublă; longitudine dublă; termen lung nesemnat; mult timp nesemnat; } 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 ("Locație nevalidă"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Data nevalidă"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Timp nevalid"); }} void printResults () {Serial.print ("Locație:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print ("Ora:"); Serial.print (gpsData.time); Serial.println (); }
(Vedeți videoclipul pentru acest cod la
Pasul 2: Trimiterea datelor GPS prin radio
Să presupunem că geamandura se află în mare, luând măsurători, dar vrem să vedem datele fără să ne udăm picioarele sau să aducem geamandura la țărm. Pentru a obține măsurătorile de la distanță, folosim un modul radio conectat la un Arduino pe ambele părți ale comunicației. În viitor, vom înlocui receptorul Arduino cu un pi zmeură. Radioul funcționează similar cu ambele interfețe, astfel încât schimbarea acestora este destul de simplă.
Modulul radio comunică utilizând SPI, care necesită câteva conexiuni mai mult decât I2C, dar este încă foarte ușor de utilizat datorită bibliotecii NRF24. Folosind modulul GPS pentru măsurarea senzorului, îi transmitem datele de la un Arduino la altul. Vom conecta modulul GPS și radio la Arduino și, pe de altă parte, un Arduino cu modulul radio - aruncați o privire asupra schemei.
Transmiţător
#include
#include #include #include #include gps TinyGPSPlus; SoftwareSerial ss (4, 3); Radio RF24 (8, 7); // CE, CSN struct dataStruct {latitudine dublă; longitudine dublă; termen lung nesemnat; mult timp nesemnat; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println („Configurarea radioului”); // Configurare emițător 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 („Începând să trimiteți”); } 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; }}
RECEPTOR
#include
#include #include radio RF24 (8, 7); // CE, CSN struct dataStruct {latitudine dublă; longitudine dublă; termen lung nesemnat; mult timp nesemnat; } gpsData; void setup () {Serial.begin (115200); // Configurare receptor 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 („Locație:”); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print ("Ora:"); Serial.print (gpsData.time); Serial.println ();}}
(Vedeți videoclipul pentru acest cod la
Pasul 3: Stocarea datelor folosind un modul de card SD
Modulul radio este destul de fiabil, dar uneori aveți nevoie de un plan de urgență în cazul în care există o întrerupere a curentului pe partea receptorului sau dacă radioul se deplasează în afara razei de acoperire. Planul nostru de urgență este un modul de card SD care ne permite să stocăm datele pe care le colectăm. Cantitatea de date colectate nu este atât de mare, astfel încât chiar și un mic card SD va putea să stocheze cu ușurință datele de o zi.
#include
#include #include #include gps TinyGPSPlus; SoftwareSerial ss (4, 3); struct dataStruct {latitudine dublă; longitudine dublă; termen lung nesemnat; mult timp nesemnat; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Cardul a eșuat sau nu este prezent"); întoarcere; } Serial.println ("card inițializat".); Fișier dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Latitudine, longitudine, dată, oră"); dataFile.close (); } else {Serial.println ("nope nu poate deschide fișierul"); }} 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 ("Locație nevalidă"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Data nevalidă"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Timp nevalid"); }} void printResults () {Serial.print ("Locație:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print ("Ora:"); 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 („nu există fișier de date”); }}
(Vorbim prin acest cod în videoclipul
Pasul 4: Trimiterea și stocarea datelor GPS
Pasul 5: Mulțumesc
Înscrieți-vă la lista noastră de distribuție!
Partea 1: Măsurarea valurilor și a temperaturii
Partea 2: Radio GPS NRF24 și card SD
Partea 3: Programarea puterii la geamandură
Partea 4: Implementarea geamandurii
Recomandat:
Smart Buoy [Rezumat]: 8 pași (cu imagini)
Smart Buoy [Rezumat]: Cu toții iubim litoralul. Ca colectiv, ne adunăm la el pentru sărbători, pentru a ne bucura de sporturi nautice sau pentru a ne asigura existența. Dar coasta este o zonă dinamică la mila valurilor. Creșterea nivelului mării ronțăie pe plaje și evenimente extreme puternice precum uriașul
Modul card SD cu Arduino: Cum să citiți / să scrieți date: 14 pași
Modul de card SD cu Arduino: Cum să citiți / scrieți date: Prezentare generală Stocarea datelor este una dintre cele mai importante părți ale fiecărui proiect. Există mai multe moduri de stocare a datelor în funcție de tipul și dimensiunea datelor. Cardurile SD și micro SD sunt una dintre cele mai practice dintre dispozitivele de stocare, care sunt utilizate în
Radio bidirecțional NRF24 pentru telemetrie: 9 pași (cu imagini)
NRF24 Radio bidirecțional pentru telemetrie: Bună băieți, mă numesc Pedro Castelani și vă aduc primul meu instructable: construirea unui radio bidirecțional cu arduino pentru, ei bine, pentru orice aveți nevoie. În acest proiect, vom face două circuite separate care vor acționa atât ca receptor, cât și ca transmis
Data Logger de temperatură și umiditate de la Arduino la telefonul Android cu modul card SD prin Bluetooth: 5 pași
Data Logger de temperatură și umiditate De la Arduino la telefonul Android Cu modulul cardului SD prin Bluetooth: Bună ziua tuturor, acesta este primul meu instructabil din toate timpurile, sper să ajut comunitatea producătorilor, deoarece am beneficiat de acesta. Adesea folosim senzori în proiectele noastre, dar găsim o modalitate de a colecta datele, de a le stoca și de a le transfera telefoane sau alte dispozitive imediat
Cel mai ieftin modul de card SD Arduino: 5 pași
Cel mai ieftin modul de card SD Arduino: Descriere: Modulul de card SD este utilizat pentru transferul de date către și de pe un card SD standard. Pin out-ul este direct compatibil cu Arduino și poate fi utilizat și cu alte microcontrolere. Ne permite să adăugăm stocarea în masă și înregistrarea datelor la