Spisu treści:

Projekt Arduino: Zakres testowy Moduł LoRa RF1276 dla rozwiązania śledzenia GPS: 9 kroków (ze zdjęciami)
Projekt Arduino: Zakres testowy Moduł LoRa RF1276 dla rozwiązania śledzenia GPS: 9 kroków (ze zdjęciami)

Wideo: Projekt Arduino: Zakres testowy Moduł LoRa RF1276 dla rozwiązania śledzenia GPS: 9 kroków (ze zdjęciami)

Wideo: Projekt Arduino: Zakres testowy Moduł LoRa RF1276 dla rozwiązania śledzenia GPS: 9 kroków (ze zdjęciami)
Wideo: Moje największe projekty na AVR 2024, Listopad
Anonim
Arduino Project: Moduł LoRa RF1276 zakresu testowego dla rozwiązania śledzenia GPS
Arduino Project: Moduł LoRa RF1276 zakresu testowego dla rozwiązania śledzenia GPS

Połączenie: USB-szeregowe

Potrzebujesz: przeglądarka Chrome

Potrzebujesz: 1 X Arduino Mega

Potrzebujesz: 1 X GPS

Potrzebujesz: 1 X karty SD

Potrzebujesz: 2 x modem LoRa RF1276

Funkcja: Arduino Wysyłanie wartości GPS do głównej bazy - Główna baza przechowuje dane w Dataino Server Lora Moduł: Ultra daleki zasięg RF1276 z APPCONWIRELESS LoRa to nowa, prywatna technika modulacji widma rozproszonego, która umożliwia wysyłanie danych z bardzo niskimi prędkościami do bardzo dalekie zasięgi. Niska szybkość transmisji danych (do kilku bajtów na sekundę) i modulacja LoRa prowadzą do bardzo niskiej czułości odbiornika, co w tym teście oznacza ponad 10 km.

Krok 1: Budowanie stacji bazowej

Budynek stacji bazowej
Budynek stacji bazowej
Budynek stacji bazowej
Budynek stacji bazowej

Połączenie internetowe o szerokości komputera i modem LoRa podłączony do portu USB.

Zestaw samochodowy Arduino ·

Pudełko metryczne

Anduino Mega podłączony do portu szeregowego 2 do odbiornika GPS, a portu szeregowego 1 do modemu LoRa. Do przechowywania danych używana jest karta SD.

Krok 2: Pierwszy test

Pierwszy test
Pierwszy test

· 10,6 km na ścieżce przez ośrodki miejskie, galerie i wzdłuż wybrzeża wykonane pętlami

Stosunek odbioru/transmisji wyniósł punkt 321/500TX

Punkt RX

Krok 3: Utwórz interfejs

Utwórz interfejs
Utwórz interfejs
Utwórz interfejs
Utwórz interfejs

1 - Skonfiguruj nowy projekt LoRa

Naciśnij ikonę koła zębatego, aby otworzyć konfigurację projektu

Krok 4: Dodaj miernik

Dodaj miernik
Dodaj miernik

2) Otwórz suwak miernika.

· 3) Przewiń do GPS.

· 4) Dodaj jeden do biurka.

Krok 5: Przeciągnij wskaźnik GPS i dodaj OpenStreetMap

Przeciągnij wskaźnik GPS i dodaj OpenStreetMap
Przeciągnij wskaźnik GPS i dodaj OpenStreetMap
Przeciągnij wskaźnik GPS i dodaj OpenStreetMap
Przeciągnij wskaźnik GPS i dodaj OpenStreetMap

· 5) Dodaj mapę OpenStreetMap do biurka

Przeciągając komponent GPS na mapę ikon, generowana jest mapa OpenStreet.

Utwórz interfejs

· 6) Zmień odświeżanie mapy

Zmień czas odświeżania mapy z 5000 na 10000

Krok 6: Przeciągnij wskaźnik GPS i dodaj dziennik tabeli

Przeciągnij wskaźnik GPS i dodaj dziennik tabeli
Przeciągnij wskaźnik GPS i dodaj dziennik tabeli

· 7) Dodaj wskaźnik dziennika tabeli.

Przeciągając wskaźnik nad tabelę ikon GPS, tworzony jest dziennik tabeli wskaźników

· 8) Zmień odświeżanie dziennika tabeli. Zmień czas odświeżania mapy z 5000 na 10000

Dostosuj położenie wskaźników

· 9) Wskaźniki przeciągania dostosowują położenie wskaźników, przeciągając je po ekranie.

· 10) Zapisz projekt

Krok 7: Uzyskaj kod

Zdobądź szyfr
Zdobądź szyfr

10) Aktywuj kontener kodu

Przycisk na prawym górnym przycisku, zaznacz wszystko i skopiuj kod podstawowy.

Krok 8: Arduino IDE

IDE Arduino
IDE Arduino

· 11) Wklej kod na Arduino IDE

· 12) Edytuj kod Dodaj tę linię w definicji

Krok 9: Szczegóły kodowania

Dodaj tę linię w definicji

//*************************************************************************

//** BIBLIOTEKA ** //***************************************** ********************************

#include // ++ biblioteka GPS

#include // ++ biblioteka SPI #include

// ++biblioteka SD//

*************************************************************************

//** SD ** //********************************************* ********************************

// * karta SD podłączona do magistrali SPI w następujący sposób:

// ** UNO: MOSI - pin 11, MISO - pin 12, CLK - pin 13, CS - pin 4

// (pin CS można zmienić) i pin #10 (SS) muszą być wyjściem

// ** Mega: MOSI - pin 51, MISO - pin 50, CLK - pin 52, CS - pin 53

// (pin CS można zmienić) i pin #52 (SS) muszą być wyjściem

// ** Leonardo: Połącz się ze sprzętowym SPI przez nagłówek ICSP

// Pin 4 użyty tutaj dla zachowania spójności z innymi przykładami Arduino const int chipSelect = 53;

// ++ Selektor pinów SD

//*************************************************************************

//** GPS ** //********************************************* ********************************

Mały GPS; // ++ GPS na Serial2

void gpsdump(TinyGPS &gps); // ++

bool newdataGPS = false; // ++

Dodaj tę linię w setup()

//***********************************************************************

//** Konfiguracja portu szeregowego GPS ** //**************************************** ********************************

Serial2.początek(9600); // ++

opóźnienie (1000); // ++

//***********************************************************************

//** Inicjalizacja SD ** //**************************************** ******************************

// upewnij się, że domyślny pin wyboru chipa jest ustawiony na // ++

// wyjście, nawet jeśli go nie używasz: // ++

pinMode (SS, WYJŚCIE); // ++

Serial.println(F("Inicjowanie karty SD…")); // ++

// zobacz, czy karta jest obecna i czy można ją zainicjować: // ++

if (!SD.begin(chipSelect)) { // ++

Serial.println(F("Karta nie powiodła się lub nie ma")); // ++

// nie rób nic więcej: // ++

powrót; // ++

} inny { // ++

Serial.println(F("Karta SD OK")); // ++

} // ++

Dodaj te linie w loop() void

serialEvent2(); // ++ wywołanie zdarzenia seryjnego GPS

Dodaj kod SeriaEvent2

//*************************************************************************

//** GPS serialEvent ** //**************************************** ***********************************

void serialEvent2() { // ++

while (Serial2.available()) { // ++

char c = Serial2.odczyt(); // ++

//Serial.print(c); // odkomentuj, aby zobaczyć nieprzetworzone dane GPS // ++

if (gps.encode(c)) { // ++

nowedaneGPS = prawda; // ++

przerwa; // odkomentuj, aby natychmiast wydrukować nowe dane! // ++

} // ++

} // ++

} // ++

Dodaj voud zrzutu GPS

//*************************************************************************

//** zrzut GPS ** //**************************************** ***********************************

//** Prawidłowy zakres szerokości geograficznej w stopniach to -90 i +90. **

//** Długość geograficzna mieści się w zakresie -180 i +180 **

//** określenie pozycji wschód-zachód **

//** "123456789 1234567890" **

//** "000.00000;0000.00000" ** //*************************************************************************

void gpsdump (TinyGPS i gps) // ++

{ // ++

międzynarodowy rok; // ++

bajt miesiąc, dzień, godzina, minuta, sekunda, części setne; // ++

niepodpisany długi wiek; // ++

gps.f_get_position(&LATGP00, &LONGP00, &wiek); // ++

gps.crack_datetime(&rok, &miesiąc, &dzień, &godzina, // ++

&minuta, &sekunda, &setki, &wiek); // ++

długi łac, długi; // ++

gps.get_position(&lat, &lon, &wiek); // ++

// *********************************************************************

// ** utwórz ciąg znaków do asemblowania danych do logu: **

// *********************************************************************

Ciąg danychString = ""; // ++

Ciąg danych += (lat / 100000); // ++

ciąg danych += "."; // ++

Ciąg danych += lat - (lat / 100000) * 100000; // ++

ciąg danych += ";"; // ++

Ciąg danych += (lon/100000); // ++

ciąg danych += "."; // ++

DataString += lon - (lon/100000) * 100000; // ++

ciąg danych += ";"; // ++

dataString += String(static_cast(day)); // ++

Ciąg danych += "/"; // ++

dataString += String(static_cast(miesiąc)); // ++

Ciąg danych += "/"; // ++

Ciąg danych += Ciąg(rok); // ++

ciąg danych += ";"; // ++

dataString += String(static_cast(godzina)); // ++

Ciąg danych += ":"; // ++

dataString += String(static_cast (minuta)); // ++

Ciąg danych += ":"; // ++

dataString += String(static_cast (drugi)); // ++ //********************************************* ******************************

//** ZAPISZ W SD ** //**************************************** ***********************************

// otwórz plik. pamiętaj, że w danym momencie może być otwarty tylko jeden plik, **

// więc musisz zamknąć ten, zanim otworzysz inny. ** //************************************************** ***************************

Plik dataFile = SD.open("gps00.txt", FILE_WRITE); // ++

// ***********************************************************************

// ** jeśli plik jest dostępny, napisz do niego: **

// ***********************************************************************

if (plik danych) { // ++

plik danych.println(ciąg danych); // ++

plik_danych.zamknij(); // ++

} inny { // ++

Serial.println(F("BŁĄD zapisu SD")); // ++

} // ++

}

Jeśli chcesz pobrać kod, odwiedź tę stronę.

Zalecana: