INHOUDSOPGAWE:

[Docker Pi -reeks] Hoe om die IoT Node (A) -module op Raspberry Pi te gebruik: 18 stappe
[Docker Pi -reeks] Hoe om die IoT Node (A) -module op Raspberry Pi te gebruik: 18 stappe

Video: [Docker Pi -reeks] Hoe om die IoT Node (A) -module op Raspberry Pi te gebruik: 18 stappe

Video: [Docker Pi -reeks] Hoe om die IoT Node (A) -module op Raspberry Pi te gebruik: 18 stappe
Video: Klustered (Part VIII-II) | Rawkode Live 2024, November
Anonim
[Docker Pi -reeks] Hoe om die IoT Node (A) -module op Raspberry Pi te gebruik
[Docker Pi -reeks] Hoe om die IoT Node (A) -module op Raspberry Pi te gebruik

Wat is die IoT Node (A) -module?

IoT Node (A) is een van die Docker Pi -reeksmodules.

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

I2C beheer Lora direk, stuur en ontvang data, beheer die GSM/GPS/BDS -module deur middel van SC16IS752; die moederbord benodig slegs I2C -ondersteuning.

Ondersteun Raspberry Pi en ander soortgelyke produkte.

Voorrade

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

1x produk van die Docker Pi -reeks: IoT Node (A) -module

1x 16GB klas 10 TF -kaart

1x 5V/2.5A kragtoevoer (5V@3A vir Pi 4B)

Stap 1: Kenmerke

Kenmerke
Kenmerke
Kenmerke
Kenmerke
Kenmerke
Kenmerke
  • Docker Pi -reeks
  • Programmeerbaar
  • Beheer direk (sonder programmering)
  • Brei die GPIO -penne uit
  • GPS/BDS Ondersteuning
  • GSM -ondersteuning
  • Lora Ondersteuning
  • Kan stapel met ander stapelbord
  • Onafhanklik van die hardebord hardeware (benodig I2C -ondersteuning)

Stap 2: Stap1: Weet oor die IoT (A) -bord

Stap 1: Weet oor die IoT (A) -raad
Stap 1: Weet oor die IoT (A) -raad
Stap 1: Weet oor die IoT (A) -raad
Stap 1: Weet oor die IoT (A) -raad
Stap 1: Weet oor die IoT (A) -raad
Stap 1: Weet oor die IoT (A) -raad

IoT Node (A) is een van die Docker Pi -reeksmodules.

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

I2C beheer Lora direk, stuur en ontvang data, beheer die GSM/GPS/BDS -module deur middel van SC16IS752, die moederbord benodig slegs I2C -ondersteuning. Ondersteuning Raspberry Pi en ander soortgelyke produkte.

U kan dus 'n middelafstand -kommunikasietoestel maak deur twee daarvan te gebruik.

en u kan ook die ligging van u toestel opspoor deur die GPS -module aan boord te gebruik.

Plaas 'n SIM -kaart, dit word 'n senderstasie via 'n SMS -boodskap.

Stap 3: Stap2: Hoe om dit te monteer

Stap 2: Hoe om dit te monteer
Stap 2: Hoe om dit te monteer
Stap 2: Hoe om dit te monteer
Stap 2: Hoe om dit te monteer

Dit is baie maklik om dit te monteer as gevolg van die "HAT" -ontwerp, jy sit dit net op jou framboospi en verbind dit via GPIO -penne, dit is soos 'n "hoed" op framboospi, sodat jy nie die massa hoef by te voeg nie draad.

Stap 4: Stap 3: Sluit antenne aan

Stap 3: Sluit antenne aan
Stap 3: Sluit antenne aan
Stap 3: Sluit antenne aan
Stap 3: Sluit antenne aan
Stap 3: Sluit antenne aan
Stap 3: Sluit antenne aan

Daar is 3 stukke antenna vir hierdie IoT (A) -module, een daarvan is vir die leermodule, dit is 'n SMA -antenna, en een daarvan is goed vir u GPS, dit is 'n vierkantige antenna met 'n IPX -poort. en die laaste een is vir die SIM -module (A9G), dit is 'n klein antenna met 'n IPX -poort. koppel die antenna en monteer die hoed op u framboospi.

Monteer die Iot Node (A) -bord op Raspberry Pi

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

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

Skroef die GPRS -antana op die SMA -poort vas.

Stap 5: Stap4: OS -omgewing en sagteware -konfigurasies

In hierdie stap moet u die volgende dinge doen:

1. Laai die nuutste beeldlêer af van: www.raspberrypi.org/downloads

2. Pak dit uit.

3. Flits u TF -kaart met die nuutste beeld via etserhulpmiddel

4. Wysig die /boot/config.txt -lêer en voeg hierdie paragraaf by.

dtoverlay = sc16is752-i2c

5. Vervang /boot/overlay/sc16is752-i2c.dtbo lêer deur hierdie lêer:

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

PS: onthou om dit uit te pak, plaas dit op u/boot/overlay/map en vervang die ou.

6. Herlaai jou Framboos Pi.

Stap 6: Stap5: Konfigurasie van I2C (Raspberry Pi)

Stap5: I2C (Raspberry Pi) instel
Stap5: I2C (Raspberry Pi) instel
Stap5: I2C (Raspberry Pi) instel
Stap5: I2C (Raspberry Pi) instel
Stap5: I2C (Raspberry Pi) instel
Stap5: I2C (Raspberry Pi) instel
Stap5: I2C (Raspberry Pi) instel
Stap5: I2C (Raspberry Pi) instel

Begin sudo raspi-config en volg die instruksies om i2c-ondersteuning vir die ARM-kern en Linux-kern te installeer Gaan na Interfacing Options

Stap 7: Stap6: Weet oor die registerinligting

GPRS -afdeling

Lae kragverbruik, slaapstand by <1mA2.

Ondersteun vier frekwensiebande GSM/GPRS, insluitend 850, 900, 1800, 1900MHZ

GPRS klas 10

Ondersteun GPRS -datadiens, maksimum datatempo, laai 85.6Kbps af, laai 42.8Kbps op

Ondersteun standaard GSM07.07, 07.05 AT opdragte, en kry toegang tot die seriële poort deur middel van die omskakeling van die I2C -koppelvlak

AT -opdragte ondersteun standaard AT- en TCP/IP -opdragpoorte

GPS -afdeling Ondersteun BDS/GPS -gewrigsposisionering

Ondersteun A-GPS, A-BDS

Ondersteun standaard SIM -kaart

LORA -afdeling Oordragafstand: 500 meter (RF -parameters: 0x50 @ China City)

Ondersteun FSK-, GFSK-, MSK-, GMSK-, LoRaTM- en OOK -modulasiemetodes

Ultra -hoë ontvanger sensitiwiteit so laag as -141 dBm

Ondersteun aanhefopsporing

Pakkie -enjin met CRC, tot 256 grepe

LORA transceiver aanwyser

Maklike TX/RX deur Docker Pi

Stap 8:

A9G -module

Die A9G -module bied twee seriële poort.

Gebruik I2C UART -brug vir kommunikasie.

Serial Port Module naam

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

Registreer kaart

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

Stap 9: Instruksies:

Instruksies
Instruksies

L_SET (slegs skryf)

  • Skryf 1 om parameters van 0x22 na LORA -module in te stel.
  • Skryf 0 nie effek nie

G_RESET (slegs skryf)

  • Skryf 1 om die A9G -module terug te stel
  • Skryf 0 nie effek nie

L_RXNE (Lees en skryf)

  • Skryf 1 oorsaakfout
  • Skryf 0 om uit te vee
  • Lees 1 beteken dat data ontvang is, kry die data uit die register 0x11 - 0x20.
  • Lees 0 beteken dat daar geen data beskikbaar is nie.

L_SET (slegs skryf)

  • Skryf 1 om data te stuur, vul die data in register 0x01 - 0x10 in voordat u dit stuur.
  • Skryf 0 nie effek nie

Stap 10: Hoe om 'n GPS -module te gebruik met Gpsd (Raspberry Pi)

Hoe om 'n GPS -module te gebruik met GPS (Raspberry Pi)
Hoe om 'n GPS -module te gebruik met GPS (Raspberry Pi)
Hoe om 'n GPS -module te gebruik met GPS (Raspberry Pi)
Hoe om 'n GPS -module te gebruik met GPS (Raspberry Pi)
Hoe om 'n GPS -module te gebruik met GPS (Raspberry Pi)
Hoe om 'n GPS -module te gebruik met GPS (Raspberry Pi)

Hoe om 'n GPS -module met GPS (Raspberry Pi) te gebruik

Vervang eers die /boot/overlays/sc16is752-i2c.dtbo en maak seker dat I2C behoorlik werk.

  • Vervang sc16is752-i2c.dtbo
  • I2C opstel
  • Installeer gpsd -gereedskap.

Maak 'n terminale oop en tik hierdie opdrag:

sudo apt installeer gpsd gpsd-kliënte

Verander/etc/default/gpsd -lêer en voeg die volgende parameters by:

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

Voer opdrag i2cset -y 1 0x16 0x23 0x40 in om die GPRS -module terug te stel.

Python -skrip vir oop GPS:

invoer serialimport os invoertyd # Herbegin gpsd -diens. os.system ("sudo systemctl herbegin gpsd.socket") # Maak seriële poort oop ser = serial. Serial ('/dev/ttySC0', 115200) i = 0 as ser.isOpen == Onwaar: ser.open () probeer: druk ("Skakel GPS aan …") terwyl True: ser.write (str.encode ("AT+GPS = 1 / r")) size = ser.inWaiting () as grootte! = 0: bosluise = time.time () response = ser.read (grootte) 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 outdoors:" + str (i)) ser.flushInput () time.sleep (1) behalwe KeyboardInterrupt: ser.flushInput () ser.close ()

Stoor dit en voer dit uit:

python3 GPS.py

Stap 11: Hoe om 'n GPS -module te gebruik met C (Raspberry Pi)

Installeer gpsd -gereedskap

sudo apt-get installeer libgps-dev

Skep bronkode en noem dit "gps.c"

#include #include #include

#insluit

#insluit

int main ()

{int rc; struct timeval tv; struct gps_data_t gps_data; as ((rc = gps_open ("localhost", "2947", & gps_data)) == -1) {printf ("code: %d, rede: %s / n", rc, gps_errstr (rc)); stuur EXIT_FAILURE terug; } gps_stroom (& gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

terwyl (1)

{ / * wag 2 sekondes om data te ontvang * / if (gps_waiting (& gps_data, 2000000)) { / * lees data * / if ((rc = gps_read (& gps_data)) == -1) {printf ("fout het gelees gps -data. kode: %d, rede: %s / n ", rc, gps_errstr (rc)); } anders { /* Gee data vanaf die GPS -ontvanger. */ 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 is eintlik nie die tydstempel nie! */

printf ("breedtegraad: %f, lengte: %f, snelheid: %f, tydstempel: %lf / n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// EDIT: TV.tv_sec vervang met gps_data.fix.time} else {printf ("geen GPS -data beskikbaar nie / n"); }}} slaap (3); } / * As u klaar is … * / gps_stream (& gps_data, WATCH_DISABLE, NULL); gps_close (& gps_data); stuur EXIT_SUCCESS terug; }

Stap 12: Stel dit op

Stel dit saam
Stel dit saam

Stel saam!

gcc gps.c -lm -lgps -o gps

Uitvoer dit!

./gps

Stap 13: Hoe om 'n GPS -module te gebruik met Python (Raspberry Pi)

Hoe om 'n GPS -module te gebruik met Python (Raspberry Pi)
Hoe om 'n GPS -module te gebruik met Python (Raspberry Pi)

Die volgende kode word aanbeveel om met Python 3 uitgevoer te word en die gpsd-py3-biblioteek en GPS 2D/3D Fix te installeer:

invoer gpsd

# Koppel aan die plaaslike gpsd

gpsd.connect ()

# Kry GPS -posisie

pakkie = gpsd.get_current ()

# Sien die inline dokumente vir GpsResponse vir die beskikbare data

druk (pakkie.posisie ())

Stap 14: Hoe om die GSM -module te gebruik met PPPd (Raspberry Pi)

Hoe om 'n GSM -module te gebruik met PPPd (Raspberry Pi)
Hoe om 'n GSM -module te gebruik met PPPd (Raspberry Pi)
Hoe om 'n GSM -module te gebruik met PPPd (Raspberry Pi)
Hoe om 'n GSM -module te gebruik met PPPd (Raspberry Pi)
Hoe om 'n GSM -module te gebruik met PPPd (Raspberry Pi)
Hoe om 'n GSM -module te gebruik met PPPd (Raspberry Pi)

A) Vervang eers die /boot/overlays/sc16is752-i2c.dtbo en maak seker dat I2C behoorlik werk.

  • Vervang sc16is752-i2c.dtbo
  • I2C opstel

B) Voer opdrag i2cset -y 1 0x16 0x23 0x40 in om die GPRS -module terug te stel.

Nadat u die opdrag uitgevoer het, moet u ongeveer 10 sekondes wag

U kan ook die volgende metode gebruik om terug te stel.

C) Voer die opdrag in

sudo apt installeer ppp

ppp -gereedskap te installeer.

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

E) Wysig/etc/ppp/peers/gprs

  • Reël 10: Raadpleeg u diensverskaffer vir die gebruiker (byvoorbeeld: cmnet).
  • Reël 15: Raadpleeg u diensverskaffer vir die APN (voorbeeld: cmnet).
  • Reël 18 - Reël 24: Aanbevole instelling

F) Verander/etc/chatscripts/gprs (Verander reël 34 na reël 35, uitbelnommer mag NIE *99#wees nie)

G) Tik opdrag sudo pppd bel gprs om in te skakel.

H) Kontroleer u PPP -konfigurasie van u ISP.

I) Tik opdrag ping -I ppp0 8.8.8.8 toets u netwerk (as internet beskikbaar en roetetabel korrek is)

J) Hou die GSM -sein goed, anders gebeur die volgende.

Stap 15: Hoe om my GSM -module (Framboos Pi) te diagnoseer

Hoe om my GSM -module (Raspberry Pi) te diagnoseer
Hoe om my GSM -module (Raspberry Pi) te diagnoseer
Hoe om my GSM -module (Raspberry Pi) te diagnoseer
Hoe om my GSM -module (Raspberry Pi) te diagnoseer
Hoe om my GSM -module (Raspberry Pi) te diagnoseer
Hoe om my GSM -module (Raspberry Pi) te diagnoseer
Hoe om my GSM -module (Raspberry Pi) te diagnoseer
Hoe om my GSM -module (Raspberry Pi) te diagnoseer

Die volgende kode word aanbeveel om met Python 3 uitgevoer te word en die smbus -biblioteek te installeer:

invoer reeksimport tyd invoer smbus invoer operateur invoer os

print ("Wag vir inisialisering …")

bus = smbus. SMBus (1)

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

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

as ser.isOpen == Onwaar:

ser.open () probeer: print ('-'*60) print ("Initialiseer A9G GPRS-module.") print ("GSM-verbinding …") time.sleep (3) i = 0 terwyl 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 ") druk (ccid) anders: i = i + 1 ser.flushInput () time.sleep (1) behalwe KeyboardInterrupt: ser.close ()

Ons kan die GSM -module diagnoseer, gebaseer op die resultate van die implementering, byvoorbeeld die volgende opgawe, CME ERROR 53 -fout, vertel ons dat die krag nie goed is nie. CME -kode = GSM -toerusting verwante foute

Die script het natuurlik ook 'n reset -funksie. As u die CCID korrek kan vertoon, is die herstel voltooi.

Stap 16: Hoe om Lora TX & RX te gebruik met C (Raspberry Pi)

Die volgende kode word aanbeveel om met Python 3 uitgevoer te word en die smbus -biblioteek te installeer.

Dit moet oorgedra word tussen die twee IOT Node (A). Die inhoud wat op sigself gestuur word, kan nie self ontvang word nie. Stoor dit as 'n py -script vir uitvoering.

Hoe om te stuur: Nadat u die data in register 0x01 - 0x10 gevul het, stel die L_TX -bit in om data te begin stuur.

invoer timeimport smbus invoer os invoer sys

bus = smbus. SMBus (1)

probeer:

data_list = [170, 85, 165, 90] # skryf data om te registreer, en dan word die data gestuur. vir indeks in reeks (1, len (data_list) + 1): bus.write_byte_data (0x16, index, data_list [index - 1]) druk ("LORA stuur data na %d register %d data" %(index, data_list [indeks - 1])) bus.write_byte_data (0x16, 0x23, 0x01) behalwe KeyboardInterrupt: sys.exit ()

Hoe om ontvangs te stuur: Kontroleer L_RXNE -bietjie, as nuwe data aangebring is, moet hierdie vlag handmatig duidelik wees

invoer timeimport smbus invoer os invoer sys

bus = smbus. SMBus (1)

recv_data =

probeer:

as bus.read_byte_data (0x16, 0x23) & 0x02: # vee handmatig L_RXNE bus.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # lees data uit vir indeks in reeks (0x11, len (register_list) + 0x11): recv_data.append (bus.read_byte_data (0x16, register_list [index - 0x11])))

print ("Ontvangde data:")

druk (recv_data) anders: druk ("Nog geen data ontvang nie ~") behalwe KeyboardInterrupt: sys.exit ()

Stap 17: Spesiale beskrywing van I2C -bandwydte

Die limiet van die I2C -spoed is 400kHz, as gevolg van die I2C -protokol, sodat die effektiewe bandwydte van die enkele toestel laer is as 320kbps, is die effektiewe bandwydte van meer as 160kbps laer. Die limiet van die I2C UART -brugspoed is 115200bps. terselfdertyd werk, is I2C -bandwydte onvoldoende, want 115,2 kbps * 2 = 230,4 kbps, sodat sommige data oorloop. Die verlaagde baud -tempo van GPS en GSM -kommunikasie kan die tekort aan kommunikasiebandbreedte verbeter. ekstra I2C -bandwydte. Gewoonlik is die netwerkdatasnelheid stadig, sodat die GSM -bandwydte nie vol is nie, dus is daar geen oorloopprobleem nie.

Stap 18: klaar

Hoop julle hou daarvan en maak dit reg.

jy kan dit hier vind:

Amazon

Naglig: https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4-kanaal Relay board: 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 ystoring :

Aanbeveel: