Cuprins:

[Seria Docker Pi] Cum se utilizează modulul IoT Node (A) pe Raspberry Pi: 18 pași
[Seria Docker Pi] Cum se utilizează modulul IoT Node (A) pe Raspberry Pi: 18 pași

Video: [Seria Docker Pi] Cum se utilizează modulul IoT Node (A) pe Raspberry Pi: 18 pași

Video: [Seria Docker Pi] Cum se utilizează modulul IoT Node (A) pe Raspberry Pi: 18 pași
Video: Как изменились актеры сериала Госпожа Фазилет и её дочери 2024, Noiembrie
Anonim
[Seria Docker Pi] Cum se utilizează modulul IoT Node (A) pe Raspberry Pi
[Seria Docker Pi] Cum se utilizează modulul IoT Node (A) pe Raspberry Pi

Ce este modulul IoT Node (A)?

Nodul IoT (A) este unul dintre modulele din seria Docker Pi.

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

I2C controlează direct Lora, trimite și primește date, controlează modulul GSM / GPS / BDS prin SC16IS752, placa principală are nevoie doar de suport I2C.

Suportă Raspberry Pi și alte produse similare.

Provizii

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

1x produs din seria Docker Pi: modul IoT Node (A)

1x card 16 TF clasa 10 TF

1x sursa de alimentare 5V / 2.5A (5V @ 3A pentru Pi 4B)

Pasul 1: caracteristici

Caracteristici
Caracteristici
Caracteristici
Caracteristici
Caracteristici
Caracteristici
  • Seria Docker Pi
  • Programabil
  • Control direct (fără programare)
  • Extindeți pinii GPIO
  • Suport GPS / BDS
  • Suport GSM
  • Suport Lora
  • Se poate stiva cu o altă tablă Stack
  • Independent de hardware-ul plăcii principale (necesită suport I2C)

Pasul 2: Pasul 1: Aflați mai multe despre tabloul IoT (A)

Pasul 1: Aflați mai multe despre tabloul IoT (A)
Pasul 1: Aflați mai multe despre tabloul IoT (A)
Pasul 1: Aflați mai multe despre tabloul IoT (A)
Pasul 1: Aflați mai multe despre tabloul IoT (A)
Pasul 1: Aflați mai multe despre tabloul IoT (A)
Pasul 1: Aflați mai multe despre tabloul IoT (A)

Nodul IoT (A) este unul dintre modulele din seria Docker Pi.

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

I2C controlează direct Lora, trimite și primește date, controlează modulul GSM / GPS / BDS prin SC16IS752, placa principală are nevoie doar de suport I2C. Suportă Raspberry Pi și alte produse similare.

Deci, puteți crea un dispozitiv de comunicație de nivel mediu folosind două dintre ele.

și, de asemenea, puteți localiza locația dispozitivului dvs. utilizând modulul GPS de la bord.

Introduceți o cartelă SIM, va deveni o stație emițătoare prin mesaj SMS.

Pasul 3: Pasul 2: Cum să-l asamblați

Pasul 2: Cum să-l asamblați
Pasul 2: Cum să-l asamblați
Pasul 2: Cum să-l asamblați
Pasul 2: Cum să-l asamblați

Este foarte ușor să-l asamblați datorită designului „HAT”, pur și simplu îl puneți pe pi zmeură și îl conectați prin pinii GPIO, este ca o „pălărie” pe zmeura pi, astfel încât să nu trebuie să adăugați masa sârmă.

Pasul 4: Pasul 3: Conectați antena

Pasul 3: Conectați antena
Pasul 3: Conectați antena
Pasul 3: Conectați antena
Pasul 3: Conectați antena
Pasul 3: Conectați antena
Pasul 3: Conectați antena

Există 3 piese de antenă pentru acest modul IoT (A), una dintre ele este pentru modulul loar, este o antenă de tip SMA și una dintre ele este bună pentru dvs. GPS, este o antenă cu cutie pătrată care are port IPX. iar ultima este pentru modulul SIM (A9G), este o antenă mică, care are un port IPX. conectați antena și montați pălăria la zmeura dvs. pi.

Cum să asamblați Montați placa Iot Node (A) pe Raspberry Pi

Conectați GPS antana și Lora antana la portul IPX.

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

Înșurubează antana GPRS pe portul SMA.

Pasul 5: Pasul 4: Mediul sistemului de operare și configurațiile software

În acest pas, trebuie să faceți aceste lucruri:

1. Descărcați cel mai recent fișier imagine de pe: www.raspberrypi.org/downloads

2. Dezarhivați-l.

3. Flashează-ți cardul TF cu cea mai recentă imagine prin intermediul instrumentului de gravat

4. Modificați fișierul /boot/config.txt și adăugați acest paragraf.

dtoverlay = sc16is752-i2c

5. Înlocuiește fișierul /boot/overlay/sc16is752-i2c.dtbo cu acest fișier:

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

PS: amintiți-vă dezarhivați-l și puneți-l în folderul / boot / overlay / și înlocuiți vechiul.

6. Reporniți Raspberry Pi.

Pasul 6: Pasul 5: Configurarea I2C (Raspberry Pi)

Pasul 5: Configurarea I2C (Raspberry Pi)
Pasul 5: Configurarea I2C (Raspberry Pi)
Pasul 5: Configurarea I2C (Raspberry Pi)
Pasul 5: Configurarea I2C (Raspberry Pi)
Pasul 5: Configurarea I2C (Raspberry Pi)
Pasul 5: Configurarea I2C (Raspberry Pi)
Pasul 5: Configurarea I2C (Raspberry Pi)
Pasul 5: Configurarea I2C (Raspberry Pi)

Rulați sudo raspi-config și urmați instrucțiunile pentru a instala suportul i2c pentru nucleul ARM și nucleul Linux Accesați Opțiuni de interfațare

Pasul 7: Pasul 6: Cunoașteți informațiile despre înregistrare

Secțiunea GPRS

Consum redus de energie, curent de așteptare de așteptare <1mA2.

Suportă patru benzi de frecvență GSM / GPRS, inclusiv 850, 900, 1800, 1900MHZ

GPRS Clasa 10

Suport pentru serviciul de date GPRS, rata maximă de date, descărcare 85,6 Kbps, încărcare 42,8 Kbps

Acceptați comenzile standard GSM07.07, 07.05 AT și accesați portul serial prin conversia interfeței I2C

Comenzile AT acceptă porturile standard de comandă AT și TCP / IP

Secțiunea GPS Sprijină poziționarea articulației BDS / GPS

Suport A-GPS, A-BDS

Suportă cartela SIM standard

Secțiunea LORA Distanța de transmisie: 500 metri (parametrii RF: 0x50 @ China City)

Suportă metode de modulare FSK, GFSK, MSK, GMSK, LoRaTM și OOK

Sensibilitate ultra-înaltă a receptorului de până la -141 dBm

Sprijină detectarea preambulului

Motor de pachete cu CRC, până la 256 de octeți

Indicator transmițător LORA

Easy TX / RX de Docker Pi

Pasul 8:

Modulul A9G

Modulul A9G oferă două porturi seriale.

Utilizați I2C UART bridge pentru comunicare.

Numele modulului portului serial

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

Harta de înregistrare

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

Pasul 9: Instrucțiuni:

Instrucțiuni
Instrucțiuni

L_SET (Numai scriere)

  • Scrieți 1 pentru a seta parametrii de la 0x22 la modulul LORA.
  • Scrieți 0 nu are efect

G_RESET (Numai scriere)

  • Scrieți 1 pentru a reseta modulul A9G
  • Scrieți 0 nu are efect

L_RXNE (citire și scriere)

  • Scrieți 1 eroare cauză
  • Scrie 0 pentru a șterge
  • Citiți 1 înseamnă că datele au fost primite, vă rugăm să obțineți datele din registrul 0x11 - 0x20.
  • Citiți 0 înseamnă că nu există date disponibile acum.

L_SET (Numai scriere)

  • Scrieți 1 pentru a trimite date, vă rugăm să completați datele din registrul 0x01 - 0x10 înainte de trimitere.
  • Scrieți 0 nu are efect

Pasul 10: Cum se utilizează modulul GPS cu GPS (Raspberry Pi)

Cum se utilizează modulul GPS cu GPS (Raspberry Pi)
Cum se utilizează modulul GPS cu GPS (Raspberry Pi)
Cum se utilizează modulul GPS cu GPS (Raspberry Pi)
Cum se utilizează modulul GPS cu GPS (Raspberry Pi)
Cum se utilizează modulul GPS cu GPS (Raspberry Pi)
Cum se utilizează modulul GPS cu GPS (Raspberry Pi)

Cum se utilizează modulul GPS cu GPS (Raspberry Pi)

Mai întâi, înlocuiți /boot/overlays/sc16is752-i2c.dtbo și asigurați-vă că I2C funcționează corect.

  • Înlocuiți sc16is752-i2c.dtbo
  • Configurarea I2C
  • Instalați instrumentele GPS.

Deschideți un terminal și tastați această comandă:

sudo apt instalează gpsd gpsd-clients

Modificați fișierul / etc / default / gpsd și adăugați următorii parametri:

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

Introduceți comanda i2cset -y 1 0x16 0x23 0x40 pentru a reseta modulul GPRS.

Script Python pentru GPS deschis:

import serialimport os import time # Reporniți serviciul gpsd. os.system ("sudo systemctl restart gpsd.socket") # Open serial port ser = serial. Serial ('/ dev / ttySC0', 115200) i = 0 if ser.isOpen == False: ser.open () try: print ("Porniți GPS …") în timp ce True: ser.write (str.encode ("AT + GPS = 1 / r")) size = ser.inWaiting () if size! = 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, Dacă timpul este prea lung, vă rugăm să testați în aer liber:" + str (i)) ser.flushInput () time.sleep (1) cu excepția KeyboardInterrupt: ser.flushInput () ser.close ()

Salvați-l și executați-l:

python3 GPS.py

Pasul 11: Cum se utilizează modulul GPS cu C (Raspberry Pi)

Instalați instrumentele GPS

sudo apt-get install libgps-dev

Creați codul sursă și denumiți-l „gps.c”

#include #include #include

#include

#include

int main ()

{int rc; struct timeval tv; struct gps_data_t gps_data; if ((rc = gps_open ("localhost", "2947", & gps_data)) == -1) {printf ("cod:% d, motiv:% s / n", rc, gps_errstr (rc)); returnează EXIT_FAILURE; } gps_stream (& gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

în timp ce (1)

{/ * așteptați 2 secunde pentru a primi date * / if (gps_waiting (& gps_data, 2000000)) {/ * citire date * / if ((rc = gps_read (& gps_data)) == -1) {printf ("a apărut o eroare la citire) date GPS. cod:% d, motiv:% s / n ", rc, gps_errstr (rc)); } else {/ * Afișați datele de la receptorul GPS. * / 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 nu este de fapt marcajul de timp! * /

printf ("latitudine:% f, longitudine:% f, viteză:% f, marcaj de timp:% lf / n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// EDIT: Înlocuit tv.tv_sec cu gps_data.fix.time} else {printf ("nu există date GPS disponibile / n"); }}} somn (3); } / * Când ați terminat … * / gps_stream (& gps_data, WATCH_DISABLE, NULL); gps_close (& gps_data); returnează EXIT_SUCCESS; }

Pasul 12: Compilați-l

Compilați-l
Compilați-l

Compila!

gcc gps.c -lm -lgps -o gps

Exec It!

./GPS

Pasul 13: Cum se utilizează modulul GPS cu Python (Raspberry Pi)

Cum se utilizează modulul GPS cu Python (Raspberry Pi)
Cum se utilizează modulul GPS cu Python (Raspberry Pi)

Se recomandă să se execute următorul cod folosind Python 3 și să instaleze biblioteca gpsd-py3 și GPS 2D / 3D Fix:

import gpsd

# Conectați-vă la GPS local

gpsd.connect ()

# Obțineți poziția GPS

pachet = gpsd.get_current ()

# Consultați documentele inline pentru GpsResponse pentru datele disponibile

print (packet.position ())

Pasul 14: Cum se utilizează modulul GSM cu PPPd (Raspberry Pi)

Cum se utilizează modulul GSM cu PPPd (Raspberry Pi)
Cum se utilizează modulul GSM cu PPPd (Raspberry Pi)
Cum se utilizează modulul GSM cu PPPd (Raspberry Pi)
Cum se utilizează modulul GSM cu PPPd (Raspberry Pi)
Cum se utilizează modulul GSM cu PPPd (Raspberry Pi)
Cum se utilizează modulul GSM cu PPPd (Raspberry Pi)

A) Mai întâi, înlocuiți /boot/overlays/sc16is752-i2c.dtbo și asigurați-vă că I2C funcționează corect.

  • Înlocuiți sc16is752-i2c.dtbo
  • Configurarea I2C

B) Introduceți comanda i2cset -y 1 0x16 0x23 0x40 pentru a reseta modulul GPRS.

După executarea comenzii, trebuie să așteptați puțin, aproximativ 10 secunde

De asemenea, puteți utiliza următoarea metodă pentru resetare.

C) Introduceți comanda

sudo apt instalează ppp

pentru a instala instrumente ppp.

D) Copiați / etc / ppp / peers / provider în / etc / ppp / peers / gprs

E) Modificați / etc / ppp / peers / gprs

  • Linia 10: Vă rugăm să consultați furnizorul de servicii pentru utilizator (Exemplu: cmnet).
  • Linia 15: Vă rugăm să consultați furnizorul de servicii pentru apn (Exemplu: cmnet).
  • Linia 18 - Linia 24: Setarea recomandată

F) Modificați / etc / chatscripts / gprs (schimbați linia 34 la linia 35, numărul de apelare poate fi NU * 99 #)

G) Introduceți comanda sudo pppd apelează gprs pentru a apela.

H) Verificați configurația ppp de la ISP.

I) Introduceți comanda ping -I ppp0 8.8.8.8 testați rețeaua (Dacă Internetul este disponibil și tabelul de rute este corect)

J) Vă rugăm să păstrați semnalul GSM bun, altfel se vor întâmpla următoarele.

Pasul 15: Cum să-mi diagnosticulez modulul GSM (Raspberry Pi)

Cum să-mi diagnosticulez modulul GSM (Raspberry Pi)
Cum să-mi diagnosticulez modulul GSM (Raspberry Pi)
Cum să-mi diagnosticulez modulul GSM (Raspberry Pi)
Cum să-mi diagnosticulez modulul GSM (Raspberry Pi)
Cum să-mi diagnosticulez modulul GSM (Raspberry Pi)
Cum să-mi diagnosticulez modulul GSM (Raspberry Pi)
Cum să-mi diagnosticulez modulul GSM (Raspberry Pi)
Cum să-mi diagnosticulez modulul GSM (Raspberry Pi)

Se recomandă executarea următorului cod folosind Python 3 și instalarea bibliotecii smbus:

import serialimport time import smbus import operator import os

print („Se așteaptă inițializarea …”)

autobuz = smbus. SMBus (1)

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

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

dacă ser.isOpen == False:

ser.open () try: print ('-' * 60) print ("Initializarea modulului A9G GPRS.") print ("GSM connection …") time.sleep (3) i = 0 while 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) cu excepția KeyboardInterrupt: ser.close ()

Executați scriptul de testare, pe baza rezultatelor implementării, putem diagnostica modulul GSM. De exemplu, următoarea returnare, eroarea CME ERROR 53 ne spune că puterea nu este bună. Cod CME = erori legate de echipamentul GSM

Desigur, scriptul are și o funcție de resetare. Dacă puteți afișa corect CCID, resetarea este completă.

Pasul 16: Cum se utilizează Lora TX și RX cu C (Raspberry Pi)

Se recomandă executarea următorului cod folosind Python 3 și instalarea bibliotecii smbus.

Trebuie transferat între cele două noduri IOT (A). Conținutul trimis de sine nu poate fi primit de la sine. Vă rugăm să îl salvați ca un script py pentru executare.

Cum să trimiteți: După completarea datelor în registrul 0x01 - 0x10, setați bitul L_TX pentru a începe să trimiteți date.

import timp import smbus import os import sys

autobuz = smbus. SMBus (1)

încerca:

data_list = [170, 85, 165, 90] # scrie date pentru înregistrare și apoi datele vor fi trimise. pentru index în interval (1, len (data_list) + 1): bus.write_byte_data (0x16, index, data_list [index - 1]) print ("LORA trimite date către% d registru% d date"% (index, data_list [index - 1])) bus.write_byte_data (0x16, 0x23, 0x01) cu excepția KeyboardInterrupt: sys.exit ()

Cum să trimiteți primire: verificați bitul L_RXNE, dacă este setat, au sosit date noi, acest semnal trebuie să fie șters manual

import timp import smbus import os import sys

autobuz = smbus. SMBus (1)

recv_data =

încerca:

dacă bus.read_byte_data (0x16, 0x23) & 0x02: # ștergeți manual L_RXNE bus.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # citire date pentru index în interval (0x11, len (register_list) + 0x11): recv_data.append (bus.read_byte_data (0x16, register_list [index - 0x11]))

print ("Date primite:")

print (recv_data) else: print ("Nu s-au primit încă date ~") cu excepția KeyboardInterrupt: sys.exit ()

Pasul 17: Descrierea specială a lățimii de bandă I2C

Limita vitezei I2C este de 400kHz, datorită protocolului I2C, astfel încât lățimea de bandă eficientă a dispozitivului este mai mică de 320kbps, lățimea de bandă eficientă a mai multor dispozitive este mai mică de 160kbps. Limita vitezei I2C UART Bridge este de 115200bps. Când GPS și GSM funcționează în același timp, lățimea de bandă I2C este insuficientă, deoarece 115,2 kbps * 2 = 230,4 kbps, astfel încât unele date vor fi depășite. Reducerea ratei de transmisie a comunicațiilor GPS și GSM poate îmbunătăți lipsa lățimii de bandă de comunicare. lățime de bandă I2C suplimentară. De obicei, viteza datelor de rețea este lentă, astfel încât lățimea de bandă GSM nu este plină, deci nu există nicio problemă de depășire.

Pasul 18: Finalizat

Sper să vă placă și să reușiți.

o găsești aici:

Amazon

Nightlight : https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4channel 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 HUB pentru senzori : https:// www. amazon.co.uk/dp/B07TZD8B61 turn de gheață :

Recomandat: