Tartalomjegyzék:

[Docker Pi sorozat] Az IoT Node (A) modul használata a Raspberry Pi -n: 18 lépés
[Docker Pi sorozat] Az IoT Node (A) modul használata a Raspberry Pi -n: 18 lépés

Videó: [Docker Pi sorozat] Az IoT Node (A) modul használata a Raspberry Pi -n: 18 lépés

Videó: [Docker Pi sorozat] Az IoT Node (A) modul használata a Raspberry Pi -n: 18 lépés
Videó: Desktop OS in Docker on Raspberry PI 2024, November
Anonim
[Docker Pi sorozat] Az IoT Node (A) modul használata a Raspberry Pi -n
[Docker Pi sorozat] Az IoT Node (A) modul használata a Raspberry Pi -n

Mi az IoT Node (A) modul?

Az IoT Node (A) a Docker Pi sorozat egyik modulja.

IOT csomópont (A) = GPS/BDS + GSM + Lora.

Az I2C közvetlenül vezérli Lora -t, adatokat küld és fogad, vezérli a GSM/GPS/BDS modult az SC16IS752 segítségével, az alaplapnak csak I2C támogatásra van szüksége.

Támogassa a Raspberry Pi -t és más hasonló termékeket.

Kellékek

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

1x Docker Pi sorozatú termék: IoT Node (A) modul

1x 16 GB -os 10 -es típusú TF kártya

1x 5V/2,5A tápegység (5V@3A Pi 4B esetén)

1. lépés: Jellemzők

Jellemzők
Jellemzők
Jellemzők
Jellemzők
Jellemzők
Jellemzők
  • Docker Pi sorozat
  • Programozható
  • Közvetlen vezérlés (programozás nélkül)
  • Húzza ki a GPIO csapokat
  • GPS/BDS támogatás
  • GSM támogatás
  • Lora támogatás
  • Összerakható más Stack táblával
  • Függetlenül az alaplap hardverétől (I2C támogatás szükséges)

2. lépés: 1. lépés: Ismerje meg az IoT (A) táblát

1. lépés: Ismerje meg az IoT (A) táblát
1. lépés: Ismerje meg az IoT (A) táblát
1. lépés: Ismerje meg az IoT (A) táblát
1. lépés: Ismerje meg az IoT (A) táblát
1. lépés: Ismerje meg az IoT (A) táblát
1. lépés: Ismerje meg az IoT (A) táblát

Az IoT Node (A) a Docker Pi sorozat egyik modulja.

IOT csomópont (A) = GPS/BDS + GSM + Lora.

Az I2C közvetlenül vezérli Lora -t, adatokat küld és fogad, vezérli a GSM/GPS/BDS modult az SC16IS752 -n keresztül, az alaplapnak csak I2C támogatásra van szüksége. Támogatja a Raspberry Pi és más hasonló termékeket.

Így kettő segítségével létrehozhat középkategóriás kommunikációs eszközt.

és megtalálhatja a készülék helyét a fedélzeti GPS -modul használatával.

Helyezzen be egy SIM -kártyát, az adóállomás lesz SMS -ben.

3. lépés: 2. lépés: Hogyan szereljük össze

2. lépés: Hogyan szereljük össze
2. lépés: Hogyan szereljük össze
2. lépés: Hogyan szereljük össze
2. lépés: Hogyan szereljük össze

Nagyon egyszerű összeszerelni a "HAT" kialakításnak köszönhetően, csak fel kell rakni a málna pi -re, és össze kell kötni a GPIO csapokkal, olyan, mint egy "kalap" a málna pi -n, így nem kell hozzáadnia a masszát huzal.

4. lépés: 3. lépés: Csatlakoztassa az antennát

3. lépés: Csatlakoztassa az antennát
3. lépés: Csatlakoztassa az antennát
3. lépés: Csatlakoztassa az antennát
3. lépés: Csatlakoztassa az antennát
3. lépés: Csatlakoztassa az antennát
3. lépés: Csatlakoztassa az antennát

Ehhez az IoT (A) modulhoz 3 darab antenna tartozik, az egyik a loar modulhoz, ez egy SMA típusú antenna, és az egyik jó a GPS számára, ez egy négyzet alakú doboz antenna, amely IPX porttal rendelkezik. és az utolsó a SIM modulhoz (A9G) való, ez egy apró antenna, amely IPX porttal rendelkezik. csatlakoztassa az antennát, és szerelje fel a kalapot a málna pi.

Szerelje fel az Iot Node (A) kártyát a Raspberry Pi -re

Csatlakoztassa a GPS antanát és a Lora antanát az IPX porthoz.

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

Csavarja a GPRS antanát az SMA porton.

5. lépés: 4. lépés: OS környezet és szoftverkonfigurációk

Ebben a lépésben a következőket kell tennie:

1. Töltse le a legfrissebb képfájlt: www.raspberrypi.org/downloads

2. Csomagolja ki.

3. Villanja fel TF kártyáját a legújabb képpel az etcher eszköz segítségével

4. Módosítsa a /boot/config.txt fájlt, és adja hozzá ezt a bekezdést.

dtoverlay = sc16is752-i2c

5. A /boot/overlay/sc16is752-i2c.dtbo fájlt lecseréli erre a fájlra:

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

PS: ne feledje, hogy csomagolja ki, és tegye a/boot/overlay/mappába, és cserélje ki a régit.

6. Indítsa újra a Raspberry Pi -t.

6. lépés: 5. lépés: Az I2C (Raspberry Pi) konfigurálása

5. lépés: Az I2C (Raspberry Pi) konfigurálása
5. lépés: Az I2C (Raspberry Pi) konfigurálása
5. lépés: Az I2C (Raspberry Pi) konfigurálása
5. lépés: Az I2C (Raspberry Pi) konfigurálása
5. lépés: Az I2C (Raspberry Pi) konfigurálása
5. lépés: Az I2C (Raspberry Pi) konfigurálása
5. lépés: Az I2C (Raspberry Pi) konfigurálása
5. lépés: Az I2C (Raspberry Pi) konfigurálása

Futtassa a sudo raspi-config parancsot, és kövesse az utasításokat az i2c támogatás telepítéséhez az ARM maghoz és a linux kernelhez.

7. lépés: 6. lépés: Ismerje meg a regisztrációs információkat

GPRS szakasz

Alacsony energiafogyasztás, készenléti alvó áram <1mA2.

Támogatja a GSM/GPRS négy frekvenciasávot, köztük 850, 900, 1800, 1900 MHz

GPRS 10. osztály

GPRS adatszolgáltatás támogatása, maximális adatsebesség, letöltés 85,6Kbps, feltöltés 42,8Kbps

Támogassa a szabványos GSM07.07, 07.05 AT parancsokat, és érje el a soros portot az I2C interfész átalakításával

Az AT parancsok támogatják a szabványos AT és TCP/IP parancsportokat

GPS szakasz Támogatja a BDS/GPS közös pozicionálást

A-GPS, A-BDS támogatás

Támogatja a szabványos SIM -kártyát

LORA szakasz Átviteli távolság: 500 méter (RF paraméterek: 0x50 @ China City)

Támogatja az FSK, GFSK, MSK, GMSK, LoRaTM és OOK modulációs módszereket

Rendkívül magas vevő érzékenység, akár -141 dBm

Támogatja a bevezető felismerést

Csomagmotor CRC -vel, akár 256 bájt

LORA adó -vevő jelző

Egyszerű TX/RX a Docker Pi -től

8. lépés:

A9G modul

Az A9G modul két soros portot kínál.

Kommunikációhoz használja az I2C UART hidat.

Soros port modul neve

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

Térkép regisztrálása

  • Regisztrációs cím Funkció értéke
  • 0x01 LORA_TX1 Lora TX Buffer 1 - Felhasználói adatok
  • 0x02 LORA_TX2 Lora TX Buffer 2 - Felhasználói adatok
  • 0x03 LORA_TX3 Lora TX Buffer 3 - Felhasználói adatok
  • 0x04 LORA_TX4 Lora TX Buffer 4 - Felhasználói adatok
  • 0x05 LORA_TX5 Lora TX Buffer 5 - Felhasználói adatok
  • 0x06 LORA_TX6 Lora TX Buffer 6 - Felhasználói adatok
  • 0x07 LORA_TX7 Lora TX Buffer 7 - Felhasználói adatok
  • 0x08 LORA_TX8 Lora TX Buffer 8 - Felhasználói adatok
  • 0x09 LORA_TX9 Lora TX Buffer 9 - Felhasználói adatok
  • 0x0a LORA_TX10 Lora TX Buffer 10 - Felhasználói adatok
  • 0x0b LORA_TX11 Lora TX Buffer 11 - Felhasználói adatok
  • 0x0c LORA_TX12 Lora TX Buffer 12 - Felhasználói adatok
  • 0x0d LORA_TX13 Lora TX Buffer 13 - Felhasználói adatok
  • 0x0e LORA_TX14 Lora TX Buffer 14 - Felhasználói adatok
  • 0x0f LORA_TX15 Lora TX Buffer 15 - Felhasználói adatok
  • 0x10 LORA_TX16 Lora TX Buffer 16 - Felhasználói adatok
  • 0x11 LORA_RX1 Lora RX 1. puffer - felhasználói adatok
  • 0x12 LORA_RX2 Lora RX Buffer 2 - Felhasználói adatok
  • 0x13 LORA_RX3 Lora RX Buffer 3 - Felhasználói adatok
  • 0x14 LORA_RX4 Lora RX Buffer 4 - Felhasználói adatok
  • 0x15 LORA_RX5 Lora RX Buffer 5 - Felhasználói adatok
  • 0x16 LORA_RX6 Lora RX Buffer 6 - Felhasználói adatok
  • 0x17 LORA_RX7 Lora RX Buffer 7 - Felhasználói adatok
  • 0x18 LORA_RX8 Lora RX Buffer 8 - Felhasználói adatok
  • 0x19 LORA_RX9 Lora RX Buffer 9 - Felhasználói adatok
  • 0x1a LORA_RX10 Lora RX Buffer 10 - Felhasználói adatok
  • 0x1b LORA_RX11 Lora RX Buffer 11 - Felhasználói adatok
  • 0x1c LORA_RX12 Lora RX puffer 12 - Felhasználói adatok
  • 0x1d LORA_RX13 Lora RX Buffer 13 - Felhasználói adatok
  • 0x1e LORA_RX14 Lora RX Buffer 14 - Felhasználói adatok
  • 0x1f LORA_RX15 Lora RX Buffer 15 - Felhasználói adatok
  • 0x20 LORA_RX16 Lora RX Buffer 16 - Felhasználói adatok
  • 0x01 - 0x10 Csak írás.
  • 0x11 - 0x20 Csak olvasható.

9. lépés: Utasítások:

Utasítás
Utasítás

L_SET (csak írás)

  • Írjon 1 -et a paraméterek beállításához 0x22 -ről LORA modulra.
  • Írja 0 nem hatásos

G_RESET (csak írás)

  • Írjon 1 -et az A9G modul visszaállításához
  • Írja 0 nem hatásos

L_RXNE (Olvasás és írás)

  • Írjon 1 okhibát
  • A törléshez írjon 0 -t
  • Az 1. olvasás azt jelenti, hogy adatok érkeztek, kérjük, szerezze be az adatokat a 0x11 - 0x20 regiszterből.
  • A 0 olvasás azt jelenti, hogy most nincs adat.

L_SET (csak írás)

  • Az adatok küldéséhez írjon 1 -et, küldés előtt töltse ki a 0x01 - 0x10 regiszter adatait.
  • Írja 0 nem hatásos

10. lépés: A GPS -modul használata GPS -sel (Raspberry Pi)

Hogyan kell használni a GPS modult GPS -sel (Raspberry Pi)
Hogyan kell használni a GPS modult GPS -sel (Raspberry Pi)
Hogyan kell használni a GPS modult GPS -sel (Raspberry Pi)
Hogyan kell használni a GPS modult GPS -sel (Raspberry Pi)
Hogyan kell használni a GPS modult GPS -sel (Raspberry Pi)
Hogyan kell használni a GPS modult GPS -sel (Raspberry Pi)

A GPS -modul használata a gpsd -vel (Raspberry Pi)

Először cserélje ki a /boot/overlays/sc16is752-i2c.dtbo fájlt, és győződjön meg arról, hogy az I2C megfelelően működik.

  • Cserélje ki az sc16is752-i2c.dtbo fájlt
  • Az I2C konfigurálása
  • Telepítse a gpsd eszközöket.

Nyisson meg egy terminált, és írja be ezt a parancsot:

sudo apt install gpsd gpsd-client

Módosítsa az/etc/default/gpsd fájlt, és adja hozzá a következő paramétereket:

  • ESZKÖZÖK = "/dev/ttySC1"
  • GPSD_OPTIONS = "-F /var/run/gpsd.sock"

A GPRS modul alaphelyzetbe állításához írja be az i2cset -y 1 0x16 0x23 0x40 parancsot.

Python -szkript nyílt GPS -hez:

sorozat importálása import import idő # Indítsa újra a gpsd szolgáltatást. os.system ("sudo systemctl restart gpsd.socket") # Nyissa meg a soros portot ser = serial. Serial ('/dev/ttySC0', 115200) i = 0 if ser.isOpen == False: ser.open () try: print ("Kapcsolja be a GPS -t …"), míg True: ser.write (str.encode ("AT+GPS = 1 / r")) size = ser.inWaiting () if size! = 0: pipa = time.time () válasz = ser.read (méret) gps = str (válasz, kódolás = "utf -8"), ha (gps.find ("OK")! = -1): os.system ("sudo cgps -s") exit () else: i = i + 1 print ("Várakozó GPS engedélyezése, Ha túl hosszú az idő, kérjük, tesztelje a szabadban:" + str (i)) ser.flushInput () time.sleep (1), kivéve a KeyboardInterrupt: ser.flushInput () ser.close ()

Mentse el és hajtsa végre:

python3 GPS.py

11. lépés: A GPS -modul használata C -vel (Raspberry Pi)

Telepítse a gpsd eszközöket

sudo apt-get install libgps-dev

Hozzon létre forráskódot, és nevezze el "gps.c"

#befoglalni #befoglalni #befoglalni

#befoglalni

#befoglalni

int main ()

{int rc; strukture timeval tv; szerkezet gps_data_t gps_data; if ((rc = gps_open ("localhost", "2947", & gps_data)) == -1) {printf ("kód: %d, ok: %s / n", rc, gps_errstr (rc)); visszatér EXIT_FAILURE; } gps_stream (& gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

míg (1)

{ / * várjon 2 másodpercet az adatok fogadására * / if (gps_waiting (& gps_data, 2000000)) { / * olvas adatokat gps adatok. kód: %d, oka: %s / n ", rc, gps_errstr (rc)); } else { /* Adatok megjelenítése a GPS -vevőből. */ 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: a tv.tv_sec valójában nem az időbélyeg! */

printf ("szélesség: %f, hosszúság: %f, sebesség: %f, időbélyeg: %lf / n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// SZERKESZTÉS: A tv.tv_sec lecserélésre került gps_data.fix.time} else {printf ("nincs elérhető GPS -adat / n"); }}} alvás (3); } / * Ha elkészült… * / gps_stream (& gps_data, WATCH_DISABLE, NULL); gps_close (& gps_data); return EXIT_SUCCESS; }

12. lépés: Fordítsa össze

Fordítsa össze
Fordítsa össze

Fordítás!

gcc gps.c -lm -lgps -o gps

Végezze el!

./gps

13. lépés: A GPS -modul használata Python (Raspberry Pi) segítségével

A GPS -modul használata Python (Raspberry Pi) segítségével
A GPS -modul használata Python (Raspberry Pi) segítségével

A következő kódot ajánlott végrehajtani Python 3 használatával, és telepíteni a gpsd-py3 könyvtárat és a GPS 2D/3D Fix alkalmazást:

gpsd importálása

# Csatlakozzon a helyi GPS -hez

gpsd.connect ()

# Get GPS pozíció

csomag = gpsd.get_current ()

# A rendelkezésre álló adatokért tekintse meg a GpsResponse beágyazott dokumentációját

nyomtatás (packet.position ())

14. lépés: A GSM modul használata PPPd -vel (Raspberry Pi)

A GSM modul használata PPPd -vel (Raspberry Pi)
A GSM modul használata PPPd -vel (Raspberry Pi)
A GSM modul használata PPPd -vel (Raspberry Pi)
A GSM modul használata PPPd -vel (Raspberry Pi)
A GSM modul használata PPPd -vel (Raspberry Pi)
A GSM modul használata PPPd -vel (Raspberry Pi)

A) Először cserélje ki a /boot/overlays/sc16is752-i2c.dtbo fájlt, és győződjön meg arról, hogy az I2C megfelelően működik.

  • Cserélje ki az sc16is752-i2c.dtbo fájlt
  • Az I2C konfigurálása

B) Írja be az i2cset -y 1 0x16 0x23 0x40 parancsot a GPRS modul alaphelyzetbe állításához.

A parancs futtatása után várnia kell egy kicsit, körülbelül 10 másodpercet

A visszaállításhoz a következő módszert is használhatja.

C) Írja be a parancsot

sudo apt install ppp

ppp eszközök telepítéséhez.

D) Másolja az/etc/ppp/peers/szolgáltatót a/etc/ppp/peers/gprs mappába

E) Módosítsa az/etc/ppp/peers/gprs fájlt

  • 10. sor: A felhasználóhoz forduljon szolgáltatójához (példa: cmnet).
  • 15. sor: Kérjük, forduljon a szolgáltatójához az apn -hez (példa: cmnet).
  • 18. sor - 24. sor: Ajánlott beállítás

F) Az/etc/chatscripts/gprs módosítása (34. sor módosítása 35. sorra, a tárcsázási szám NEM lehet *99#)

G) A tárcsázáshoz írja be a sudo pppd call gprs parancsot.

H) Ellenőrizze a ppp konfigurációját az internetszolgáltatójától.

I) Írja be a ping -I ppp0 parancsot 8.8.8.8 tesztelje a hálózatát (ha elérhető az internet és az útvonalatábla helyes)

J) Kérjük, tartsa jó állapotban a GSM jelet, különben a következők történnek.

15. lépés: A GSM modulom (Raspberry Pi) diagnosztizálása

A GSM modulom diagnosztizálása (Raspberry Pi)
A GSM modulom diagnosztizálása (Raspberry Pi)
A GSM modulom diagnosztizálása (Raspberry Pi)
A GSM modulom diagnosztizálása (Raspberry Pi)
A GSM modulom diagnosztizálása (Raspberry Pi)
A GSM modulom diagnosztizálása (Raspberry Pi)
A GSM modulom diagnosztizálása (Raspberry Pi)
A GSM modulom diagnosztizálása (Raspberry Pi)

A következő kódot ajánlott végrehajtani Python 3 használatával, és telepíteni az smbus könyvtárat:

import sorozatimport idő import smbus import operátor import os

nyomtatás ("Várakozás az inicializálásra …")

busz = smbus. SMBus (1)

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

ser = soros. Soros ('/dev/ttySC0', 115200)

ha ser.isOpen == Hamis:

ser.open () try: print ('-'*60) print ("A9G GPRS modul inicializálása.") print ("GSM Connect…") time.sleep (3) i = 0, míg True: ser.write (str.encode ("AT+CCID / r")) size = ser.inWaiting () if size! = 0: pipa = time.time () response = ser.read (size) ccid = str (response, encoding = "utf -8 ") print (ccid) else: i = i + 1 ser.flushInput () time.sleep (1), kivéve a KeyboardInterrupt: ser.close ()

Hajtsa végre a teszt szkriptet, a megvalósítás eredményei alapján diagnosztizálhatjuk a GSM modult. Például a következő visszatérés, a CME ERROR 53 hiba azt jelzi, hogy a Power nem jó. CME kód = GSM berendezésekkel kapcsolatos hibák

Természetesen a szkriptnek van visszaállítási funkciója is. Ha megfelelően tudja megjeleníteni a CCID -t, akkor a visszaállítás befejeződött.

16. lépés: A Lora TX & RX használata C -vel (Raspberry Pi)

A következő kódot ajánlott végrehajtani Python 3 használatával, és telepíteni az smbus könyvtárat.

Át kell vinni a két IOT csomópont (A) között. A magától küldött tartalmat nem lehet önmagában fogadni. Kérjük, mentse py -szkriptként a végrehajtáshoz.

Küldés módja: Miután kitöltötte az adatokat a 0x01 - 0x10 regiszterbe, állítsa be az L_TX bitet az adatok küldésének megkezdéséhez.

import timeimport smbus import os import import sys

busz = smbus. SMBus (1)

próbáld ki:

data_list = [170, 85, 165, 90] # írjon be adatokat a regisztráláshoz, majd küldje el az adatokat. tartományhoz tartozó indexhez (1, len (adatlista) + 1): bus.write_byte_data (0x16, index, data_list [index - 1]) print ("LORA send data to %d register %d data" %(index, data_list [index - 1])) bus.write_byte_data (0x16, 0x23, 0x01), kivéve a KeyboardInterrupt: sys.exit ()

Fogadás küldése: Ellenőrizze az L_RXNE bitet. Ha be van állítva, új adatok érkeztek, ezt a zászlót manuálisan törölni kell

import timeimport smbus import os os import sys

busz = smbus. SMBus (1)

recv_data =

próbáld ki:

ha bus.read_byte_data (0x16, 0x23) & 0x02: # manuálisan törli az L_RXNE bus.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # kiolvasott adatokat a tartományban (0x11, len (register_list) + 0x11): recv_data.append (bus.read_byte_data (0x16, register_list [index - 0x11]))

print ("Fogadott adatok:")

print (recv_data) else: print ("Még nincs adat ~"), kivéve a KeyboardInterrupt: sys.exit ()

17. lépés: Az I2C sávszélesség speciális leírása

Az I2C sebesség határa 400 kHz, az I2C protokoll miatt, így az egyetlen eszköz effektív sávszélessége kisebb, mint 320 kbps, a többeszközös effektív sávszélesség kisebb, mint 160 kbps. Az I2C UART Bridge sebességének korlátja 115200 bps. Amikor GPS és GSM ugyanakkor az I2C sávszélessége nem elegendő, mert 115,2 kbps * 2 = 230,4 kbps, így egyes adatok túlcsordulnak. A GPS és a GSM kommunikáció átviteli sebességének csökkentése javíthatja a kommunikáció sávszélesség -hiányát. extra I2C sávszélesség. Általában a hálózati adatsebesség lassú, így a GSM sávszélessége nem teljes, így nincs túlcsordulási probléma.

18. lépés: Kész

Remélem tetszeni fognak és sikerül.

itt megtalálod:

amazon

Éjszakai fény : https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4csatornás relé tábla: 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 Érzékelő HUB : https:// www. amazon.co.uk/dp/B07TZD8B61 jégtorony :

Ajánlott: