Spisu treści:

[Seria Docker Pi] Jak korzystać z modułu IoT Node (A) na Raspberry Pi: 18 kroków
[Seria Docker Pi] Jak korzystać z modułu IoT Node (A) na Raspberry Pi: 18 kroków

Wideo: [Seria Docker Pi] Jak korzystać z modułu IoT Node (A) na Raspberry Pi: 18 kroków

Wideo: [Seria Docker Pi] Jak korzystać z modułu IoT Node (A) na Raspberry Pi: 18 kroków
Wideo: Cz.2 Linux co to za zwierzę i jak je oswoić.Wstep do powstania systemu i gdzie jest używany 2024, Lipiec
Anonim
[Seria Docker Pi] Jak korzystać z modułu IoT Node (A) na Raspberry Pi
[Seria Docker Pi] Jak korzystać z modułu IoT Node (A) na Raspberry Pi

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

Cechy
Cechy
Cechy
Cechy
Cechy
Cechy
  • 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)

Krok 1: Poznaj tablicę IoT (A)
Krok 1: Poznaj tablicę IoT (A)
Krok 1: Poznaj tablicę IoT (A)
Krok 1: Poznaj tablicę IoT (A)
Krok 1: Poznaj tablicę IoT (A)
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ć?

Krok 2: Jak go złożyć?
Krok 2: Jak go złożyć?
Krok 2: Jak go złożyć?
Krok 2: Jak go 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ę

Krok 3: podłącz antenę
Krok 3: podłącz antenę
Krok 3: podłącz antenę
Krok 3: podłącz antenę
Krok 3: podłącz antenę
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)

Krok 5: Konfiguracja I2C (Raspberry Pi)
Krok 5: Konfiguracja I2C (Raspberry Pi)
Krok 5: Konfiguracja I2C (Raspberry Pi)
Krok 5: Konfiguracja I2C (Raspberry Pi)
Krok 5: Konfiguracja I2C (Raspberry Pi)
Krok 5: Konfiguracja I2C (Raspberry Pi)
Krok 5: Konfiguracja I2C (Raspberry Pi)
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:

Instrukcje
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)
Jak korzystać z modułu GPS z GPSd (Raspberry Pi)
Jak korzystać z modułu GPS z GPSd (Raspberry Pi)
Jak korzystać z modułu GPS z GPSd (Raspberry Pi)
Jak korzystać z modułu GPS z GPSd (Raspberry Pi)
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

Skompiluj to
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)

Jak korzystać z modułu GPS z Pythonem (Raspberry Pi)
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)

Jak korzystać z modułu GSM z PPPd (Raspberry Pi)
Jak korzystać z modułu GSM z PPPd (Raspberry Pi)
Jak korzystać z modułu GSM z PPPd (Raspberry Pi)
Jak korzystać z modułu GSM z PPPd (Raspberry Pi)
Jak korzystać z modułu GSM z PPPd (Raspberry Pi)
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)

Jak zdiagnozować mój moduł GSM (Raspberry Pi)
Jak zdiagnozować mój moduł GSM (Raspberry Pi)
Jak zdiagnozować mój moduł GSM (Raspberry Pi)
Jak zdiagnozować mój moduł GSM (Raspberry Pi)
Jak zdiagnozować mój moduł GSM (Raspberry Pi)
Jak zdiagnozować mój moduł GSM (Raspberry Pi)
Jak zdiagnozować mój moduł GSM (Raspberry Pi)
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: