Taula de continguts:
- Subministraments
- Pas 1: Obtenir dades GPS
- Pas 2: enviament de dades GPS per ràdio
- Pas 3: Emmagatzematge de dades mitjançant un mòdul de targeta SD
- Pas 4: enviament i emmagatzematge de dades GPS
- Pas 5: gràcies
Vídeo: Smart Buoy [GPS, ràdio (NRF24) i un mòdul de targeta SD]: 5 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
Aquesta sèrie Smart Buoy mostra el nostre (ambiciós) intent de construir una boia científica que pugui prendre mesures significatives sobre el mar mitjançant productes a la venda. Aquest és el tutorial dos de quatre: assegureu-vos que esteu al dia i, si necessiteu una introducció ràpida al projecte, consulteu el nostre resum.
Part 1: Mesurament d'ones i temperatura
En aquest tutorial, us mostrem com obtenir dades GPS, emmagatzemar-les en una targeta SD i enviar-les a algun lloc mitjançant la ràdio.
Vam fer això per poder fer un seguiment de la ubicació de la nostra boia per via marítima. La ràdio significa que podem veure-la de forma remota i que la targeta SD significa que, si de cas, es trenca alguna cosa i es fa un passeig, podem descarregar les dades que va recollir durant la seva excursió no planificada, si alguna vegada som capaços de recuperar-la.
Subministraments
Mòdul GPS: Amazon
Mòdul de targeta SD: Amazon
Targeta SD: Amazon
2 mòduls de ràdio X (NRF24L01 +): Amazon
2 X Arduino: Amazon
Pas 1: Obtenir dades GPS
La boia intel·ligent fa mesures del sensor mentre es troba al mar, inclosa la ubicació del GPS i la data i hora. Mireu l’esquema que mostra com configurem el circuit. El mòdul GPS es comunica mitjançant connexió en sèrie, de manera que utilitzem la biblioteca en sèrie del programari Arduino i la petita biblioteca GPS per comunicar-nos-hi. Aquestes biblioteques ho fan tot molt senzill. Us expliquem el codi …
#incloure
#include // L'objecte TinyGPS ++ TinyGPSPlus gps; // La connexió en sèrie al dispositiu GPS SoftwareSerial ss (4, 3); struct dataStruct {doble latitud; doble longitud; data llarga sense signar; molt de temps sense signar; } gpsData; configuració nul·la () {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 ("Ubicació no vàlida"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Data no vàlida"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Temps no vàlid"); }} void printResults () {Serial.print ("Ubicació:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print ("Hora:"); Serial.print (gpsData.time); Serial.println (); }
(Mireu el vídeo d’aquest codi a
Pas 2: enviament de dades GPS per ràdio
Suposem que la boia es troba al mar fent mesures, però volem veure les dades sense mullar-nos els peus ni portar la boia a terra. Per obtenir les mesures de forma remota, fem servir un mòdul de ràdio connectat a un Arduino a banda i banda de la comunicació. En el futur, substituirem l’Arduino del receptor per un pi de gerds. La ràdio funciona de manera similar amb aquestes dues interfícies, de manera que canviar-les és bastant senzilla.
El mòdul de ràdio es comunica mitjançant SPI, que requereix algunes connexions més que I2C, però encara és molt fàcil d’utilitzar a causa de la biblioteca NRF24. Mitjançant el mòdul GPS per a les mesures del sensor, transmetem les seves dades d’un Arduino a l’altre. Connectarem el mòdul de ràdio i GPS a l’Arduino i, a l’altra banda, un Arduino amb el mòdul de ràdio. Feu una ullada a l’esquema.
Emissor
#incloure
#include #include #include #include gps TinyGPSPlus; SoftwareSerial ss (4, 3); Ràdio RF24 (8, 7); // CE, CSN struct dataStruct {doble latitud; doble longitud; data llarga sense signar; molt de temps sense signar; } gpsData; configuració nul·la () {Serial.begin (115200); ss.begin (9600); Serial.println ("Configuració de la ràdio"); // Configura el transmissor ràdio 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 ("Començant a enviar"); } 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
#incloure
#include #include RF24 radio (8, 7); // CE, CSN struct dataStruct {doble latitud; doble longitud; data llarga sense signar; molt de temps sense signar; } gpsData; configuració nul·la () {Serial.begin (115200); // Configura el receptor de ràdio 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 ("Ubicació:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print ("Hora:"); Serial.print (gpsData.time); Serial.println ();}}
(Mireu el vídeo d’aquest codi a
Pas 3: Emmagatzematge de dades mitjançant un mòdul de targeta SD
El mòdul de ràdio és bastant fiable, però de vegades necessiteu un pla de contingència en cas que hi hagi un tall d’alimentació al costat del receptor o si la ràdio es mou fora de l’abast. El nostre pla de contingència és un mòdul de targeta SD que ens permet emmagatzemar les dades que recopilem. La quantitat de dades que es recopilen no és tan gran, de manera que fins i tot una targeta SD petita podrà emmagatzemar dades d'un dia.
#incloure
#include #include #include gps de TinyGPSPlus; SoftwareSerial ss (4, 3); struct dataStruct {doble latitud; doble longitud; data llarga sense signar; molt de temps sense signar; } gpsData; configuració nul·la () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("La targeta ha fallat o no està present"); tornar; } Serial.println ("targeta inicialitzada"); Fitxer dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (arxiu de dades) {arxiu de dades.println ("Latitud, longitud, data, hora"); dataFile.close (); } else {Serial.println ("nope no pot obrir el fitxer"); }} 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 ("Ubicació no vàlida"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Data no vàlida"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Temps no vàlid"); }} void printResults () {Serial.print ("Ubicació:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print ("Hora:"); 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 ("no hi ha fitxer de dades"); }}
(Parlem a través d’aquest codi al vídeo
Pas 4: enviament i emmagatzematge de dades GPS
Pas 5: gràcies
Inscriviu-vos a la nostra llista de correu!
Part 1: Mesurament d'ona i temperatura
Part 2: ràdio GPS NRF24 i targeta SD
Part 3: Programació del poder a la boia
Part 4: Desplegament de la boia
Recomanat:
Smart Buoy [Resum]: 8 passos (amb imatges)
Smart Buoy [Resum]: a tots ens encanta la platja. Com a col·lectiu, hi acudim per vacances, per practicar esports aquàtics o per guanyar-nos la vida. Però la costa és una zona dinàmica a mercè de les ones. La pujada del nivell del mar picota a les platges i els esdeveniments extrems de gran abast, com ara l'hurri
Reproductor d'àudio amb Arduino amb targeta Micro SD: 7 passos (amb imatges)
Reproductor d'àudio que utilitza Arduino amb targeta Micro SD: SUBSCRIU el meu canal per a més projectes ……………………. Molta gent vol connectar la targeta SD amb arduino o voleu una sortida d’àudio mitjançant arduino. Així doncs, aquí teniu la forma més senzilla i barata d’interfocar la targeta SD amb arduino. tu ens pots
Targeta de visita amb pantalla tàctil: 8 passos (amb imatges)
Targeta de visita amb pantalla tàctil: sóc enginyer mecànic per titulació, però també he desenvolupat habilitats en enginyeria elèctrica i programació a partir d’anys de projectes de circuits i microcontroladors. Atès que els empresaris esperaran que tinc habilitats en enginyer mecànic
Ràdio bidireccional NRF24 per a telemetria: 9 passos (amb imatges)
Ràdio bidireccional NRF24 per a telemetria: Hola nois, em dic Pedro Castelani i us presento el meu primer instructiu: construir una ràdio bidireccional amb arduino per, bé, per al que la necessiteu. En aquest projecte, farem dos circuits separats que actuaran tant com a receptor com a transmi
Targeta de visita PCB amb NFC: 18 passos (amb imatges)
Targeta de visita PCB amb NFC: Arribat al final dels meus estudis, recentment vaig haver de buscar una pràctica de sis mesos en el camp de l’enginyeria electrònica. Per fer una impressió i maximitzar les meves possibilitats de ser reclutat en companyia dels meus somnis, vaig tenir la idea de fer-me la meva