Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Funksjoner
- Trinn 2: Trinn 1: Vet om IoT (A) -kortet
- Trinn 3: Trinn 2: Slik monterer du det
- Trinn 4: Trinn 3: Koble til antenne
- Trinn 5: Trinn 4: OS -miljø og programvarekonfigurasjoner
- Trinn 6: Trinn 5: Konfigurering av I2C (Raspberry Pi)
- Trinn 7: Trinn 6: Vet om registerinformasjonen
- Trinn 8:
- Trinn 9: Instruksjoner:
- Trinn 10: Slik bruker du GPS -modul med Gpsd (Raspberry Pi)
- Trinn 11: Slik bruker du GPS -modul med C (Raspberry Pi)
- Trinn 12: Kompiler det
- Trinn 13: Slik bruker du GPS -modul med Python (Raspberry Pi)
- Trinn 14: Slik bruker du GSM -modul med PPPd (Raspberry Pi)
- Trinn 15: Hvordan diagnostisere min GSM -modul (Raspberry Pi)
- Trinn 16: Hvordan bruke Lora TX & RX med C (Raspberry Pi)
- Trinn 17: Spesiell beskrivelse av I2C båndbredde
- Trinn 18: Ferdig
Video: [Docker Pi Series] Hvordan bruke IoT Node (A) -modul på Raspberry Pi: 18 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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
- 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
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
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
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)
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:
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)
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
Kompilere!
gcc gps.c -lm -lgps -o gps
Utfør det!
./gps
Trinn 13: Slik bruker du 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)
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)
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:
DockerPi Series IoT Node (A) Board for Raspberry Pi 4B: 4 trinn
DockerPi Series IoT Node (A) Board for Raspberry Pi 4B: Beskrivelser: IoT Node (A) er en av modulene i Docker Pi -serien. IOT Node (A) = GPS/BDS + GSM + Lora.I2C styrer Lora, sender og mottar direkte data, styrer GSM/GPS/BDS -modulen gjennom SC16IS752, trenger hovedkortet bare I2C -støtte. Støtte Raspbe
Hvordan bruke DS1307 Bruke Arduino: 7 trinn
Hvordan bruke DS1307 Bruke Arduino: DS1307 er en sanntidsklokke IC (RTC). Denne IC brukes til å gi tidsdata. Tildelt tid starter fra sekunder, minutt, timer, dager, dato, måned og år. Denne IC krever ytterligere eksterne komponenter som Crystal og 3,6V batterier. Krystall
Hvordan bruke en tenåring til å skrive ut bilder på Splatoon 2 Bruke SplatPost -skriveren: 10 trinn
Hvordan bruke en tenåring til å skrive ut bilder på Splatoon 2 Bruke SplatPost -skriveren: I denne instruksen vil jeg vise hvordan du bruker SplatPost -skriveren av ShinyQuagsire. Uten klare instruksjoner ville noen som ikke har erfaring med kommandolinjen ha litt problemer. Målet mitt er å forenkle trinnene ned til poi
Neopixel Ws2812 Rainbow LED-glød med M5stick-C - Kjører Rainbow på Neopixel Ws2812 Bruke M5stack M5stick C Bruke Arduino IDE: 5 trinn
Neopixel Ws2812 Rainbow LED-glød med M5stick-C | Running Rainbow på Neopixel Ws2812 Bruke M5stack M5stick C Bruke Arduino IDE: Hei folkens i denne instruksen, vi lærer hvordan du bruker neopixel ws2812 LED eller led strip eller led matrise eller led ring med m5stack m5stick-C utviklingstavle med Arduino IDE, og vi skal lage et regnbuemønster med den
Hvordan bruke Wiimote som en datamus ved å bruke stearinlys som sensor !!: 3 trinn
Slik bruker du Wiimote som en datamus ved å bruke stearinlys som en sensor !!: Denne guiden viser deg hvordan du kobler din Wii -fjernkontroll (Wiimote) til din PC og bruker den som en mus