Sisällysluettelo:

Smart Buoy [GPS, radio (NRF24) ja SD -korttimoduuli]: 5 vaihetta (kuvien kanssa)
Smart Buoy [GPS, radio (NRF24) ja SD -korttimoduuli]: 5 vaihetta (kuvien kanssa)

Video: Smart Buoy [GPS, radio (NRF24) ja SD -korttimoduuli]: 5 vaihetta (kuvien kanssa)

Video: Smart Buoy [GPS, radio (NRF24) ja SD -korttimoduuli]: 5 vaihetta (kuvien kanssa)
Video: Ep 65: Internet of Underwater Things 2024, Heinäkuu
Anonim
Image
Image

Tämä Smart Buoy -sarja kuvaa meidän (kunnianhimoista) yritystämme rakentaa tieteellinen poiju, joka voi tehdä merkityksellisiä mittauksia merestä käyttämällä valmiita tuotteita. Tämä on opetusohjelma kaksi neljästä - varmista, että olet ajan tasalla, ja jos tarvitset nopean esittelyn projektiin, tutustu yhteenvetoamme.

Osa 1: Aalto- ja lämpötilamittausten tekeminen

Tässä opetusohjelmassa näytämme, kuinka voit saada GPS -tietoja, tallentaa ne SD -kortille ja lähettää ne jonnekin radion avulla.

Teimme tämän, jotta voisimme seurata merenkulkupoijumme sijaintia. Radio tarkoittaa, että voimme katsella sitä etänä, ja SD -kortti tarkoittaa, että jos jokin sattuu ja se menee vaeltelemaan, voimme ladata sen suunnittelemattoman retken aikana keräämänsä tiedot - jos voimme koskaan hakea sen!

Tarvikkeet

GPS -moduuli - Amazon

SD -korttimoduuli - Amazon

SD -kortti - Amazon

2 X Radiomoduulit (NRF24L01+) - Amazon

2 X Arduino - Amazon

Vaihe 1: GPS -tietojen saaminen

GPS -tietojen lähettäminen radion kautta
GPS -tietojen lähettäminen radion kautta

Älykäs poiju tekee sensorin mittauksia merellä istuessaan, mukaan lukien GPS -sijainti ja päivämäärä. Katso kaaviokuva, joka osoittaa, kuinka asetamme piirin. GPS -moduuli kommunikoi sarjayhteyden kautta, joten käytämme Arduino -ohjelmiston sarjakirjastoa ja pientä GPS -kirjastoa kommunikoidaksesi sen kanssa. Nämä kirjastot tekevät kaikesta erittäin yksinkertaista. Käydään läpi koodi …

#sisältää

#include // TinyGPS ++ -objekti TinyGPSPlus gps; // Sarjayhteys GPS -laitteeseen SoftwareSerial ss (4, 3); structure dataStruct {kaksinkertainen leveysaste; kaksinkertainen pituusaste; allekirjoittamaton pitkä päivämäärä; pitkä aika ilman allekirjoitusta; } gpsData; void setup () {Serial.begin (115200); ss. alku (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 ("Virheellinen sijainti"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Virheellinen päivämäärä"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Virheellinen aika"); }} void printResults () {Serial.print ("Location:"); Sarjajälki (gpsData.latitude, 6); Serial.print (","); Sarjajälki (gpsData.longitude, 6); Serial.print ("Päivämäärä:"); Serial.print (gpsData.date); Serial.print ("Aika:"); Serial.print (gpsData.time); Sarja.println (); }

(Katso tämän koodin video osoitteesta

Vaihe 2: GPS -tietojen lähettäminen radion kautta

GPS -tietojen lähettäminen radion kautta
GPS -tietojen lähettäminen radion kautta

Oletetaan, että poiju on meressä mittaamassa, mutta haluamme nähdä tiedot kastelematta jalkojamme tai tuottamasta poijua rannalle. Saadaksesi mittaukset etänä käytämme radiomoduulia, joka on kytketty Arduinoon viestinnän molemmin puolin. Jatkossa korvaamme vastaanotinpuolen Arduinon vadelmapi: llä. Radio toimii samalla tavalla molempien rajapintojen kanssa, joten niiden vaihtaminen on melko yksinkertaista.

Radiomoduuli kommunikoi SPI: n avulla, joka vaatii muutaman yhteyden enemmän kuin I2C, mutta on silti todella helppokäyttöinen NRF24 -kirjaston ansiosta. Käyttämällä GPS -moduulia anturimittauksiin lähetämme sen tiedot yhdestä Arduinosta toiseen. Yhdistämme GPS- ja radiomoduulin Arduinoon ja toisella puolella Arduinon radiomoduulin kanssa - katso kaaviota.

Lähetin

#sisältää

#Sisällytä #Sisällytä #Sisällytä #Sisällytä TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 -radio (8, 7); // CE, CSN struktuuri dataStruct {kaksinkertainen leveysaste; kaksinkertainen pituusaste; allekirjoittamaton pitkä päivämäärä; pitkä aika ilman allekirjoitusta; } gpsData; void setup () {Serial.begin (115200); ss. alku (9600); Serial.println ("Radion asettaminen"); // Asenna lähettimen radioradio.begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Lähetyksen aloittaminen"); } 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; }}

VASTAANOTIN

#sisältää

#Sisällytä #Sisällytä RF24 -radio (8, 7); // CE, CSN struktuuri dataStruct {kaksinkertainen leveysaste; kaksinkertainen pituusaste; allekirjoittamaton pitkä päivämäärä; pitkä aika ilman allekirjoitusta; } gpsData; void setup () {Serial.begin (115200); // Asenna vastaanottimen radioradio.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 ("Sijainti:"); Sarjajälki (gpsData.latitude, 6); Serial.print (","); Sarjajälki (gpsData.longitude, 6); Serial.print ("Päivämäärä:"); Serial.print (gpsData.date); Serial.print ("Aika:"); Serial.print (gpsData.time); Sarja.println ();}}

(Katso tämän koodin video osoitteesta

Vaihe 3: Tietojen tallentaminen SD -korttimoduulin avulla

Tietojen tallentaminen SD -korttimoduulin avulla
Tietojen tallentaminen SD -korttimoduulin avulla

Radiomoduuli on melko luotettava, mutta joskus tarvitset varautumissuunnitelman, jos vastaanottimen puolella on sähkökatkos tai jos radio siirtyy kantaman ulkopuolelle. Varautumissuunnitelma on SD -korttimoduuli, jonka avulla voimme tallentaa keräämämme tiedot. Kerättävän datan määrä ei ole niin suuri, joten jopa pieni SD -kortti pystyy helposti tallentamaan päivän arvoja.

#sisältää

#Sisällytä #Sisällytä #Sisällytä TinyGPSPlus gps; SoftwareSerial ss (4, 3); structure dataStruct {kaksinkertainen leveysaste; kaksinkertainen pituusaste; allekirjoittamaton pitkä päivämäärä; pitkä aika ilman allekirjoitusta; } gpsData; void setup () {Serial.begin (115200); ss. alku (9600); if (! SD.begin (5)) {Serial.println ("Kortti epäonnistui tai sitä ei ole"); palata; } Serial.println ("kortti alustettu"); Tiedoston dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Leveysaste, pituusaste, päivämäärä, aika"); dataFile.close (); } else {Serial.println ("ei voi avata tiedostoa"); }} 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 ("Virheellinen sijainti"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Virheellinen päivämäärä"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Virheellinen aika"); }} void printResults () {Serial.print ("Location:"); Sarjajälki (gpsData.latitude, 6); Serial.print (","); Sarjajälki (gpsData.longitude, 6); Serial.print ("Päivämäärä:"); Serial.print (gpsData.date); Serial.print ("Aika:"); Serial.print (gpsData.time); Sarja.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 ("ei ei datatiedostoa"); }}

(Puhumme tästä koodista videossa

Vaihe 4: GPS -tietojen lähettäminen ja tallentaminen

GPS -tietojen lähettäminen ja tallentaminen
GPS -tietojen lähettäminen ja tallentaminen
GPS -tietojen lähettäminen ja tallentaminen
GPS -tietojen lähettäminen ja tallentaminen

Vaihe 5: Kiitos

Kiitos!
Kiitos!

Rekisteröidy postituslistallemme!

Osa 1: Aallon ja lämpötilan mittaaminen

Osa 2: GPS NRF24 -radio ja SD -kortti

Osa 3: Virran ajoittaminen poijulle

Osa 4: Poijun käyttöönotto

Suositeltava: