Съдържание:
- Консумативи
- Стъпка 1: Получаване на GPS данни
- Стъпка 2: Изпращане на GPS данни чрез радио
- Стъпка 3: Съхраняване на данни с помощта на модул SD карта
- Стъпка 4: Изпращане и съхраняване на GPS данни
- Стъпка 5: Благодаря
Видео: Интелигентна шамандура [GPS, радио (NRF24) и модул SD карта]]: 5 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Тази серия Smart Buoy показва нашия (амбициозен) опит да изградим научна шамандура, която може да направи значими измервания за морето с помощта на готови продукти. Това е урок две от четири - уверете се, че сте актуални и ако имате нужда от бързо въведение в проекта, разгледайте нашето резюме.
Част 1: Измерване на вълни и температура
В този урок ще ви покажем как да получите GPS данни, да ги съхраните на SD карта и да ги изпратите някъде с помощта на радио.
Направихме това, за да можем да следим местоположението на нашата морска шамандура. Радиото означава, че можем да го гледаме дистанционно, а SD картата означава, че при случайност нещо се счупи и отива на скитане, можем да изтеглим данните, събрани по време на непланираната екскурзия - ако някога успеем да ги извлечем!
Консумативи
GPS модул - Amazon
Модул SD карта - Amazon
SD карта - Amazon
2 X радиомодула (NRF24L01+) - Amazon
2 X Arduino - Amazon
Стъпка 1: Получаване на 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 данни чрез радио
Да предположим, че шамандурата е в морето и прави измервания, но ние искаме да видим данните, без да намокрим краката си или да изведем шамандурата на брега. За да получим измерванията от разстояние, използваме радиомодул, свързан към 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 карта лесно ще може да съхранява данни за ден.
#включва
#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 данни
Стъпка 5: Благодаря
Регистрирайте се в нашия пощенски списък!
Част 1: Измерване на вълни и температури
Част 2: GPS NRF24 радио и SD карта
Част 3: Планиране на захранването към шамандурата
Част 4: Разгръщане на шамандурата
Препоръчано:
Интелигентна шамандура [Резюме]: 8 стъпки (със снимки)
Умна буя [Резюме]: Всички обичаме крайбрежието. Като колектив се събираме в него за празници, за да се наслаждаваме на водни спортове или да си изкарваме прехраната. Но крайбрежието е динамична зона, която е на милостта на вълните. Повишаването на морското равнище похапва плажове и мощни екстремни събития като хури
Интелигентна карта на Айдахо с LED данни + изкуство: 8 стъпки (със снимки)
Интелигентна карта на Айдахо с LED данни + изкуство: Винаги съм искал начин за художествено и динамично показване на географски данни чрез " рисуване " карта със светлина. Живея в Айдахо и обичам държавата си, затова си помислих, че това ще бъде чудесно място за начало! Освен че е произведение на изкуството
Подаващо устройство за карта с търговска карта: 10 стъпки (със снимки)
Устройство за подаване на карти за машина за търговски карти: Подавател за карти за машина за карти за картина Предистория Когато бях млад, събирах тонове карти за търговия, но от няколко години страстта към събирането намалява. Междувременно имам деца и бавно, но сигурно и те започват да получават
NRF24 двупосочно радио за телеметрия: 9 стъпки (със снимки)
NRF24 двупосочно радио за телеметрия: Здравейте момчета, казвам се Педро Кастелани и ви представям първата си инструкция: изграждане на двупосочно радио с arduino за, добре, за каквото и да ви е необходимо. В този проект ние ще направим две отделни вериги, които ще действат като приемник и предавател
Навигирайте робот със сензори за обувки, без GPS, без карта: 13 стъпки (със снимки)
Навигирайте робота със сензори за обувки, без GPS, без карта: Роботът се движи по предварително програмиран път и предава (по bluetooth) действителната си информация за движение до телефон за проследяване в реално време. Arduino е предварително програмиран с пътека, а oblu се използва за усещане на движението на робота. oblu предава информация за движение