Table des matières:

[Série Docker Pi] Comment utiliser le module IoT Node (A) sur Raspberry Pi : 18 étapes
[Série Docker Pi] Comment utiliser le module IoT Node (A) sur Raspberry Pi : 18 étapes

Vidéo: [Série Docker Pi] Comment utiliser le module IoT Node (A) sur Raspberry Pi : 18 étapes

Vidéo: [Série Docker Pi] Comment utiliser le module IoT Node (A) sur Raspberry Pi : 18 étapes
Vidéo: DOCKER-COMPOSE - 2. NOTION DE SERVICES 2024, Juillet
Anonim
[Docker Pi Series] Comment utiliser le module IoT Node (A) sur Raspberry Pi
[Docker Pi Series] Comment utiliser le module IoT Node (A) sur Raspberry Pi

Qu'est-ce que le module IoT Node (A) ?

Le nœud IoT (A) est l'un des modules de la série Docker Pi.

Nœud IOT (A) = GPS/BDS + GSM + Lora.

I2C contrôle directement Lora, envoie et reçoit des données, contrôle le module GSM/GPS/BDS via SC16IS752, la carte mère n'a besoin que du support I2C.

Prend en charge Raspberry Pi et d'autres produits similaires.

Fournitures

1x Raspberry Pi 2B/3B/3B+/4B/3A+/Zéro/Zéro W

1x produit de la série Docker Pi: module IoT Node (A)

1x carte TF classe 10 de 16 Go

1x alimentation 5V/2.5A (5V@3A pour Pi 4B)

Étape 1: Caractéristiques

Caractéristiques
Caractéristiques
Caractéristiques
Caractéristiques
Caractéristiques
Caractéristiques
  • Série Docker Pi
  • Programmable
  • Contrôle directement (sans programmation)
  • Étendre les broches GPIO
  • Prise en charge GPS/BDS
  • Assistance GSM
  • Lora Soutien
  • Peut s'empiler avec d'autres panneaux d'empilement
  • Indépendant du matériel de la carte mère (nécessite le support I2C)

Étape 2: Étape 1: Connaître la carte IoT (A)

Étape 1: Connaître la carte IoT (A)
Étape 1: Connaître la carte IoT (A)
Étape 1: Connaître la carte IoT (A)
Étape 1: Connaître la carte IoT (A)
Étape 1: Connaître la carte IoT (A)
Étape 1: Connaître la carte IoT (A)

Le nœud IoT (A) est l'un des modules de la série Docker Pi.

Nœud IOT (A) = GPS/BDS + GSM + Lora.

I2C contrôle directement Lora, envoie et reçoit des données, contrôle le module GSM/GPS/BDS via SC16IS752, la carte mère n'a besoin que de la prise en charge I2C. Prend en charge Raspberry Pi et d'autres produits similaires.

Vous pouvez donc créer un appareil de communication de milieu de gamme en utilisant deux d'entre eux.

et vous pouvez également localiser l'emplacement de votre appareil en utilisant le module GPS à bord.

Insérez une carte SIM, elle deviendra une station émettrice via un message SMS.

Étape 3: Étape 2: Comment l'assembler

Étape 2: Comment l'assembler
Étape 2: Comment l'assembler
Étape 2: Comment l'assembler
Étape 2: Comment l'assembler

Il est très facile à assembler grâce à sa conception "HAT", il vous suffit de le mettre sur votre raspberry pi et de le connecter via des broches GPIO, comme un "chapeau" sur raspberry pi, de sorte que vous n'ayez pas à ajouter la masse câble.

Étape 4: Étape 3: Branchez l'antenne

Étape 3: Branchez l'antenne
Étape 3: Branchez l'antenne
Étape 3: Branchez l'antenne
Étape 3: Branchez l'antenne
Étape 3: Branchez l'antenne
Étape 3: Branchez l'antenne

Il y a 3 pièces d'antenne pour ce module IoT (A), l'une d'entre elles est pour le module loar, c'est une antenne de type SMA, et l'une d'elles est bonne pour votre GPS, c'est une antenne carrée qui a un port IPX. et le dernier est pour le module SIM (A9G), c'est une petite antenne qui a un port IPX. connectez l'antenne et montez le chapeau sur votre raspberry pi.

Comment assembler Montez la carte Iot Node (A) sur Raspberry Pi

Branchez GPS Antana et Lora Antana au port IPX.

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

Visse l'antana GPRS sur le port SMA.

Étape 5: Étape 4: Environnement du système d'exploitation et configurations logicielles

Dans cette étape, vous devez faire ces choses:

1. Téléchargez le dernier fichier image sur: www.raspberrypi.org/downloads

2. Décompressez-le.

3. Flashez votre carte TF avec la dernière image via l'outil de gravure

