Innholdsfortegnelse:

[Docker Pi Series] Hvordan bruke IoT Node (A) -modul på Raspberry Pi: 18 trinn
[Docker Pi Series] Hvordan bruke IoT Node (A) -modul på Raspberry Pi: 18 trinn

Video: [Docker Pi Series] Hvordan bruke IoT Node (A) -modul på Raspberry Pi: 18 trinn

Video: [Docker Pi Series] Hvordan bruke IoT Node (A) -modul på Raspberry Pi: 18 trinn
Video: 3 Maneras de Reforzar las MUELLES para sacarle el mejor provecho a tu Pickup 2024, Desember
Anonim
[Docker Pi -serien] Hvordan bruke IoT Node (A) -modul på Raspberry Pi
[Docker Pi -serien] Hvordan bruke IoT Node (A) -modul på Raspberry Pi

Hva er IoT Node (A) -modulen?

IoT Node (A) er en av modulene i Docker Pi -serien.

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

I2C styrer Lora direkte, sender og mottar data, styrer GSM/GPS/BDS -modulen gjennom SC16IS752, hovedkortet trenger bare I2C -støtte.

Støtte Raspberry Pi og andre lignende produkter.

Rekvisita

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

1x produkt i Docker Pi -serien: IoT Node (A) -modul

1x 16GB klasse 10 TF -kort

1x 5V/2,5A strømforsyning (5V@3A for Pi 4B)

Trinn 1: Funksjoner

Funksjoner
Funksjoner
Funksjoner
Funksjoner
Funksjoner
Funksjoner
  • Docker Pi -serien
  • Programmerbar
  • Styr direkte (uten programmering)
  • Forleng GPIO -pinnene
  • GPS/BDS -støtte
  • GSM -støtte
  • Lora Support
  • Kan stables med andre stabelbrett
  • Uavhengig av hovedkortmaskinvaren (krever I2C -støtte)

Trinn 2: Trinn 1: Vet om IoT (A) -kortet

Trinn 1: Vet om IoT (A) -kortet
Trinn 1: Vet om IoT (A) -kortet
Trinn 1: Vet om IoT (A) -kortet
Trinn 1: Vet om IoT (A) -kortet
Trinn 1: Vet om IoT (A) -kortet
Trinn 1: Vet om IoT (A) -kortet

IoT Node (A) er en av modulene i Docker Pi -serien.

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

I2C styrer Lora direkte, sender og mottar data, styrer GSM/GPS/BDS -modulen gjennom SC16IS752, hovedkortet trenger bare I2C -støtte. Støtte Raspberry Pi og andre lignende produkter.

Så du kan lage en mellomdistanse kommunikasjonsenhet ved å bruke to av dem.

og du kan også finne enhetens plassering ved å bruke GPS -modulen ombord.

Sett inn et SIM -kort, det blir en senderstasjon via SMS.

Trinn 3: Trinn 2: Slik monterer du det

Trinn 2: Slik monterer du det
Trinn 2: Slik monterer du det
Trinn 2: Slik monterer du det
Trinn 2: Slik monterer du det

Det er veldig enkelt å montere det på grunn av det "HAT" -designet, du bare legger det på bringebærpi og kobler det til via GPIO -pinner, det er som en "hatt" på bringebærpi, slik at du ikke trenger å legge til massen metalltråd.

Trinn 4: Trinn 3: Koble til antenne

Trinn 3: Koble til antenne
Trinn 3: Koble til antenne
Trinn 3: Koble til antenne
Trinn 3: Koble til antenne
Trinn 3: Koble til antenne
Trinn 3: Koble til antenne

Det er 3 stykker antenne for denne IoT (A) -modulen, en av dem er for loarmodulen, det er en antenne av SMA -typen, og en av dem er bra for deg GPS, det er en firkantet antenne som har IPX -port. og den siste er for SIM -modulen (A9G), Det er en liten antenne som har en IPX -port. koble antennen og fest hatten til bringebær -pi -en.

Slik monterer du Monter Iot Node (A) -kortet på Raspberry Pi

Koble til GPS -antana og Lora antana til IPX -port.

  • E1: GPS-ANTANA-IPX
  • E3: LoRa-ANTANA-IPX

Skru GPRS -antanaen på SMA -porten.

Trinn 5: Trinn 4: OS -miljø og programvarekonfigurasjoner

I dette trinnet må du gjøre disse tingene:

1. Last ned den nyeste bildefilen fra: www.raspberrypi.org/downloads

2. Pakk den ut.

3. Flash TF -kortet ditt med det siste bildet via etserverktøyet

4. modifiser /boot/config.txt -filen og legg til dette avsnittet.

dtoverlay = sc16is752-i2c

5. Erstatter filen /boot/overlay/sc16is752-i2c.dtbo med denne filen:

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

PS: husk å pakke den ut og legge den på/boot/overlay/mappen og erstatte den gamle.

6. Start Raspberry Pi på nytt.

Trinn 6: Trinn 5: Konfigurering av I2C (Raspberry Pi)

Trinn 5: Konfigurering av I2C (Raspberry Pi)
Trinn 5: Konfigurering av I2C (Raspberry Pi)
Trinn 5: Konfigurering av I2C (Raspberry Pi)
Trinn 5: Konfigurering av I2C (Raspberry Pi)
Trinn 5: Konfigurering av I2C (Raspberry Pi)
Trinn 5: Konfigurering av I2C (Raspberry Pi)
Trinn 5: Konfigurering av I2C (Raspberry Pi)
Trinn 5: Konfigurering av I2C (Raspberry Pi)

Kjør sudo raspi-config og følg instruksjonene for å installere i2c-støtte for ARM-kjernen og Linux-kjernen Gå til Grensesnittalternativer

Trinn 7: Trinn 6: Vet om registerinformasjonen

GPRS -seksjon

Lavt strømforbruk, hvilemodus i standby <1mA2.

Støtter GSM/GPRS fire frekvensbånd, inkludert 850, 900, 1800, 1900MHZ

GPRS klasse 10

Støtter GPRS -datatjeneste, maksimal datahastighet, last ned 85,6 Kbps, last opp 42,8 Kbps

Støtt standard GSM07.07, 07.05 AT -kommandoer, og få tilgang til den serielle porten via I2C -grensesnittkonvertering

AT -kommandoer støtter standard AT- og TCP/IP -kommandoporter

GPS -seksjon Støtte BDS/GPS felles posisjonering

Støtter A-GPS, A-BDS

Støtter standard SIM -kort

LORA -seksjon Overføringsavstand: 500 meter (RF -parametere: 0x50 @ China City)

Støtter FSK, GFSK, MSK, GMSK, LoRaTM og OOK modulasjonsmetoder

Ultrahøy mottakerfølsomhet så lav som -141 dBm

Støtter deteksjon av forord

Pakkemotor med CRC, opptil 256 byte

LORA -mottakerindikator

Enkel TX/RX av Docker Pi

Trinn 8:

A9G -modul

A9G -modulen har to serielle porter.

Bruk I2C UART -bro for kommunikasjon.

Modulnavn på serieport

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

Registrer kart

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

Trinn 9: Instruksjoner:

Bruksanvisning
Bruksanvisning

L_SET (bare skrive)

  • Skriv 1 for å angi parametere fra 0x22 til LORA -modul.
  • Skriv 0 ikke effekt

G_RESET (bare skrive)

  • Skriv 1 for å tilbakestille A9G -modulen
  • Skriv 0 ikke effekt

L_RXNE (Les og skriv)

  • Skriv 1 årsaksfeil
  • Skriv 0 for å slette
  • Les 1 betyr at data er mottatt. Vennligst hent dataene fra registeret 0x11 - 0x20.
  • Les 0 betyr ingen data tilgjengelig nå.

L_SET (bare skrive)

  • Skriv 1 for å sende data, fyll ut dataene i register 0x01 - 0x10 før du sender.
  • Skriv 0 ikke effekt

Trinn 10: Slik bruker du GPS -modul med Gpsd (Raspberry Pi)

Hvordan bruke GPS -modul med Gpsd (Raspberry Pi)
Hvordan bruke GPS -modul med Gpsd (Raspberry Pi)
Hvordan bruke GPS -modul med Gpsd (Raspberry Pi)
Hvordan bruke GPS -modul med Gpsd (Raspberry Pi)
Hvordan bruke GPS -modul med Gpsd (Raspberry Pi)
Hvordan bruke GPS -modul med Gpsd (Raspberry Pi)

Hvordan bruke GPS -modul med gpsd (Raspberry Pi)

Bytt først ut /boot/overlays/sc16is752-i2c.dtbo og kontroller at I2C fungerer som den skal.

  • Erstatt sc16is752-i2c.dtbo
  • Konfigurere I2C
  • Installer gpsd -verktøy.

Åpne en terminal og skriv inn denne kommandoen:

sudo apt installer gpsd gpsd-klienter

Endre/etc/default/gpsd -filen og legg til følgende parametere:

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

Skriv inn kommandoen i2cset -y 1 0x16 0x23 0x40 for å tilbakestille GPRS -modulen.

Python -skript for åpen GPS:

import serialimport os import time # Start gpsd -tjenesten på nytt. os.system ("sudo systemctl restart gpsd.socket") # Åpne seriell port ser = serial. Serial ('/dev/ttySC0', 115200) i = 0 hvis ser.isOpen == False: ser.open () prøv: print ("Slå på GPS …") mens True: ser.write (str.encode ("AT+GPS = 1 / r")) size = ser.inWaiting () hvis størrelse! = 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 ("Waiting GPS Enable, If the time is too long, Please test outdoor:" + str (i)) ser.flushInput () time.sleep (1) unntatt KeyboardInterrupt: ser.flushInput () ser.close ()

Lagre det og utfør det:

python3 GPS.py

Trinn 11: Slik bruker du GPS -modul med C (Raspberry Pi)

Installer gpsd -verktøy

sudo apt-get install libgps-dev

Lag kildekoden og gi den navnet "gps.c"

#include #include #include

#inkludere

#inkludere

int main ()

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

mens (1)

{ / * vent i 2 sekunder for å motta data * / if (gps_waiting (& gps_data, 2000000)) { / * lese data * / if ((rc = gps_read (& gps_data)) == -1) {printf ("feil oppstod ved lesing gps -data. kode: %d, årsak: %s / n ", rc, gps_errstr (rc)); } annet { /* Vis data fra GPS -mottakeren. */ 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); EDIT: tv.tv_sec er egentlig ikke tidsstempelet! */

printf ("breddegrad: %f, lengdegrad: %f, hastighet: %f, tidsstempel: %lf / n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// EDIT: Erstatt tv.tv_sec med gps_data.fix.time} else {printf ("ingen GPS -data tilgjengelig / n"); }}} sove (3); } / * Når du er ferdig … * / gps_stream (& gps_data, WATCH_DISABLE, NULL); gps_close (& gps_data); returner EXIT_SUCCESS; }

Trinn 12: Kompiler det

Kompiler det
Kompiler det

Kompilere!

gcc gps.c -lm -lgps -o gps

Utfør det!

./gps

Trinn 13: Slik bruker du GPS -modul med Python (Raspberry Pi)

Hvordan bruke GPS -modul med Python (Raspberry Pi)
Hvordan bruke GPS -modul med Python (Raspberry Pi)

Følgende kode anbefales å kjøres ved hjelp av Python 3 og installere gpsd-py3-biblioteket og GPS 2D/3D Fix:

importer gpsd

# Koble til den lokale gpsd

gpsd.connect ()

# Få GPS -posisjon

pakke = gpsd.get_current ()

# Se de innebygde dokumentene for GpsResponse for tilgjengelige data

print (packet.position ())

Trinn 14: Slik bruker du GSM -modul med PPPd (Raspberry Pi)

Hvordan bruke GSM -modul med PPPd (Raspberry Pi)
Hvordan bruke GSM -modul med PPPd (Raspberry Pi)
Hvordan bruke GSM -modul med PPPd (Raspberry Pi)
Hvordan bruke GSM -modul med PPPd (Raspberry Pi)
Hvordan bruke GSM -modul med PPPd (Raspberry Pi)
Hvordan bruke GSM -modul med PPPd (Raspberry Pi)

A) Bytt først ut /boot/overlays/sc16is752-i2c.dtbo og kontroller at I2C fungerer som den skal.

  • Erstatt sc16is752-i2c.dtbo
  • Konfigurere I2C

B) Skriv inn kommandoen i2cset -y 1 0x16 0x23 0x40 for å tilbakestille GPRS -modulen.

Etter at du har kjørt kommandoen, må du vente litt, omtrent 10 sekunder

Du kan også bruke følgende metode for å tilbakestille.

C) Skriv inn kommando

sudo apt install ppp

å installere ppp -verktøy.

D) Kopier/etc/ppp/peers/provider til/etc/ppp/peers/gprs

E) Endre/etc/ppp/peers/gprs

  • Linje 10: Ta kontakt med tjenesteleverandøren for brukeren (eksempel: cmnet).
  • Linje 15: Ta kontakt med tjenesteleverandøren for apn (Eksempel: cmnet).
  • Linje 18 - Linje 24: Anbefalt innstilling

F) Endre/etc/chatscripts/gprs (Endre linje 34 til linje 35, oppringingsnummer kan IKKE være *99#)

G) Skriv inn kommando sudo pppd ringe gprs for å ringe opp.

H) Sjekk ppp -konfigurasjonen din fra Internett -leverandøren din.

I) Skriv inn kommando ping -I ppp0 8.8.8.8 test nettverket ditt (Hvis Internett tilgjengelig og rutetabellen er korrekt)

J) Vennligst behold GSM -signalet godt, ellers skjer følgende.

Trinn 15: Hvordan diagnostisere min GSM -modul (Raspberry Pi)

Hvordan diagnostisere min GSM -modul (Raspberry Pi)
Hvordan diagnostisere min GSM -modul (Raspberry Pi)
Hvordan diagnostisere min GSM -modul (Raspberry Pi)
Hvordan diagnostisere min GSM -modul (Raspberry Pi)
Hvordan diagnostisere min GSM -modul (Raspberry Pi)
Hvordan diagnostisere min GSM -modul (Raspberry Pi)
Hvordan diagnostisere min GSM -modul (Raspberry Pi)
Hvordan diagnostisere min GSM -modul (Raspberry Pi)

Følgende kode anbefales å kjøres ved hjelp av Python 3 og installere smbus -biblioteket:

import serialimport time import smbus import operator import os

print ("Venter på initialisering …")

buss = smbus. SMBus (1)

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

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

hvis ser.isOpen == Falske:

ser.open () prøve: print ('-'*60) print ("Initialiserer A9G GPRS-modul.") print ("GSM-tilkobling …") time.sleep (3) i = 0 mens 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) unntatt KeyboardInterrupt: ser.close ()

Utfør testskriptet, basert på resultatene av implementeringen, kan vi diagnostisere GSM -modulen. For eksempel kan følgende retur, CME ERROR 53 feil fortelle oss Strøm ikke bra. CME -kode = GSM -utstyrsrelaterte feil

Selvfølgelig har skriptet også en tilbakestillingsfunksjon. Hvis du kan vise CCID riktig, er tilbakestillingen fullført.

Trinn 16: Hvordan bruke Lora TX & RX med C (Raspberry Pi)

Følgende kode anbefales å kjøres ved hjelp av Python 3 og installere smbus -biblioteket.

Den må overføres mellom de to IOT -noden (A). Innholdet sendt av seg selv kan ikke mottas av seg selv. Vennligst lagre det som et py -skript for utførelse.

Slik sender du: Etter at du har fylt dataene inn i register 0x01 - 0x10, angir du L_TX -biten for å begynne å sende data.

import timeimport smbus import os import sys

buss = smbus. SMBus (1)

prøve:

data_list = [170, 85, 165, 90] # skrive data for å registrere og deretter blir dataene sendt ut. for indeks i området (1, len (data_list) + 1): bus.write_byte_data (0x16, index, data_list [index - 1]) print ("LORA send data to %d register %d data" %(index, data_list [indeks - 1])) bus.write_byte_data (0x16, 0x23, 0x01) unntatt KeyboardInterrupt: sys.exit ()

Slik sender du mottak: Kontroller L_RXNE -bit. Hvis det er angitt, kommer nye data, dette flagget må være manuelt klart

import timeimport smbus import os import sys

buss = smbus. SMBus (1)

recv_data =

prøve:

hvis bus.read_byte_data (0x16, 0x23) & 0x02: # slett manuelt L_RXNE buss.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # les ut data for indeks i området (0x11, len (register_list) + 0x11): recv_data.append (bus.read_byte_data (0x16, register_list [index - 0x11])))

print ("Mottatte data:")

print (recv_data) else: print ("Ingen data mottatt ennå ~") unntatt KeyboardInterrupt: sys.exit ()

Trinn 17: Spesiell beskrivelse av I2C båndbredde

Grensen for I2C -hastigheten er 400 kHz, på grunn av I2C -protokollen, så den effektive enhetens båndbredde er lavere enn 320 kbps, effektiv båndbredde på flere enheter er lavere enn 160 kbps. Grensen for I2C UART -brohastigheten er 115200bps. Når GPS og GSM I2C båndbredde er utilstrekkelig, fordi 115,2 kbps * 2 = 230,4 kbps, så noen data vil være overflytende. Reduksjon av overføringshastigheten for GPS og GSM -kommunikasjon kan forbedre mangelen på kommunikasjonsbåndbredde. Stakking av andre DockerPi -moduler kan ta opp ekstra I2C båndbredde. Vanligvis er nettverksdatahastigheten treg, så GSM -båndbredden er ikke full, så det er ikke noe overløpsproblem.

Trinn 18: Ferdig

Håper dere liker det og får det til.

du finner den her:

Amazon

Nattlys: https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4-kanals relékort: 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 istårn:

Anbefalt: