Orodha ya maudhui:

Smart Buoy [GPS, Redio (NRF24) na Moduli ya Kadi ya SD]: Hatua 5 (na Picha)
Smart Buoy [GPS, Redio (NRF24) na Moduli ya Kadi ya SD]: Hatua 5 (na Picha)

Video: Smart Buoy [GPS, Redio (NRF24) na Moduli ya Kadi ya SD]: Hatua 5 (na Picha)

Video: Smart Buoy [GPS, Redio (NRF24) na Moduli ya Kadi ya SD]: Hatua 5 (na Picha)
Video: SCARED TO DEATH! But I didn’t understand A THING! 2024, Novemba
Anonim
Image
Image

Mfululizo huu wa Smart Buoy unatafuta jaribio letu (kabambe) la kujenga boya la kisayansi ambalo linaweza kuchukua vipimo vya maana juu ya bahari kutumia bidhaa zisizo za rafu. Hii ni mafunzo mawili kati ya manne - hakikisha umesasisha, na ikiwa unahitaji utangulizi wa haraka kwa mradi huo, angalia muhtasari wetu.

Sehemu ya 1: Kufanya vipimo vya wimbi na joto

Katika mafunzo haya, tunakuonyesha jinsi ya kupata data ya GPS, kuihifadhi kwenye kadi ya SD na kuipeleka mahali pengine kwa kutumia redio.

Tulifanya hivyo ili tuweze kufuatilia eneo la Buoy yetu ya baharini. Redio inamaanisha kuwa tunaweza kuiangalia kwa mbali na kadi ya SD inamaanisha kuwa kwa bahati mbaya kitu kinavunjika na huenda kwa tanga, tunaweza kupakua data iliyokusanywa wakati wa safari yake isiyopangwa - ikiwa tunaweza kuipata tena!

Vifaa

Moduli ya GPS - Amazon

Moduli ya kadi ya SD - Amazon

Kadi ya SD - Amazon

Moduli 2 za Redio X (NRF24L01 +) - Amazon

2 X Arduino - Amazon

Hatua ya 1: Kupata Takwimu za GPS

Kutuma Takwimu za GPS Kupitia Redio
Kutuma Takwimu za GPS Kupitia Redio

Buoy smart hufanya vipimo vya sensorer wakati inakaa baharini, pamoja na eneo la GPS na wakati wa wakati. Angalia mpango ambao unaonyesha jinsi tunavyoweka mzunguko. Moduli ya GPS inawasiliana kupitia unganisho la serial, kwa hivyo tunatumia maktaba ya serial ya programu ya Arduino na vile vile maktaba ndogo ya GPS kuwasiliana nayo. Maktaba hizi hufanya kila kitu kuwa rahisi sana. Wacha tukupitishe kupitia nambari …

# pamoja

#jumuisha // Kitu cha TinyGPS ++ TinyGPSPlus gps; // Uunganisho wa serial kwa kifaa cha GPS SoftwareSerial ss (4, 3); data dataStruct {latitudo mbili; longitudo mbili; tarehe ndefu isiyosainiwa; muda mrefu usiosainiwa; } gpsData; kuanzisha batili () {Serial.begin (115200); anza (9600); } kitanzi batili () {wakati (ss zinapatikana ()> 0) {ikiwa (gps.encode (ss.read ())) {getInfo (); magazeti Matokeo (); }}} batili getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } mwingine {Serial.println ("eneo batili"); } ikiwa (gps.date.isValid ()) {gpsData.date = gps.date.value (); } mwingine {Serial.println ("Tarehe batili"); } ikiwa (gps.time.isValid ()) {gpsData.time = gps.time.value (); } mwingine {Serial.println ("Wakati batili"); }} matokeo batili ya kuchapisha () {Serial.print ("Mahali:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Printa ya serial (gpsData. longitude, 6); Serial.print ("Tarehe:"); Serial.print (gpsData.date); Serial.print ("Wakati:"); Serial.print (gpsData.time); Serial.println (); }

(Angalia video kwa nambari hii kwenye

Hatua ya 2: Kutuma Takwimu za GPS Kupitia Redio

Kutuma Takwimu za GPS Kupitia Redio
Kutuma Takwimu za GPS Kupitia Redio

Tuseme boya liko baharini linachukua vipimo, lakini tunataka kuona data bila kunyosha miguu yetu au kuleta boya pwani. Ili kupata vipimo kwa mbali, tunatumia moduli ya redio iliyounganishwa na Arduino pande zote mbili za mawasiliano. Katika siku zijazo, tutachukua nafasi ya mpokeaji Arduino na pi ya rasipberry. Redio inafanya kazi vivyo hivyo na viunga hivi viwili hivyo kuwabadilisha ni sawa.

Moduli ya redio inawasiliana kwa kutumia SPI, ambayo inahitaji unganisho zaidi ya I2C lakini bado ni rahisi kutumia kwa sababu ya maktaba ya NRF24. Kutumia moduli ya GPS kwa vipimo vya sensorer, tunasambaza data yake kutoka Arduino moja hadi nyingine. Tutaunganisha moduli ya GPS na redio kwa Arduino na kwa upande mwingine Arduino na moduli ya redio - angalia skimu.

Transmitter

# pamoja

#jumuisha # pamoja na #jumlisha # pamoja na TpsGPSPlus gps; SoftwareSerial ss (4, 3); Redio ya RF24 (8, 7); // CE, CSN struct dataStruct {latitudo mbili; longitudo mbili; tarehe ndefu isiyosainiwa; muda mrefu usiosainiwa; } gpsData; kuanzisha batili () {Serial.begin (115200); anza (9600); Serial.println ("Kuanzisha redio"); // Kuweka redio ya redio ya kusambaza. Anza (); radio.openWritingPipe (0xF0F0F0F0E1LL); seti ya redio. Channel (0x76); redio.setPALevel (RF24_PA_MAX); redio.setDataRate (RF24_250KBPS); redio. Acha Kusikiliza (); radio.enableDynamicPayloads (); redio.powerUp (); Serial.println ("Kuanza kutuma"); } kitanzi batili () {wakati (ss zinapatikana ()> 0) {ikiwa (gps.encode (ss.read ())) {getInfo (); andika redio (& gpsData, saizi ya (gpsData)); }}} batili getInfo () {if (gps.location.isValid ()) {gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat (); } mwingine {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } ikiwa (gps.date.isValid ()) {gpsData.date = gps.date.value (); } mwingine {gpsData.date = 0; } ikiwa (gps.time.isValid ()) {gpsData.time = gps.time.value (); } mwingine {gpsData.time = 0; }}

MPOKEZI

# pamoja

# pamoja # redio RF24 (8, 7); // CE, CSN struct dataStruct {latitudo mbili; longitudo mbili; tarehe ndefu isiyosainiwa; muda mrefu usiosainiwa; } gpsData; kuanzisha batili () {Serial.begin (115200); // Redio ya redio ya mpokeaji wa redio. Anza (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); Njia ya redio. Channel (0x76); redio.setPALevel (RF24_PA_MAX); redio.setDataRate (RF24_250KBPS); redio.kuanza Kusikiliza (); radio.enableDynamicPayloads (); redio.powerUp (); } kitanzi batili () {if (radio.available ()) {radio.read (& gpsData, sizeof (gpsData)); Serial.print ("Mahali:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Printa ya serial (gpsData. longitude, 6); Serial.print ("Tarehe:"); Serial.print (gpsData.date); Serial.print ("Wakati:"); Serial.print (gpsData.time); Serial.println ();}}

(Angalia video kwa nambari hii kwa

Hatua ya 3: Kuhifadhi Data Kutumia Moduli ya Kadi ya SD

Kuhifadhi Data Kutumia Moduli ya Kadi ya SD
Kuhifadhi Data Kutumia Moduli ya Kadi ya SD

Moduli ya redio ni ya kuaminika kabisa, lakini wakati mwingine unahitaji mpango wa dharura ikiwa kuna kukatwa kwa nguvu kwa upande wa mpokeaji au ikiwa redio huenda mbali. Mpango wetu wa dharura ni moduli ya kadi ya SD ambayo inatuwezesha kuhifadhi data tunazokusanya. Idadi ya data inayokusanywa sio kubwa sana, kwa hivyo hata kadi ndogo ya SD itaweza kuhifadhi data ya siku kwa urahisi.

# pamoja

# pamoja na # pamoja na # pamoja na TpsGPSPlus gps; SoftwareSerial ss (4, 3); data dataStruct {latitudo mbili; longitudo mbili; tarehe ndefu isiyosainiwa; muda mrefu usiosainiwa; } gpsData; kuanzisha batili () {Serial.begin (115200); anza (9600); ikiwa (! SD.anza (5)) {Serial.println ("Kadi imeshindwa, au haipo"); kurudi; } Serial.println ("kadi imeanzishwa."); Faili ya dataFile = SD.open ("gps_data.csv", FILE_WRITE); ikiwa (dataFile) {dataFile.println ("Latitude, Longitude, Tarehe, Muda"); dataFile. karibu (); } mwingine {Serial.println ("hakuna haiwezi kufungua faili"); }} kitanzi batili () {wakati (ss zinapatikana ()> 0) {ikiwa (gps.encode (ss.read ())) {getInfo (); magazeti Matokeo (); saveInfo (); }}} batili getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } mwingine {Serial.println ("eneo batili"); } ikiwa (gps.date.isValid ()) {gpsData.date = gps.date.value (); } mwingine {Serial.println ("Tarehe batili"); } ikiwa (gps.time.isValid ()) {gpsData.time = gps.time.value (); } mwingine {Serial.println ("Wakati batili"); }} matokeo batili ya kuchapisha () {Serial.print ("Mahali:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Printa ya serial (gpsData. longitude, 6); Serial.print ("Tarehe:"); Serial.print (gpsData.date); Serial.print ("Wakati:"); Serial.print (gpsData.time); Serial.println (); } utupu saveInfo () {File dataFile = SD.open ("gps_data.csv", FILE_WRITE); ikiwa (dataFile) {dataFile.print (gpsData.latitude); dataFile.print (","); dataFile.print (gpsData.longitude); dataFile.print (","); dataFile.print (gpsData.date); dataFile.print (","); dataFile.println (gpsData.time); dataFile. karibu (); } mwingine {Serial.println ("hakuna datafile"); }}

(Tunazungumza kupitia nambari hii kwenye video

Hatua ya 4: Kutuma na Kuhifadhi Data ya GPS

Kutuma na Kuhifadhi Data ya GPS
Kutuma na Kuhifadhi Data ya GPS
Kutuma na Kuhifadhi Data ya GPS
Kutuma na Kuhifadhi Data ya GPS

Hatua ya 5: Asante

Asante!
Asante!

Jisajili kwenye Orodha yetu ya Barua!

Sehemu ya 1: Kutengeneza Wimbi na Upimaji wa Joto

Sehemu ya 2: GPS NRF24 Redio na Kadi ya SD

Sehemu ya 3: Kupanga Nguvu kwa Buoy

Sehemu ya 4: Kupeleka Buoy

Ilipendekeza: