Съдържание:

Интелигентна шамандура [GPS, радио (NRF24) и модул SD карта]]: 5 стъпки (със снимки)
Интелигентна шамандура [GPS, радио (NRF24) и модул SD карта]]: 5 стъпки (със снимки)

Видео: Интелигентна шамандура [GPS, радио (NRF24) и модул SD карта]]: 5 стъпки (със снимки)

Видео: Интелигентна шамандура [GPS, радио (NRF24) и модул SD карта]]: 5 стъпки (със снимки)
Видео: Hören & Verstehen - Prüfungsvorbereitung B2/C1 2024, Ноември
Anonim
Image
Image

Тази серия Smart Buoy показва нашия (амбициозен) опит да изградим научна шамандура, която може да направи значими измервания за морето с помощта на готови продукти. Това е урок две от четири - уверете се, че сте актуални и ако имате нужда от бързо въведение в проекта, разгледайте нашето резюме.

Част 1: Измерване на вълни и температура

В този урок ще ви покажем как да получите GPS данни, да ги съхраните на SD карта и да ги изпратите някъде с помощта на радио.

Направихме това, за да можем да следим местоположението на нашата морска шамандура. Радиото означава, че можем да го гледаме дистанционно, а SD картата означава, че при случайност нещо се счупи и отива на скитане, можем да изтеглим данните, събрани по време на непланираната екскурзия - ако някога успеем да ги извлечем!

Консумативи

GPS модул - Amazon

Модул SD карта - Amazon

SD карта - Amazon

2 X радиомодула (NRF24L01+) - Amazon

2 X Arduino - Amazon

Стъпка 1: Получаване на GPS данни

Изпращане на GPS данни чрез радио
Изпращане на GPS данни чрез радио

Интелигентната шамандура извършва сензорни измервания, докато седи в морето, включително GPS местоположение и дата и час. Разгледайте схемата, която показва как сме настроили веригата. GPS модулът комуникира чрез серийна връзка, така че използваме серийната библиотека на софтуера Arduino, както и малката GPS библиотека, за да комуникираме с нея. Тези библиотеки правят всичко супер просто. Нека ви преведем през кода …

#включва

#include // Обектът TinyGPS ++ TinyGPSPlus gps; // Серийната връзка с GPS устройството SoftwareSerial ss (4, 3); struct dataStruct {двойна ширина; двойна дължина; неподписана дълга дата; без подпис дълго време; } 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 ("Невалидно местоположение"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Невалидна дата"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Невалидно време"); }} void printResults () {Serial.print ("Местоположение:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Дата:"); Serial.print (gpsData.date); Serial.print ("Време:"); Serial.print (gpsData.time); Serial.println (); }

(Вижте видеото за този код на

Стъпка 2: Изпращане на GPS данни чрез радио

Изпращане на GPS данни чрез радио
Изпращане на GPS данни чрез радио

Да предположим, че шамандурата е в морето и прави измервания, но ние искаме да видим данните, без да намокрим краката си или да изведем шамандурата на брега. За да получим измерванията от разстояние, използваме радиомодул, свързан към Arduino от двете страни на комуникацията. В бъдеще ще заменим Arduino от приемника с малиново пи. Радиото работи подобно с двата интерфейса, така че смяната им е доста проста.

Радиомодулът комуникира чрез SPI, което изисква няколко повече връзки от I2C, но все пак е наистина лесно за използване поради библиотеката NRF24. Използвайки GPS модула за измерване на сензора, ние предаваме неговите данни от единия Arduino към другия. Ще свържем GPS и радиомодула с Arduino, а от другата страна с Arduino с радиомодула - погледнете схемата.

Предавател

#включва

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); Радиостанция RF24 (8, 7); // CE, CSN структура dataStruct {двойна ширина; двойна дължина; неподписана дълга дата; без подпис дълго време; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Настройване на радио"); // Настройка на предавателя 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 ("Започва изпращане"); } 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; }}

ПРИЕМАЧ

#включва

#включете #включете радиостанция RF24 (8, 7); // CE, CSN структура dataStruct {двойна ширина; двойна дължина; неподписана дълга дата; без подпис дълго време; } gpsData; void setup () {Serial.begin (115200); // Настройка на приемник радио 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 ("Местоположение:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Дата:"); Serial.print (gpsData.date); Serial.print ("Време:"); Serial.print (gpsData.time); Serial.println ();}}

(Вижте видеото за този код на

Стъпка 3: Съхраняване на данни с помощта на модул SD карта

Съхранение на данни с помощта на модул SD карта
Съхранение на данни с помощта на модул SD карта

Радиомодулът е доста надежден, но понякога се нуждаете от план за непредвидени случаи в случай на прекъсване на захранването от страна на приемника или ако радиото се изнесе извън обхвата. Нашият план за извънредни ситуации е модул за SD карта, който ни позволява да съхраняваме събраните от нас данни. Количеството на събраните данни не е толкова голямо, така че дори малка SD карта лесно ще може да съхранява данни за ден.

#включва

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {двойна ширина; двойна дължина; неподписана дълга дата; без подпис дълго време; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Картата е неуспешна или я няма"); връщане; } Serial.println ("картата е инициализирана."); Файл dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Географска ширина, дължина, дата, час"); dataFile.close (); } else {Serial.println ("не може да отвори файл"); }} 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 ("Невалидно местоположение"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Невалидна дата"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Невалидно време"); }} void printResults () {Serial.print ("Местоположение:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Дата:"); Serial.print (gpsData.date); Serial.print ("Време:"); Serial.print (gpsData.time); Serial.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 ("не, няма файл с данни"); }}

(Ние говорим чрез този код във видеото

Стъпка 4: Изпращане и съхраняване на GPS данни

Изпращане и съхраняване на GPS данни
Изпращане и съхраняване на GPS данни
Изпращане и съхраняване на GPS данни
Изпращане и съхраняване на GPS данни

Стъпка 5: Благодаря

Благодаря!
Благодаря!

Регистрирайте се в нашия пощенски списък!

Част 1: Измерване на вълни и температури

Част 2: GPS NRF24 радио и SD карта

Част 3: Планиране на захранването към шамандурата

Част 4: Разгръщане на шамандурата

Препоръчано: