![Pametna boja [GPS, radio (NRF24) in modul kartice SD]: 5 korakov (s slikami) Pametna boja [GPS, radio (NRF24) in modul kartice SD]: 5 korakov (s slikami)](https://i.howwhatproduce.com/images/001/image-901-4-j.webp)
Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08


Ta serija pametnih bov prikazuje naš (ambiciozen) poskus izdelave znanstvene boje, ki lahko smiselno meri morje z izdelki, ki so na voljo. To je druga od štirih vadnic - poskrbite, da ste na tekočem, in če potrebujete hiter uvod v projekt, si oglejte naš povzetek.
1. del: Izvajanje valov in meritev temperature
V tej vadnici vam pokažemo, kako pridobiti podatke GPS, jih shraniti na kartico SD in jih poslati po radiu.
To smo storili, da smo lahko spremljali lokacijo naše pomorske boje. Radio pomeni, da si ga lahko ogledamo na daljavo, kartica SD pa pomeni, da se slučajno kaj pokvari in gre na potepanje, lahko prenesemo podatke, ki jih je zbral med nenačrtovano ekskurzijo - če jih kdaj lahko pridobimo!
Zaloge
GPS modul - Amazon
Modul kartice SD - Amazon
Kartica SD - Amazon
2 X radijski moduli (NRF24L01+) - Amazon
2 X Arduino - Amazon
1. korak: Pridobite podatke GPS

Pametna boja izvaja meritve senzorjev, ko sedi v morju, vključno z GPS lokacijo in datumom. Oglejte si shemo, ki prikazuje, kako smo nastavili vezje. Modul GPS komunicira prek serijske povezave, zato za komunikacijo uporabljamo serijsko knjižnico programske opreme Arduino in majhno knjižnico GPS. Te knjižnice naredijo vse zelo preprosto. Pojdimo skozi kodo …
#vključi
#include // Objekt TinyGPS ++ TinyGPSPlus gps; // serijska povezava z napravo GPS SoftwareSerial ss (4, 3); struct dataStruct {dvojna zemljepisna širina; dvojna dolžina; nepodpisan dolg datum; dolgo podpisan; } gpsData; void setup () {Serial.begin (115200); ss.začetek (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 ("Neveljavna lokacija"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Neveljaven datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Neveljaven čas"); }} 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 ("Čas:"); Serial.print (gpsData.time); Serial.println (); }
(Oglejte si video za to kodo na
2. korak: Pošiljanje podatkov GPS prek radia

Recimo, da boja v morju opravlja meritve, vendar želimo videti podatke, ne da bi si noge zmočile ali boje pripeljale na kopno. Za meritve na daljavo uporabljamo radijski modul, povezan z Arduinom na obeh straneh komunikacije. V prihodnosti bomo Arduino na strani sprejemnika zamenjali z malinovim pi. Radio deluje podobno z obema vmesnikoma, zato je zamenjava precej preprosta.
Radijski modul komunicira prek SPI, ki zahteva nekaj več povezav kot I2C, vendar je zaradi knjižnice NRF24 še vedno zelo enostaven za uporabo. S pomočjo modula GPS za meritve senzorja prenašamo njegove podatke iz enega Arduina v drugega. GPS in radijski modul bomo povezali z Arduinom, na drugi strani pa Arduino z radijskim modulom - poglejte shemo.
Oddajnik
#vključi
#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); Radio RF24 (8, 7); // CE, CSN struct dataStruct {dvojna zemljepisna širina; dvojna dolžina; nepodpisan dolg datum; dolgo podpisan; } gpsData; void setup () {Serial.begin (115200); ss.začetek (9600); Serial.println ("Nastavitev radia"); // Nastavitev oddajnika 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 ("Začetek pošiljanja"); } 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; }}
SPREJEMNIK
#vključi
#include #include radio RF24 (8, 7); // CE, CSN struct dataStruct {dvojna zemljepisna širina; dvojna dolžina; nepodpisan dolg datum; dolgo podpisan; } gpsData; void setup () {Serial.begin (115200); // Nastavitev sprejemnika 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 ("Čas:"); Serial.print (gpsData.time); Serial.println ();}}
(Oglejte si video za to kodo na
3. korak: shranjevanje podatkov z modulom kartice SD

Radijski modul je precej zanesljiv, včasih pa potrebujete načrt ukrepov v primeru izpada električne energije na strani sprejemnika ali če se radio premakne izven dosega. Naš načrt ukrepov ob nepredvidljivih dogodkih je modul kartice SD, ki nam omogoča shranjevanje zbranih podatkov. Količina zbranih podatkov ni tako velika, zato bo tudi majhna kartica SD zlahka shranila podatke za en dan.
#vključi
#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {dvojna zemljepisna širina; dvojna dolžina; nepodpisan dolg datum; dolgo podpisan; } gpsData; void setup () {Serial.begin (115200); ss.začetek (9600); if (! SD.begin (5)) {Serial.println ("Kartica ni uspela ali ni prisotna"); vrnitev; } Serial.println ("kartica inicializirana."); Datoteka dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Latitude, Longitude, Date, Time"); dataFile.close (); } else {Serial.println ("ni mogoče odpreti datoteke"); }} 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 ("Neveljavna lokacija"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Neveljaven datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Neveljaven čas"); }} 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 ("Čas:"); 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 no datafile"); }}
(S to kodo se pogovarjamo v videoposnetku
4. korak: Pošiljanje in shranjevanje podatkov GPS


5. korak: Hvala

Prijavite se na naš poštni seznam!
1. del: Merjenje valov in temperature
2. del: Radio NRF24 GPS in kartica SD
3. del: Načrtovanje napajanja do boje
4. del: Uvajanje boje
Priporočena:
Pametna namizna LED luč - Pametna razsvetljava W/ Arduino - Delovni prostor Neopixels: 10 korakov (s slikami)

Pametna namizna LED luč | Pametna razsvetljava W/ Arduino | Delovni prostor Neopixels: Danes preživljamo veliko časa doma, študiramo in virtualno delamo, zakaj torej ne bi povečali svojega delovnega prostora s prilagojenim in pametnim sistemom osvetlitve, ki temelji na LED -diodah Arduino in Ws2812b. Tukaj vam pokažem, kako zgradite svoj pametni Namizna LED luč, ki
Pametna boja [povzetek]: 8 korakov (s slikami)
![Pametna boja [povzetek]: 8 korakov (s slikami) Pametna boja [povzetek]: 8 korakov (s slikami)](https://i.howwhatproduce.com/images/001/image-657-4-j.webp)
Pametna boja [Povzetek]: Vsi imamo radi morje. Kot kolektiv se vanj zgrinjamo za počitnice, za vodne športe ali za preživljanje. Toda obala je dinamično območje na milost in nemilost valov. Naraščajoča morska gladina grize plaže in močne ekstremne dogodke, kot je hurri
Pametna budilka: pametna budilka iz Raspberry Pi: 10 korakov (s slikami)

Pametna budilka: pametna budilka iz Raspberry Pi: Ste si kdaj želeli pametno uro? Če je tako, je to rešitev za vas! Naredil sem pametno budilko, to je ura, ki jo lahko spremenite glede na spletno stran. Ko se alarm sproži, bo zaslišal zvočni signal in dve lučki bosta
Modul kartice SD z Arduinom: Kako brati/pisati podatke: 14 korakov

Modul kartice SD z Arduinom: Kako brati/pisati podatke: Pregled Shranjevanje podatkov je eden najpomembnejših delov vsakega projekta. Glede na vrsto in velikost podatkov obstaja več načinov shranjevanja podatkov. Kartice SD in micro SD sta eni izmed najbolj praktičnih med pomnilniškimi napravami, ki se uporabljajo v
NRF24 dvosmerni radio za telemetrijo: 9 korakov (s slikami)

NRF24 dvosmerni radio za telemetrijo: Pozdravljeni, moje ime je Pedro Castelani in prinašam vam svoj prvi pouk: izdelava dvosmernega radia z arduinom za, no, karkoli ga potrebujete. V tem projektu bomo naredili dva ločena vezja, ki bosta delovala kot sprejemnik in oddajnik