- Wymagane materiały
- Arduino LoRa Shield
- Wykonanie PCB dla LoRa Shield
- Montaż PCB
- Podłączanie modułu GPS do nadajnika LoRa
- Programowanie Arduino LoRa jako nadajnika GPS
- Programowanie Arduino LoRa jako odbiornika GPS
- Arduino LoRa GPS Tracker działa
Znajomość miejsca pobytu konkretnego przedmiotu / osoby zawsze była pocieszająca. Obecnie GPS jest szeroko stosowany w aplikacjach do zarządzania aktywami, takich jak śledzenie pojazdów, śledzenie floty, monitorowanie zasobów, śledzenie osób, urządzenie do śledzenia zwierząt itp. W przypadku każdego urządzenia śledzącego głównym aspektem projektu będzie przewidywany czas pracy baterii i zasięg monitorowania. Biorąc pod uwagę oba, LoRa wydaje się być idealnym wyborem, ponieważ ma bardzo niski pobór mocy i może działać na duże odległości. Tak więc w tym samouczku zbudujemy system śledzenia GPS z wykorzystaniem LoRa, system będzie składał się z Nadajnika, który odczyta informacje o lokalizacji z modułu GPS NEO-6Mi transmituj bezprzewodowo przez Lora. Część odbiorcza odbierze informacje i wyświetli je na wyświetlaczu LCD 16x2. Jeśli jesteś nowy w LoRa, dowiedz się więcej o technologii LoRa i LoRaWAN oraz o tym, jak można ją połączyć z Arduino, zanim przejdziesz dalej.
Aby zachować prostotę i opłacalność tego projektu, nie będziemy używać bramki LoRa. Zamiast tego wykona komunikację typu każdy z każdym pomiędzy nadajnikiem a odbiornikiem. Jeśli jednak chcesz mieć zasięg globalny, możesz zastąpić odbiornik bramą LoRa. Ponieważ pochodzę z Indii, będziemy używać modułu LoRa 433 MHz, który jest tutaj legalnym pasmem ISM, dlatego może być konieczne wybranie modułu w zależności od kraju. Biorąc to pod uwagę, zacznijmy…
Wymagane materiały
- Arduino Lora Shield - 2Nos (projekt PCB do pobrania)
- Arduino Uno - 2Nos
- Moduł SX1278 433 MHz LoRa - 2
- Antena 433 MHz Lora
- Moduł GPS NEO-6M
- Moduł wyświetlacza LCD
- Przewody łączące
Arduino LoRa Shield
Aby ułatwić budowanie rzeczy z LoRa, zaprojektowaliśmy LoRa Arduino Shield dla tego projektu. Ten ekran składa się z SX1278 433 MHz z regulatorem 3,3 V zaprojektowanym przy użyciu regulatora zmiennego LM317. Shield zostanie umieszczony bezpośrednio na Arduino, zapewniając mu możliwości LoRa. Ta osłona LoRa przyda się, gdy będziesz musiał wdrożyć węzły detekcyjne LoRa lub utworzyć sieć kratową LoRa. Pełny schemat obwodu dla LoRa Arduino Shield znajduje się poniżej
Shield składa się z gniazda 12 V, które po zasileniu posłuży do regulacji napięcia 3,3 V dla modułu LoRa za pomocą regulatora LM317. Będzie również używany do zasilania Arduino UNO przez pin Vin, a regulowane 5V z Arduino służy do zasilania LCD na osłonie. Napięcie wyjściowe LM317 jest ustalone na 3,3 V za pomocą odpowiednio rezystora R1 i R2, wartość tych rezystorów można obliczyć za pomocą kalkulatora LM317.
Ponieważ moduł LoRa zużywa bardzo mało energii, może być również zasilany bezpośrednio z pinu 3,3 V Arduino, ale zastosowaliśmy zewnętrzny regulator, ponieważ LM317 jest bardziej niezawodny niż wbudowany regulator napięcia. Osłona posiada również potencjometr, za pomocą którego można regulować jasność wyświetlacza LCD. Połączenie modułu LoRa z Arduino jest podobne do tego, co zrobiliśmy w naszym poprzednim samouczku Łączenie Arduino z Lora.
Wykonanie PCB dla LoRa Shield
Teraz, gdy nasz obwód jest gotowy, możemy przystąpić do projektowania naszej płytki drukowanej. Otworzyłem za pomocą oprogramowania do projektowania PCB i zacząłem tworzyć własne ścieżki. Gdy projekt PCB został ukończony, moja płyta wyglądała mniej więcej tak, jak pokazano poniżej
Możesz również pobrać pliki projektowe w formacie GERBER i wyprodukować je, aby otrzymać swoje tablice. Link do pliku Gerber znajduje się poniżej
Pobierz plik Gerber dla Arduino LoRa Shield
Teraz, gdy nasz projekt jest gotowy, nadszedł czas, aby je wyprodukować. Wykonanie PCB jest dość łatwe, po prostu wykonaj poniższe czynności
Krok 1: Wejdź na www.pcbgogo.com, zarejestruj się, jeśli to Twój pierwszy raz. Następnie w zakładce PCB Prototyp wprowadź wymiary swojej płytki PCB, liczbę warstw i liczbę potrzebnych PCB. Zakładając, że PCB ma wymiary 80 cm × 80 cm, możesz ustawić wymiary tak, jak pokazano poniżej.
Krok 2: Kontynuuj, klikając przycisk Cytuj teraz . Zostaniesz przeniesiony na stronę, na której możesz ustawić kilka dodatkowych parametrów, jeśli to konieczne, takich jak zastosowany materiał, rozstaw ścieżek itp. Ale głównie wartości domyślne będą działać dobrze. Jedyne, co musimy tutaj wziąć pod uwagę, to cena i czas. Jak widać, czas budowy wynosi tylko 2-3 dni i kosztuje tylko 5 USD dla naszego PSB. Następnie możesz wybrać preferowaną metodę wysyłki w oparciu o swoje wymagania.
Krok 3: Ostatnim krokiem jest załadowanie pliku Gerber i kontynuacja płatności. Aby upewnić się, że proces przebiega bezproblemowo, PCBGOGO sprawdza, czy Twój plik Gerber jest ważny przed przystąpieniem do płatności. W ten sposób możesz mieć pewność, że Twoja płytka drukowana jest przyjazna dla produkcji i dotrze do Ciebie zgodnie z zaangażowaniem.
Montaż PCB
Po zamówieniu płytki dotarła do mnie po kilku dniach, choć kurier w ładnie opisanym, dobrze zapakowanym pudełku i jak zawsze jakość PCB była niesamowita.
Włączyłem lutownicę i przystąpiłem do montażu płytki. Ponieważ Footprinty, podkładki, przelotki i sitodruk są idealnie dopasowane do kształtu i rozmiaru, nie miałem problemu z montażem płytki. Po zakończeniu lutowania płytka wyglądała tak poniżej, jak widać, że pasuje idealnie do mojej płytki Arduino Uno.
Ponieważ nasz projekt ma nadajnik Arduino Lora i Arduino Lora odbiornik musimy dwie tarcze jeden dla odbiornika i drugi dla nadajnika. Przystąpiłem więc do wlutowania kolejnej płytki, zarówno płytkę z modułem LoRa, jak i LCD pokazano poniżej.
Jak widać tylko do odbiornika LoRa shied (lewy) jest podłączony LCD, po stronie nadajnika znajduje się tylko moduł LoRa. Następnie podłączymy moduł GPS do strony nadajnika, jak omówiono poniżej.
Podłączanie modułu GPS do nadajnika LoRa
Zastosowany moduł GPS to moduł GPS NEO-6M, moduł może działać na bardzo małej mocy przy niewielkich rozmiarach, dzięki czemu nadaje się do zastosowań śledzących. Jednak dostępnych jest wiele innych modułów GPS, których używaliśmy wcześniej w różnego rodzaju aplikacjach do śledzenia pojazdów i wykrywania lokalizacji.
Moduł działa przy napięciu 5 V i komunikuje się za pomocą komunikacji szeregowej z szybkością 9600 bodów. Stąd zasilamy moduł do pinu + 5V Arduino i łączymy pin Rx i Tx z pinem cyfrowym D4 i D3 odpowiednio, jak pokazano poniżej
Piny D4 i D3 zostaną skonfigurowane jako szpilki szeregowe oprogramowania. Po włączeniu moduł GPS NEO-6M będzie szukał połączenia satelitarnego i automatycznie wyśle wszystkie informacje szeregowo. Te dane wyjściowe będą w formacie zdania NMEA, co oznacza National Marine Electronics Association i jest standardowym formatem dla wszystkich urządzeń GPS. Aby dowiedzieć się więcej o używaniu GPS z Arduino, kliknij łącze. Te dane będą duże i przez większość czasu musimy je frazować ręcznie, aby uzyskać pożądany wynik. Na szczęście dla nas istnieje biblioteka o nazwie TinyGPS ++, która wykonuje za nas wszystkie ciężkie prace. Musisz także dodać bibliotekę LoRa, jeśli jeszcze tego nie zrobiłeś. Więc pobierzmy obie biblioteki z poniższego linku
Pobierz bibliotekę TinyGPS ++ Arduino
Pobierz bibliotekę Arduino LoRa
Link pobierze plik ZIP, który można następnie dodać do Arduino IDE, wykonując polecenie Szkic -> Uwzględnij bibliotekę -> Dodaj bibliotekę.ZIP. Gdy będziesz gotowy ze sprzętem i biblioteką, możemy przystąpić do programowania naszych płyt Arduino.
Programowanie Arduino LoRa jako nadajnika GPS
Jak wiemy, LoRa jest urządzeniem nadawczo-odbiorczym, co oznacza, że może zarówno wysyłać, jak i odbierać informacje. Jednak w tym projekcie lokalizatora GPS wykorzystamy jeden moduł jako nadajnik do odczytywania informacji o współrzędnych z GPS i wysyłania ich, natomiast drugi moduł jako odbiornik, który odbierze wartości współrzędnych GPS i wydrukuje je na wyświetlaczu LCD. Program zarówno nadajnik i odbiornik modułu można znaleźć na dole tej strony. Upewnij się, że zainstalowałeś biblioteki dla modułu GPS i modułu LoRa przed kontynuowaniem kodu. W tej sekcji przyjrzymy się kodowi nadajnika.
Jak zawsze zaczynamy program od dodania wymaganych bibliotek i pinów. Tutaj biblioteka SPI i LoRa jest używana do komunikacji LoRa, a biblioteka TinyGPS ++ i SoftwareSerial jest używana do komunikacji GPS. Moduł GPS w moim sprzęcie jest podłączony do pinów 3 i 4, dlatego też definiujemy to w następujący sposób
#zawierać
W funkcji konfiguracji uruchamiamy monitor szeregowy, a także inicjalizujemy szeregowy program jako „gpsSerial ” do komunikacji z naszym modułem GPS NEO-6M. Zwróć również uwagę, że użyłem 433E6 (433 MHz) jako mojej częstotliwości roboczej LoRa, być może będziesz musiał ją zmienić w zależności od typu używanego modułu.
void setup () { Serial.begin (9600); gpsSerial.begin (9600); while (! Serial); Serial.println ("LoRa Sender"); if (! LoRa.begin (433E6)) { Serial.println ("Uruchomienie LoRa nie powiodło się!"); podczas gdy (1); } LoRa.setTxPower (20); }
Wewnątrz funkcji pętli sprawdzamy, czy moduł GPS wysyła jakieś dane, jeśli tak, to wszystkie dane odczytujemy i frazujemy za pomocą funkcji gps.encode. Następnie sprawdzamy, czy otrzymaliśmy prawidłowe dane o lokalizacji za pomocą funkcji gps.location.isValid () .
while (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Jeśli otrzymaliśmy prawidłową lokalizację, możemy rozpocząć przesyłanie wartości szerokości i długości geograficznej. Funkcja gps.location.lat () podaje współrzędne szerokości geograficznej, a funkcja gps.location.lng () podaje współrzędne długości geograficznej. Ponieważ będziemy drukować je na wyświetlaczu LCD 16 * 2, musimy wspomnieć, kiedy srać do drugiej linii, dlatego używamy słowa kluczowego „c”, aby zintymować odbiorcę, aby wydrukować następujące informacje w linii 2.
LoRa.beginPacket (); LoRa.print ("Lat:"); LoRa.print (gps.location.lat (), 6); LoRa.print ("c"); LoRa.print ("Long:"); LoRa.print (gps.location.lng (), 6); Serial.println ("Wysłane przez LoRa"); LoRa.endPacket ();
Programowanie Arduino LoRa jako odbiornika GPS
Kod nadajnika już wysyła wartość współrzędnych szerokości i długości geograficznej, teraz odbiornik musi odczytać te wartości i wydrukować na LCD. Podobnie tutaj dodajemy bibliotekę dla modułu LoRa i wyświetlacza LCD oraz definiujemy, do których pinów jest podłączony LCD oraz jak poprzednio inicjalizujemy moduł LoRa.
#zawierać
Wewnątrz funkcji pętli nasłuchujemy pakietów danych z modułu nadajnika LoRa i jego rozmiaru za pomocą funkcji LoRa.parsePacket () i przechowujemy je w zmiennej „ packetSize ”. Jeśli pakiety są odbierane, czytamy je jako znaki i drukujemy na wyświetlaczu LCD. Program sprawdza również czy moduł LoRa wysyła słowo kluczowe „c”, jeśli tak, wypisuje pozostałe informacje w drugiej linii.
if (packetSize) {// Jeśli odebrano pakiet Serial.print ("Otrzymano pakiet '"); lcd.clear (); while (LoRa.available ()) { char incoming = (char) LoRa.read (); if (incoming == 'c') { lcd.setCursor (0, 1); } else { lcd.print (przychodzące); } }
Arduino LoRa GPS Tracker działa
Gdy sprzęt i program są gotowe, możemy wgrać oba kody do odpowiednich modułów Arduino i zasilić je za pomocą adaptera 12V lub kabla USB. Gdy nadajnik jest zasilany, możesz zauważyć migającą niebieską diodę LED na module GPS, co oznacza, że moduł szuka połączenia satelitarnego, aby uzyskać współrzędne. W międzyczasie moduł odbiornika włączy się i wyświetli wiadomość powitalną na ekranie LCD. Gdy nadajnik wyśle informacje, moduł odbiornika wyświetli je na wyświetlaczu LCD, jak pokazano poniżej
Teraz możesz poruszać się z modułem GPS nadajnika i zauważysz, że odbiornik aktualizuje swoją lokalizację. Aby dokładnie wiedzieć, gdzie dokładnie znajduje się moduł nadajnika, możesz odczytać wartości szerokości i długości geograficznej wyświetlane na wyświetlaczu LCD i wprowadzić je do map Google, aby uzyskać lokalizację na mapie, jak pokazano poniżej.
Całość pracy można również znaleźć w filmie zamieszczonym na dole tej strony. Mam nadzieję, że zrozumiałeś samouczek i podobało Ci się stworzenie z niego czegoś przydatnego. Jeśli masz jakiekolwiek wątpliwości, możesz zostawić je w sekcji komentarzy poniżej lub skorzystać z naszych forów w celu uzyskania innych pytań technicznych.