4. Modifiez le fichier /boot/config.txt et ajoutez ce paragraphe.

dtoverlay=sc16is752-i2c

5. Remplace le fichier /boot/overlay/sc16is752-i2c.dtbo par ce fichier:

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

PS: n'oubliez pas de le décompresser et de le mettre dans votre dossier /boot/overlay/ et de remplacer l'ancien.

6. Redémarrez votre Raspberry Pi.

Étape 6: Étape 5: Configurer I2C (Raspberry Pi)

Étape 5: Configuration d'I2C (Raspberry Pi)
Étape 5: Configuration d'I2C (Raspberry Pi)
Étape 5: Configuration d'I2C (Raspberry Pi)
Étape 5: Configuration d'I2C (Raspberry Pi)
Étape 5: Configuration d'I2C (Raspberry Pi)
Étape 5: Configuration d'I2C (Raspberry Pi)
Étape 5: Configuration d'I2C (Raspberry Pi)
Étape 5: Configuration d'I2C (Raspberry Pi)

Exécutez sudo raspi-config et suivez les invites pour installer le support i2c pour le noyau ARM et le noyau Linux Accédez aux options d'interfaçage

Étape 7: Étape 6: Connaître les informations du registre

Rubrique GPRS

Faible consommation d'énergie, courant de veille <1mA2.

Prend en charge les quatre bandes de fréquences GSM/GPRS, dont 850, 900, 1800, 1900MHZ

GPRS classe 10

Prend en charge le service de données GPRS, débit de données maximal, téléchargement 85,6 Kbps, téléchargement 42,8 Kbps

Prend en charge les commandes standard GSM07.07, 07.05 AT et accède au port série via la conversion d'interface I2C

Les commandes AT prennent en charge les ports de commande AT et TCP/IP standard

Section GPSPrise en charge du positionnement conjoint BDS/GPS

Prise en charge A-GPS, A-BDS

Prise en charge de la carte SIM standard

Section LORA Distance de transmission: 500 mètres (paramètres RF: 0x50 @ China City)

Prise en charge des méthodes de modulation FSK, GFSK, MSK, GMSK, LoRaTM et OOK

Sensibilité ultra-élevée du récepteur aussi faible que -141 dBm

Prise en charge de la détection de préambule

Moteur de paquets avec CRC, jusqu'à 256 octets

Indicateur d'émetteur-récepteur LORA

TX/RX facile par Docker Pi

Étape 8:

Module A9G

Le module A9G offre deux ports série.

Utilisez le pont I2C UART pour la communication.

Nom du module de port série

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

S'inscrire Carte

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

Étape 9: Instructions:

Instructions
Instructions

L_SET (écriture seule)

  • Écrivez 1 pour définir les paramètres de 0x22 au module LORA.
  • Ecrire 0 sans effet

G_RESET (écriture seule)

  • Ecrire 1 pour réinitialiser le module A9G
  • Ecrire 0 sans effet

L_RXNE (lecture et écriture)

  • Ecrire 1 cause d'erreur
  • Écrivez 0 pour effacer
  • Lire 1 signifie que des données ont été reçues, veuillez obtenir les données du registre 0x11 - 0x20.
  • Lire 0 signifie qu'aucune donnée n'est disponible pour le moment.

L_SET (écriture seule)

  • Écrivez 1 pour envoyer des données, veuillez remplir les données dans le registre 0x01 - 0x10 avant l'envoi.
  • Ecrire 0 sans effet

Étape 10: Comment utiliser le module GPS avec Gpsd (Raspberry Pi)

Comment utiliser le module GPS avec Gpsd (Raspberry Pi)
Comment utiliser le module GPS avec Gpsd (Raspberry Pi)
Comment utiliser le module GPS avec Gpsd (Raspberry Pi)
Comment utiliser le module GPS avec Gpsd (Raspberry Pi)
Comment utiliser le module GPS avec Gpsd (Raspberry Pi)
Comment utiliser le module GPS avec Gpsd (Raspberry Pi)

Comment utiliser le module GPS avec gpsd (Raspberry Pi)

Tout d'abord, remplacez le fichier /boot/overlays/sc16is752-i2c.dtbo et assurez-vous que I2C fonctionne correctement.

  • Remplacer sc16is752-i2c.dtbo
  • Configuration d'I2C
  • Installer les outils gpsd.

Ouvrez un terminal et tapez cette commande:

sudo apt installer gpsd gpsd-clients

Modifiez le fichier /etc/default/gpsd et ajoutez les paramètres suivants:

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

Entrez la commande i2cset -y 1 0x16 0x23 0x40 pour réinitialiser le module GPRS.

Script Python pour Open GPS:

import serialimport os import time # Redémarrez le service gpsd. os.system("sudo systemctl restart gpsd.socket") # Ouvrir le port série ser = serial. Serial('/dev/ttySC0', 115200) i = 0 if ser.isOpen == False: ser.open() try: print("Activer le GPS…") tant que True: ser.write(str.encode("AT+GPS=1\r")) size = ser.inWaiting() if size != 0: ticks = time.time() réponse = 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("En attente d'activation du GPS, si le temps est trop long, veuillez tester à l'extérieur:" + str(i)) ser.flushInput() time.sleep(1) sauf KeyboardInterrupt: ser.flushInput() ser.close()

Enregistrez-le et exécutez-le:

python3 GPS.py

Étape 11: Comment utiliser le module GPS avec C (Raspberry Pi)

Installer les outils gpsd

sudo apt-get installer libgps-dev

Créez le code source et nommez-le "gps.c"

#include #include #include

#comprendre

#comprendre

int main()

{ int rc; struct timeval tv; struct gps_data_t gps_data; if ((rc = gps_open("localhost", "2947", &gps_data)) == -1) { printf("code: %d, raison: %s\n", rc, gps_errstr(rc)); renvoie EXIT_FAILURE; } gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

tandis que (1)

{ /* attendre 2 secondes pour recevoir les données */ if (gps_waiting(&gps_data, 2000000)) { /* lire les données */ if ((rc = gps_read(&gps_data)) == -1) { printf("une erreur s'est produite lors de la lecture données gps. code: %d, raison: %s\n", rc, gps_errstr(rc)); } else { /* Affiche les données du récepteur 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 n'est pas réellement l'horodatage ! */

printf("latitude: %f, longitude: %f, vitesse: %f, horodatage: %lf\n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// EDIT: Remplacé tv.tv_sec par gps_data.fix.time } else { printf("aucune donnée GPS disponible\n"); } } } sommeil(3); } /* Lorsque vous avez terminé… */ gps_stream(&gps_data, WATCH_DISABLE, NULL); gps_close(&gps_data); renvoie EXIT_SUCCESS; }

Étape 12: Compilez-le

Compilez-le
Compilez-le

Compiler!

gcc gps.c -lm -lgps -o gps

Exécutez-le !

./GPS

Étape 13: Comment utiliser le module GPS avec Python (Raspberry Pi)

Comment utiliser le module GPS avec Python (Raspberry Pi)
Comment utiliser le module GPS avec Python (Raspberry Pi)

Il est recommandé d'exécuter le code suivant à l'aide de Python 3 et d'installer la bibliothèque gpsd-py3 et GPS 2D/3D Fix:

importer gpsd

# Se connecter au gpsd local

gpsd.connect()

# Obtenir la position GPS

paquet = gpsd.get_current()

# Voir les documents en ligne pour GpsResponse pour les données disponibles

print(paquet.position())

Étape 14: Comment utiliser le module GSM avec PPPd (Raspberry Pi)

Comment utiliser le module GSM avec PPPd (Raspberry Pi)
Comment utiliser le module GSM avec PPPd (Raspberry Pi)
Comment utiliser le module GSM avec PPPd (Raspberry Pi)
Comment utiliser le module GSM avec PPPd (Raspberry Pi)
Comment utiliser le module GSM avec PPPd (Raspberry Pi)
Comment utiliser le module GSM avec PPPd (Raspberry Pi)

A) Tout d'abord, remplacez le fichier /boot/overlays/sc16is752-i2c.dtbo et assurez-vous que I2C fonctionne correctement.

  • Remplacer sc16is752-i2c.dtbo
  • Configuration d'I2C

B)Entrez la commande i2cset -y 1 0x16 0x23 0x40 pour réinitialiser le module GPRS.

Après avoir exécuté la commande, vous devez attendre un peu, environ 10 secondes

Vous pouvez également utiliser la méthode suivante pour réinitialiser.

C) Entrer la commande

sudo apt installer ppp

pour installer des outils ppp.

D) Copiez /etc/ppp/peers/provider dans /etc/ppp/peers/gprs

E) Modifier /etc/ppp/peers/gprs

  • Ligne 10: Veuillez consulter votre fournisseur de services pour l'utilisateur (Exemple: cmnet).
  • Ligne 15: Veuillez consulter votre fournisseur de services pour l'apn (Exemple: cmnet).
  • Ligne 18 - Ligne 24: Paramètre recommandé

F)Modifiez /etc/chatscripts/gprs (changez la ligne 34 en ligne 35, le numéro d'appel peut être PAS *99#)

G) Entrez la commande sudo pppd call gprs pour vous connecter.

H) Vérifiez votre configuration PPP auprès de votre FAI.

I)Entrez la commande ping -I ppp0 8.8.8.8 testez votre réseau (si Internet est disponible et la table de routage est correcte)

J) Veuillez garder le signal GSM bon, sinon ce qui suit se produira.

Étape 15: Comment diagnostiquer mon module GSM (Raspberry Pi)

Comment diagnostiquer mon module GSM (Raspberry Pi)
Comment diagnostiquer mon module GSM (Raspberry Pi)
Comment diagnostiquer mon module GSM (Raspberry Pi)
Comment diagnostiquer mon module GSM (Raspberry Pi)
Comment diagnostiquer mon module GSM (Raspberry Pi)
Comment diagnostiquer mon module GSM (Raspberry Pi)
Comment diagnostiquer mon module GSM (Raspberry Pi)
Comment diagnostiquer mon module GSM (Raspberry Pi)

Il est recommandé d'exécuter le code suivant à l'aide de Python 3 et d'installer la bibliothèque smbus:

import serialimport time import smbus import operator import os

print("En attente d'initialisation…")

bus = smbus. SMbus(1)

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

ser = série. Série('/dev/ttySC0', 115200)

si ser.isOpen == False:

ser.open() essayez: print('-'*60) print("Initialisation du module GPRS A9G.") print("Connexion GSM…") time.sleep(3) i = 0 tant que 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) sauf KeyboardInterrupt: ser.close()

Exécutez le script de test, en fonction des résultats de l'implémentation, nous pouvons diagnostiquer le module GSM. Par exemple, le retour suivant, l'erreur CME ERROR 53 nous indique que la puissance n'est pas bonne. Code CME = Erreurs liées à l'équipement GSM

Bien entendu, le script a également une fonction de réinitialisation. Si vous pouvez afficher correctement le CCID, la réinitialisation est terminée.

Étape 16: Comment utiliser Lora TX & RX avec C (Raspberry Pi)

Il est recommandé d'exécuter le code suivant à l'aide de Python 3 et d'installer la bibliothèque smbus.

Il doit être transféré entre les deux nœuds IOT (A). Le contenu envoyé par lui-même ne peut pas être reçu par lui-même. Veuillez l'enregistrer en tant que script py pour l'exécution.

Comment envoyer: après avoir rempli les données dans le registre 0x01 - 0x10, définissez le bit L_TX pour commencer à envoyer des données.

import timeimport smbus import os import sys

bus = smbus. SMbus(1)

essayer:

data_list = [170, 85, 165, 90] # écrire les données dans le registre, puis les données seront envoyées. pour l'index dans la plage (1, len(data_list) + 1): bus.write_byte_data (0x16, index, data_list[index - 1]) print("LORA envoie les données au %d registre %d données" %(index, data_list[index - 1])) bus.write_byte_data(0x16, 0x23, 0x01) sauf KeyboardInterrupt: sys.exit()

Comment envoyer la réception: vérifiez le bit L_RXNE. Si défini, de nouvelles données sont arrivées, cet indicateur doit être supprimé manuellement

import timeimport smbus import os import sys

bus = smbus. SMbus(1)

données_recv =

essayer:

if bus.read_byte_data (0x16, 0x23) & 0x02: # effacer manuellement L_RXNE bus.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # lire les données pour l'index dans la plage (0x11, len(register_list) + 0x11): recv_data.append(bus.read_byte_data(0x16, register_list[index - 0x11]))

print("Données reçues:")

print(recv_data) else: print("Aucune donnée reçue pour le moment~") sauf KeyboardInterrupt: sys.exit()

Étape 17: Description spéciale de la bande passante I2C

La limite de la vitesse I2C est de 400 kHz, en raison du protocole I2C, de sorte que la bande passante effective d'un seul appareil est inférieure à 320 kbps, la bande passante effective de plusieurs appareils est inférieure à 160 kbps. La limite de la vitesse du pont I2C UART est de 115 200 bps. Lorsque GPS et GSM fonctionnent en même temps, la bande passante I2C est insuffisante, car 115,2 kbps * 2 = 230,4 kbps, donc certaines données déborderont. La réduction du débit en bauds des communications GPS et GSM peut améliorer le manque de bande passante de communication. L'empilement d'autres modules DockerPi peut prendre du temps bande passante I2C supplémentaire. En général, la vitesse des données du réseau est lente, donc la bande passante GSM n'est pas pleine, il n'y a donc pas de problème de débordement.

Étape 18: Terminé

J'espère que vous l'aimerez et que vous le ferez.

Vous pouvez le trouver ici:

Amazone

Veilleuse:https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S Carte relais 4 canaux: https://www.amazon.co.uk/dp/B07MV1TJGR?ref=myi_title_dp Carte d'alimentation :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 tour de glace:

Conseillé: