Satura rādītājs:

Viedā boja [GPS, radio (NRF24) un SD kartes modulis]: 5 soļi (ar attēliem)
Viedā boja [GPS, radio (NRF24) un SD kartes modulis]: 5 soļi (ar attēliem)

Video: Viedā boja [GPS, radio (NRF24) un SD kartes modulis]: 5 soļi (ar attēliem)

Video: Viedā boja [GPS, radio (NRF24) un SD kartes modulis]: 5 soļi (ar attēliem)
Video: SCP-093 Красное море Объект (Все тесты и вторичного сырья Журналы) 2024, Jūlijs
Anonim
Image
Image

Šī Smart Buoy sērija attēlo mūsu (vērienīgo) mēģinājumu izveidot zinātnisku boju, kas var veikt nozīmīgus jūras mērījumus, izmantojot gatavus produktus. Šī ir otrā no četrām apmācībām - pārliecinieties, vai esat atjaunināts, un, ja jums nepieciešama ātra projekta ievads, apskatiet mūsu kopsavilkumu.

1. daļa: Viļņu un temperatūras mērījumi

Šajā apmācībā mēs parādām, kā iegūt GPS datus, saglabāt tos SD kartē un nosūtīt kaut kur, izmantojot radio.

Mēs to darījām, lai mēs varētu izsekot mūsu jūras bojas atrašanās vietai. Radio nozīmē, ka mēs to varam skatīties attālināti, un SD karte nozīmē, ka gadījumā, ja kaut kas saplīst un iet klaiņot, mēs varam lejupielādēt datus, ko tas savācis neplānotās ekskursijas laikā - ja vien mēs kādreiz spēsim to izgūt!

Piegādes

GPS modulis - Amazon

SD karšu modulis - Amazon

SD karte - Amazon

2 X radio moduļi (NRF24L01+) - Amazon

2 X Arduino - Amazon

1. darbība. GPS datu iegūšana

GPS datu sūtīšana, izmantojot radio
GPS datu sūtīšana, izmantojot radio

Viedā boja veic sensoru mērījumus, atrodoties jūrā, ieskaitot GPS atrašanās vietu un datuma laiku. Apskatiet shēmu, kurā parādīts, kā mēs iestatām ķēdi. GPS modulis sazinās, izmantojot seriālo savienojumu, tāpēc, lai ar to sazinātos, mēs izmantojam Arduino programmatūras sērijas bibliotēku, kā arī mazo GPS bibliotēku. Šīs bibliotēkas padara visu ļoti vienkāršu. Apskatīsim kodu …

#iekļaut

#include // TinyGPS ++ objekts TinyGPSPlus gps; // Sērijas savienojums ar GPS ierīci SoftwareSerial ss (4, 3); structure dataStruct {dubults platums; divkāršs garums; neparakstīts garš datums; neparakstīts ilgu laiku; } gpsData; void setup () {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 ("Nederīga atrašanās vieta"); } ja (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Nederīgs datums"); } ja (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Nederīgs laiks"); }} void printResults () {Serial.print ("Atrašanās vieta:"); Sērijas nospiedums (gpsData.latitude, 6); Serial.print (","); Sērijas nospiedums (gpsData.longitude, 6); Serial.print ("Datums:"); Sērijas nospiedums (gpsData.date); Serial.print ("Laiks:"); Sērijas nospiedums (gpsData.time); Sērijas.println (); }

(Skatiet šī koda videoklipu vietnē

2. darbība: GPS datu sūtīšana, izmantojot radio

GPS datu sūtīšana, izmantojot radio
GPS datu sūtīšana, izmantojot radio

Pieņemsim, ka boja veic mērījumus jūrā, bet mēs vēlamies redzēt datus, nesaslapinot kājas un neiznesot boju krastā. Lai iegūtu mērījumus attālināti, mēs izmantojam radio moduli, kas savienots ar Arduino abās sakaru pusēs. Nākotnē mēs aizstāsim uztvērēja pusi Arduino ar aveņu pi. Radio darbojas līdzīgi ar abām šīm saskarnēm, tāpēc to maiņa ir diezgan vienkārša.

Radio modulis sazinās, izmantojot SPI, kas prasa dažus savienojumus vairāk nekā I2C, bet joprojām ir ļoti ērti lietojams NRF24 bibliotēkas dēļ. Izmantojot sensoru mērījumiem GPS moduli, mēs pārsūtām tā datus no viena Arduino uz otru. Mēs savienosim GPS un radio moduli ar Arduino un, no otras puses, Arduino ar radio moduli - apskatiet shēmu.

Raidītājs

#iekļaut

#iekļaut #iekļaut #iekļaut #iekļaut TinyGPSPlus GPS; SoftwareSerial ss (4, 3); Radio RF24 (8, 7); // CE, CSN struktura datiStruct {dubultā platuma grāds; divkāršs garums; neparakstīts garš datums; neparakstīts ilgu laiku; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Radio iestatīšana"); // Uzstādīt raidītāja 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 ("Sāk sūtīt"); } 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 (); } cits {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } ja (gps.date.isValid ()) {gpsData.date = gps.date.value (); } cits {gpsData.date = 0; } ja (gps.time.isValid ()) {gpsData.time = gps.time.value (); } cits {gpsData.time = 0; }}

UZŅĒMĒJS

#iekļaut

#iekļaut #iekļaut RF24 radio (8, 7); // CE, CSN struktura datiStruct {dubultā platuma grāds; divkāršs garums; neparakstīts garš datums; neparakstīts ilgu laiku; } gpsData; void setup () {Serial.begin (115200); // Uzstādīt uztvērēja 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 ("Atrašanās vieta:"); Sērijas nospiedums (gpsData.latitude, 6); Serial.print (","); Sērijas nospiedums (gpsData.longitude, 6); Serial.print ("Datums:"); Sērijas nospiedums (gpsData.date); Serial.print ("Laiks:"); Sērijas nospiedums (gpsData.time); Sērijas.println ();}}

(Skatiet šī koda videoklipu vietnē

3. darbība: datu glabāšana, izmantojot SD kartes moduli

Datu uzglabāšana, izmantojot SD kartes moduli
Datu uzglabāšana, izmantojot SD kartes moduli

Radio modulis ir diezgan uzticams, taču dažreiz jums ir nepieciešams ārkārtas rīcības plāns gadījumam, ja uztvērēja pusē ir strāvas padeves pārtraukums vai ja radio pārvietojas ārpus diapazona. Mūsu ārkārtas rīcības plāns ir SD karšu modulis, kas ļauj mums saglabāt savāktos datus. Savākto datu apjoms nav tik liels, tāpēc pat maza SD karte varēs viegli uzglabāt dienas datus.

#iekļaut

#iekļaut #iekļaut #iekļaut TinyGPSPlus gps; SoftwareSerial ss (4, 3); structure dataStruct {dubults platums; divkāršs garums; neparakstīts garš datums; neparakstīts ilgu laiku; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); ja (! SD.begin (5)) {Serial.println ("Karte neizdevās vai tās nav"); atgriešanās; } Serial.println ("inicializēta karte"); Fails dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Platums, garums, datums, laiks"); dataFile.close (); } else {Serial.println ("nē nevar atvērt failu"); }} 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 ("Nederīga atrašanās vieta"); } ja (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Nederīgs datums"); } ja (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Nederīgs laiks"); }} void printResults () {Serial.print ("Atrašanās vieta:"); Sērijas nospiedums (gpsData.latitude, 6); Serial.print (","); Sērijas nospiedums (gpsData.longitude, 6); Serial.print ("Datums:"); Sērijas nospiedums (gpsData.date); Serial.print ("Laiks:"); Sērijas nospiedums (gpsData.time); Sērijas.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 ("nē, nav datu faila"); }}

(Mēs runājam, izmantojot šo kodu videoklipā

4. solis: GPS datu nosūtīšana un uzglabāšana

GPS datu nosūtīšana un uzglabāšana
GPS datu nosūtīšana un uzglabāšana
GPS datu nosūtīšana un uzglabāšana
GPS datu nosūtīšana un uzglabāšana

5. solis: Paldies

Paldies!
Paldies!

Reģistrējieties mūsu adresātu sarakstam!

1. daļa: Viļņu un temperatūras mērīšana

2. daļa: GPS NRF24 radio un SD karte

3. daļa: Bojas jaudas plānošana bojai

4. daļa: Bojas izvietošana

Ieteicams: