Indholdsfortegnelse:

[Docker Pi Series] Sådan bruges IoT Node (A) -modul på Raspberry Pi: 18 trin
[Docker Pi Series] Sådan bruges IoT Node (A) -modul på Raspberry Pi: 18 trin

Video: [Docker Pi Series] Sådan bruges IoT Node (A) -modul på Raspberry Pi: 18 trin

Video: [Docker Pi Series] Sådan bruges IoT Node (A) -modul på Raspberry Pi: 18 trin
Video: Step by step build a private cloud server with Nextcloud 2024, Juli
Anonim
[Docker Pi -serien] Sådan bruges IoT Node (A) -modul på Raspberry Pi
[Docker Pi -serien] Sådan bruges IoT Node (A) -modul på Raspberry Pi

Hvad er IoT Node (A) modul?

IoT Node (A) er et af Docker Pi -seriens modul.

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

I2C styrer Lora direkte, sender og modtager data, styrer GSM/GPS/BDS -modulet via SC16IS752, hovedkortet behøver kun I2C -understøttelse.

Support Raspberry Pi og andre lignende produkter.

Forbrugsvarer

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 til Pi 4B)

Trin 1: Funktioner

Funktioner
Funktioner
Funktioner
Funktioner
Funktioner
Funktioner
  • Docker Pi -serien
  • Programmerbar
  • Styr direkte (uden programmering)
  • Forlæng GPIO -benene
  • GPS/BDS Support
  • GSM Support
  • Lora Support
  • Kan stables med andet stakbræt
  • Uafhængig af hardboardhardware (kræver I2C -understøttelse)

Trin 2: Trin1: Kend til IoT (A) -kortet

Trin 1: Kend til IoT (A) -kortet
Trin 1: Kend til IoT (A) -kortet
Trin 1: Kend til IoT (A) -kortet
Trin 1: Kend til IoT (A) -kortet
Trin 1: Kend til IoT (A) -kortet
Trin 1: Kend til IoT (A) -kortet

IoT Node (A) er et af Docker Pi -seriens modul.

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

I2C styrer Lora direkte, sender og modtager data, styrer GSM/GPS/BDS -modulet via SC16IS752, hovedkortet har kun brug for I2C support. Support Raspberry Pi og andre lignende produkter.

Så du kan lave en mellemdistance -kommunikationsenhed ved at bruge to af dem.

og du kan også finde din enheds placering ved hjælp af GPS -modulet ombord.

Indsæt et SIM -kort, det bliver en senderstation via SMS -besked.

Trin 3: Trin2: Sådan samles det

Trin 2: Sådan samles det
Trin 2: Sådan samles det
Trin 2: Sådan samles det
Trin 2: Sådan samles det

Det er meget let at samle det på grund af det "HAT" -design, du sætter det bare på din hindbærpi og forbinder det via GPIO -ben, det ligner en "hat" på hindbærpi, så du ikke behøver at tilføje massen tråd.

Trin 4: Trin 3: Tilslut antenne

Trin 3: Tilslut antennen
Trin 3: Tilslut antennen
Trin 3: Tilslut antennen
Trin 3: Tilslut antennen
Trin 3: Tilslut antennen
Trin 3: Tilslut antennen

Der er 3 dele antenne til dette IoT (A) modul, en af dem er til loar modulet, det er en SMA type antenne, og en af dem er god til dig GPS, det er en firkantet boks antenne, der har IPX port. og den sidste er til SIM -modulet (A9G), Det er en lille antenne, der har en IPX -port. tilslut antennen og monter hatten på din hindbær pi.

Sådan samles Monter Iot Node (A) -kortet til Raspberry Pi

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

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

Skruer GPRS -antanaen på SMA -porten.

Trin 5: Trin4: OS -miljø og softwarekonfigurationer

I dette trin skal du gøre disse ting:

1. Download den nyeste billedfil fra: www.raspberrypi.org/downloads

2. Pak den ud.

3. Flash dit TF -kort med det nyeste billede via etserværktøj

4. Rediger filen /boot/config.txt, og tilføj dette afsnit.

dtoverlay = sc16is752-i2c

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

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

PS: husk at pakke den ud, læg den på din/boot/overlay/mappe og erstatter den gamle.

6. Genstart din Raspberry Pi.

Trin 6: Trin5: Konfiguration af I2C (Raspberry Pi)

Trin 5: Konfiguration af I2C (Raspberry Pi)
Trin 5: Konfiguration af I2C (Raspberry Pi)
Trin 5: Konfiguration af I2C (Raspberry Pi)
Trin 5: Konfiguration af I2C (Raspberry Pi)
Trin 5: Konfiguration af I2C (Raspberry Pi)
Trin 5: Konfiguration af I2C (Raspberry Pi)
Trin 5: Konfiguration af I2C (Raspberry Pi)
Trin 5: Konfiguration af I2C (Raspberry Pi)

Kør sudo raspi-config og følg vejledningen for at installere i2c-understøttelse til ARM-kernen og linux-kernen Gå til grænsefladeindstillinger

Trin 7: Trin6: Kend til registeroplysningerne

GPRS -sektion

Lavt strømforbrug, standby -søvnstrøm <1mA2.

Understøtter GSM/GPRS fire frekvensbånd, herunder 850, 900, 1800, 1900MHZ

GPRS klasse 10

Understøtter GPRS -datatjeneste, maksimal datahastighed, download 85,6 Kbps, upload 42,8 Kbps

Understøt standard GSM07.07, 07.05 AT -kommandoer, og få adgang til den serielle port via I2C -grænsefladekonvertering

AT -kommandoer understøtter standard AT- og TCP/IP -kommandoporte

GPS -sektion Understøtter BDS/GPS -fælles positionering

Understøtter A-GPS, A-BDS

Understøtter standard SIM -kort

LORA -sektion Transmissionsafstand: 500 meter (RF -parametre: 0x50 @ China City)

Understøtter FSK, GFSK, MSK, GMSK, LoRaTM og OOK moduleringsmetoder

Ultrahøj modtagerfølsomhed så lav som -141 dBm

Understøtter præambledetektering

Pakkemotor med CRC, op til 256 bytes

LORA transceiver indikator

Nem TX/RX af Docker Pi

Trin 8:

A9G -modul

A9G -modul har to serielle port.

Brug I2C UART -bro til kommunikation.

Serial Port Modul navn

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

Registrer kort

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

Trin 9: Instruktioner:

Instruktioner
Instruktioner

L_SET (kun skrive)

  • Skriv 1 for at indstille parametre fra 0x22 til LORA -modul.
  • Skriv 0 ikke effekt

G_RESET (kun skrive)

  • Skriv 1 for at nulstille A9G -modulet
  • Skriv 0 ikke effekt

L_RXNE (Læs og skriv)

  • Skriv 1 årsag fejl
  • Skriv 0 for at slette
  • Læs 1 betyder, at data er modtaget. Hent dataene fra registret 0x11 - 0x20.
  • Læs 0 betyder ingen tilgængelige data nu.

L_SET (kun skrive)

  • Skriv 1 for at sende data. Udfyld venligst dataene i register 0x01 - 0x10 inden afsendelse.
  • Skriv 0 ikke effekt

Trin 10: Sådan bruges GPS -modul med Gpsd (Raspberry Pi)

Sådan bruges GPS -modul med Gpsd (Raspberry Pi)
Sådan bruges GPS -modul med Gpsd (Raspberry Pi)
Sådan bruges GPS -modul med Gpsd (Raspberry Pi)
Sådan bruges GPS -modul med Gpsd (Raspberry Pi)
Sådan bruges GPS -modul med Gpsd (Raspberry Pi)
Sådan bruges GPS -modul med Gpsd (Raspberry Pi)

Sådan bruges GPS -modul med gpsd (Raspberry Pi)

Udskift først /boot/overlays/sc16is752-i2c.dtbo og kontroller, at I2C fungerer korrekt.

  • Udskift sc16is752-i2c.dtbo
  • Konfiguration af I2C
  • Installer gpsd -værktøjer.

Åbn en terminal og indtast denne kommando:

sudo apt installer gpsd gpsd-klienter

Rediger/etc/default/gpsd -fil, og tilføj følgende parametre:

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

Indtast kommandoen i2cset -y 1 0x16 0x23 0x40 for at nulstille GPRS -modulet.

Python -script til åben GPS:

import serialimport os importtid # Genstart gpsd -service. os.system ("sudo systemctl genstart gpsd.socket") # Åbn seriel port ser = serial. Serial ('/dev/ttySC0', 115200) i = 0 hvis ser.isOpen == Falsk: ser.open () prøv: print ("Tænd GPS …") mens True: ser.write (str.encode ("AT+GPS = 1 / r")) size = ser.inWaiting () hvis størrelse! = 0: ticks = time.time () respons = ser.read (størrelse) gps = str (svar, kodning = "utf -8") hvis (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 outdoors:" + str (i)) ser.flushInput () time.sleep (1) undtagen KeyboardInterrupt: ser.flushInput () ser.close ()

Gem det og udfør det:

python3 GPS.py

Trin 11: Sådan bruges GPS -modul med C (Raspberry Pi)

Installer gpsd -værktøjer

sudo apt-get install libgps-dev

Opret kildekode og navngiv den "gps.c"

#include #include #include

#omfatte

#omfatte

int main ()

{int rc; struct timeval tv; struct gps_data_t gps_data; hvis ((rc = gps_open ("localhost", "2947", & gps_data)) == -1) {printf ("kode: %d, årsag: %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 at modtage data * / if (gps_waiting (& gps_data, 2000000)) { / * læs data * / if ((rc = gps_read (& gps_data)) == -1) {printf ("fejl opstod ved læsning gps -data. kode: %d, årsag: %s / n ", rc, gps_errstr (rc)); } ellers { /* Vis data fra GPS -modtageren. */ 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 faktisk ikke tidsstemplet! */

printf ("breddegrad: %f, længdegrad: %f, hastighed: %f, tidsstempel: %lf / n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// EDIT: Erstattede tv.tv_sec med gps_data.fix.time} else {printf ("ingen tilgængelige GPS -data / n"); }}} søvn (3); } / * Når du er færdig … * / gps_stream (& gps_data, WATCH_DISABLE, NULL); gps_close (& gps_data); returner EXIT_SUCCESS; }

Trin 12: Kompilér det

Kompilér det
Kompilér det

Udarbejde!

gcc gps.c -lm -lgps -o gps

Udfør det!

./gps

Trin 13: Sådan bruges GPS -modul med Python (Raspberry Pi)

Sådan bruges GPS -modul med Python (Raspberry Pi)
Sådan bruges GPS -modul med Python (Raspberry Pi)

Følgende kode anbefales at blive udført ved hjælp af Python 3 og installere gpsd-py3-biblioteket og GPS 2D/3D Fix:

import gpsd

# Opret forbindelse til den lokale gpsd

gpsd.connect ()

# Få GPS -position

pakke = gpsd.get_current ()

# Se de indbyggede dokumenter til GpsResponse for de tilgængelige data

print (packet.position ())

Trin 14: Sådan bruges GSM -modul med PPPd (Raspberry Pi)

Sådan bruges GSM -modul med PPPd (Raspberry Pi)
Sådan bruges GSM -modul med PPPd (Raspberry Pi)
Sådan bruges GSM -modul med PPPd (Raspberry Pi)
Sådan bruges GSM -modul med PPPd (Raspberry Pi)
Sådan bruges GSM -modul med PPPd (Raspberry Pi)
Sådan bruges GSM -modul med PPPd (Raspberry Pi)

A) Først skal du udskifte /boot/overlays/sc16is752-i2c.dtbo og kontrollere, at I2C fungerer korrekt.

  • Udskift sc16is752-i2c.dtbo
  • Konfiguration af I2C

B) Indtast kommandoen i2cset -y 1 0x16 0x23 0x40 for at nulstille GPRS -modulet.

Efter at have kørt kommandoen skal du vente lidt, cirka 10 sekunder

Du kan også bruge følgende metode til at nulstille.

C) Indtast kommando

sudo apt installer ppp

at installere ppp -værktøjer.

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

E) Rediger/etc/ppp/peers/gprs

  • Linje 10: Kontakt din tjenesteudbyder for brugeren (eksempel: cmnet).
  • Linje 15: Kontakt din tjenesteudbyder om apn'en (eksempel: cmnet).
  • Linje 18 - Linje 24: Anbefalet indstilling

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

G) Indtast kommando sudo pppd kalder gprs for at ringe op.

H) Kontroller din ppp -konfiguration fra din internetudbyder.

I) Indtast kommando ping -I ppp0 8.8.8.8 test dit netværk (Hvis internet tilgængeligt og rutetabellen er korrekt)

J) Behold venligst GSM -signalet godt, ellers sker følgende.

Trin 15: Sådan diagnosticeres mit GSM -modul (Raspberry Pi)

Sådan diagnosticeres mit GSM -modul (Raspberry Pi)
Sådan diagnosticeres mit GSM -modul (Raspberry Pi)
Sådan diagnosticeres mit GSM -modul (Raspberry Pi)
Sådan diagnosticeres mit GSM -modul (Raspberry Pi)
Sådan diagnosticeres mit GSM -modul (Raspberry Pi)
Sådan diagnosticeres mit GSM -modul (Raspberry Pi)
Sådan diagnosticeres mit GSM -modul (Raspberry Pi)
Sådan diagnosticeres mit GSM -modul (Raspberry Pi)

Følgende kode anbefales at blive udført ved hjælp af Python 3 og installere smbus -biblioteket:

import serieimport tid import smbus import operatør import os

print ("Venter på initialisering …")

bus = smbus. SMBus (1)

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

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

hvis ser.isOpen == Falsk:

ser.open () prøv: print ('-'*60) print ("Initialiserer A9G GPRS-modul.") print ("GSM-forbindelse …") 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) undtagen KeyboardInterrupt: ser.close ()

Exec Test Script, baseret på resultaterne af implementeringen, kan vi diagnosticere GSM -modulet. For eksempel kan følgende retur, CME ERROR 53 fejl fortælle os Strøm ikke god. CME -kode = GSM -udstyrsrelaterede fejl

Selvfølgelig har scriptet også en nulstillingsfunktion. Hvis du kan vise CCID korrekt, er nulstillingen fuldført.

Trin 16: Sådan bruges Lora TX & RX med C (Raspberry Pi)

Følgende kode anbefales at blive udført ved hjælp af Python 3 og installere smbus -biblioteket.

Den skal overføres mellem de to IOT -knudepunkter (A). Indholdet sendt af sig selv kan ikke modtages af sig selv. Gem det som et py -script til udførelse.

Sådan sender du: Efter at have udfyldt dataene i register 0x01 - 0x10, skal du indstille L_TX -bit til at begynde at sende data.

import timeimport smbus import os import sys

bus = smbus. SMBus (1)

prøve:

data_list = [170, 85, 165, 90] # skriv data for at registrere, og derefter vil dataene blive sendt ud. for indeks i område (1, len (data_list) + 1): bus.write_byte_data (0x16, index, data_list [index - 1]) print ("LORA send data til %d register %d data" %(index, data_list [indeks - 1])) bus.write_byte_data (0x16, 0x23, 0x01) undtagen KeyboardInterrupt: sys.exit ()

Sådan sender du modtagelse: Kontroller L_RXNE -bit. Hvis der er indstillet nye data, skal dette flag være manuelt klart

import timeimport smbus import os import sys

bus = smbus. SMBus (1)

recv_data =

prøve:

hvis bus.read_byte_data (0x16, 0x23) & 0x02: # slet manuelt L_RXNE bus.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # aflæs data for indeks i område (0x11, len (register_list) + 0x11): recv_data.append (bus.read_byte_data (0x16, register_list [index - 0x11]))

print ("Modtagne data:")

print (recv_data) else: print ("Ingen data modtaget endnu ~") undtagen KeyboardInterrupt: sys.exit ()

Trin 17: Særlig beskrivelse af I2C båndbredde

Grænsen for I2C -hastigheden er 400 kHz på grund af I2C -protokollen, så den effektive enheds effektive båndbredde er under 320 kbps, effektiv multi -enheds båndbredde er lavere end 160 kbps. Grænsen for I2C UART -brohastigheden er 115200bps. Når GPS og GSM I2C båndbredde er utilstrækkelig, fordi 115,2 kbps * 2 = 230,4 kbps, så nogle data vil være overløbne. Reduktion af baudhastighed for GPS og GSM kommunikation kan forbedre kommunikationsbåndbredde mangel. Stakning af andre DockerPi moduler kan tage op ekstra I2C båndbredde. Normalt er netværksdatahastigheden langsom, så GSM båndbredden er ikke fuld, så der er ikke noget overløbsproblem.

Trin 18: Færdig

Håber i kan lide det og klare det.

du kan finde det her:

Amazon

Natlys: 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:

Anbefalede: