Inhoudsopgave:

[Docker Pi-serie]Hoe IoT Node (A)-module op Raspberry Pi te gebruiken - Ajarnpa
[Docker Pi-serie]Hoe IoT Node (A)-module op Raspberry Pi te gebruiken - Ajarnpa

Video: [Docker Pi-serie]Hoe IoT Node (A)-module op Raspberry Pi te gebruiken - Ajarnpa

Video: [Docker Pi-serie]Hoe IoT Node (A)-module op Raspberry Pi te gebruiken - Ajarnpa
Video: JBC I JTSE Hot Air Station I Makes your life easy 2024, Juli-
Anonim
[Docker Pi-serie]Hoe de IoT Node (A)-module op Raspberry Pi te gebruiken
[Docker Pi-serie]Hoe de IoT Node (A)-module op Raspberry Pi te gebruiken

Wat is de IoT Node (A)-module?

IoT Node (A) is een module uit de Docker Pi-serie.

IOT-knooppunt (A) = GPS/BDS + GSM + Lora.

I2C bestuurt Lora rechtstreeks, verzendt en ontvangt gegevens, bestuurt de GSM/GPS/BDS-module via SC16IS752, het moederbord heeft alleen I2C-ondersteuning nodig.

Ondersteuning Raspberry Pi en andere soortgelijke producten.

Benodigdheden

1x Raspberry Pi 2B/3B/3B+/4B/3A+/Zero /Zero W

1x product uit de Docker Pi-serie: IoT Node(A)-module

1x 16GB klasse 10 TF-kaart

1x 5V/2.5A voeding (5V@3A voor Pi 4B)

Stap 1: Kenmerken

Functies
Functies
Functies
Functies
Functies
Functies
  • Docker Pi-serie
  • Programmeerbaar
  • Direct aansturen (zonder programmeren)
  • Verleng de GPIO-pinnen
  • GPS/BDS-ondersteuning
  • GSM-ondersteuning:
  • Lora-ondersteuning
  • Kan stapelen met ander stapelbord
  • Onafhankelijk van de hardware van het moederbord (vereist I2C-ondersteuning)

Stap 2: Stap 1: Weet over het IoT (A)-bord

Stap 1: Weet over het IoT (A) bord
Stap 1: Weet over het IoT (A) bord
Stap 1: Weet over het IoT (A) bord
Stap 1: Weet over het IoT (A) bord
Stap 1: Weet over het IoT (A) bord
Stap 1: Weet over het IoT (A) bord

IoT Node (A) is een module uit de Docker Pi-serie.

IOT-knooppunt (A) = GPS/BDS + GSM + Lora.

I2C bestuurt Lora rechtstreeks, verzendt en ontvangt gegevens, bestuurt de GSM/GPS/BDS-module via SC16IS752, het moederbord heeft alleen I2C-ondersteuning nodig. Ondersteuning Raspberry Pi en andere soortgelijke producten.

U kunt dus een communicatieapparaat voor het middenbereik maken door er twee te gebruiken.

en u kunt ook de locatie van uw apparaat lokaliseren met behulp van de GPS-module aan boord.

Plaats een simkaart, het wordt een zenderstation via sms-bericht.

Stap 3: Stap 2: Hoe het te monteren?

Stap 2: Hoe het te monteren?
Stap 2: Hoe het te monteren?
Stap 2: Hoe het te monteren?
Stap 2: Hoe het te monteren?

Het is heel eenvoudig om het te monteren dankzij het "HAT" -ontwerp, je plaatst het gewoon op je Raspberry Pi en verbindt het via GPIO-pinnen, het is als een "hoed" op Raspberry Pi, zodat je geen massa hoeft toe te voegen draad.

Stap 4: Stap 3: Sluit de antenne aan

Stap 3: Antenne aansluiten
Stap 3: Antenne aansluiten
Stap 3: Antenne aansluiten
Stap 3: Antenne aansluiten
Stap 3: Antenne aansluiten
Stap 3: Antenne aansluiten

Er zijn 3 stuks antenne voor deze IoT (A) module, een daarvan is voor de loar-module, het is een SMA-type antenne, en een daarvan is goed voor je GPS, het is een vierkante doosantenne met een IPX-poort. en de laatste is voor de SIM-module (A9G), het is een kleine antenne met een IPX-poort. sluit de antenne aan en monteer de hoed op je Raspberry Pi.

Hoe te monterenMonteer het Iot Node(A)-bord op Raspberry Pi

Sluit GPS antana en Lora antana aan op de IPX-poort.

  • E1 (GPS-ANTANA-IPX)
  • E3 (LoRa-ANTANA-IPX)

Schroeft de GPRS antana op de SMA-poort.

Stap 5: Stap 4: OS-omgeving en softwareconfiguraties

In deze stap moet je de volgende dingen doen:

1. Download het nieuwste afbeeldingsbestand van: www.raspberrypi.org/downloads

2. Pak het uit.

3. Flash uw TF-kaart met de nieuwste afbeelding via etstool

4. Wijzig het bestand /boot/config.txt en voeg deze paragraaf toe.

dtoverlay=sc16is752-i2c

5. Vervangt /boot/overlay/sc16is752-i2c.dtbo bestand door dit bestand:

wiki.52pi.com/index.php/File:Sc16is752-i2c…

PS: onthoud dat u het uitpakt en in uw /boot/overlay/-map plaatst en de oude vervangt.

6. Start je Raspberry Pi opnieuw op.

Stap 6: Stap 5: I2C configureren (Raspberry Pi)

Stap 5: I2C configureren (Raspberry Pi)
Stap 5: I2C configureren (Raspberry Pi)
Stap 5: I2C configureren (Raspberry Pi)
Stap 5: I2C configureren (Raspberry Pi)
Stap 5: I2C configureren (Raspberry Pi)
Stap 5: I2C configureren (Raspberry Pi)
Stap 5: I2C configureren (Raspberry Pi)
Stap 5: I2C configureren (Raspberry Pi)

Voer sudo raspi-config uit en volg de aanwijzingen om i2c-ondersteuning voor de ARM-kern en linux-kernel te installeren Ga naar Interfacing-opties

Stap 7: Step6: Weet over de registerinformatie

GPRS-sectie

Laag stroomverbruik, standby-slaapstroom <1mA2.

Ondersteuning van GSM/GPRS vier frequentiebanden, waaronder 850, 900, 1800, 1900MHZ

GPRS-klasse 10

Ondersteuning GPRS-gegevensservice, maximale gegevenssnelheid, download 85,6 Kbps, upload 42,8 Kbps

Ondersteuning van standaard GSM07.07, 07.05 AT-opdrachten en toegang tot de seriële poort via I2C-interfaceconversie;

AT-opdrachten ondersteunen standaard AT- en TCP/IP-opdrachtpoorten

GPS-sectieOndersteuning van BDS/GPS gezamenlijke positionering

Ondersteuning A-GPS, A-BDS

Ondersteuning standaard simkaart:

LORA-sectie Transmissieafstand: 500 meter (RF-parameters: 0x50 @ China City)

Ondersteuning van FSK, GFSK, MSK, GMSK, LoRaTM en OOK modulatiemethoden

Ultrahoge gevoeligheid van de ontvanger tot maar liefst -141 dBm

Ondersteuning preambule detectie:

Pakketengine met CRC, tot 256 bytes

LORA-zendontvangerindicator

Gemakkelijke TX/RX door Docker Pi

Stap 8:

A9G-module

A9G-module biedt twee seriële poorten.

Gebruik I2C UART bridge voor communicatie.

Naam seriële poortmodule

  • /dev/ttySC0 GSM
  • /dev/ttySC1 GPS/BDS

Registreer kaart

  • Register Adres Functie Waarde
  • 0x01 LORA_TX1 Lora TX Buffer 1 - Gebruikersgegevens
  • 0x02 LORA_TX2 Lora TX Buffer 2 - Gebruikersgegevens
  • 0x03 LORA_TX3 Lora TX Buffer 3 - Gebruikersgegevens
  • 0x04 LORA_TX4 Lora TX Buffer 4 - Gebruikersgegevens
  • 0x05 LORA_TX5 Lora TX Buffer 5 - Gebruikersgegevens
  • 0x06 LORA_TX6 Lora TX Buffer 6 - Gebruikersgegevens
  • 0x07 LORA_TX7 Lora TX Buffer 7 - Gebruikersgegevens
  • 0x08 LORA_TX8 Lora TX Buffer 8 - Gebruikersgegevens
  • 0x09 LORA_TX9 Lora TX Buffer 9 - Gebruikersgegevens
  • 0x0a LORA_TX10 Lora TX Buffer 10 - Gebruikersgegevens
  • 0x0b LORA_TX11 Lora TX Buffer 11 - Gebruikersgegevens
  • 0x0c LORA_TX12 Lora TX Buffer 12 - Gebruikersgegevens
  • 0x0d LORA_TX13 Lora TX Buffer 13 - Gebruikersgegevens
  • 0x0e LORA_TX14 Lora TX Buffer 14 - Gebruikersgegevens
  • 0x0f LORA_TX15 Lora TX Buffer 15 - Gebruikersgegevens
  • 0x10 LORA_TX16 Lora TX Buffer 16 - Gebruikersgegevens
  • 0x11 LORA_RX1 Lora RX Buffer 1 - Gebruikersgegevens
  • 0x12 LORA_RX2 Lora RX Buffer 2 - Gebruikersgegevens
  • 0x13 LORA_RX3 Lora RX Buffer 3 - Gebruikersgegevens
  • 0x14 LORA_RX4 Lora RX Buffer 4 - Gebruikersgegevens
  • 0x15 LORA_RX5 Lora RX Buffer 5 - Gebruikersgegevens
  • 0x16 LORA_RX6 Lora RX Buffer 6 - Gebruikersgegevens
  • 0x17 LORA_RX7 Lora RX Buffer 7 - Gebruikersgegevens
  • 0x18 LORA_RX8 Lora RX Buffer 8 - Gebruikersgegevens
  • 0x19 LORA_RX9 Lora RX Buffer 9 - Gebruikersgegevens
  • 0x1a LORA_RX10 Lora RX Buffer 10 - Gebruikersgegevens
  • 0x1b LORA_RX11 Lora RX Buffer 11 - Gebruikersgegevens
  • 0x1c LORA_RX12 Lora RX Buffer 12 - Gebruikersgegevens
  • 0x1d LORA_RX13 Lora RX Buffer 13 - Gebruikersgegevens
  • 0x1e LORA_RX14 Lora RX Buffer 14 - Gebruikersgegevens
  • 0x1f LORA_RX15 Lora RX Buffer 15 - Gebruikersgegevens
  • 0x20 LORA_RX16 Lora RX Buffer 16 - Gebruikersgegevens
  • 0x01 - 0x10 Alleen schrijven.
  • 0x11 - 0x20 Alleen lezen.

Stap 9: Instructies:

Instructies
Instructies

L_SET (alleen schrijven)

  • Schrijf 1 om parameters in te stellen van 0x22 tot LORA Module.
  • Schrijf 0 geen effect

G_RESET (alleen schrijven)

  • Schrijf 1 om de A9G-module te resetten
  • Schrijf 0 geen effect

L_RXNE(Lezen & Schrijven)

  • Schrijf 1 oorzaak fout
  • Schrijf 0 om te wissen
  • Lezen 1 betekent dat de gegevens zijn ontvangen. Haal de gegevens op uit het register 0x11 - 0x20.
  • Lezen 0 betekent dat er nu geen gegevens beschikbaar zijn.

L_SET (alleen schrijven)

  • Schrijf 1 om gegevens te verzenden, vul de gegevens in register 0x01 - 0x10 in voordat u verzendt.
  • Schrijf 0 geen effect

Stap 10: Hoe GPS-module te gebruiken met Gpsd (Raspberry Pi)

Hoe GPS-module te gebruiken met GPS (Raspberry Pi)
Hoe GPS-module te gebruiken met GPS (Raspberry Pi)
Hoe GPS-module te gebruiken met GPS (Raspberry Pi)
Hoe GPS-module te gebruiken met GPS (Raspberry Pi)
Hoe GPS-module te gebruiken met GPS (Raspberry Pi)
Hoe GPS-module te gebruiken met GPS (Raspberry Pi)

GPS-module gebruiken met gpsd (Raspberry Pi)

Vervang eerst de /boot/overlays/sc16is752-i2c.dtbo en zorg ervoor dat I2C goed werkt.

  • Vervang sc16is752-i2c.dtbo
  • I2C configureren
  • Installeer gpsd-tools.

Open een terminal en typ deze opdracht:

sudo apt gpsd gpsd-clients installeren

Wijzig het bestand /etc/default/gpsd en voeg de volgende parameters toe:

  • DEVICES="/dev/ttySC1"
  • GPSD_OPTIONS="-F /var/run/gpsd.sock"

Voer het commando i2cset -y 1 0x16 0x23 0x40 in om de GPRS-module te resetten.

Python-script voor open GPS:

import serialimport os import time # Start gpsd-service opnieuw. os.system("sudo systemctl restart gpsd.socket") # Open seriële poort ser = serial. Serial('/dev/ttySC0', 115200) i = 0 if ser.isOpen == False: ser.open() probeer: print("Turn on GPS…") while True: ser.write(str.encode("AT+GPS=1\r")) size = ser.inWaiting() if size != 0: ticks = time.time() response = ser.read(size) gps = str(response, encoding="utf-8") if(gps.find("OK") != -1): os.system("sudo cgps -s") exit() else: i = i + 1 print("Wachten op GPS inschakelen, als de tijd te lang is, test buiten:" + str(i)) ser.flushInput() time.sleep(1) behalve KeyboardInterrupt: ser.flushInput() ser.close()

Sla het op en voer het uit:

python3 GPS.py

Stap 11: Hoe GPS-module te gebruiken met C (Raspberry Pi)

Installeer gpsd-tools

sudo apt-get install libgps-dev

Maak de broncode en noem deze "gps.c"

#include #include #include

#erbij betrekken

#erbij betrekken

int hoofd()

{ int rc; structuur timeval tv; struct gps_data_t gps_data; if ((rc = gps_open("localhost", "2947", &gps_data)) == -1) { printf("code: %d, reden: %s\n", rc, gps_errstr(rc)); retourneer EXIT_FAILURE; } gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

terwijl (1)

{ /* wacht 2 seconden om data te ontvangen */ if (gps_waiting(&gps_data, 2000000)) { /* read data */ if ((rc = gps_read(&gps_data)) == -1) { printf("er is een fout opgetreden bij het lezen gps data.code: %d, reden: %s\n", rc, gps_errstr(rc)); } else { /* Gegevens van de GPS-ontvanger weergeven. */ 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.lengtegraad)) { /* gettimeofday(&tv, NULL); EDIT: tv.tv_sec is niet echt de tijdstempel! */

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);

//EDIT: tv.tv_sec vervangen door gps_data.fix.time } else { printf("geen GPS-gegevens beschikbaar\n"); } } } slaap(3); } /* Als je klaar bent… */ gps_stream(&gps_data, WATCH_DISABLE, NULL); gps_close(&gps_data); retourneer EXIT_SUCCESS; }

Stap 12: compileer het

Compileer het
Compileer het

Compileren!

gcc gps.c -lm -lgps -o gps

Voer het uit!

./GPS

Stap 13: GPS-module gebruiken met Python (Raspberry Pi)

GPS-module gebruiken met Python (Raspberry Pi)
GPS-module gebruiken met Python (Raspberry Pi)

Het wordt aanbevolen om de volgende code uit te voeren met Python 3 en de gpsd-py3-bibliotheek en GPS 2D/3D Fix te installeren:

import gpsd

# Maak verbinding met de lokale gpsd

gpsd.connect()

# Krijg gps-positie

pakket = gpsd.get_current()

# Zie de inline docs voor GpsResponse voor de beschikbare data

print(pakket.positie())

Stap 14: Hoe de GSM-module te gebruiken met PPPd (Raspberry Pi)

Hoe de GSM-module te gebruiken met PPPd (Raspberry Pi)
Hoe de GSM-module te gebruiken met PPPd (Raspberry Pi)
Hoe de GSM-module te gebruiken met PPPd (Raspberry Pi)
Hoe de GSM-module te gebruiken met PPPd (Raspberry Pi)
Hoe de GSM-module te gebruiken met PPPd (Raspberry Pi)
Hoe de GSM-module te gebruiken met PPPd (Raspberry Pi)

A) Vervang eerst de /boot/overlays/sc16is752-i2c.dtbo en zorg ervoor dat I2C goed werkt.

  • Vervang sc16is752-i2c.dtbo
  • I2C configureren

B) Voer de opdracht i2cset -y 1 0x16 0x23 0x40 in om de GPRS-module te resetten.

Na het uitvoeren van de opdracht, moet je even wachten, ongeveer 10 seconden

U kunt ook de volgende methode gebruiken om te resetten.

C) Voer opdracht in

sudo apt install ppp

om ppp-tools te installeren.

D)Kopieer /etc/ppp/peers/provider naar /etc/ppp/peers/gprs

E)Wijzig /etc/ppp/peers/gprs

  • Regel 10: Raadpleeg uw serviceprovider voor de gebruiker (voorbeeld: cmnet).
  • Regel 15: Raadpleeg uw serviceprovider voor de apn (voorbeeld: cmnet).
  • Lijn 18 - Lijn 24:Aanbevolen instelling

F) Wijzig /etc/chatscripts/gprs (verander regel 34 in regel 35, kiesnummer mag NIET *99# zijn)

G) Voer het commando sudo pppd call gprs in om in te bellen.

H)Controleer uw ppp-configuratie van uw ISP.

I)Voer opdracht ping -I ppp0 8.8.8.8 test uw netwerk (indien internet beschikbaar en routetabel correct is)

J) Houd het GSM-signaal goed, anders gebeurt het volgende.

Stap 15: Hoe mijn GSM-module te diagnosticeren (Raspberry Pi)

Diagnose van mijn GSM-module (Raspberry Pi)
Diagnose van mijn GSM-module (Raspberry Pi)
Diagnose van mijn GSM-module (Raspberry Pi)
Diagnose van mijn GSM-module (Raspberry Pi)
Diagnose van mijn GSM-module (Raspberry Pi)
Diagnose van mijn GSM-module (Raspberry Pi)
Diagnose van mijn GSM-module (Raspberry Pi)
Diagnose van mijn GSM-module (Raspberry Pi)

Het wordt aanbevolen om de volgende code uit te voeren met Python 3 en de smbus-bibliotheek te installeren:

import seriële import tijd import smbus import operator import os

print("Wachten op initialisatie…")

bus = smbus. SMBus(1)

bus.write_byte_data(0x16, 0x23, 0x40)

ser = serieel. Serial('/dev/ttySC0', 115200)

if ser.isOpen == Onwaar:

ser.open() try: print('-'*60) print("Initialiseren van A9G GPRS-module.") print("GSM-verbinding…") 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(response, encoding="utf -8") print(ccid) else: i = i + 1 ser.flushInput() time.sleep(1) behalve KeyboardInterrupt: ser.close()

Exec het testscript, op basis van de resultaten van de implementatie, kunnen we de GSM-module diagnosticeren. Bijvoorbeeld, de volgende terugkeer, CME ERROR 53-fout, vertel ons Vermogen niet goed. CME-code = GSM-apparatuur Gerelateerde fouten

Natuurlijk heeft het script ook een resetfunctie. Als u de CCID correct kunt weergeven, is de reset voltooid.

Stap 16: Lora TX & RX gebruiken met C (Raspberry Pi)

Het wordt aanbevolen om de volgende code uit te voeren met Python 3 en de smbus-bibliotheek te installeren.

Het moet worden overgedragen tussen de twee IOT Node (A). De inhoud die op zichzelf is verzonden, kan niet op zichzelf worden ontvangen. Sla het op als een py-script voor uitvoering.

Hoe te verzenden: Nadat u de gegevens in register 0x01 - 0x10 hebt ingevuld, stelt u de L_TX-bit in om te beginnen met het verzenden van gegevens.

import timeimport smbus import os import sys

bus = smbus. SMBus(1)

proberen:

data_list = [170, 85, 165, 90] # schrijf gegevens om te registreren en dan worden de gegevens verzonden. voor index in range(1, len(data_list) + 1): bus.write_byte_data(0x16, index, data_list[index - 1]) print("LORA verzend data naar %d register %d data" %(index, data_list[index - 1])) bus.write_byte_data(0x16, 0x23, 0x01) behalve KeyboardInterrupt: sys.exit()

Hoe te verzenden Ontvangen: Controleer L_RXNE bit, indien ingesteld, nieuwe gegevens zijn aangekomen, deze vlag moet handmatig worden gewist

import timeimport smbus import os import sys

bus = smbus. SMBus(1)

recv_data =

proberen:

if bus.read_byte_data(0x16, 0x23) & 0x02: # handmatig wissen L_RXNE bus.write_byte_data(0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # lees data uit voor index binnen bereik (0x11, len(register_list) + 0x11): recv_data.append(bus.read_byte_data(0x16, register_list[index - 0x11]))

print("Ontvangen gegevens:")

print(recv_data) else: print("Nog geen gegevens ontvangen~") behalve KeyboardInterrupt: sys.exit()

Stap 17: Speciale beschrijving van I2C-bandbreedte

De limiet van de I2C-snelheid is 400 kHz, vanwege het I2C-protocol, dus de effectieve bandbreedte voor één apparaat is lager dan 320 kbps, de effectieve bandbreedte voor meerdere apparaten is lager dan 160 kbps. De limiet van de I2C UART Bridge-snelheid is 115200bps. Wanneer GPS en GSM tegelijkertijd werken, is de I2C-bandbreedte onvoldoende, omdat 115,2 kbps * 2 = 230,4 kbps, dus sommige gegevens zullen overlopen. Het verminderen van de baudrate van GPS- en GSM-communicatie kan het tekort aan communicatiebandbreedte verbeteren. Het stapelen van andere DockerPi-modules kan veel tijd in beslag nemen extra I2C-bandbreedte. Meestal is de netwerkgegevenssnelheid traag, dus de GSM-bandbreedte is niet vol, dus er is geen overloopprobleem.

Stap 18: Klaar

Hoop dat jullie het leuk vinden en maken.

je kunt het hier vinden:

Amazone

Nachtlampje: https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4-kanaals relaisbord: https://www.amazon.co.uk/dp/B07MV1TJGR?ref=myi_title_dp Power Board :https://www.amazon.co.uk/dp/B07TD595VS?ref=myi_title_dp IoT Node(A):https://www.amazon.co.uk/dp/B07TY15M1C Sensor HUB: https://www. amazon.co.uk/dp/B07TZD8B61 ijstoren:

Aanbevolen: