Inhoudsopgave:
- Benodigdheden
- Stap 1: Kenmerken
- Stap 2: Stap 1: Weet over het IoT (A)-bord
- Stap 3: Stap 2: Hoe het te monteren?
- Stap 4: Stap 3: Sluit de antenne aan
- Stap 5: Stap 4: OS-omgeving en softwareconfiguraties
- Stap 6: Stap 5: I2C configureren (Raspberry Pi)
- Stap 7: Step6: Weet over de registerinformatie
- Stap 8:
- Stap 9: Instructies:
- Stap 10: Hoe GPS-module te gebruiken met Gpsd (Raspberry Pi)
- Stap 11: Hoe GPS-module te gebruiken met C (Raspberry Pi)
- Stap 12: compileer het
- Stap 13: GPS-module gebruiken met Python (Raspberry Pi)
- Stap 14: Hoe de GSM-module te gebruiken met PPPd (Raspberry Pi)
- Stap 15: Hoe mijn GSM-module te diagnosticeren (Raspberry Pi)
- Stap 16: Lora TX & RX gebruiken met C (Raspberry Pi)
- Stap 17: Speciale beschrijving van I2C-bandbreedte
- Stap 18: Klaar
Video: [Docker Pi-serie]Hoe IoT Node (A)-module op Raspberry Pi te gebruiken - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Wat is de IoT Node (A)-module?
IoT Node (A) is een module uit de Docker Pi-serie.
IOT-knooppunt (A) = GPS/BDS + GSM + Lora.
I2C bestuurt Lora rechtstreeks, verzendt en ontvangt gegevens, bestuurt de GSM/GPS/BDS-module via SC16IS752, het moederbord heeft alleen I2C-ondersteuning nodig.
Ondersteuning Raspberry Pi en andere soortgelijke producten.
Benodigdheden
1x Raspberry Pi 2B/3B/3B+/4B/3A+/Zero /Zero W
1x product uit de Docker Pi-serie: IoT Node(A)-module
1x 16GB klasse 10 TF-kaart
1x 5V/2.5A voeding (5V@3A voor Pi 4B)
Stap 1: Kenmerken
- Docker Pi-serie
- Programmeerbaar
- Direct aansturen (zonder programmeren)
- Verleng de GPIO-pinnen
- GPS/BDS-ondersteuning
- GSM-ondersteuning:
- Lora-ondersteuning
- Kan stapelen met ander stapelbord
- Onafhankelijk van de hardware van het moederbord (vereist I2C-ondersteuning)
Stap 2: Stap 1: Weet over het IoT (A)-bord
IoT Node (A) is een module uit de Docker Pi-serie.
IOT-knooppunt (A) = GPS/BDS + GSM + Lora.
I2C bestuurt Lora rechtstreeks, verzendt en ontvangt gegevens, bestuurt de GSM/GPS/BDS-module via SC16IS752, het moederbord heeft alleen I2C-ondersteuning nodig. Ondersteuning Raspberry Pi en andere soortgelijke producten.
U kunt dus een communicatieapparaat voor het middenbereik maken door er twee te gebruiken.
en u kunt ook de locatie van uw apparaat lokaliseren met behulp van de GPS-module aan boord.
Plaats een simkaart, het wordt een zenderstation via sms-bericht.
Stap 3: Stap 2: Hoe het te monteren?
Het is heel eenvoudig om het te monteren dankzij het "HAT" -ontwerp, je plaatst het gewoon op je Raspberry Pi en verbindt het via GPIO-pinnen, het is als een "hoed" op Raspberry Pi, zodat je geen massa hoeft toe te voegen draad.
Stap 4: Stap 3: Sluit de antenne aan
Er zijn 3 stuks antenne voor deze IoT (A) module, een daarvan is voor de loar-module, het is een SMA-type antenne, en een daarvan is goed voor je GPS, het is een vierkante doosantenne met een IPX-poort. en de laatste is voor de SIM-module (A9G), het is een kleine antenne met een IPX-poort. sluit de antenne aan en monteer de hoed op je Raspberry Pi.
Hoe te monterenMonteer het Iot Node(A)-bord op Raspberry Pi
Sluit GPS antana en Lora antana aan op de IPX-poort.
- E1 (GPS-ANTANA-IPX)
- E3 (LoRa-ANTANA-IPX)
Schroeft de GPRS antana op de SMA-poort.
Stap 5: Stap 4: OS-omgeving en softwareconfiguraties
In deze stap moet je de volgende dingen doen:
1. Download het nieuwste afbeeldingsbestand van: www.raspberrypi.org/downloads
2. Pak het uit.
3. Flash uw TF-kaart met de nieuwste afbeelding via etstool
4. Wijzig het bestand /boot/config.txt en voeg deze paragraaf toe.
dtoverlay=sc16is752-i2c
5. Vervangt /boot/overlay/sc16is752-i2c.dtbo bestand door dit bestand:
wiki.52pi.com/index.php/File:Sc16is752-i2c…
PS: onthoud dat u het uitpakt en in uw /boot/overlay/-map plaatst en de oude vervangt.
6. Start je Raspberry Pi opnieuw op.
Stap 6: Stap 5: I2C configureren (Raspberry Pi)
Voer sudo raspi-config uit en volg de aanwijzingen om i2c-ondersteuning voor de ARM-kern en linux-kernel te installeren Ga naar Interfacing-opties
Stap 7: Step6: Weet over de registerinformatie
GPRS-sectie
Laag stroomverbruik, standby-slaapstroom <1mA2.
Ondersteuning van GSM/GPRS vier frequentiebanden, waaronder 850, 900, 1800, 1900MHZ
GPRS-klasse 10
Ondersteuning GPRS-gegevensservice, maximale gegevenssnelheid, download 85,6 Kbps, upload 42,8 Kbps
Ondersteuning van standaard GSM07.07, 07.05 AT-opdrachten en toegang tot de seriële poort via I2C-interfaceconversie;
AT-opdrachten ondersteunen standaard AT- en TCP/IP-opdrachtpoorten
GPS-sectieOndersteuning van BDS/GPS gezamenlijke positionering
Ondersteuning A-GPS, A-BDS
Ondersteuning standaard simkaart:
LORA-sectie Transmissieafstand: 500 meter (RF-parameters: 0x50 @ China City)
Ondersteuning van FSK, GFSK, MSK, GMSK, LoRaTM en OOK modulatiemethoden
Ultrahoge gevoeligheid van de ontvanger tot maar liefst -141 dBm
Ondersteuning preambule detectie:
Pakketengine met CRC, tot 256 bytes
LORA-zendontvangerindicator
Gemakkelijke TX/RX door Docker Pi
Stap 8:
A9G-module
A9G-module biedt twee seriële poorten.
Gebruik I2C UART bridge voor communicatie.
Naam seriële poortmodule
- /dev/ttySC0 GSM
- /dev/ttySC1 GPS/BDS
Registreer kaart
- Register Adres Functie Waarde
- 0x01 LORA_TX1 Lora TX Buffer 1 - Gebruikersgegevens
- 0x02 LORA_TX2 Lora TX Buffer 2 - Gebruikersgegevens
- 0x03 LORA_TX3 Lora TX Buffer 3 - Gebruikersgegevens
- 0x04 LORA_TX4 Lora TX Buffer 4 - Gebruikersgegevens
- 0x05 LORA_TX5 Lora TX Buffer 5 - Gebruikersgegevens
- 0x06 LORA_TX6 Lora TX Buffer 6 - Gebruikersgegevens
- 0x07 LORA_TX7 Lora TX Buffer 7 - Gebruikersgegevens
- 0x08 LORA_TX8 Lora TX Buffer 8 - Gebruikersgegevens
- 0x09 LORA_TX9 Lora TX Buffer 9 - Gebruikersgegevens
- 0x0a LORA_TX10 Lora TX Buffer 10 - Gebruikersgegevens
- 0x0b LORA_TX11 Lora TX Buffer 11 - Gebruikersgegevens
- 0x0c LORA_TX12 Lora TX Buffer 12 - Gebruikersgegevens
- 0x0d LORA_TX13 Lora TX Buffer 13 - Gebruikersgegevens
- 0x0e LORA_TX14 Lora TX Buffer 14 - Gebruikersgegevens
- 0x0f LORA_TX15 Lora TX Buffer 15 - Gebruikersgegevens
- 0x10 LORA_TX16 Lora TX Buffer 16 - Gebruikersgegevens
- 0x11 LORA_RX1 Lora RX Buffer 1 - Gebruikersgegevens
- 0x12 LORA_RX2 Lora RX Buffer 2 - Gebruikersgegevens
- 0x13 LORA_RX3 Lora RX Buffer 3 - Gebruikersgegevens
- 0x14 LORA_RX4 Lora RX Buffer 4 - Gebruikersgegevens
- 0x15 LORA_RX5 Lora RX Buffer 5 - Gebruikersgegevens
- 0x16 LORA_RX6 Lora RX Buffer 6 - Gebruikersgegevens
- 0x17 LORA_RX7 Lora RX Buffer 7 - Gebruikersgegevens
- 0x18 LORA_RX8 Lora RX Buffer 8 - Gebruikersgegevens
- 0x19 LORA_RX9 Lora RX Buffer 9 - Gebruikersgegevens
- 0x1a LORA_RX10 Lora RX Buffer 10 - Gebruikersgegevens
- 0x1b LORA_RX11 Lora RX Buffer 11 - Gebruikersgegevens
- 0x1c LORA_RX12 Lora RX Buffer 12 - Gebruikersgegevens
- 0x1d LORA_RX13 Lora RX Buffer 13 - Gebruikersgegevens
- 0x1e LORA_RX14 Lora RX Buffer 14 - Gebruikersgegevens
- 0x1f LORA_RX15 Lora RX Buffer 15 - Gebruikersgegevens
- 0x20 LORA_RX16 Lora RX Buffer 16 - Gebruikersgegevens
- 0x01 - 0x10 Alleen schrijven.
- 0x11 - 0x20 Alleen lezen.
Stap 9: Instructies:
L_SET (alleen schrijven)
- Schrijf 1 om parameters in te stellen van 0x22 tot LORA Module.
- Schrijf 0 geen effect
G_RESET (alleen schrijven)
- Schrijf 1 om de A9G-module te resetten
- Schrijf 0 geen effect
L_RXNE(Lezen & Schrijven)
- Schrijf 1 oorzaak fout
- Schrijf 0 om te wissen
- Lezen 1 betekent dat de gegevens zijn ontvangen. Haal de gegevens op uit het register 0x11 - 0x20.
- Lezen 0 betekent dat er nu geen gegevens beschikbaar zijn.
L_SET (alleen schrijven)
- Schrijf 1 om gegevens te verzenden, vul de gegevens in register 0x01 - 0x10 in voordat u verzendt.
- Schrijf 0 geen effect
Stap 10: Hoe GPS-module te gebruiken met Gpsd (Raspberry Pi)
GPS-module gebruiken met gpsd (Raspberry Pi)
Vervang eerst de /boot/overlays/sc16is752-i2c.dtbo en zorg ervoor dat I2C goed werkt.
- Vervang sc16is752-i2c.dtbo
- I2C configureren
- Installeer gpsd-tools.
Open een terminal en typ deze opdracht:
sudo apt gpsd gpsd-clients installeren
Wijzig het bestand /etc/default/gpsd en voeg de volgende parameters toe:
- DEVICES="/dev/ttySC1"
- GPSD_OPTIONS="-F /var/run/gpsd.sock"
Voer het commando i2cset -y 1 0x16 0x23 0x40 in om de GPRS-module te resetten.
Python-script voor open GPS:
import serialimport os import time # Start gpsd-service opnieuw. os.system("sudo systemctl restart gpsd.socket") # Open seriële poort ser = serial. Serial('/dev/ttySC0', 115200) i = 0 if ser.isOpen == False: ser.open() probeer: print("Turn on GPS…") while 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("Wachten op GPS inschakelen, als de tijd te lang is, test buiten:" + str(i)) ser.flushInput() time.sleep(1) behalve KeyboardInterrupt: ser.flushInput() ser.close()
Sla het op en voer het uit:
python3 GPS.py
Stap 11: Hoe GPS-module te gebruiken met C (Raspberry Pi)
Installeer gpsd-tools
sudo apt-get install libgps-dev
Maak de broncode en noem deze "gps.c"
#include #include #include
#erbij betrekken
#erbij betrekken
int hoofd()
{ int rc; structuur timeval tv; struct gps_data_t gps_data; if ((rc = gps_open("localhost", "2947", &gps_data)) == -1) { printf("code: %d, reden: %s\n", rc, gps_errstr(rc)); retourneer EXIT_FAILURE; } gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL);
terwijl (1)
{ /* wacht 2 seconden om data te ontvangen */ if (gps_waiting(&gps_data, 2000000)) { /* read data */ if ((rc = gps_read(&gps_data)) == -1) { printf("er is een fout opgetreden bij het lezen gps data.code: %d, reden: %s\n", rc, gps_errstr(rc)); } else { /* Gegevens van de GPS-ontvanger weergeven. */ 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.lengtegraad)) { /* gettimeofday(&tv, NULL); EDIT: tv.tv_sec is niet echt de tijdstempel! */
printf("latitude: %f, longitude: %f, speed: %f, timestamp: %lf\n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);
//EDIT: tv.tv_sec vervangen door gps_data.fix.time } else { printf("geen GPS-gegevens beschikbaar\n"); } } } slaap(3); } /* Als je klaar bent… */ gps_stream(&gps_data, WATCH_DISABLE, NULL); gps_close(&gps_data); retourneer EXIT_SUCCESS; }
Stap 12: compileer het
Compileren!
gcc gps.c -lm -lgps -o gps
Voer het uit!
./GPS
Stap 13: GPS-module gebruiken met Python (Raspberry Pi)
Het wordt aanbevolen om de volgende code uit te voeren met Python 3 en de gpsd-py3-bibliotheek en GPS 2D/3D Fix te installeren:
import gpsd
# Maak verbinding met de lokale gpsd
gpsd.connect()
# Krijg gps-positie
pakket = gpsd.get_current()
# Zie de inline docs voor GpsResponse voor de beschikbare data
print(pakket.positie())
Stap 14: Hoe de GSM-module te gebruiken met PPPd (Raspberry Pi)
A) Vervang eerst de /boot/overlays/sc16is752-i2c.dtbo en zorg ervoor dat I2C goed werkt.
- Vervang sc16is752-i2c.dtbo
- I2C configureren
B) Voer de opdracht i2cset -y 1 0x16 0x23 0x40 in om de GPRS-module te resetten.
Na het uitvoeren van de opdracht, moet je even wachten, ongeveer 10 seconden
U kunt ook de volgende methode gebruiken om te resetten.
C) Voer opdracht in
sudo apt install ppp
om ppp-tools te installeren.
D)Kopieer /etc/ppp/peers/provider naar /etc/ppp/peers/gprs
E)Wijzig /etc/ppp/peers/gprs
- Regel 10: Raadpleeg uw serviceprovider voor de gebruiker (voorbeeld: cmnet).
- Regel 15: Raadpleeg uw serviceprovider voor de apn (voorbeeld: cmnet).
- Lijn 18 - Lijn 24:Aanbevolen instelling
F) Wijzig /etc/chatscripts/gprs (verander regel 34 in regel 35, kiesnummer mag NIET *99# zijn)
G) Voer het commando sudo pppd call gprs in om in te bellen.
H)Controleer uw ppp-configuratie van uw ISP.
I)Voer opdracht ping -I ppp0 8.8.8.8 test uw netwerk (indien internet beschikbaar en routetabel correct is)
J) Houd het GSM-signaal goed, anders gebeurt het volgende.
Stap 15: Hoe mijn GSM-module te diagnosticeren (Raspberry Pi)
Het wordt aanbevolen om de volgende code uit te voeren met Python 3 en de smbus-bibliotheek te installeren:
import seriële import tijd import smbus import operator import os
print("Wachten op initialisatie…")
bus = smbus. SMBus(1)
bus.write_byte_data(0x16, 0x23, 0x40)
ser = serieel. Serial('/dev/ttySC0', 115200)
if ser.isOpen == Onwaar:
ser.open() try: print('-'*60) print("Initialiseren van A9G GPRS-module.") print("GSM-verbinding…") 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) behalve KeyboardInterrupt: ser.close()
Exec het testscript, op basis van de resultaten van de implementatie, kunnen we de GSM-module diagnosticeren. Bijvoorbeeld, de volgende terugkeer, CME ERROR 53-fout, vertel ons Vermogen niet goed. CME-code = GSM-apparatuur Gerelateerde fouten
Natuurlijk heeft het script ook een resetfunctie. Als u de CCID correct kunt weergeven, is de reset voltooid.
Stap 16: Lora TX & RX gebruiken met C (Raspberry Pi)
Het wordt aanbevolen om de volgende code uit te voeren met Python 3 en de smbus-bibliotheek te installeren.
Het moet worden overgedragen tussen de twee IOT Node (A). De inhoud die op zichzelf is verzonden, kan niet op zichzelf worden ontvangen. Sla het op als een py-script voor uitvoering.
Hoe te verzenden: Nadat u de gegevens in register 0x01 - 0x10 hebt ingevuld, stelt u de L_TX-bit in om te beginnen met het verzenden van gegevens.
import timeimport smbus import os import sys
bus = smbus. SMBus(1)
proberen:
data_list = [170, 85, 165, 90] # schrijf gegevens om te registreren en dan worden de gegevens verzonden. voor index in range(1, len(data_list) + 1): bus.write_byte_data(0x16, index, data_list[index - 1]) print("LORA verzend data naar %d register %d data" %(index, data_list[index - 1])) bus.write_byte_data(0x16, 0x23, 0x01) behalve KeyboardInterrupt: sys.exit()
Hoe te verzenden Ontvangen: Controleer L_RXNE bit, indien ingesteld, nieuwe gegevens zijn aangekomen, deze vlag moet handmatig worden gewist
import timeimport smbus import os import sys
bus = smbus. SMBus(1)
recv_data =
proberen:
if bus.read_byte_data(0x16, 0x23) & 0x02: # handmatig wissen L_RXNE bus.write_byte_data(0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # lees data uit voor index binnen bereik (0x11, len(register_list) + 0x11): recv_data.append(bus.read_byte_data(0x16, register_list[index - 0x11]))
print("Ontvangen gegevens:")
print(recv_data) else: print("Nog geen gegevens ontvangen~") behalve KeyboardInterrupt: sys.exit()
Stap 17: Speciale beschrijving van I2C-bandbreedte
De limiet van de I2C-snelheid is 400 kHz, vanwege het I2C-protocol, dus de effectieve bandbreedte voor één apparaat is lager dan 320 kbps, de effectieve bandbreedte voor meerdere apparaten is lager dan 160 kbps. De limiet van de I2C UART Bridge-snelheid is 115200bps. Wanneer GPS en GSM tegelijkertijd werken, is de I2C-bandbreedte onvoldoende, omdat 115,2 kbps * 2 = 230,4 kbps, dus sommige gegevens zullen overlopen. Het verminderen van de baudrate van GPS- en GSM-communicatie kan het tekort aan communicatiebandbreedte verbeteren. Het stapelen van andere DockerPi-modules kan veel tijd in beslag nemen extra I2C-bandbreedte. Meestal is de netwerkgegevenssnelheid traag, dus de GSM-bandbreedte is niet vol, dus er is geen overloopprobleem.
Stap 18: Klaar
Hoop dat jullie het leuk vinden en maken.
je kunt het hier vinden:
Amazone
Nachtlampje: https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S 4-kanaals relaisbord: 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 ijstoren:
Aanbevolen:
Hoe de GPIO-pinnen en Avrdude van een Raspberry Pi te gebruiken om DIMP 2 of DA PIMP te Bit-bang-programma te gebruiken 2: 9 stappen
Hoe de GPIO-pinnen van een Raspberry Pi en Avrdude te gebruiken voor Bit-bang-programma DIMP 2 of DA PIMP 2: Dit zijn stapsgewijze instructies voor het gebruik van een Raspberry Pi en het gratis open-source commando avrdude to bit-bang -programmeer een DIMP 2 of DA PIMP 2. Ik neem aan dat je bekend bent met je Raspberry Pi en de LINUX-opdrachtregel. Je hoeft niet
LED-knipper met Raspberry Pi - Hoe GPIO-pinnen op Raspberry Pi te gebruiken: 4 stappen
LED-knipper met Raspberry Pi | Hoe GPIO-pinnen op Raspberry Pi te gebruiken: Hallo allemaal, in deze instructables zullen we leren hoe we GPIO's van Raspberry Pi kunnen gebruiken. Als je ooit Arduino hebt gebruikt, weet je waarschijnlijk dat we een LED-schakelaar enz. op de pinnen kunnen aansluiten en het zo kunnen laten werken. laat de LED knipperen of krijg input van de schakelaar zodat
Integratieplatform Ubidots met LOGO! Siemens Node-RED gebruiken: 13 stappen
Integratieplatform Ubidots met LOGO! Siemens Node-RED gebruiken: apSinds enkele weken heb ik wat tests gedaan met een LOGO! (logische module) van Siemens, ik heb een paar maanden gezien dat ze het gebruiken in industriële basistoepassingen, hoewel ik het persoonlijk niet 100% een PLC beschouw, het is gemakkelijk te integreren in mon
ESP8266 NODEMCU BLYNK IOT-zelfstudie - Esp8266 IOT Blunk en Arduino IDE gebruiken - Led's bedienen via internet: 6 stappen
ESP8266 NODEMCU BLYNK IOT-zelfstudie | Esp8266 IOT Blunk en Arduino IDE gebruiken | LED's bedienen via internet: Hallo jongens, in deze instructables zullen we leren hoe we IOT kunnen gebruiken met onze ESP8266 of Nodemcu. We zullen daarvoor de blynk-app gebruiken. Dus we zullen onze esp8266/nodemcu gebruiken om de LED's via internet te bedienen. Dus de Blynk-app wordt verbonden met onze esp8266 of Nodemcu
Mac Terminal gebruiken en toetsfuncties gebruiken: 4 stappen
Mac Terminal gebruiken en toetsfuncties gebruiken: We laten u zien hoe u de MAC Terminal opent. We zullen u ook enkele functies binnen de Terminal laten zien, zoals ifconfig, mappen wijzigen, toegang tot bestanden en arp. Met Ifconfig kunt u uw IP-adres en uw MAC-advertentie controleren