Obsah:

Smart Buoy [GPS, rádio (NRF24) a modul karty SD]: 5 kroků (s obrázky)
Smart Buoy [GPS, rádio (NRF24) a modul karty SD]: 5 kroků (s obrázky)

Video: Smart Buoy [GPS, rádio (NRF24) a modul karty SD]: 5 kroků (s obrázky)

Video: Smart Buoy [GPS, rádio (NRF24) a modul karty SD]: 5 kroků (s obrázky)
Video: Smart Buoy Final Project 2024, Červenec
Anonim
Image
Image

Tato řada Smart Buoy mapuje náš (ambiciózní) pokus o vybudování vědecké bóje, která může provádět smysluplná měření o moři pomocí běžných produktů. Toto je tutoriál dva ze čtyř - ujistěte se, že jste aktuální, a pokud potřebujete rychlý úvod do projektu, podívejte se na naše shrnutí.

Část 1: Provádění měření vln a teploty

V tomto tutoriálu vám ukážeme, jak získat data GPS, uložit je na kartu SD a odeslat je někam pomocí rádia.

Udělali jsme to, abychom mohli sledovat polohu naší námořní bóje. Rádio znamená, že jej můžeme sledovat na dálku a SD karta znamená, že když se něco stane, že se něco pokazí a jde to na procházku, můžeme si stáhnout data, která shromáždila během své neplánované exkurze - pokud se nám ji někdy podaří získat!

Zásoby

GPS modul - Amazon

Modul karty SD - Amazon

SD karta - Amazon

2 X Rádiové moduly (NRF24L01+) - Amazon

2 X Arduino - Amazon

Krok 1: Získání dat GPS

Odesílání dat GPS prostřednictvím rádia
Odesílání dat GPS prostřednictvím rádia

Chytrá bóje provádí měření senzorů, když sedí v moři, včetně polohy GPS a data a času. Podívejte se na schéma, které ukazuje, jak jsme nastavili obvod. Modul GPS komunikuje prostřednictvím sériového připojení, takže ke komunikaci používáme sériovou knihovnu softwaru Arduino a malou knihovnu GPS. Díky těmto knihovnám je vše velmi jednoduché. Provedeme vás kódem…

#zahrnout

#include // Objekt TinyGPS ++ TinyGPSPlus gps; // Sériové připojení k zařízení GPS SoftwareSerial ss (4, 3); struct dataStruct {dvojitá šířka; dvojitá délka; nepodepsané dlouhé datum; dlouho bez znaménka; } gpsData; neplatné nastavení () {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 ("Neplatné umístění"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Neplatné datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Neplatný čas"); }} void printResults () {Serial.print ("Umístění:"); 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 (); }

(Podívejte se na video s tímto kódem na

Krok 2: Odesílání dat GPS prostřednictvím rádia

Odesílání dat GPS prostřednictvím rádia
Odesílání dat GPS prostřednictvím rádia

Předpokládejme, že bóje je na moři a provádí měření, ale chceme vidět data, aniž bychom si namočili nohy nebo vynesli bóji na břeh. Abychom získali měření na dálku, používáme rádiový modul připojený k Arduinu na obou stranách komunikace. V budoucnu nahradíme Arduino na straně přijímače malinovým pi. Rádio funguje podobně s oběma těmito rozhraními, takže jejich přepnutí je docela jednoduché.

Rádiový modul komunikuje pomocí SPI, který vyžaduje několik připojení navíc než I2C, ale díky knihovně NRF24 je stále velmi snadno použitelný. Pomocí modulu GPS pro měření senzorů přenášíme jeho data z jednoho Arduina do druhého. Připojíme modul GPS a rádio k Arduinu a na druhé straně Arduino s modulem rádia - podívejte se na schéma.

Vysílač

#zahrnout

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); Rádio RF24 (8, 7); // CE, CSN struct dataStruct {dvojitá šířka; dvojitá délka; nepodepsané dlouhé datum; dlouho bez znaménka; } gpsData; neplatné nastavení () {Serial.begin (115200); ss.begin (9600); Serial.println ("Nastavení rádia"); // Nastavení vysílače 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 ("Zahájení odesílání"); } 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; }}

PŘIJÍMAČ

#zahrnout

#include #include RF24 radio (8, 7); // CE, CSN struct dataStruct {dvojitá šířka; dvojitá délka; nepodepsané dlouhé datum; dlouho bez znaménka; } gpsData; neplatné nastavení () {Serial.begin (115200); // Nastavení přijímače 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 („Umístění:“); 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 ();}}

(Podívejte se na video s tímto kódem na

Krok 3: Ukládání dat pomocí modulu SD karty

Ukládání dat pomocí modulu SD karty
Ukládání dat pomocí modulu SD karty

Rádiový modul je docela spolehlivý, ale někdy potřebujete pohotovostní plán pro případ výpadku proudu na straně přijímače nebo pokud se rádio pohybuje mimo dosah. Náš pohotovostní plán je modul karty SD, který nám umožňuje ukládat data, která shromažďujeme. Shromážděné množství dat není tak velké, takže i malá karta SD bude schopna snadno uložit data za celý den.

#zahrnout

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {dvojitá šířka; dvojitá délka; nepodepsané dlouhé datum; dlouho bez znaménka; } gpsData; neplatné nastavení () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Karta selhala nebo není přítomna"); vrátit se; } Serial.println ("karta inicializována."); Soubor dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Latitude, Longitude, Date, Time"); dataFile.close (); } else {Serial.println ("ne, nelze otevřít soubor"); }} 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 ("Neplatné umístění"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Neplatné datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Neplatný čas"); }} void printResults () {Serial.print ("Umístění:"); 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 (); } neplatné 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"); }}

(Tento kód si promluvíme ve videu

Krok 4: Odesílání a ukládání dat GPS

Odesílání a ukládání dat GPS
Odesílání a ukládání dat GPS
Odesílání a ukládání dat GPS
Odesílání a ukládání dat GPS

Krok 5: Díky

Dík!
Dík!

Zaregistrujte se do našeho seznamu adresátů!

Část 1: Měření vln a teploty

Část 2: Rádio GPS NRF24 a karta SD

Část 3: Plánování napájení bóje

Část 4: Nasazení bóje

Doporučuje: