Talaan ng mga Nilalaman:

Smart Buoy [GPS, Radio (NRF24) at isang Module ng SD Card]: 5 Mga Hakbang (na may Mga Larawan)
Smart Buoy [GPS, Radio (NRF24) at isang Module ng SD Card]: 5 Mga Hakbang (na may Mga Larawan)

Video: Smart Buoy [GPS, Radio (NRF24) at isang Module ng SD Card]: 5 Mga Hakbang (na may Mga Larawan)

Video: Smart Buoy [GPS, Radio (NRF24) at isang Module ng SD Card]: 5 Mga Hakbang (na may Mga Larawan)
Video: Smart Buoy Final Project 2024, Hulyo
Anonim
Image
Image

Ang serye ng Smart Buoy na ito ay nag-chart ng aming (ambisyoso) na pagtatangka na bumuo ng isang pang-agham na buoy na maaaring kumuha ng mga makabuluhang pagsukat tungkol sa dagat gamit ang mga produktong wala sa istante. Ito ang tutorial dalawa sa apat - tiyaking napapanahon ka, at kung kailangan mo ng mabilis na pagpapakilala sa proyekto, tingnan ang aming buod.

Bahagi 1: Paggawa ng mga pagsukat ng alon at temperatura

Sa tutorial na ito, ipinapakita namin sa iyo kung paano makakuha ng data ng GPS, iimbak ito sa isang SD card at ipadala ito sa isang lugar gamit ang radyo.

Ginawa namin ito upang masubaybayan namin ang lokasyon ng aming seaborne na si Buoy. Nangangahulugan ang radyo na maaari natin itong panoorin nang malayuan at nangangahulugan ang SD card na sa walang pagkakataon ay may nasira at pupunta ito sa isang paglibot, maaari nating mai-download ang data na nakolekta nito sa hindi planong iskursiyon nito - kung maari nating makuha ito!

Mga gamit

Module ng GPS - Amazon

Module ng SD card - Amazon

SD card - Amazon

2 X module ng Radyo (NRF24L01 +) - Amazon

2 X Arduino - Amazon

Hakbang 1: Pagkuha ng Data sa GPS

Pagpapadala ng Data ng GPS Sa Pamamagitan ng Radyo
Pagpapadala ng Data ng GPS Sa Pamamagitan ng Radyo

Ang matalinong buoy ay gumagawa ng mga pagsukat ng sensor habang nakaupo ito sa dagat, kabilang ang lokasyon ng GPS at datime. Tingnan ang eskematiko na nagpapakita kung paano namin sine-set up ang circuit. Nakikipag-usap ang module ng GPS sa pamamagitan ng serial connection, kaya ginagamit namin ang serial library ng software ng Arduino pati na rin ang maliit na library ng GPS upang makipag-usap dito. Ginagawa ng mga libraryong ito ang lahat na sobrang simple. Dadalhin ka namin sa code …

# isama

#include // The TinyGPS ++ object TinyGPSPlus gps; // Ang serial connection sa aparato ng GPS na SoftwareSerial ss (4, 3); istruktura ang data Bumuo ng {dobleng latitude; dobleng longitude; unsigned mahabang petsa; matagal na hindi pinirmahan; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); } void loop () {habang (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResult (); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } iba pa {Serial.println ("Di-wastong lokasyon"); } kung (gps.date.isValid ()) {gpsData.date = gps.date.value (); } iba pa {Serial.println ("Di-wastong petsa"); } kung (gps.time.isValid ()) {gpsData.time = gps.time.value (); } iba pa {Serial.println ("Di-wastong oras"); }} walang bisa printResult () {Serial.print ("Lokasyon:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Petsa:"); Serial.print (gpsData.date); Serial.print ("Oras:"); Serial.print (gpsData.time); Serial.println (); }

(Suriin ang video para sa code na ito sa

Hakbang 2: Pagpapadala ng Data ng GPS Sa Pamamagitan ng Radyo

Pagpapadala ng Data ng GPS Sa Pamamagitan ng Radyo
Pagpapadala ng Data ng GPS Sa Pamamagitan ng Radyo

Ipagpalagay na ang buoy ay nasa dagat na kumukuha ng mga pagsukat, ngunit nais naming makita ang data nang hindi namamasa ang aming mga paa o dinala ang buoy sa pampang. Upang makuha ang mga pagsukat sa malayo, gumagamit kami ng isang module ng radyo na konektado sa isang Arduino sa magkabilang panig ng komunikasyon. Sa hinaharap, papalitan namin ang panig ng tatanggap ng Arduino ng isang raspberry pi. Gumagana ang radyo nang pareho sa parehong mga interface na ito kaya ang pagpapalit ng mga ito sa paglipas ay medyo prangka.

Nakikipag-usap ang module ng radyo gamit ang SPI, na nangangailangan ng ilang higit pang mga koneksyon kaysa sa I2C ngunit talagang madali pa ring gamitin dahil sa NRF24 library. Gamit ang module ng GPS para sa mga sukat ng sensor, ipinapadala namin ang data nito mula sa isang Arduino patungo sa iba pa. Ikonekta namin ang module ng GPS at radyo sa Arduino at sa kabilang panig isang Arduino na may module ng radyo - tingnan ang eskematiko.

Transmitter

# isama

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); Radyo RF24 (8, 7); // CE, CSN data ng istruktura Bumuo ng {dobleng latitude; dobleng longitude; unsigned mahabang petsa; matagal na hindi pinirmahan; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Pagse-set up ng radyo"); // Setup transmitter 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 ("Simula upang ipadala"); } void loop () {habang (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); radio.write (& gpsData, laki ng (gpsData)); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat (); } iba pa {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } kung (gps.date.isValid ()) {gpsData.date = gps.date.value (); } iba pa {gpsData.date = 0; } kung (gps.time.isValid ()) {gpsData.time = gps.time.value (); } iba pa {gpsData.time = 0; }}

TANGGAP

# isama

# isama ang # isama ang radio na RF24 (8, 7); // CE, CSN data ng istruktura Bumuo ng {dobleng latitude; dobleng longitude; unsigned mahabang petsa; matagal na hindi pinirmahan; } gpsData; void setup () {Serial.begin (115200); // Setup receiver radio radio.begin (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radyo.startListening (); radio.enableDynamicPayloads (); radio.powerUp (); } void loop () {if (radio.available ()) {radio.read (& gpsData, sizeof (gpsData)); Serial.print ("Lokasyon:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Petsa:"); Serial.print (gpsData.date); Serial.print ("Oras:"); Serial.print (gpsData.time); Serial.println ();}}

(Suriin ang video para sa code na ito sa

Hakbang 3: Pag-iimbak ng Data Gamit ang isang SD Card Module

Pag-iimbak ng Data Gamit ang isang SD Card Module
Pag-iimbak ng Data Gamit ang isang SD Card Module

Ang module ng radyo ay lubos na maaasahan, ngunit kung minsan kailangan mo ng isang plano na maaaring mangyari kung sakaling may isang hiwa ng kuryente sa panig ng tatanggap o kung ang radyo ay lumilipat sa labas ng saklaw. Ang aming plan na contingency ay isang module ng SD card na nagbibigay-daan sa amin upang maiimbak ang data na kinokolekta namin. Ang dami ng nakolektang data ay hindi gaanong kalaki, kaya't kahit isang maliit na SD card ay madaling maiimbak ang halaga ng data sa isang araw.

# isama

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); istruktura ang data Bumuo ng {dobleng latitude; dobleng longitude; unsigned mahabang petsa; matagal na hindi pinirmahan; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); kung (! SD.begin (5)) {Serial.println ("Nabigo ang card, o wala"); bumalik; } Serial.println ("pinasimulan ang card."); File dataFile = SD.open ("gps_data.csv", FILE_WRITE); kung (dataFile) {dataFile.println ("Latitude, Longitude, Date, Time"); dataFile.close (); } iba pa {Serial.println ("nope cannot open file"); }} void loop () {habang (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResult (); saveInfo (); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } iba pa {Serial.println ("Di-wastong lokasyon"); } kung (gps.date.isValid ()) {gpsData.date = gps.date.value (); } iba pa {Serial.println ("Di-wastong petsa"); } kung (gps.time.isValid ()) {gpsData.time = gps.time.value (); } iba pa {Serial.println ("Di-wastong oras"); }} walang bisa printResult () {Serial.print ("Lokasyon:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Petsa:"); Serial.print (gpsData.date); Serial.print ("Oras:"); Serial.print (gpsData.time); Serial.println (); } void saveInfo () {File dataFile = SD.open ("gps_data.csv", FILE_WRITE); kung (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 (); } iba pa {Serial.println ("nope no datafile"); }}

(Pinag-uusapan namin ang code na ito sa video

Hakbang 4: Pagpapadala at Pag-iimbak ng Data ng GPS

Pagpapadala at Pag-iimbak ng Data ng GPS
Pagpapadala at Pag-iimbak ng Data ng GPS
Pagpapadala at Pag-iimbak ng Data ng GPS
Pagpapadala at Pag-iimbak ng Data ng GPS

Hakbang 5: Salamat

Salamat!
Salamat!

Mag-sign Up sa aming Mail List!

Bahagi 1: Paggawa ng Wave At Pagsukat ng Temperatura

Bahagi 2: GPS NRF24 Radio at SD Card

Bahagi 3: Pag-iiskedyul ng Lakas sa Buoy

Bahagi 4: Pag-deploy ng Buoy

Inirerekumendang: