Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Funkcje
- Krok 2: Krok 1: Poznaj tablicę IoT (A)
- Krok 3: Krok 2: Jak to złożyć?
- Krok 4: Krok 3: Podłącz antenę
- Krok 5: Krok 4: Konfiguracje środowiska systemu operacyjnego i oprogramowania
- Krok 6: Krok 5: Konfiguracja I2C (Raspberry Pi)
- Krok 7: Krok 6: Poznaj informacje o rejestrze
- Krok 8:
- Krok 9: Instrukcje:
- Krok 10: Jak korzystać z modułu GPS z GPSd (Raspberry Pi)
- Krok 11: Jak korzystać z modułu GPS z C (Raspberry Pi)
- Krok 12: Skompiluj to
- Krok 13: Jak korzystać z modułu GPS z Pythonem (Raspberry Pi)
- Krok 14: Jak korzystać z modułu GSM z PPPd (Raspberry Pi)
- Krok 15: Jak zdiagnozować mój moduł GSM (Raspberry Pi)
- Krok 16: Jak używać Lora TX i RX z C (Raspberry Pi)
- Krok 17: Specjalny opis przepustowości I2C
- Krok 18: Zakończono
Wideo: [Seria Docker Pi] Jak korzystać z modułu IoT Node (A) na Raspberry Pi: 18 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Co to jest moduł węzła IoT (A)?
Węzeł IoT (A) jest jednym z modułów serii Docker Pi.
Węzeł IOT (A) = GPS/BDS + GSM + Lora.
I2C bezpośrednio kontroluje Lora, wysyła i odbiera dane, kontroluje moduł GSM/GPS/BDS przez SC16IS752, płyta główna potrzebuje tylko obsługi I2C.
Obsługuje Raspberry Pi i inne podobne produkty.
Kieszonkowe dzieci
1x Raspberry Pi 2B/3B/3B+/4B/3A+/Zero/Zero W
1x produkt z serii Docker Pi: moduł IoT Node (A)
1x karta TF klasy 10 o pojemności 16 GB;
1x zasilacz 5V/2,5A (5V@3A dla Pi 4B)
Krok 1: Funkcje
- Seria Docker Pi
- Programowalny
- Sterowanie bezpośrednio (bez programowania)
- Rozszerz piny GPIO
- Obsługa GPS/BDS
- Wsparcie GSM
- Wsparcie Lory
- Można układać w stos z inną tablicą stosu
- Niezależny od sprzętu płyty głównej (wymaga wsparcia I2C)
Krok 2: Krok 1: Poznaj tablicę IoT (A)
Węzeł IoT (A) jest jednym z modułów serii Docker Pi.
Węzeł IOT (A) = GPS/BDS + GSM + Lora.
I2C bezpośrednio kontroluje Lora, wysyła i odbiera dane, kontroluje moduł GSM/GPS/BDS przez SC16IS752, płyta główna potrzebuje tylko obsługi I2C. Obsługuje Raspberry Pi i inne podobne produkty.
Możesz więc stworzyć urządzenie komunikacyjne średniego zasięgu, używając dwóch z nich.
a także możesz zlokalizować lokalizację swojego urządzenia za pomocą wbudowanego modułu GPS.
Włóż kartę SIM, stanie się stacją nadawczą za pośrednictwem wiadomości SMS.
Krok 3: Krok 2: Jak to złożyć?
Jest bardzo łatwy w montażu ze względu na konstrukcję "czapeczki", wystarczy nałożyć ją na raspberry pi i podłączyć pinami GPIO, jest jak "czapeczka" na raspberry pi, dzięki czemu nie trzeba dokładać masy drut.
Krok 4: Krok 3: Podłącz antenę
Istnieją 3 anteny dla tego modułu IoT (A), jedna z nich jest przeznaczona dla modułu loar, jest to antena typu SMA, a jedna z nich jest dobra dla twojego GPS, jest to kwadratowa antena pudełkowa z portem IPX. a ostatnia dotyczy modułu SIM (A9G), to maleńka antena z portem IPX. podłącz antenę i zamontuj czapkę do swojego raspberry pi.
Jak zamontowaćZamontuj płytę Iot Node(A) do Raspberry Pi?
Podłączanie GPS antana i Lora antana do portu IPX.
- E1: GPS-ANTANA-IPX
- E3: LoRa-ANTANA-IPX
Przykręca antenę GPRS do portu SMA.
Krok 5: Krok 4: Konfiguracje środowiska systemu operacyjnego i oprogramowania
W tym kroku musisz zrobić te rzeczy:
1. Pobierz najnowszy plik obrazu ze strony: www.raspberrypi.org/downloads
2. Rozpakuj go.
3. Flashuj swoją kartę TF z najnowszym obrazem za pomocą narzędzia do wytrawiania
4. Zmodyfikuj plik /boot/config.txt i dodaj ten akapit.
dtoverlay=sc16is752-i2c
5. Zastępuje plik /boot/overlay/sc16is752-i2c.dtbo tym plikiem:
wiki.52pi.com/index.php/File:Sc16is752-i2c…
PS: pamiętaj, rozpakuj go i umieść w folderze /boot/overlay/ i zastąp stary.
6. Uruchom ponownie Raspberry Pi.
Krok 6: Krok 5: Konfiguracja I2C (Raspberry Pi)
Uruchom sudo raspi-config i postępuj zgodnie z instrukcjami, aby zainstalować obsługę i2c dla jądra ARM i jądra linux Przejdź do opcji interfejsu
Krok 7: Krok 6: Poznaj informacje o rejestrze
Sekcja GPRS
Niskie zużycie energii, prąd uśpienia w trybie czuwania <1mA2.
Obsługa czterech pasm częstotliwości GSM/GPRS, w tym 850, 900, 1800, 1900 MHZ;
Klasa GPRS 10
Obsługa usługi danych GPRS, maksymalna szybkość transmisji danych, pobieranie 85,6 kb/s, przesyłanie 42,8 kb/s
Obsługa standardowych poleceń AT GSM07.07, 07.05 i dostęp do portu szeregowego poprzez konwersję interfejsu I2C
Polecenia AT obsługują standardowe porty poleceń AT i TCP/IP
Sekcja GPSObsługa pozycjonowania stawu BDS/GPS
Obsługa A-GPS, A-BDS
Obsługa standardowej karty SIM
Sekcja LORA Odległość transmisji: 500 metrów (parametry RF: 0x50 @ China City)
Obsługa metod modulacji FSK, GFSK, MSK, GMSK, LoRaTM i OOK
Bardzo wysoka czułość odbiornika nawet -141 dBm
Obsługa wykrywania preambuły
Silnik pakietów z CRC, do 256 bajtów
Wskaźnik nadajnika-odbiornika LORA
Łatwy TX/RX przez Docker Pi
Krok 8:
Moduł A9G
Moduł A9G oferuje dwa porty szeregowe.
Do komunikacji użyj mostka I2C UART.
Nazwa modułu portu szeregowego
- /dev/ttySC0 GSM
- /dev/ttySC1 GPS/BDS
Zarejestruj mapę
- Rejestr Adres Funkcja Wartość
- 0x01 LORA_TX1 Lora TX Bufor 1 - dane użytkownika
- 0x02 LORA_TX2 Lora TX Bufor 2 - dane użytkownika
- 0x03 LORA_TX3 Lora TX Bufor 3 - dane użytkownika
- 0x04 LORA_TX4 Lora TX Bufor 4 - dane użytkownika
- 0x05 LORA_TX5 Lora TX Bufor 5 - dane użytkownika
- 0x06 LORA_TX6 Lora TX Bufor 6 - dane użytkownika
- 0x07 LORA_TX7 Lora TX Bufor 7 - dane użytkownika
- 0x08 LORA_TX8 Lora TX Bufor 8 - dane użytkownika
- 0x09 LORA_TX9 Lora TX Bufor 9 - dane użytkownika
- 0x0a LORA_TX10 Lora TX Bufor 10 - dane użytkownika
- 0x0b LORA_TX11 Bufor Lora TX 11 - dane użytkownika
- 0x0c LORA_TX12 Lora TX Bufor 12 - dane użytkownika
- 0x0d LORA_TX13 Bufor Lora TX 13 - dane użytkownika
- 0x0e LORA_TX14 Lora TX Bufor 14 - dane użytkownika
- 0x0f LORA_TX15 Lora TX Bufor 15 - dane użytkownika
- 0x10 LORA_TX16 Lora TX Bufor 16 - dane użytkownika
- 0x11 LORA_RX1 Lora RX Buffer 1 - dane użytkownika
- 0x12 LORA_RX2 Lora RX Buffer 2 - dane użytkownika
- 0x13 LORA_RX3 Lora RX Buffer 3 - dane użytkownika
- 0x14 LORA_RX4 Lora RX Bufor 4 - dane użytkownika
- 0x15 LORA_RX5 Lora RX Bufor 5 - dane użytkownika
- 0x16 LORA_RX6 Lora RX Buffer 6 - dane użytkownika
- 0x17 LORA_RX7 Lora RX Bufor 7 - dane użytkownika
- 0x18 LORA_RX8 Lora RX Bufor 8 - dane użytkownika
- 0x19 LORA_RX9 Lora RX Buffer 9 - Dane użytkownika
- 0x1a LORA_RX10 Bufor Lora RX 10 - dane użytkownika
- 0x1b LORA_RX11 Lora RX Buffer 11 - dane użytkownika
- 0x1c LORA_RX12 Lora RX Buffer 12 - dane użytkownika
- 0x1d LORA_RX13 Bufor Lora RX 13 - dane użytkownika
- 0x1e LORA_RX14 Bufor Lora RX 14 - dane użytkownika
- 0x1f LORA_RX15 Lora RX Buffer 15 - dane użytkownika
- 0x20 LORA_RX16 Bufor Lora RX 16 - dane użytkownika
- 0x01 - 0x10 Tylko zapis.
- 0x11 - 0x20 Tylko do odczytu.
Krok 9: Instrukcje:
L_SET (tylko zapis)
- Wpisz 1, aby ustawić parametry od 0x22 do modułu LORA.
- Napisz 0 nie ma wpływu
G_RESET (tylko zapis)
- Wpisz 1, aby zresetować moduł A9G
- Napisz 0 nie ma wpływu
L_RXNE (odczyt i zapis)
- Napisz 1 przyczynę błędu
- Wpisz 0, aby wyczyścić
- Odczyt 1 oznacza odebranie danych, proszę pobrać dane z rejestru 0x11 - 0x20.
- Odczyt 0 oznacza brak dostępnych danych.
L_SET (tylko zapis)
- Wpisz 1, aby wysłać dane, przed wysłaniem wypełnij dane w rejestrze 0x01 - 0x10.
- Napisz 0 nie ma wpływu
Krok 10: Jak korzystać z modułu GPS z GPSd (Raspberry Pi)
Jak korzystać z modułu GPS z GPSd (Raspberry Pi)
Najpierw wymień /boot/overlays/sc16is752-i2c.dtbo i upewnij się, że I2C działa poprawnie.
- Zastąp sc16is752-i2c.dtbo
- Konfiguracja I2C
- Zainstaluj narzędzia GPS.
Otwórz terminal i wpisz to polecenie:
sudo apt zainstaluj gpsd gpsd-klienci
Zmodyfikuj plik /etc/default/gpsd i dodaj następujące parametry:
- URZĄDZENIA="/dev/ttySC1"
- GPSD_OPTIONS = "-F /var/run/gpsd.sock"
Wpisz polecenie i2cset -y 1 0x16 0x23 0x40, aby zresetować moduł GPRS.
Skrypt Pythona dla Open GPS:
import serialimport os czas importu # Uruchom ponownie usługę gpsd. os.system("sudo systemctl restart gpsd.socket") # Otwórz port szeregowy ser = serial. Serial('/dev/ttySC0', 115200) i = 0 if ser.isOpen == False: ser.open() spróbuj: print("Włącz GPS…") while True: ser.write(str.encode("AT+GPS=1\r")) size = ser.inWaiting() if size != 0: ticks = time.time() odpowiedź = ser.read(rozmiar) gps = str(odpowiedź, kodowanie="utf-8") if(gps.find("OK") != -1): os.system("sudo cgps -s") exit() else: i = i + 1 print("Oczekiwanie na włączenie GPS, Jeśli czas jest zbyt długi, przetestuj na zewnątrz:" + str(i)) ser.flushInput() time.sleep(1) oprócz KeyboardInterrupt: ser.flushInput() ser.close()
Zapisz go i wykonaj:
python3 GPS.py
Krok 11: Jak korzystać z modułu GPS z C (Raspberry Pi)
Zainstaluj narzędzia GPS
sudo apt-get zainstaluj libgps-dev
Utwórz kod źródłowy i nazwij go „gps.c”
#include #include #include
#włączać
#włączać
int main()
{ wewn rc; struct timeval tv; struktura gps_data_t gps_data; if ((rc = gps_open("localhost", "2947", &gps_data)) == -1) { printf("kod: %d, powód: %s\n", rc, gps_errstr(rc)); powrót EXIT_FAILURE; } gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL);
gdy (1)
{ /* czekaj 2 sekundy na otrzymanie danych */ if (gps_waiting(&gps_data, 2000000)) { /* odczytaj dane */ if ((rc = gps_read(&gps_data)) == -1) { printf("wystąpił błąd podczas odczytu dane GPS. kod: %d, powód: %s\n", rc, gps_errstr(rc)); } else { /* Wyświetl dane z odbiornika GPS. */ if ((gps_data.status == STATUS_FIX) && (gps_data.fix.mode == MODE_2D || gps_data.fix.mode == MODE_3D) && !isnan(gps_data.fix.latitude) && !isnan(gps_data.fix.longitude)) { /* gettimeofday(&tv, NULL); EDYCJA: tv.tv_sec nie jest w rzeczywistości znacznikiem czasu! */
printf("latitude: %f, longitude: %f, speed: %f, timestamp: %lf\n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);
//EDYTUJ: Zamieniono tv.tv_sec na gps_data.fix.time } else { printf("brak danych GPS\n"); } } } sen(3); } /* Kiedy skończysz… */ gps_stream(&gps_data, WATCH_DISABLE, NULL); gps_close(&gps_data); powrót EXIT_SUCCESS; }
Krok 12: Skompiluj to
Skompilować!
gcc gps.c -lm -lgps -o gps
Wykonaj to!
./gps
Krok 13: Jak korzystać z modułu GPS z Pythonem (Raspberry Pi)
Poniższy kod zaleca się wykonać przy użyciu Pythona 3 i zainstalować bibliotekę gpsd-py3 oraz GPS 2D/3D Fix:
importuj gpsd
# Połącz się z lokalnym GPSd
gpsd.podłącz()
# Uzyskaj pozycję GPS
pakiet = gpsd.get_current()
# Zobacz wbudowane dokumenty dla GpsResponse dla dostępnych danych
print(pakiet.pozycja())
Krok 14: Jak korzystać z modułu GSM z PPPd (Raspberry Pi)
A) Najpierw wymień /boot/overlays/sc16is752-i2c.dtbo i upewnij się, że I2C działa poprawnie.
- Zastąp sc16is752-i2c.dtbo
- Konfiguracja I2C
B)Wprowadź polecenie i2cset -y 1 0x16 0x23 0x40, aby zresetować moduł GPRS.
Po uruchomieniu polecenia trzeba trochę poczekać, około 10 sekund
Możesz również użyć następującej metody, aby zresetować.
C)Wprowadź polecenie
sudo apt zainstaluj ppp
zainstalować narzędzia PPP.
D) Skopiuj /etc/ppp/peers/provider do /etc/ppp/peers/gprs
E) Zmodyfikuj /etc/ppp/peers/gprs
- Wiersz 10: Skontaktuj się z usługodawcą w sprawie użytkownika (przykład: cmnet).
- Linia 15: Skontaktuj się z usługodawcą w sprawie apn (przykład: cmnet).
- Linia 18 - Linia 24: Zalecane ustawienie
F) Zmodyfikuj /etc/chatscripts/gprs (zmień linię 34 na linię 35, numer połączenia może NIE być *99#)
G) Wpisz polecenie sudo pppd, zadzwoń do gprs, aby zadzwonić.
H)Sprawdź konfigurację PPP u swojego dostawcy usług internetowych.
I) Wpisz polecenie ping -I ppp0 8.8.8.8 przetestuj swoją sieć (jeśli jest dostępny Internet i tabela tras jest poprawna)
J) Utrzymuj dobry sygnał GSM, w przeciwnym razie wystąpią następujące zdarzenia.
Krok 15: Jak zdiagnozować mój moduł GSM (Raspberry Pi)
Poniższy kod zaleca się wykonać przy użyciu Pythona 3 i zainstalować bibliotekę smbus:
import serialimport time import smbus import operator import os
print("Czekam na inicjalizację…")
autobus = smbus. SMBus(1)
bus.write_byte_data (0x16, 0x23, 0x40)
ser = serial. Serial('/dev/ttySC0', 115200)
jeśli ser.isOpen == Fałsz:
ser.open() try: print('-'*60) print("Inicjalizacja modułu GPRS A9G.") print("Połączenie GSM…") time.sleep(3) i = 0 while True: ser.write(str.encode("AT+CCID\r")) size = ser.inWaiting() if size != 0: ticks = time.time() response = ser.read(size) ccid = str(odpowiedź, kodowanie="utf -8") print(ccid) else: i = i + 1 ser.flushInput() time.sleep(1) z wyjątkiem KeyboardInterrupt: ser.close()
Wykonaj Test Script, na podstawie wyników implementacji, możemy zdiagnozować moduł GSM. Na przykład następujący zwrot, błąd CME ERROR 53 informuje nas, że Zasilanie nie jest dobre. Kod CME = błędy związane ze sprzętem GSM
Oczywiście skrypt posiada również funkcję resetowania. Jeśli możesz poprawnie wyświetlić CCID, resetowanie jest zakończone.
Krok 16: Jak używać Lora TX i RX z C (Raspberry Pi)
Poniższy kod zaleca się wykonać przy użyciu Pythona 3 i zainstalować bibliotekę smbus.
Musi zostać przeniesiony między dwoma węzłami IOT (A). Treści wysyłane samodzielnie nie mogą być odbierane samodzielnie. Zapisz go jako skrypt py do wykonania.
Jak wysyłać: Po wpisaniu danych do rejestru 0x01 - 0x10, ustaw bit L_TX, aby rozpocząć wysyłanie danych.
import timeimport smbus import os import sys
autobus = smbus. SMBus(1)
próbować:
data_list = [170, 85, 165, 90] # zapisz dane do zarejestrowania, a następnie dane zostaną wysłane. dla indeksu w zakresie(1, len(data_list) + 1): bus.write_byte_data(0x16, index, data_list[indeks - 1]) print("LORA wyślij dane do %d rejestru %d dane" %(index, data_list[index - 1])) bus.write_byte_data(0x16, 0x23, 0x01) z wyjątkiem KeyboardInterrupt: sys.exit()
Jak wysłać Odbierz: Sprawdź bit L_RXNE, jeśli jest ustawiony, nadeszły nowe dane, ta flaga musi zostać ręcznie wyczyszczona
import timeimport smbus import os import sys
autobus = smbus. SMBus(1)
recv_data =
próbować:
if bus.read_byte_data(0x16, 0x23) & 0x02: # ręcznie wyczyść L_RXNE bus.write_byte_data(0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # odczyt danych dla indeksu w zakresie (0x11, len(lista_rejestrów) + 0x11): recv_data.append(bus.read_byte_data(0x16, register_list[indeks - 0x11]))
print("Otrzymane dane:")
print(recv_data) else: print("Nie otrzymano jeszcze danych~") z wyjątkiem KeyboardInterrupt: sys.exit()
Krok 17: Specjalny opis przepustowości I2C
Limit prędkości I2C wynosi 400kHz, ze względu na protokół I2C, więc efektywna przepustowość pojedynczego urządzenia jest niższa niż 320kbps, efektywna przepustowość wielu urządzeń jest niższa niż 160kbps. Limit prędkości mostu I2C UART wynosi 115200bps. Gdy GPS i GSM działają w tym samym czasie, przepustowość I2C jest niewystarczająca, ponieważ 115,2kbps * 2 = 230,4kbps, więc część danych będzie przepełniona. Zmniejszenie szybkości transmisji GPS i GSM może poprawić niedobór przepustowości komunikacji. Układanie innych modułów DockerPi może zająć dodatkowa przepustowość I2C. Zwykle prędkość danych w sieci jest niska, więc przepustowość GSM nie jest pełna, więc nie ma problemu z przepełnieniem.
Krok 18: Zakończono
Mam nadzieję, że wam się spodoba i zrobicie to.
znajdziesz go tutaj:
Amazonka
Światło nocne: https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4-kanałowa płyta przekaźnikowa: https://www.amazon.co.uk/dp/B07MV1TJGR?ref=myi_title_dp Płyta zasilająca :https://www.amazon.co.uk/dp/B07TD595VS?ref=myi_title_dp Węzeł IoT(A):https://www.amazon.co.uk/dp/B07TY15M1C PIASTA czujnika: https://www. amazon.co.uk/dp/B07TZD8B61 wieża lodowa:
Zalecana:
Jak korzystać z modułu RFID-RC522 z Arduino: 5 kroków
Jak korzystać z modułu RFID-RC522 z Arduino: W tym instruktażu przedstawię podstawowe zasady działania modułu RFID w połączeniu z jego tagami i chipami. Przedstawię również krótki przykład projektu, który wykonałem przy użyciu tego modułu RFID z diodą LED RGB. Jak zwykle z moimi Ins
Jak korzystać z modułu zegara czasu rzeczywistego (DS3231): 5 kroków
Jak korzystać z modułu zegara czasu rzeczywistego (DS3231): DS3231 to tani, niezwykle dokładny zegar czasu rzeczywistego (RTC) I2C ze zintegrowanym oscylatorem kwarcowym z kompensacją temperatury (TCXO) i kryształem. Urządzenie zawiera wejście baterii i utrzymuje dokładny pomiar czasu, gdy główne zasilanie
Jak korzystać z czujnika PIR i modułu brzęczyka - samouczek Visuino: 6 kroków
Jak używać czujnika PIR i modułu brzęczyka - Samouczek Visuino: W tym samouczku nauczymy się, jak używać czujnika PIR i modułu brzęczyka, aby wydawać dźwięk za każdym razem, gdy czujnik PIR wykryje ruch. Obejrzyj film demonstracyjny
Jak korzystać z modułu przycisków w SkiiiD: 9 kroków
Jak używać modułu przycisków z SkiiiD: Ten projekt jest instrukcją „jak używać Buzzera HW-508 (dotyczy KY-006) z Arduino za pomocą skiiiDBPrzed rozpoczęciem, poniżej znajduje się podstawowy samouczek dotyczący korzystania ze skiiiD https:// www.instructables.com/id/Getting-Started-With-SkiiiD-Editor
Jak korzystać z terminala Mac i jak korzystać z kluczowych funkcji: 4 kroki
Jak korzystać z terminala Mac i jak korzystać z kluczowych funkcji: Pokażemy Ci, jak otworzyć terminal MAC. Pokażemy również kilka funkcji w Terminalu, takich jak ifconfig, zmiana katalogów, dostęp do plików i arp. Ifconfig pozwoli Ci sprawdzić Twój adres IP i reklamę MAC