Tabla de contenido:
- Suministros
- Paso 1: características
- Paso 2: Paso 1: Conozca la placa de IoT (A)
- Paso 3: Paso 2: Cómo montarlo
- Paso 4: Paso 3: Conecte la antena
- Paso 5: Paso 4: entorno del sistema operativo y configuraciones de software
- Paso 6: Paso 5: Configuración de I2C (Raspberry Pi)
- Paso 7: Paso 6: Conozca la información del registro
- Paso 8:
- Paso 9: Instrucciones:
- Paso 10: Cómo usar el módulo GPS con Gpsd (Raspberry Pi)
- Paso 11: Cómo usar el módulo GPS con C (Raspberry Pi)
- Paso 12: compílelo
- Paso 13: Cómo usar el módulo GPS con Python (Raspberry Pi)
- Paso 14: Cómo utilizar el módulo GSM con PPPd (Raspberry Pi)
- Paso 15: Cómo diagnosticar mi módulo GSM (Raspberry Pi)
- Paso 16: Cómo usar Lora TX & RX con C (Raspberry Pi)
- Paso 17: Descripción especial del ancho de banda I2C
- Paso 18: terminado
Video: [Serie Docker Pi] Cómo utilizar el módulo de nodo IoT (A) en Raspberry Pi: 18 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
¿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
- 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)
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
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
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)
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:
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)
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
¡Compilar!
gcc gps.c -lm -lgps -o gps
Exec It!
./GPS
Paso 13: 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)
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)
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:
Cómo utilizar el módulo RFID-RC522 con Arduino: 5 pasos
Cómo usar el módulo RFID-RC522 con Arduino: En este Instructable, daré un tutorial sobre el principio de funcionamiento fundamental del módulo RFID junto con sus etiquetas y chips. También proporcionaré un breve ejemplo de un proyecto que hice usando este módulo RFID con un LED RGB. Como de costumbre con mis Ins
Cómo utilizar un módulo de reloj en tiempo real (DS3231): 5 pasos
Cómo utilizar un módulo de reloj en tiempo real (DS3231): El DS3231 es un reloj en tiempo real (RTC) I2C extremadamente preciso y de bajo costo con un oscilador de cristal integrado con compensación de temperatura (TCXO) y un cristal. El dispositivo incorpora una entrada de batería y mantiene una indicación de la hora precisa cuando la alimentación principal a
Cómo utilizar el módulo MP3 DFMini Player con Arduino: 4 pasos
Cómo usar el módulo MP3 DFMini Player con Arduino: Varios proyectos requieren reproducción de sonido para agregar algún tipo de funcionalidad. Entre estos proyectos, destacamos: accesibilidad para personas con discapacidad visual, reproductores de música MP3 y la ejecución de sonidos de voz por robots, por ejemplo. En todos estos sistemas
Cómo utilizar el módulo LED RGB: 4 pasos
Cómo usar el módulo LED RGB: Descripciones: Con resistencia incorporada para evitar que el LED se queme. Se puede usar con diferentes microcontroladores. Alta operación activa Voltaje de funcionamiento: 3.3V / 5V Se puede conectar directamente a Arduino, sin cables de puente
Cómo utilizar el módulo de circuito de luz fluorescente compacto quemado: 6 pasos
Cómo usar el módulo de circuito de luz fluorescente compacta quemada: Nota y precauciones: las lámparas fluorescentes compactas contienen mercurio, que es un material peligroso, por lo que debe manipularse en consecuencia La mayoría de las lámparas CFL y los circuitos electrónicos funcionan perfectamente y aún se pueden usar, solo la bombilla se estropea. El circuito CFL de 18-24 vatios es