Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: GPS -tietojen saaminen
- Vaihe 2: GPS -tietojen lähettäminen radion kautta
- Vaihe 3: Tietojen tallentaminen SD -korttimoduulin avulla
- Vaihe 4: GPS -tietojen lähettäminen ja tallentaminen
- Vaihe 5: Kiitos
Video: Smart Buoy [GPS, radio (NRF24) ja SD -korttimoduuli]: 5 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
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
Ä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
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
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
Vaihe 5: 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:
Infrapuna -anturin käyttäminen Arduinon kanssa: 8 vaihetta (kuvien kanssa)
Infrapuna -anturin käyttäminen Arduinon kanssa: Mikä on infrapuna -anturi? . IR -signaali
GPS-moduulin (NEO-6m) liittäminen Arduinon kanssa: 7 vaihetta (kuvien kanssa)
GPS-moduulin (NEO-6m) liittäminen Arduinon kanssa: Tässä projektissa olen osoittanut, kuinka liittää GPS-moduuli Arduino UNO: n kanssa. Pituus- ja leveysasteiden tiedot näkyvät nestekidenäytössä ja sijaintia voi tarkastella sovelluksessa. Luettelo materiaalista Arduino Uno == > 8 dollarin Ublox NEO-6m GPS -moduuli == > 15 dollaria 16x
Quadcoptorin rakentaminen. (NTM 28-30S 800 kV 300 W ja Arducopter APM 2.6 & 6H GPS 3DR Radio ja FlySky TH9X): 25 vaihetta (kuvien kanssa)
Quadcoptorin rakentaminen. (NTM 28-30S 800kV 300W ja Arducopter APM 2.6 & 6H GPS 3DR Radio ja FlySky TH9X): Tämä on opetusohjelma Quadcopterin rakentamisesta käyttäen NTM 28-30S 800kV 300W -moottoreita ja Arducopter APM 2.6 & 6H GPS & 3DR -radio. Olen yrittänyt selittää jokaisen vaiheen useilla kuvilla. Jos sinulla on kysymyksiä tai kommentteja, vastaa
Kuvien tallentaminen tehtävää varten: 4 vaihetta (kuvien kanssa)
Kuvien tallentaminen tehtävää varten: 1. Avaa uusi Google -asiakirja ja suojaa kuvat tällä sivulla. Käytä ctrl (ohjaus) ja " c " kopioitava näppäin 3. Käytä ctrl (control) ja " v " liitettävä avain
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): 11 vaihetta (kuvien kanssa)
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): Jos yrität "Tee saumaton" -laajennusta GIMP: ssä, se tekee kuvasta saumattoman sekä vaaka- että pystysuunnassa samanaikaisesti. Se ei salli sinun tehdä siitä saumatonta vain yhdessä ulottuvuudessa. Tämä ohje auttaa sinua saamaan kuvan