Tabla de contenido:

[Serie Docker Pi] Cómo utilizar el módulo de nodo IoT (A) en Raspberry Pi: 18 pasos
[Serie Docker Pi] Cómo utilizar el módulo de nodo IoT (A) en Raspberry Pi: 18 pasos

Video: [Serie Docker Pi] Cómo utilizar el módulo de nodo IoT (A) en Raspberry Pi: 18 pasos

Video: [Serie Docker Pi] Cómo utilizar el módulo de nodo IoT (A) en Raspberry Pi: 18 pasos
Video: Docker Tutorial for Beginners | Docker Container | What is Docker? | Learn Docker | Edureka 2024, Mes de julio
Anonim
[Serie Docker Pi] Cómo utilizar el módulo IoT Node (A) en Raspberry Pi
[Serie Docker Pi] Cómo utilizar el módulo IoT Node (A) en Raspberry Pi

¿Qué es el módulo IoT Node (A)?

El nodo IoT (A) es uno de los módulos de la serie Docker Pi.

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

I2C controla directamente Lora, envía y recibe datos, controla el módulo GSM / GPS / BDS a través de SC16IS752, la placa base solo necesita soporte I2C.

Admite Raspberry Pi y otros productos similares.

Suministros

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

1x producto de la serie Docker Pi: módulo IoT Node (A)

1x tarjeta TF de 16 GB clase 10

Fuente de alimentación 1x 5V / 2.5A (5V @ 3A para Pi 4B)

Paso 1: características

Caracteristicas
Caracteristicas
Caracteristicas
Caracteristicas
Caracteristicas
Caracteristicas
  • Serie Docker Pi
  • Programable
  • Control directo (sin programación)
  • Extienda los pines GPIO
  • Soporte GPS / BDS
  • Soporte GSM
  • Soporte de Lora
  • Se puede apilar con otro tablero de apilamiento
  • Independiente del hardware de la placa base (requiere soporte I2C)

Paso 2: Paso 1: Conozca la placa de IoT (A)

Paso 1: Conozca la placa de IoT (A)
Paso 1: Conozca la placa de IoT (A)
Paso 1: Conozca la placa de IoT (A)
Paso 1: Conozca la placa de IoT (A)
Paso 1: Conozca la placa de IoT (A)
Paso 1: Conozca la placa de IoT (A)

El nodo IoT (A) es uno de los módulos de la serie Docker Pi.

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

I2C controla directamente Lora, envía y recibe datos, controla el módulo GSM / GPS / BDS a través de SC16IS752, la placa base solo necesita soporte I2C. Admite Raspberry Pi y otros productos similares.

Por lo tanto, puede hacer un dispositivo de comunicación de rango medio usando dos de ellos.

y también puede localizar la ubicación de su dispositivo utilizando el módulo GPS integrado.

Inserte una tarjeta SIM, se convertirá en una estación transmisora a través de un mensaje SMS.

Paso 3: Paso 2: Cómo montarlo

Paso 2: cómo montarlo
Paso 2: cómo montarlo
Paso 2: cómo montarlo
Paso 2: cómo montarlo

Es muy fácil de montar debido a su diseño "HAT", simplemente póngalo en su raspberry pi y conéctelo a través de pines GPIO, como un "sombrero" en raspberry pi, para que no tenga que agregar la masa cable.

Paso 4: Paso 3: Conecte la antena

Paso 3: conectar la antena
Paso 3: conectar la antena
Paso 3: conectar la antena
Paso 3: conectar la antena
Paso 3: conectar la antena
Paso 3: conectar la antena

Hay 3 antenas para este módulo IoT (A), una de ellas es para el módulo loar, es una antena tipo SMA, y una de ellas es buena para tu GPS, es una antena de caja cuadrada que tiene puerto IPX. y el último es para el módulo SIM (A9G), es una antena diminuta que tiene un puerto IPX. conecte la antena y monte el sombrero en su raspberry pi.

Cómo ensamblarMontar la placa Iot Node (A) en Raspberry Pi

Conecte el GPS antana y Lora antana al puerto IPX.

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

Atornilla el GPRS antana en el puerto SMA.

Paso 5: Paso 4: entorno del sistema operativo y configuraciones de software

En este paso, debes hacer esas cosas:

1. Descargue el archivo de imagen más reciente de: www.raspberrypi.org/downloads

2. Descomprímalo.

3. Actualice su tarjeta TF con la última imagen a través de la herramienta de grabado

4. Modifique el archivo /boot/config.txt y agregue este párrafo.

dtoverlay = sc16is752-i2c

5. Reemplaza el archivo /boot/overlay/sc16is752-i2c.dtbo por este archivo:

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

PD: recuerde descomprimirlo y ponerlo en su carpeta / boot / overlay / y reemplaza el anterior.

6. Reinicie su Raspberry Pi.

Paso 6: Paso 5: Configuración de I2C (Raspberry Pi)

Paso 5: Configuración de I2C (Raspberry Pi)
Paso 5: Configuración de I2C (Raspberry Pi)
Paso 5: Configuración de I2C (Raspberry Pi)
Paso 5: Configuración de I2C (Raspberry Pi)
Paso 5: Configuración de I2C (Raspberry Pi)
Paso 5: Configuración de I2C (Raspberry Pi)
Paso 5: Configuración de I2C (Raspberry Pi)
Paso 5: Configuración de I2C (Raspberry Pi)

Ejecute sudo raspi-config y siga las instrucciones para instalar el soporte i2c para el núcleo ARM y el kernel de linux Vaya a Opciones de interfaz

Paso 7: Paso 6: Conozca la información del registro

Sección GPRS

Bajo consumo de energía, corriente de reposo en espera <1mA2.

Admite cuatro bandas de frecuencia GSM / GPRS, incluidas 850, 900, 1800, 1900 MHZ

GPRS Clase 10

Admite servicio de datos GPRS, velocidad máxima de datos, descarga 85,6 Kbps, carga 42,8 Kbps

Admite comandos estándar GSM07.07, 07.05 AT y accede al puerto serie a través de la conversión de interfaz I2C

Los comandos AT admiten puertos de comando AT y TCP / IP estándar

Sección GPS Admite posicionamiento de articulaciones BDS / GPS

Soporta A-GPS, A-BDS

Admite tarjeta SIM estándar

Sección LORA Distancia de transmisión: 500 metros (parámetros de RF: 0x50 @ China City)

Admite métodos de modulación FSK, GFSK, MSK, GMSK, LoRaTM y OOK

Sensibilidad del receptor ultra alta de hasta -141 dBm

Admite detección de preámbulos

Motor de paquetes con CRC, hasta 256 bytes

Indicador del transceptor LORA

TX / RX fácil de Docker Pi

Paso 8:

Módulo A9G

El módulo A9G ofrece dos puertos serie.

Utilice el puente I2C UART para la comunicación.

Nombre del módulo de puerto serie

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

Registro Mapa

  • Valor de la función de dirección de registro
  • 0x01 LORA_TX1 Lora TX Buffer 1 - Datos de usuario
  • 0x02 LORA_TX2 Lora TX Buffer 2 - Datos de usuario
  • 0x03 LORA_TX3 Lora TX Buffer 3 - Datos del usuario
  • 0x04 LORA_TX4 Lora TX Buffer 4 - Datos de usuario
  • 0x05 LORA_TX5 Lora TX Buffer 5 - Datos de usuario
  • 0x06 LORA_TX6 Lora TX Buffer 6 - Datos de usuario
  • 0x07 LORA_TX7 Lora TX Buffer 7 - Datos del usuario
  • 0x08 LORA_TX8 Lora TX Buffer 8 - Datos de usuario
  • 0x09 LORA_TX9 Lora TX Buffer 9 - Datos del usuario
  • 0x0a LORA_TX10 Lora TX Buffer 10 - Datos del usuario
  • 0x0b LORA_TX11 Lora TX Buffer 11 - Datos del usuario
  • 0x0c LORA_TX12 Lora TX Buffer 12 - Datos de usuario
  • 0x0d LORA_TX13 Lora TX Buffer 13 - Datos del usuario
  • 0x0e LORA_TX14 Lora TX Buffer 14 - Datos del usuario
  • 0x0f LORA_TX15 Lora TX Buffer 15 - Datos de usuario
  • 0x10 LORA_TX16 Lora TX Buffer 16 - Datos del usuario
  • 0x11 LORA_RX1 Lora RX Buffer 1 - Datos del usuario
  • 0x12 LORA_RX2 Lora RX Buffer 2 - Datos del usuario
  • 0x13 LORA_RX3 Lora RX Buffer 3 - Datos del usuario
  • 0x14 LORA_RX4 Lora RX Buffer 4 - Datos del usuario
  • 0x15 LORA_RX5 Lora RX Buffer 5 - Datos del usuario
  • 0x16 LORA_RX6 Lora RX Buffer 6 - Datos del usuario
  • 0x17 LORA_RX7 Lora RX Buffer 7 - Datos del usuario
  • 0x18 LORA_RX8 Lora RX Buffer 8 - Datos del usuario
  • 0x19 LORA_RX9 Lora RX Buffer 9 - Datos del usuario
  • 0x1a LORA_RX10 Lora RX Buffer 10 - Datos del usuario
  • 0x1b LORA_RX11 Lora RX Buffer 11 - Datos del usuario
  • 0x1c LORA_RX12 Lora RX Buffer 12 - Datos del usuario
  • 0x1d LORA_RX13 Lora RX Buffer 13 - Datos del usuario
  • 0x1e LORA_RX14 Lora RX Buffer 14 - Datos del usuario
  • 0x1f LORA_RX15 Lora RX Buffer 15 - Datos del usuario
  • 0x20 LORA_RX16 Lora RX Buffer 16 - Datos del usuario
  • 0x01 - 0x10 Solo escritura.
  • 0x11 - 0x20 Solo lectura.

Paso 9: Instrucciones:

Instrucciones
Instrucciones

L_SET (solo escritura)

  • Escriba 1 para configurar los parámetros de 0x22 al módulo LORA.
  • Escribe 0 sin efecto

G_RESET (solo escritura)

  • Escriba 1 para restablecer el módulo A9G
  • Escribe 0 sin efecto

L_RXNE (lectura y escritura)

  • Escribir 1 causa error
  • Escribe 0 para borrar
  • La lectura 1 significa que se han recibido los datos; obtenga los datos del registro 0x11 - 0x20.
  • Leer 0 significa que no hay datos disponibles ahora.

L_SET (solo escritura)

  • Escriba 1 para enviar datos, complete los datos en el registro 0x01 - 0x10 antes de enviar.
  • Escribe 0 sin efecto

Paso 10: Cómo usar el módulo GPS con Gpsd (Raspberry Pi)

Cómo utilizar el módulo GPS con Gpsd (Raspberry Pi)
Cómo utilizar el módulo GPS con Gpsd (Raspberry Pi)
Cómo utilizar el módulo GPS con Gpsd (Raspberry Pi)
Cómo utilizar el módulo GPS con Gpsd (Raspberry Pi)
Cómo utilizar el módulo GPS con Gpsd (Raspberry Pi)
Cómo utilizar el módulo GPS con Gpsd (Raspberry Pi)

Cómo utilizar el módulo GPS con gpsd (Raspberry Pi)

Primero, reemplace /boot/overlays/sc16is752-i2c.dtbo y asegúrese de que I2C esté funcionando correctamente.

  • Reemplace sc16is752-i2c.dtbo
  • Configuración de I2C
  • Instale herramientas gpsd.

Abra una terminal y escriba este comando:

sudo apt instalar gpsd gpsd-clientes

Modifique el archivo / etc / default / gpsd y agregue los siguientes parámetros:

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

Ingrese el comando i2cset -y 1 0x16 0x23 0x40 para restablecer el módulo GPRS.

Script de Python para GPS abierto:

import serialimport os import time # Reiniciar el servicio gpsd. os.system ("sudo systemctl restart gpsd.socket") # Abrir puerto serie ser = serial. Serial ('/ dev / ttySC0', 115200) i = 0 if ser.isOpen == False: ser.open () intente: print ("Activar GPS…") while True: ser.write (str.encode ("AT + GPS = 1 / r")) size = ser.inWaiting () if size! = 0: ticks = time.time () respuesta = ser.read (tamaño) gps = str (respuesta, codificación = "utf-8") if (gps.find ("OK")! = -1): os.system ("sudo cgps -s") exit () else: i = i + 1 print ("Esperando habilitación de GPS, si el tiempo es demasiado largo, prueba al aire libre:" + str (i)) ser.flushInput () time.sleep (1) excepto KeyboardInterrupt: ser.flushInput () ser.close ()

Guárdalo y ejecútalo:

python3 GPS.py

Paso 11: Cómo usar el módulo GPS con C (Raspberry Pi)

Instale herramientas gpsd

sudo apt-get install libgps-dev

Cree el código fuente y asígnele el nombre "gps.c"

#incluir #incluir #incluir

#incluir

#incluir

int main ()

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

mientras (1)

{/ * esperar 2 segundos para recibir datos * / if (gps_waiting (& gps_data, 2000000)) {/ * leer datos * / if ((rc = gps_read (& gps_data)) == -1) {printf ("se produjo un error al leer código de datos gps:% d, motivo:% s / n ", rc, gps_errstr (rc)); } else {/ * Muestra los datos del receptor 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); EDITAR: ¡tv.tv_sec no es en realidad la marca de tiempo! * /

printf ("latitud:% f, longitud:% f, velocidad:% f, marca de tiempo:% lf / n", gps_data.fix.latitude, gps_data.fix.longitude, gps_data.fix.speed, gps_data.fix.time);

// EDITAR: Se reemplazó tv.tv_sec con gps_data.fix.time} else {printf ("no hay datos GPS disponibles / n"); }}} dormir (3); } / * Cuando haya terminado … * / gps_stream (& gps_data, WATCH_DISABLE, NULL); gps_close (& gps_data); return EXIT_SUCCESS; }

Paso 12: compílelo

Compilelo
Compilelo

¡Compilar!

gcc gps.c -lm -lgps -o gps

Exec It!

./GPS

Paso 13: Cómo usar el módulo GPS con Python (Raspberry Pi)

Cómo usar el módulo GPS con Python (Raspberry Pi)
Cómo usar el módulo GPS con Python (Raspberry Pi)

Se recomienda ejecutar el siguiente código con Python 3 e instalar la biblioteca gpsd-py3 y GPS 2D / 3D Fix:

importar gpsd

# Conéctese al gpsd local

gpsd.connect ()

# Obtener posición gps

paquete = gpsd.get_current ()

# Consulte los documentos en línea para GpsResponse para obtener los datos disponibles

imprimir (paquete.posición ())

Paso 14: Cómo utilizar el módulo GSM con PPPd (Raspberry Pi)

Cómo utilizar el módulo GSM con PPPd (Raspberry Pi)
Cómo utilizar el módulo GSM con PPPd (Raspberry Pi)
Cómo utilizar el módulo GSM con PPPd (Raspberry Pi)
Cómo utilizar el módulo GSM con PPPd (Raspberry Pi)
Cómo utilizar el módulo GSM con PPPd (Raspberry Pi)
Cómo utilizar el módulo GSM con PPPd (Raspberry Pi)

A) Primero, reemplace /boot/overlays/sc16is752-i2c.dtbo y asegúrese de que I2C esté funcionando correctamente.

  • Reemplace sc16is752-i2c.dtbo
  • Configuración de I2C

B) Ingrese el comando i2cset -y 1 0x16 0x23 0x40 para restablecer el módulo GPRS.

Después de ejecutar el comando, debe esperar un poco, unos 10 segundos.

También puede utilizar el siguiente método para restablecer.

C) Ingrese el comando

sudo apt install ppp

para instalar herramientas ppp.

D) Copie / etc / ppp / peers / provider a / etc / ppp / peers / gprs

E) Modificar / etc / ppp / peers / gprs

  • Línea 10: consulte a su proveedor de servicios para el usuario (Ejemplo: cmnet).
  • Línea 15: consulte a su proveedor de servicios para obtener el apn (ejemplo: cmnet).
  • Línea 18 - Línea 24: Configuración recomendada

F) Modifique / etc / chatscripts / gprs (cambie la línea 34 a la línea 35, el número de marcación puede ser NO * 99 #)

G) Ingrese el comando sudo pppd call gprs para marcar.

H) Verifique la configuración de ppp de su ISP.

I) Ingrese el comando ping -I ppp0 8.8.8.8 pruebe su red (si Internet disponible y la tabla de rutas es correcta)

J) Mantenga buena la señal GSM; de lo contrario, ocurrirá lo siguiente.

Paso 15: Cómo diagnosticar mi módulo GSM (Raspberry Pi)

Cómo diagnosticar mi módulo GSM (Raspberry Pi)
Cómo diagnosticar mi módulo GSM (Raspberry Pi)
Cómo diagnosticar mi módulo GSM (Raspberry Pi)
Cómo diagnosticar mi módulo GSM (Raspberry Pi)
Cómo diagnosticar mi módulo GSM (Raspberry Pi)
Cómo diagnosticar mi módulo GSM (Raspberry Pi)
Cómo diagnosticar mi módulo GSM (Raspberry Pi)
Cómo diagnosticar mi módulo GSM (Raspberry Pi)

Se recomienda ejecutar el siguiente código con Python 3 e instalar la biblioteca smbus:

import serialimport time import smbus import operator import os

print ("Esperando inicialización …")

bus = smbus. SMBus (1)

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

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

if ser.isOpen == False:

ser.open () try: print ('-' * 60) print ("Inicializando módulo A9G GPRS.") print ("GSM conectando…") 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) excepto KeyboardInterrupt: ser.close ()

Ejecutar el Script de Prueba, basándonos en los resultados de la implementación, podemos diagnosticar el módulo GSM. Por ejemplo, el siguiente retorno, error CME ERROR 53 nos dice Power not good. Código CME = Errores relacionados con el equipo GSM

Por supuesto, el script también tiene una función de reinicio. Si puede mostrar el CCID correctamente, el reinicio está completo.

Paso 16: Cómo usar Lora TX & RX con C (Raspberry Pi)

Se recomienda ejecutar el siguiente código con Python 3 e instalar la biblioteca smbus.

Debe transferirse entre los dos nodos IOT (A). El contenido enviado por sí mismo no puede recibirse por sí mismo. Guárdelo como un script py para su ejecución.

Cómo enviar: Después de completar los datos en el registro 0x01 - 0x10, configure el bit L_TX para comenzar a enviar datos.

import timeimport smbus import os import sys

bus = smbus. SMBus (1)

tratar:

data_list = [170, 85, 165, 90] # escribe datos para registrar y luego se enviarán los datos. para índice en rango (1, len (lista_datos) + 1): bus.write_byte_data (0x16, índice, lista_datos [índice - 1]) print ("LORA envía datos a% d registro% d datos"% (índice, lista_datos [índice - 1])) bus.write_byte_data (0x16, 0x23, 0x01) excepto KeyboardInterrupt: sys.exit ()

Cómo enviar recepción: Verifique el bit L_RXNE. Si está configurado, llegaron nuevos datos, este indicador debe borrarse manualmente

import timeimport smbus import os import sys

bus = smbus. SMBus (1)

recv_data =

tratar:

if bus.read_byte_data (0x16, 0x23) & 0x02: # borrar manualmente L_RXNE bus.write_byte_data (0x16, 0x23, 0x00) register_list = [0x11, 0x12, 0x13, 0x14] # leer datos para el índice en el rango (0x11, len (register_list) + 0x11): recv_data.append (bus.read_byte_data (0x16, register_list [índice - 0x11]))

imprimir ("Datos recibidos:")

print (recv_data) else: print ("Aún no se han recibido datos ~") excepto KeyboardInterrupt: sys.exit ()

Paso 17: Descripción especial del ancho de banda I2C

El límite de la velocidad I2C es de 400 kHz, debido al protocolo I2C, por lo que el ancho de banda efectivo de un solo dispositivo es inferior a 320 kbps, el ancho de banda efectivo de múltiples dispositivos es inferior a 160 kbps. El límite de la velocidad del puente I2C UART es 115200bps. Cuando GPS y GSM Trabajar al mismo tiempo, el ancho de banda I2C es insuficiente, porque 115.2kbps * 2 = 230.4kbps, por lo que algunos datos se desbordarán. Reducir la velocidad en baudios de la comunicación GPS y GSM puede mejorar la escasez de ancho de banda de comunicación. Apilar otros módulos DockerPi puede ocupar Ancho de banda I2C adicional. Por lo general, la velocidad de datos de la red es lenta, por lo que el ancho de banda GSM no está completo, por lo que no hay problemas de desbordamiento.

Paso 18: terminado

Espero que les guste y lo logren.

Lo puedes encontrar aquí:

Amazonas

Luz nocturna: https://www.amazon.com/GeeekPi-Night-Light-WS2812-Raspberry/dp/B07LCG2S5S Placa de relé de 4 canales: https://www.amazon.co.uk/dp/B07MV1TJGR?ref=myi_title_dp Placa de alimentación : Https: //www.amazon.co.uk/dp/B07TD595VS? Ref = myi_title_dp Nodo de IoT (A) : https://www.amazon.co.uk/dp/B07TY15M1C Sensor HUB : https:// www. amazon.co.uk/dp/B07TZD8B61 torre de hielo:

Recomendado: