Spisu treści:
- Krok 1: Warunki wstępne
- Krok 2: Główna koncepcja
- Krok 3: Moduł SIM800L
- Krok 4: Ublox Neo 6m
- Krok 5: Obwody
- Krok 6: Kod
- Krok 7: Serwer WWW
- Krok 8: Zakończenie/Doświadczenie
Wideo: Domowy lokalizator GPS w czasie rzeczywistym (SIM800L, Ublox NEO-6M, Arduino): 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Więc masz taki moduł GSM leżący jak ja? Również GPS-tracker?
Myślimy tak samo!
W tej instrukcji postaram się poprowadzić Cię, jak osiągnąć swój cel z perspektywy nowicjusza.
Ponieważ nie miałem wcześniej wiedzy z zakresu elektrotechniki (szczerze mówiąc, projekt nie potrzebuje aż tak dużo, ale nie) i nie miałem pojęcia, jak zrobić urządzenie, które przesyła dane w czasie rzeczywistym na serwer WWW, napotkałem wiele problemów. Mimo to w końcu udało mi się sprawić, by wszystko działało.
Tak więc w tym samouczku chcę podkreślić błędy, które może popełnić starter i odpowiednio rozbudować projekt.
Pamiętaj: Zawsze bądź ostrożny podczas pracy z elektrycznością!
UWAGA: nie jestem profesjonalistą. Kod może nie być wystarczająco zaawansowany, aby zaspokoić wszystkie Twoje potrzeby. Projekt ma być „projektem hobbystycznym”, ale! to zadziałało dla mnie. A gdyby to zadziałało dla mnie, zadziałałoby też dla Ciebie!
Krok 1: Warunki wstępne
MODUŁ GSM - SIM800L
- Dość mały, łatwy w użyciu
- Możliwość korzystania z mobilnego Internetu (GPRS)
- Tani
MODUŁ GPS - Ublox NEO6M
- Również mały
- Bardzo dobrze radzi sobie ze swoją pracą
Mikrokontroler - może być wszystko - możesz użyć słynnego Arduino Uno lub Nano, aby zwolnić trochę miejsca
Bateria - jako główne i jedyne źródło zasilania użyłem ogniwa 18650 (nominalnie 3,7V)
Uchwyt baterii - dlaczego? - ponieważ lutowanie baterii 18650 jest dość niebezpieczne ze względu na ciepło.
DC-DC Boost Converter Step Up Module 5V - Musi mieć, ponieważ Arduino, którego użyłem, potrzebuje 5V
Narzędzia, podstawowe rzeczy, które mogą się przydać:
Przewody, lutownica, płytka stykowa do testów
Krok 2: Główna koncepcja
Główną koncepcją systemu jest:
Składa się z 3 części:
- Urządzenie - które ma odpowiednie współrzędne GPS i może zdalnie łączyć się z serwerem i przesyłać do niego dane
- Serwer WWW - który może odbierać przychodzące dane - przechowywać je - i obsługiwać innych klientów
- Platforma - na której możemy zobaczyć współrzędne - Idealnie powinna to być teraz aplikacja mobilna lub strona internetowa
Krok 3: Moduł SIM800L
Miałem ciężkie chwile z modułem.
Chciałbym zacząć od kilku cech charakterystycznych i referencji.
Zgodnie z arkuszem danych:
- Działa między 3,4 V - 4,4 V
- Może wysyłać SMS-y, wykonywać połączenia głosowe do innych telefonów, a nawet łączyć się z Internetem!
- Możemy się z nim komunikować za pomocą poleceń AT!
- Może pobierać do 2A w godzinach szczytu! Uwaga: prawdopodobnie nie będziesz w stanie zmierzyć go multimetrem - ze względu na niskie częstotliwości próbkowania
Z mojego doświadczenia wynika, że SIM800L poniżej 3,8V tak naprawdę nie działa.
Aby uzyskać więcej informacji, odwiedź: arkusz danych
Twoim zadaniem jest więc doprowadzenie do modułu co najmniej 3,8V (najlepiej 4V), zasilacza o natężeniu co najmniej 2A.
Przed użyciem modułu w końcowym urządzeniu sugeruję nawiązanie komunikacji z SIM800L i komputerem, aby upewnić się, że urządzenie działa poprawnie.
Po pierwsze, podłącz kartę SIM jak na powyższym obrazku.
Aby połączyć go z komputerem, możesz użyć konwertera USB na TTL lub Arduino.
Teraz korzystam z Arduino.
Podłącz SIM800L VCC i GND do zacisków źródła zasilania.
Podłącz TX do 10. cyfrowego pinu Arduino, RX do 11. cyfrowego pinu arduino.
Pobierz kod, który połączyłem w tym kroku.
Za pomocą kodu możesz wysyłać polecenia i odzyskiwać je na swoim monitorze szeregowym.
Kilka prostych poleceń:
AT Zwraca OK, jeśli połączenie jest OK.
ATD+123456789; Zadzwoń pod podany numer telefonu. Uwaga: nie zapomnij zakończyć go średnikiem.
AT+CPIN? Zwraca status karty SIM (zablokowana lub nie)
Jeśli chcesz wysłać SMS, musisz zakończyć wprowadzanie znakiem specjalnym, można to zrobić za pomocą symbolu „$”.
Więcej ciekawych poleceń sugeruję przeczytanie tego.
Są różne polecenia, zapoznaj się z nimi, są naprawdę przydatne.
Jest czerwona dioda LED stanu, która informuje, w jakiej operacji znajduje się SIM800L.
64 MS ON - 800MS OFF - SIM800L nie jest zarejestrowany w sieci.
64 MS ON - 3000MS OFF - SIM800L jest zarejestrowany w sieci.
64 MS ON - 300MS OFF - SIM800l jest w trybie GPRS
Jeśli SIM800L będzie się ponownie uruchamiał po około 8-10 mrugnięciach, może to być spowodowane brakiem wydajnego zasilania.
Jeśli po AT nie będzie ci dobrze, sprawdź okablowanie! Jeśli masz multimetr, sprawdź ciągłość przewodów.
Sprawdź połączenia przewodów i połączenia lutowane! Moduł działa tylko wtedy, gdy miga.
Krok 4: Ublox Neo 6m
Niektóre cechy
- Napięcie maksymalne: 3,6 V - zasilałem go pinem 3,3 V Arduino
- Maksymalny pobór prądu to 67mA - więc możesz go zasilać z arduino
- Zakres temperatur: -40-85 stopni Celsjusza (chyba będzie do ciebie pasować)
Zamówiłem urządzenie z anteną widoczną na zdjęciu, po prostu podłączam ją do odpowiedniego gniazda.
Urządzenie, gdy ma sygnały, miga niebieską diodą LED.
Najpierw sprawdź, jak działa GPS, jeśli nie wiesz.
Gdy urządzenie jest włączone i znajduje 3 satelity, wysyła do Arduino wiele wartości oddzielonych przecinkami, jak powyżej.
Aby pomóc naszej pracy, możemy użyć zewnętrznych bibliotek, aby przeanalizować te dane, aby były bardziej czytelne dla człowieka.
Możesz użyć biblioteki TinyGps lub biblioteki NeoGPS. Użyłem drugiego, ponieważ jest lżejszy.
Do testów należy podłączyć piny zasilania do arduino 3,3V i GND.
Pobierz ten kod i używaj go z GPS. RX cyfrowy pin 10, TX cyfrowy pin 11
Uwaga: Nie zapomnij używać modułu na zewnątrz, najlepiej gdy nie ma chmur.
Po pół minucie urządzenie powinno migać i wyświetlać współrzędne GPS!:)
Gdy już wiesz, że Twój SIM800L i moduł GPS działają prawidłowo, możesz przejść do następnego kroku.
Krok 5: Obwody
Układ taki jak na zdjęciu.
Tak więc bateria 3,4 V - 4,2 V 18650 jest głównym źródłem zasilania. Sim800L pobiera energię bezpośrednio z niego. Pomiędzy nimi znajduje się równolegle kondensator w celu poprawy stabilności obwodu.
Wybierając kondensator, powinieneś wybrać kondensator o niskim ESR.
Jeden konwerter step-up 5V podnosi napięcie akumulatora do 5V (ir jest potrzebny, ponieważ Arduino pracuje z 5V).
Szyna zasilająca 5 V jest tutaj podłączona do Nano. Sim800L i Neo6m są połączone z Nano jak na zdjęciu. (Sim Tx-D10, SimRx-D11; NeoTX-D3, NeoRX-D4)
D12 jest podłączony do RST, dzięki czemu jesteśmy w stanie programowo zrestartować system (oprócz SIM800L). UWAGA: Ta metoda ponownego uruchamiania może nie być najlepszą praktyką)
I na koniec, do NANO podłączone są dwie diody LED, dzięki czemu możemy powiedzieć użytkownikowi, czy wystąpił jakiś błąd.
Krok 6: Kod
Kod jest dołączony do Instructables lub spójrz na github.
Możesz go zmodyfikować, aby działał poprawnie dla swoich potrzeb, lub możesz użyć kodu innych osób, jeśli chcesz.
waitUntilResponse(); funkcja pomocnicza została pobrana z jego kodu. Sprawdź jego pracę, a także kod!
Krótko mówiąc, w funkcji konfiguracji musimy włączyć połączenie GPRS naszego modułu SIM800L. Wiemy, czy to się powiedzie, jeśli dioda LED szybko miga. (konfiguracjaGPRSConnection())
W funkcji loop - co 15 sekund wywoływana jest funkcja sendData() - która ma żądanie
Użyłem ciągów zapytań, aby przesłać dane na serwer WWW w następującym formacie:
adres ip/plik.php?key=value&key=value np.
Jeśli wystąpi jakikolwiek błąd, zaświeci się odpowiednia dioda LED. (SIM, GPS)
Krok 7: Serwer WWW
Do naszego użytku wystarczy prosty, lekki serwer WWW.
Istnieje kilka opcji do wyboru:
- Możesz skorzystać ze zdalnego serwera firmy, za który prawdopodobnie będziesz musiał regularnie płacić.
- Możesz użyć własnego komputera. Proponuję go tylko do testowania, nie jest zbyt wydajny, aby go uruchamiać 24 godziny na dobę, ze względu na marnowanie energii, kwestie bezpieczeństwa.
- Możesz użyć małego komputera, takiego jak Raspberry PI. Lekki, tani, nie zużywa dużo energii.
Wypróbowałem drugą i trzecią opcję, działały dobrze. Cóż, głównym celem nie są serwery tej instrukcji, ale sugeruję kilka rad.
Jeśli używasz komputera, prawdopodobnie używasz systemu Windows. Na twoim miejscu zainstalowałbym na nim serwer Apache lub XAMPP.
XAMPP zawiera już PHP, poza tym zawiera HTML, Perl i system zarządzania bazą danych. Dzięki PHP możesz stworzyć dynamiczny serwer. Jeśli chcesz korzystać z lokalnego serwera, który właśnie stworzyłeś z dowolnego miejsca na świecie, musisz przypisać statyczny adres IP do swojego komputera i wykonać przekierowanie portów. Pomocny samouczek dotyczący statycznego adresu IP:
I cała sprawa z przekierowywaniem portów:
Jeśli masz malinę, dobrą praktyką jest jej używanie. Możesz zapoznać się z poleceniami Linuksa i uruchomić własny serwer 24/7.
System operacyjny to Raspbian Jessie z konfiguracją bezgłową (bez klawiatury, monitora) - kontrolowałem to za pomocą komputera z połączeniem SSH.
Użyłem Putty do zalogowania się do mojego Raspberry. Nie zapomnij zmienić hasła do swojego konta, aby inni nie mogli zalogować się do Ciebie Pi. Domyślnie: pi, passw: raspberry.
Zainstalowałem serwer WWW lighttpd z sqlite3. Dobry samouczek można znaleźć tutaj:
W kodzie serwera używałem głównie PHP. Dzięki PHP możesz odbierać dane, odczytywać/zapisywać bazy danych - kodować zapytania do formatu json, itp. …Ten samouczek bardzo Ci pomoże, jak zarządzać bazą danych za pomocą PHP.
Możesz zobaczyć mój kod również na github, w folderze server_files.
I oczywiście musisz włączyć przekierowanie portów do swojego Pi na routerze, jeśli chcesz uzyskać do niego zdalny dostęp.
Krok 8: Zakończenie/Doświadczenie
Ogrodzenie jest jeszcze do zrobienia.
Z mojego doświadczenia wynika, że system działa całkiem nieźle. Ale czekają na poprawę stabilności.
Jeśli tracker nie działał z załączonym przeze mnie kodem, nie martw się. Postaraj się, aby SIM800L i NEO 6M działały tak, jak powinny. Możesz dowolnie modyfikować mój kod lub poszukać lepszego. Mam tylko nadzieję, że przedstawię Wam przykład, jak możecie zrealizować ten projekt.
Przyjmuję wszelkie rady, korekty z uwag. Śmiało pytaj.
Zalecana:
Miernik poziomu wody w studni w czasie rzeczywistym: 6 kroków (ze zdjęciami)
Miernik poziomu wody w studni w czasie rzeczywistym: Te instrukcje opisują, jak zbudować tani miernik poziomu wody w czasie rzeczywistym do użytku w studniach kopanych. Miernik poziomu wody jest przeznaczony do zawieszenia w wykopanej studni, pomiaru poziomu wody raz dziennie i przesyłania danych przez WiFi lub połączenie komórkowe
Miernik temperatury, przewodności i poziomu wody w studni w czasie rzeczywistym: 6 kroków (ze zdjęciami)
Miernik temperatury wody w studni w czasie rzeczywistym, przewodności i poziomu wody: Instrukcje te opisują, jak zbudować tani wodomierz w czasie rzeczywistym do monitorowania temperatury, przewodności elektrycznej (EC) i poziomu wody w studniach wykopanych. Miernik przeznaczony jest do zawieszenia w wykopanej studni, pomiaru temperatury wody, EC i
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD - Symulacja rejestratora danych DHT11 w Proteus: 5 kroków
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD | Symulacja rejestratora danych DHT11 w Proteus: Wstęp: cześć, tu Liono Maker, tutaj link do YouTube. Tworzymy kreatywne projekty z Arduino i pracujemy na systemach wbudowanych.Data-Logger: Rejestrator danych (również rejestrator danych lub rejestrator danych) to urządzenie elektroniczne, które rejestruje dane w czasie w
Śledzenie GPS w czasie rzeczywistym: 3 kroki
Śledzenie GPS w czasie rzeczywistym: W tym samouczku pokażemy, jak śledzić lokalizację w czasie rzeczywistym za pomocą BerryGPS-GSM, Raspberry Pi Zero i stanu początkowego. Wyślemy długość, szerokość geograficzną i prędkość przez 3G z BerryGPS-GSM do stanu początkowego
Rejestrowanie danych w czasie rzeczywistym MPU-6050/A0 z Arduino i Androidem: 7 kroków (ze zdjęciami)
Rejestrowanie danych w czasie rzeczywistym MPU-6050/A0 z Arduino i Androidem: Byłem zainteresowany wykorzystaniem Arduino do uczenia maszynowego. Jako pierwszy krok chcę zbudować wyświetlacz i rejestrator danych w czasie rzeczywistym (lub całkiem blisko niego) za pomocą urządzenia z systemem Android. Chcę przechwycić dane akcelerometru z MPU-6050, więc zaprojektowałem