Sisällysluettelo:

[Docker Pi -sarja] IoT Node (A) -moduulin käyttäminen Raspberry Pi -laitteessa: 18 vaihetta
[Docker Pi -sarja] IoT Node (A) -moduulin käyttäminen Raspberry Pi -laitteessa: 18 vaihetta

Video: [Docker Pi -sarja] IoT Node (A) -moduulin käyttäminen Raspberry Pi -laitteessa: 18 vaihetta

Video: [Docker Pi -sarja] IoT Node (A) -moduulin käyttäminen Raspberry Pi -laitteessa: 18 vaihetta
Video: Setup a Pi Node - A Complete Guide (2023) 2024, Marraskuu
Anonim
[Docker Pi -sarja] IoT Node (A) -moduulin käyttäminen Raspberry Pi -laitteessa
[Docker Pi -sarja] IoT Node (A) -moduulin käyttäminen Raspberry Pi -laitteessa

Mikä on IoT Node (A) -moduuli?

IoT Node (A) on yksi Docker Pi -sarjan moduuleista.

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

I2C ohjaa suoraan Loraa, lähettää ja vastaanottaa tietoja, ohjaa GSM/GPS/BDS -moduulia SC16IS752: n kautta, emolevy tarvitsee vain I2C -tuen.

Tue Raspberry Pi ja muita vastaavia tuotteita.

Tarvikkeet

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

1x Docker Pi -sarja: IoT Node (A) -moduuli

1x 16 Gt luokan 10 TF -kortti

1x 5V/2,5A virtalähde (5V@3A Pi 4B: lle)

Vaihe 1: Ominaisuudet

Ominaisuudet
Ominaisuudet
Ominaisuudet
Ominaisuudet
Ominaisuudet
Ominaisuudet
  • Docker Pi -sarja
  • Ohjelmoitava
  • Ohjaus suoraan (ilman ohjelmointia)
  • Laajenna GPIO -nastat
  • GPS/BDS -tuki
  • GSM -tuki
  • Lora -tuki
  • Voidaan pinota muiden pinolevyjen kanssa
  • Riippumaton emolevyn laitteistosta (vaatii I2C -tuen)

Vaihe 2: Vaihe 1: Tiedä IoT (A) -levystä

Vaihe 1: Tiedä IoT (A) -levystä
Vaihe 1: Tiedä IoT (A) -levystä
Vaihe 1: Tiedä IoT (A) -levystä
Vaihe 1: Tiedä IoT (A) -levystä
Vaihe 1: Tiedä IoT (A) -levystä
Vaihe 1: Tiedä IoT (A) -levystä

IoT Node (A) on yksi Docker Pi -sarjan moduuleista.

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

I2C ohjaa suoraan Loraa, lähettää ja vastaanottaa tietoja, ohjaa GSM/GPS/BDS -moduulia SC16IS752: n kautta, emolevy tarvitsee vain I2C -tuen.

Joten voit tehdä keskialueen viestintälaitteen käyttämällä kahta niistä.

ja voit myös paikantaa laitteesi sijainnin käyttämällä laitteen GPS -moduulia.

Aseta SIM -kortti, siitä tulee lähetinasema tekstiviestillä.

Vaihe 3: Vaihe 2: Kuinka koota se

Vaihe 2: Kuinka koota se
Vaihe 2: Kuinka koota se
Vaihe 2: Kuinka koota se
Vaihe 2: Kuinka koota se

Se on erittäin helppo koota sen "HAT" -suunnittelun vuoksi, laitat sen vain vadelmapiisi päälle ja yhdistät sen GPIO -nastojen kautta, se kuin "hattu" vadelmapi: ssä, joten sinun ei tarvitse lisätä massaa lanka.

Vaihe 4: Vaihe 3: Liitä antenni

Vaihe 3: Liitä antenni
Vaihe 3: Liitä antenni
Vaihe 3: Liitä antenni
Vaihe 3: Liitä antenni
Vaihe 3: Liitä antenni
Vaihe 3: Liitä antenni

Tässä IoT (A) -moduulissa on 3 -osainen antenni, yksi niistä on loar -moduulille, se on SMA -tyyppinen antenni, ja yksi niistä on hyvä GPS: lle, se on neliölaatikkoantenni, jossa on IPX -portti. ja viimeinen on SIM -moduulille (A9G), se on pieni antenni, jossa on IPX -portti. liitä antenni ja kiinnitä hattu vadelmapiisi.

Asenna Iot Node (A) -kortti Raspberry Pi -laitteeseen

Liitä GPS -antana ja Lora -antana IPX -porttiin.

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

Ruuvaa GPRS -antanan SMA -porttiin.

Vaihe 5: Vaihe 4: Käyttöympäristö ja ohjelmistokokoonpanot

Tässä vaiheessa sinun on tehtävä seuraavat asiat:

1. Lataa uusin kuvatiedosto osoitteesta www.raspberrypi.org/downloads

2. Pura se.

3. Flashtaa TF -korttisi uusimmalla kuvalla etcher -työkalun avulla

4. Muokkaa /boot/config.txt -tiedostoa ja lisää tämä kappale.

dtoverlay = sc16is752-i2c

5. Korvaa /boot/overlay/sc16is752-i2c.dtbo-tiedoston tällä tiedostolla:

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

PS: muista purkaa se ja laita se kansioon/boot/overlay/ja korvaa vanha.

6. Käynnistä Raspberry Pi uudelleen.

Vaihe 6: Vaihe 5: I2C: n (Raspberry Pi) määrittäminen

Vaihe 5: I2C: n (Raspberry Pi) määrittäminen
Vaihe 5: I2C: n (Raspberry Pi) määrittäminen
Vaihe 5: I2C: n (Raspberry Pi) määrittäminen
Vaihe 5: I2C: n (Raspberry Pi) määrittäminen
Vaihe 5: I2C: n (Raspberry Pi) määrittäminen
Vaihe 5: I2C: n (Raspberry Pi) määrittäminen
Vaihe 5: I2C: n (Raspberry Pi) määrittäminen
Vaihe 5: I2C: n (Raspberry Pi) määrittäminen

Suorita sudo raspi-config ja asenna i2c-tuki ARM-ytimelle ja Linux-ytimelle noudattamalla ohjeita Siirry Liitäntäasetukset

Vaihe 7: Vaihe 6: Tietoa rekisteritiedoista

GPRS -osio

Pieni virrankulutus, valmiustilan virrankulutus <1mA2.

Tukee neljää GSM/GPRS -taajuuskaistaa, mukaan lukien 850, 900, 1800, 1900 MHz

GPRS -luokka 10

Tuki GPRS -datapalvelulle, suurin tiedonsiirtonopeus, lataa 85,6 kbps, lataa 42,8 kbps

Tukee GSM07.07, 07.05 AT -komentoja ja käyttää sarjaporttia I2C -rajapinnan muuntamisen kautta

AT -komennot tukevat tavallisia AT- ja TCP/IP -komentoportteja

GPS -osa Tukee BDS/GPS -yhteistä paikannusta

Tuki A-GPS, A-BDS

Tukee tavallista SIM -korttia

LORA -osa Lähetysetäisyys: 500 metriä (RF -parametrit: 0x50 @ China City)

Tukee FSK-, GFSK-, MSK-, GMSK-, LoRaTM- ja OOK -modulointimenetelmiä

Erittäin korkea vastaanottimen herkkyys jopa -141 dBm

Tue johdanto -osan tunnistus

Pakettimoottori CRC: llä, jopa 256 tavua

LORA -lähetin -vastaanottimen ilmaisin

Easy TX/RX, Docker Pi

Vaihe 8:

A9G -moduuli

A9G -moduulissa on kaksi sarjaporttia.

Käytä I2C UART -siltaa viestintään.

Sarjaporttimoduulin nimi

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

Rekisteröi kartta

  • Rekisteröi osoite Toiminto Arvo
  • 0x01 LORA_TX1 Lora TX -puskuri 1 - käyttäjätiedot
  • 0x02 LORA_TX2 Lora TX -puskuri 2 - käyttäjätiedot
  • 0x03 LORA_TX3 Lora TX -puskuri 3 - käyttäjätiedot
  • 0x04 LORA_TX4 Lora TX -puskuri 4 - käyttäjätiedot
  • 0x05 LORA_TX5 Lora TX -puskuri 5 - käyttäjätiedot
  • 0x06 LORA_TX6 Lora TX -puskuri 6 - käyttäjätiedot
  • 0x07 LORA_TX7 Lora TX Buffer 7 - Käyttäjätiedot
  • 0x08 LORA_TX8 Lora TX -puskuri 8 - käyttäjätiedot
  • 0x09 LORA_TX9 Lora TX -puskuri 9 - käyttäjätiedot
  • 0x0a LORA_TX10 Lora TX Buffer 10 - Käyttäjätiedot
  • 0x0b LORA_TX11 Lora TX -puskuri 11 - käyttäjätiedot
  • 0x0c LORA_TX12 Lora TX -puskuri 12 - käyttäjätiedot
  • 0x0d LORA_TX13 Lora TX -puskuri 13 - käyttäjätiedot
  • 0x0e LORA_TX14 Lora TX -puskuri 14 - käyttäjätiedot
  • 0x0f LORA_TX15 Lora TX -puskuri 15 - käyttäjätiedot
  • 0x10 LORA_TX16 Lora TX -puskuri 16 - Käyttäjätiedot
  • 0x11 LORA_RX1 Lora RX -puskuri 1 - käyttäjätiedot
  • 0x12 LORA_RX2 Lora RX -puskuri 2 - käyttäjätiedot
  • 0x13 LORA_RX3 Lora RX -puskuri 3 - käyttäjätiedot
  • 0x14 LORA_RX4 Lora RX -puskuri 4 - käyttäjätiedot
  • 0x15 LORA_RX5 Lora RX -puskuri 5 - käyttäjätiedot
  • 0x16 LORA_RX6 Lora RX -puskuri 6 - käyttäjätiedot
  • 0x17 LORA_RX7 Lora RX -puskuri 7 - käyttäjätiedot
  • 0x18 LORA_RX8 Lora RX -puskuri 8 - käyttäjätiedot
  • 0x19 LORA_RX9 Lora RX -puskuri 9 - käyttäjätiedot
  • 0x1a LORA_RX10 Lora RX -puskuri 10 - käyttäjätiedot
  • 0x1b LORA_RX11 Lora RX -puskuri 11 - käyttäjätiedot
  • 0x1c LORA_RX12 Lora RX -puskuri 12 - käyttäjätiedot
  • 0x1d LORA_RX13 Lora RX -puskuri 13 - käyttäjätiedot
  • 0x1e LORA_RX14 Lora RX -puskuri 14 - käyttäjätiedot
  • 0x1f LORA_RX15 Lora RX -puskuri 15 - käyttäjätiedot
  • 0x20 LORA_RX16 Lora RX -puskuri 16 - käyttäjätiedot
  • 0x01 - 0x10 vain kirjoitus.
  • 0x11 - 0x20 vain luku.

Vaihe 9: Ohjeet:

Ohjeet
Ohjeet

L_SET (vain kirjoitus)

  • Kirjoita 1 asettaaksesi parametrit 0x22 LORA -moduuliin.
  • Kirjoita 0 ei vaikutusta

G_RESET (vain kirjoitus)

  • Nollaa A9G -moduuli kirjoittamalla 1
  • Kirjoita 0 ei vaikutusta

L_RXNE (luku ja kirjoitus)

  • Kirjoita 1 syyvirhe
  • Kirjoita 0 tyhjentääksesi
  • Lukeminen 1 tarkoittaa, että tiedot on vastaanotettu, hanki tiedot rekisteristä 0x11 - 0x20.
  • Lukeminen 0 tarkoittaa, että tietoja ei ole nyt saatavilla.

L_SET (vain kirjoitus)

  • Kirjoita 1 lähettääksesi tiedot, täytä tiedot rekisteristä 0x01 - 0x10 ennen lähettämistä.
  • Kirjoita 0 ei vaikutusta

Vaihe 10: GPS -moduulin käyttäminen GPS -yhteyden (Raspberry Pi) kanssa

GPS -moduulin käyttäminen GPS -yhteyden (Raspberry Pi) kanssa
GPS -moduulin käyttäminen GPS -yhteyden (Raspberry Pi) kanssa
GPS -moduulin käyttäminen GPS -yhteyden (Raspberry Pi) kanssa
GPS -moduulin käyttäminen GPS -yhteyden (Raspberry Pi) kanssa
GPS -moduulin käyttäminen GPS -yhteyden (Raspberry Pi) kanssa
GPS -moduulin käyttäminen GPS -yhteyden (Raspberry Pi) kanssa

GPS -moduulin käyttäminen gpsd: n (Raspberry Pi) kanssa

Vaihda ensin /boot/overlays/sc16is752-i2c.dtbo ja varmista, että I2C toimii oikein.

  • Vaihda sc16is752-i2c.dtbo
  • I2C: n määrittäminen
  • Asenna gpsd -työkalut.

Avaa pääte ja kirjoita tämä komento:

sudo apt asentaa gpsd gpsd-clientit

Muokkaa/etc/default/gpsd -tiedostoa ja lisää seuraavat parametrit:

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

Nollaa GPRS -moduuli kirjoittamalla komento i2cset -y 1 0x16 0x23 0x40.

Python -skripti avoimelle GPS: lle:

tuoda sarjatuonti tuonti aika # Käynnistä GPS -palvelu uudelleen. os.system ("sudo systemctl restart gpsd.socket") # Avaa sarjaportti ser = serial. Serial ('/dev/ttySC0', 115200) i = 0 jos ser.isOpen == False: ser.open () try: print ("Käynnistä GPS …"), kun True: ser.write (str.encode ("AT+GPS = 1 / r")) size = ser.inWaiting () if size! = 0: punkit = aika.aika () response = ser.read (koko) gps = str (response, encoding = "utf -8") if (gps.find ("OK")! = -1): os.system ("sudo cgps -s") exit () else: i = i + 1 print ("Odottaa GPS -toimintoa, jos aika on liian pitkä, testaa ulkona:" + str (i)) ser.flushInput () time.sleep (1) paitsi KeyboardInterrupt: ser.flushInput () ser.close ()

Tallenna se ja suorita se:

python3 GPS.py

Vaihe 11: GPS -moduulin käyttäminen C: n (Raspberry Pi) kanssa

Asenna gpsd -työkalut

sudo apt-get install libgps-dev

Luo lähdekoodi ja anna sille nimi "gps.c"

#Sisällytä #Sisällytä #Sisällytä

#sisältää

#sisältää

int main ()

{int rc; rakentaa aika -tv; rakenne gps_data_t gps_data; if ((rc = gps_open ("localhost", "2947", & gps_data)) == -1) {printf ("koodi: %d, syy: %s / n", rc, gps_errstr (rc)); palaa EXIT_FAILURE; } gps_stream (& gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

samalla (1)

{ / * odota 2 sekuntia saadaksesi dataa * / if (gps_waiting (& gps_data, 2000000)) { / * read data * / if ((rc = gps_read (& gps_data)) == -1) {printf ("virhe tapahtui lukiessa gps -data. koodi: %d, syy: %s / n ", rc, gps_errstr (rc)); } else { /* Näytä tiedot GPS -vastaanottimesta. */ jos ((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 ei oikeastaan ole aikaleima! */

printf ("leveysaste: %f, pituusaste: %f, nopeus: %f, aikaleima: %lf / n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// EDIT: tv.tv_sec korvattiin gps_data.fix.time} else {printf ("GPS -tietoja ei ole saatavilla / n"); }}} uni (3); } / * Kun olet valmis… * / gps_stream (& gps_data, WATCH_DISABLE, NULL); gps_close (& gps_data); palaa EXIT_SUCCESS; }

Vaihe 12: Kokoa se

Kokoa se
Kokoa se

Koota!

gcc gps.c -lm -lgps -o gps

Suorita se!

./gps

Vaihe 13: GPS -moduulin käyttäminen Pythonin (Raspberry Pi) kanssa

GPS -moduulin käyttäminen Pythonin (Raspberry Pi) kanssa
GPS -moduulin käyttäminen Pythonin (Raspberry Pi) kanssa

Seuraava koodi suositellaan suoritettavaksi Python 3: lla ja asennettava gpsd-py3-kirjasto ja GPS 2D/3D Fix:

tuoda gpsd

# Yhdistä paikalliseen GPS -laitteeseen

gpsd.connect ()

# Hanki GPS -asema

paketti = gpsd.get_current ()

# Katso käytettävissä olevat tiedot GpsResponse -asiakirjoista

tulosta (packet.position ())

Vaihe 14: Kuinka käyttää GSM -moduulia PPPd: n (Raspberry Pi) kanssa

GSM -moduulin käyttäminen PPPd: n (Raspberry Pi) kanssa
GSM -moduulin käyttäminen PPPd: n (Raspberry Pi) kanssa
GSM -moduulin käyttäminen PPPd: n (Raspberry Pi) kanssa
GSM -moduulin käyttäminen PPPd: n (Raspberry Pi) kanssa
GSM -moduulin käyttäminen PPPd: n (Raspberry Pi) kanssa
GSM -moduulin käyttäminen PPPd: n (Raspberry Pi) kanssa

A) Vaihda ensin /boot/overlays/sc16is752-i2c.dtbo ja varmista, että I2C toimii oikein.

  • Vaihda sc16is752-i2c.dtbo
  • I2C: n määrittäminen

B) Nollaa GPRS -moduuli kirjoittamalla komento i2cset -y 1 0x16 0x23 0x40.

Komennon suorittamisen jälkeen sinun on odotettava vähän, noin 10 sekuntia

Voit myös nollata seuraavan menetelmän.

C) Anna komento

sudo apt asentaa ppp

asentaaksesi ppp -työkaluja.

D) Kopioi/etc/ppp/peers/tarjoaja/etc/ppp/peers/gprs

E) Muokkaa/etc/ppp/peers/gprs

  • Rivi 10: Ota yhteys palveluntarjoajaasi (esimerkki: cmnet).
  • Rivi 15: Kysy palveluntarjoajalta apn (esimerkki: cmnet).
  • Rivi 18 - Rivi 24: Suositeltu asetus

F) Muokkaa/etc/chatscripts/gprs (Vaihda rivi 34 riville 35, soittonumero EI OLE *99#)

G) Anna komento komennolla sudo pppd call gprs.

H) Tarkista ppp -määritykset Internet -palveluntarjoajalta.

I) Anna komento ping -I ppp0 8.8.8.8 Testaa verkko (jos Internet on käytettävissä ja reittitaulukko on oikea)

J) Pidä GSM -signaali hyvässä kunnossa, muuten tapahtuu seuraava.

Vaihe 15: Kuinka diagnosoida GSM -moduulini (Raspberry Pi)

GSM -moduulin (Raspberry Pi) diagnosointi
GSM -moduulin (Raspberry Pi) diagnosointi
GSM -moduulin (Raspberry Pi) diagnosointi
GSM -moduulin (Raspberry Pi) diagnosointi
GSM -moduulin (Raspberry Pi) diagnosointi
GSM -moduulin (Raspberry Pi) diagnosointi
GSM -moduulin (Raspberry Pi) diagnosointi
GSM -moduulin (Raspberry Pi) diagnosointi

Seuraava koodi suositellaan suoritettavaksi Python 3: lla ja smbus -kirjaston asentaminen:

tuonti sarjatuonti aika tuonti smbus tuontioperaattori tuonti os

tulosta ("Odotetaan alustamista…")

väylä = smbus. SMBus (1)

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

ser = sarja. sarja ('/dev/ttySC0', 115200)

jos ser.isOpen == False:

ser.open () try: print ('-'*60) print ("A9G GPRS -moduulin alustaminen.") print ("GSM Connect…") time.sleep (3) i = 0 kun True: ser.write (str.encode ("AT+CCID / r")) size = ser.inWaiting () if size! = 0: punkit = time.time () vastaus = ser.read (koko) ccid = str (response, encoding = "utf -8 ") tulosta (ccid) else: i = i + 1 ser.flushInput () time.sleep (1) paitsi KeyboardInterrupt: ser.close ()

Suorita testiskripti toteutuksen tulosten perusteella, voimme diagnosoida GSM -moduulin. Esimerkiksi seuraava palautus, CME ERROR 53 -virhe kertoo meille, että virta ei ole hyvä. CME -koodi = GSM -laitteisiin liittyvät virheet

Tietenkin skriptissä on myös nollaustoiminto. Jos voit näyttää CCID: n oikein, nollaus on valmis.

Vaihe 16: Lora TX & RX: n käyttäminen C: n (Raspberry Pi) kanssa

Seuraava koodi suositellaan suoritettavaksi Python 3: lla ja smbus -kirjaston asentaminen.

Se on siirrettävä kahden IOT -solmun (A) välillä. Itse lähetettyä sisältöä ei voi vastaanottaa itse. Tallenna se py -komentosarjaksi suoritettavaksi.

Kuinka lähettää: Kun olet täyttänyt tiedot rekisteriin 0x01 - 0x10, aseta L_TX -bitti aloittamaan tietojen lähettäminen.

tuonti aika tuonti smbus tuonti os tuonti sys

väylä = smbus. SMBus (1)

yrittää:

data_list = [170, 85, 165, 90] # kirjoita tiedot rekisteröitäväksi ja sitten tiedot lähetetään. indeksille alueella (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 [hakemisto - 1])) bus.write_byte_data (0x16, 0x23, 0x01) paitsi KeyboardInterrupt: sys.exit ()

Kuinka lähettää vastaanotto: Tarkista L_RXNE -bitti, jos asetettu, uusia tietoja saapui, tämän lipun on oltava manuaalisesti tyhjä

tuonti aika tuonti smbus tuonti os tuonti sys

väylä = smbus. SMBus (1)

recv_data =

yrittää:

jos bus.read_byte_data (0x16, 0x23) & 0x02: # tyhjennä manuaalisesti L_RXNE bus.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # lukematiedot indeksille alueella (0x11, len (register_list) + 0x11): recv_data.append (bus.read_byte_data (0x16, register_list [hakemisto - 0x11]))

tulosta ("Vastaanotetut tiedot:")

print (recv_data) else: print ("Ei tietoja vielä vastaanotettu ~") paitsi KeyboardInterrupt: sys.exit ()

Vaihe 17: I2C -kaistanleveyden erityiskuvaus

I2C -nopeuden raja on 400 kHz, johtuen I2C -protokollasta, joten yhden laitteen tehokas kaistanleveys on pienempi kuin 320 kbps, usean laitteen tehokas kaistanleveys on pienempi kuin 160 kbps. samaan aikaan, I2C -kaistanleveys on riittämätön, koska 115,2 kbps * 2 = 230,4 kbps, joten osa tiedoista ylikuormittuu. Yleensä verkon datanopeus on hidas, joten GSM -kaistanleveys ei ole täynnä, joten ylivuoto -ongelmaa ei ole.

Vaihe 18: Valmis

Toivottavasti tykkäätte ja teette sen.

löydät sen täältä:

Amazon

Yövalo : https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4-kanavainen relelevy: 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 -solmu (A) ps https://www.amazon.co.uk/dp/B07TY15M1C Sensor HUB : https:// www. amazon.co.uk/dp/B07TZD8B61 jäätorni :

Suositeltava: