Spisu treści:

Domowy lokalizator GPS w czasie rzeczywistym (SIM800L, Ublox NEO-6M, Arduino): 8 kroków
Domowy lokalizator GPS w czasie rzeczywistym (SIM800L, Ublox NEO-6M, Arduino): 8 kroków

Wideo: Domowy lokalizator GPS w czasie rzeczywistym (SIM800L, Ublox NEO-6M, Arduino): 8 kroków

Wideo: Domowy lokalizator GPS w czasie rzeczywistym (SIM800L, Ublox NEO-6M, Arduino): 8 kroków
Wideo: Lokalizator GPS dla psa i kota - Tractive - spyshop.pl 2024, Listopad
Anonim
Domowy lokalizator GPS w czasie rzeczywistym (SIM800L, Ublox NEO-6M, Arduino)
Domowy lokalizator GPS w czasie rzeczywistym (SIM800L, Ublox NEO-6M, Arduino)

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

Warunki wstępne
Warunki wstępne
Warunki wstępne
Warunki wstępne
Warunki wstępne
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łówna koncepcja
Główna koncepcja

Główną koncepcją systemu jest:

Składa się z 3 części:

  1. Urządzenie - które ma odpowiednie współrzędne GPS i może zdalnie łączyć się z serwerem i przesyłać do niego dane
  2. Serwer WWW - który może odbierać przychodzące dane - przechowywać je - i obsługiwać innych klientów
  3. Platforma - na której możemy zobaczyć współrzędne - Idealnie powinna to być teraz aplikacja mobilna lub strona internetowa

Krok 3: Moduł SIM800L

Moduł SIM800L
Moduł SIM800L
Moduł SIM800L
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

Ublox Neo 6m
Ublox Neo 6m
Ublox Neo 6m
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

Obwody
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

Serwer internetowy
Serwer internetowy

Do naszego użytku wystarczy prosty, lekki serwer WWW.

Istnieje kilka opcji do wyboru:

  1. Możesz skorzystać ze zdalnego serwera firmy, za który prawdopodobnie będziesz musiał regularnie płacić.
  2. 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.
  3. 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: