Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Pobieranie danych GPS
- Krok 2: Wysyłanie danych GPS przez radio
- Krok 3: Przechowywanie danych za pomocą modułu karty SD
- Krok 4: Wysyłanie i przechowywanie danych GPS
- Krok 5: Dzięki
Wideo: Smart Booy [GPS, radio (NRF24) i moduł karty SD]: 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
Ta seria Smart Buoy przedstawia naszą (ambitną) próbę zbudowania naukowej boi, która może dokonywać znaczących pomiarów morza przy użyciu gotowych produktów. To jest samouczek drugi z czterech – upewnij się, że jesteś na bieżąco, a jeśli potrzebujesz szybkiego wprowadzenia do projektu, zapoznaj się z naszym podsumowaniem.
Część 1: Wykonywanie pomiarów fal i temperatury
W tym samouczku pokażemy, jak uzyskać dane GPS, zapisać je na karcie SD i wysłać gdzieś za pomocą radia.
Zrobiliśmy to, abyśmy mogli śledzić położenie naszej morskiej boi. Radio oznacza, że możemy oglądać go zdalnie, a karta SD oznacza, że jeśli coś się zepsuje i pójdzie na wędrówkę, możemy pobrać dane zebrane podczas nieplanowanej wycieczki - jeśli kiedykolwiek uda nam się je odzyskać!
Kieszonkowe dzieci
Moduł GPS - Amazon
Moduł karty SD - Amazon
Karta SD - Amazon
2 X moduły radiowe (NRF24L01+) - Amazon
2 X Arduino - Amazonka
Krok 1: Pobieranie danych GPS
Inteligentna boja wykonuje pomiary z czujnika, gdy znajduje się na morzu, w tym lokalizację GPS i datę. Spójrz na schemat, który pokazuje, jak ustawiliśmy obwód. Moduł GPS komunikuje się przez połączenie szeregowe, więc do komunikacji z nim wykorzystujemy bibliotekę szeregową oprogramowania Arduino, a także niewielką bibliotekę GPS. Te biblioteki sprawiają, że wszystko jest bardzo proste. Przejdźmy przez kod…
#włączać
#include // Obiekt TinyGPS++ TinyGPSPlus gps; // Połączenie szeregowe z urządzeniem GPS SoftwareSerial ss(4, 3); struct dataStruct{ podwójna szerokość geograficzna; podwójna długość geograficzna; niepodpisana długa data; niepodpisany długi czas; } dane gps; void setup(){ Serial.begin(115200); ss.początek(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("Nieprawidłowa lokalizacja"); } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ Serial.println("Nieprawidłowa data"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ Serial.println("Nieprawidłowy czas"); } } void printResults(){ Serial.print("Lokalizacja: "); Serial.print(gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print(" Data: "); Serial.print(gpsData.data); Serial.print(" Czas: "); Serial.print(gpsData.time); Serial.println(); }
(Sprawdź wideo dla tego kodu na
Krok 2: Wysyłanie danych GPS przez radio
Załóżmy, że boja znajduje się w morzu i wykonuje pomiary, ale chcemy zobaczyć dane bez zamoczenia stóp lub wynoszenia boi na brzeg. Aby uzyskać pomiary zdalnie, używamy modułu radiowego podłączonego do Arduino po obu stronach komunikacji. W przyszłości Arduino po stronie odbiornika zastąpimy malinowym pi. Radio działa podobnie z obydwoma tymi interfejsami, więc ich zamiana jest dość prosta.
Moduł radiowy komunikuje się za pomocą SPI, co wymaga kilku połączeń więcej niż I2C, ale nadal jest bardzo łatwy w użyciu ze względu na bibliotekę NRF24. Wykorzystując moduł GPS do pomiarów czujnika, przekazujemy jego dane z jednego Arduino do drugiego. Podłączamy moduł GPS i radiowy do Arduino, a z drugiej strony Arduino z modułem radiowym - spójrz na schemat.
Nadajnik
#włączać
#include #include #include #include TinyGPSPlus gps; Oprogramowanie Serial ss(4, 3); radio RF24 (8, 7); // CE, CSN struct dataStruct{ double latitude; podwójna długość geograficzna; niepodpisana długa data; niepodpisany długi czas; } dane gps; void setup() { Serial.begin(115200); ss.początek(9600); Serial.println("Konfigurowanie radia"); // Skonfiguruj nadajnik radiowy radio.begin(); radio.openWritingPipe(0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radio.stopSłuchanie(); radio.enableDynamicPayloads(); radio.powerUp(); Serial.println("Rozpoczęcie wysyłania"); } 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.szerokość = 0.0; } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ gpsData.data = 0; } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ gpsData.time = 0; } }
ODBIORCA
#włączać
#include #include RF24 radio(8, 7); // CE, CSN struct dataStruct{ double latitude; podwójna długość geograficzna; niepodpisana długa data; niepodpisany długi czas; } dane gps; void setup() { Serial.begin(115200); // Konfiguracja odbiornika radiowego radio.begin(); radio.openReadingPipe(1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radio.startNasłuch(); radio.enableDynamicPayloads(); radio.powerUp(); } void loop() { if (radio.available()) { radio.read(&gpsData, sizeof(gpsData)); Serial.print("Lokalizacja: "); Serial.print(gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print(" Data: "); Serial.print(gpsData.data); Serial.print(" Czas: "); Serial.print(gpsData.time); Serial.println();} }
(Sprawdź wideo dla tego kodu na
Krok 3: Przechowywanie danych za pomocą modułu karty SD
Moduł radiowy jest dość niezawodny, ale czasami potrzebny jest plan awaryjny na wypadek awarii zasilania po stronie odbiornika lub gdy radio znajdzie się poza zasięgiem. Nasz plan awaryjny to moduł karty SD, który pozwala nam przechowywać gromadzone dane. Ilość zbieranych danych nie jest tak duża, więc nawet niewielka karta SD z łatwością będzie w stanie przechowywać dane z całego dnia.
#włączać
#include #include #include TinyGPSPlus gps; Oprogramowanie Serial ss(4, 3); struct dataStruct{ podwójna szerokość geograficzna; podwójna długość geograficzna; niepodpisana długa data; niepodpisany długi czas; } dane gps; void setup() { Serial.begin(115200); ss.początek(9600); if (!SD.begin(5)) { Serial.println("Karta nie powiodła się lub nie ma"); powrót; } Serial.println("karta zainicjowana."); Plik dataFile = SD.open("gps_data.csv", FILE_WRITE); if (dataFile) { dataFile.println("Szerokość, długość, data, godzina"); plik_danych.zamknij(); } else{ Serial.println("nie można otworzyć pliku"); } } void loop() { while (ss.available() > 0){ if (gps.encode(ss.read())){ getInfo(); printResults(); zapiszInfo(); } } } void getInfo(){ if (gps.location.isValid()){ gpsData.latitude = gps.location.lat(); gpsData.longitude = gps.location.lng(); } else{ Serial.println("Nieprawidłowa lokalizacja"); } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ Serial.println("Nieprawidłowa data"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ Serial.println("Nieprawidłowy czas"); } } void printResults(){ Serial.print("Lokalizacja: "); Serial.print(gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print(" Data: "); Serial.print(gpsData.data); Serial.print(" Czas: "); Serial.print(gpsData.time); Serial.println(); } void saveInfo(){ Plik 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.data); dataFile.print(", "); dataFile.println(gpsData.time); plik_danych.zamknij(); } else{ Serial.println("nie ma pliku danych"); } }
(Rozmawiamy o tym kodzie w filmie
Krok 4: Wysyłanie i przechowywanie danych GPS
Krok 5: Dzięki
Zapisz się na naszą listę mailingową!
Część 1: Dokonywanie pomiaru fali i temperatury
Część 2: Radio GPS NRF24 i karta SD
Część 3: Planowanie zasilania boi
Część 4: Rozmieszczanie boi
Zalecana:
Moduł karty SD z Arduino: Jak odczytywać/zapisywać dane: 14 kroków
Moduł karty SD z Arduino: Jak odczytywać/zapisywać dane: Przegląd Przechowywanie danych jest jedną z najważniejszych części każdego projektu. Istnieje kilka sposobów przechowywania danych w zależności od typu i rozmiaru danych. Karty SD i micro SD to jedne z najbardziej praktycznych wśród urządzeń pamięci masowej, które są używane w
Dwukierunkowe radio NRF24 do telemetrii: 9 kroków (ze zdjęciami)
NRF24 Two-Way Radio for Telemetry: Cześć chłopaki, nazywam się Pedro Castelani i przynoszę wam moją pierwszą instrukcję: zbuduj radio dwukierunkowe z arduino do, cóż, do czegokolwiek tego potrzebujesz. W tym projekcie zrobimy dwa oddzielne obwody, które będą działać zarówno jako odbiornik, jak i transmi
Najtańszy moduł karty SD Arduino: 5 kroków
Najtańszy moduł karty SD Arduino: Opis: Moduł karty SD służy do przesyłania danych do i ze standardowej karty SD. Wyprowadzenie jest bezpośrednio kompatybilne z Arduino i może być również używane z innymi mikrokontrolerami. Pozwala nam to dodać pamięć masową i logowanie danych do naszego
Moduł Arduino + karty SD: 5 kroków
Arduino + moduł karty SD: Cześć przyjacieleObejrzyj film z YOUTUBE, to wystarczy. I nie zapomnij o subskrypcji, aby uzyskać więcej informacji, odwiedź mój blog https://www.blogger.com/blogger.g?blogID=2433497353797882246#editor/target=post;postID=5655686325161138749;onPu
Moduł karty SD z ESP8266: 6 kroków
Moduł karty SD z ESP8266: W tym zestawie mamy kartę SD podłączoną do ESP8266. Umieszczamy DHT22, który mierzy temperaturę i wilgotność i wysyła te informacje na kartę SD. Na obwodzie pokazuje wilgotność 43,40 i temperaturę 26,80. Za każdym razem, gdy