Tabla de contenido:

Raspberry Pi hablando con ESP8266 usando MQTT: 8 pasos
Raspberry Pi hablando con ESP8266 usando MQTT: 8 pasos

Video: Raspberry Pi hablando con ESP8266 usando MQTT: 8 pasos

Video: Raspberry Pi hablando con ESP8266 usando MQTT: 8 pasos
Video: ESP8266 con DHT22 mediante WiFi, Broker MQTT en Raspberry Pi y visualización en Node-RED 2024, Mes de julio
Anonim
Raspberry Pi hablando con ESP8266 usando MQTT
Raspberry Pi hablando con ESP8266 usando MQTT

En este proyecto, explicaré qué es el protocolo MQTT y cómo se usa para comunicarse entre dispositivos, luego, como demostración práctica, demostraré cómo configurar un sistema cliente y brocker, donde un módulo ESP8266 y RPi hablan entre sí o enviar un mensaje cuando se presiona un botón.

Material requerido

1. Raspberry Pi 3

2. NodeMCU

3. LED

4. Botón

5. Resistencias (10 k, 475 ohmios)

Paso 1: Qué es MQTT y cómo funciona

MQTT

MQTT es un protocolo de transferencia de datos de máquina a máquina (M2M). MQTT se creó con el objetivo de recopilar datos de muchos dispositivos y luego transportarlos a la infraestructura de TI. Es liviano y, por lo tanto, ideal para el monitoreo remoto, especialmente en conexiones M2M que requieren una pequeña huella de código o donde el ancho de banda de la red es limitado.

Cómo funciona MQTT

MQTT es un protocolo de publicación / suscripción que permite que los dispositivos del borde de la red publiquen en un corredor. Los clientes se conectan a este intermediario, que luego media la comunicación entre los dos dispositivos. Cada dispositivo puede suscribirse o registrarse a temas particulares. Cuando otro cliente publica un mensaje sobre un tema suscrito, el corredor reenvía el mensaje a cualquier cliente que se haya suscrito.

MQTT es bidireccional y mantiene el conocimiento de la sesión con estado. Si un dispositivo de borde de red pierde la conectividad, todos los clientes suscritos serán notificados con la función "Última voluntad y testamento" del servidor MQTT para que cualquier cliente autorizado en el sistema pueda publicar un nuevo valor en el borde de dispositivo de red, manteniendo la conectividad bidireccional.

El proyecto se divide en 3 partes

En primer lugar, creamos el servidor MQTT en RPi e instalamos algunas bibliotecas.

En segundo lugar, instalaremos bibliotecas en Arduino IDE para que NodeMCU funcione con MQTT, cargaremos el código y verificaremos si el servidor está funcionando o no.

Finalmente, creamos un script en Rpi, cargamos el código requerido en NodeMCU y ejecutamos el script de Python para controlar los leds tanto del lado del servidor como del cliente. Aquí, el servidor es RPi y el cliente es NodeMCU.

Paso 2: Raspberry Pi

Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi
Frambuesa pi

1. Para instalar el servidor y el cliente MQTT más recientes en RPi, para utilizar el nuevo repositorio, primero debe importar la clave de firma del paquete del repositorio.

wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key add mosquitto-repo.gpg.key

2. Haga que el repositorio esté disponible para apt.

cd /etc/apt/sources.list.d/

3. Dependiendo de la versión de Debian que esté utilizando.

sudo wget https://repo.mosquitto.org/debian/mosquitto-wheezy.listsudo wget

sudo wget

sudo apt-get update

4. Instale el servidor Mosquitto usando el comando.

sudo apt-get install mosquitto

Si obtiene errores al instalar Mosquitto como este.

#################################################################

Los siguientes paquetes tienen dependencias no satisfechas: mosquitto: Depende: libssl1.0.0 (> = 1.0.1) pero no se puede instalar Depende: libwebsockets3 (> = 1.2) pero no se puede instalar E: No se pueden corregir los problemas, se ha mantenido roto paquetes.

#################################################################

Luego use este comando para solucionar problemas.

sudo apt --fix-broken install

5. Después de instalar el servidor MQTT, instale el cliente usando el comando

sudo apt-get install mosquitto-clients

Puede verificar los servicios usando el comando.

systemctl status mosquitto.service

Como nuestro servidor y cliente MQTT está instalado. Ahora, podemos comprobarlo mediante suscribirse y publicar. Para suscribirse y publicar, puede verificar los comandos o visitar el sitio web como se indica a continuación.

Mosquitto Sub

Pub Mosquitto

Para instalar la biblioteca paho-mqtt, use el siguiente comando.

sudo pip instalar paho-mqtt

Paho

Paso 3: Cómo configurar la dirección IP estática

Cómo configurar una dirección IP estática
Cómo configurar una dirección IP estática

Vaya al directorio cd / etc y abra el archivo dhcpcd.conf usando cualquier editor. Al final, escribe estas cuatro líneas.

interface eth0 static ip_address = 192.168.1.100 // ip que desea usar

interfaz wlan0

dirección_ip estática = 192.168.1.68

enrutadores estáticos = 192.168.1.1 // su puerta de enlace predeterminada

static domain_name_servers = 192.168.1.1

Después de eso, guárdelo y reinicie su pi.

Paso 4: NodeMCU

NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU

Instale las bibliotecas necesarias en Arduino IDE para NodeMCU

1. Vaya a Sketch ==> Incluir biblioteca ==> Administrar bibliotecas.

2. Busque mqtt e instale la biblioteca de Adafruit o puede instalar cualquier biblioteca.

3. Depende de la biblioteca de sleepydog, por lo que también necesitamos esta biblioteca.

El programa se da arriba, solo para verificar si funciona o no. Aquí no he creado ningún script en RPi. Solo estamos usando comandos para suscribirnos y publicar. Crearemos un script para controlar más adelante.

mosquitto_pub -h raspberrypi -t "/ leds / pi" -m "ON"

mosquitto_pub -h raspberrypi -t "/ leds / pi" -m "APAGADO"

mosquitto_pub -h raspberrypi -t "/ leds / pi" -m "TOGGLE"

mosquitto_pub -h raspberrypi -t "/ leds / esp8266" -m "ON"

mosquitto_pub -h raspberrypi -t "/ leds / esp8266" -m "APAGADO"

mosquitto_pub -h raspberrypi -t "/ leds / esp8266" -m "TOGGLE"

-h ==> nombre de host-t ==> tema

-m ==> mensaje

Después de verificar el programa Mqtt_check, cargue el programa completo en NodeMCU

Paso 5: secuencia de comandos de Python

Script de Python
Script de Python
Script de Python
Script de Python

Como mencioné anteriormente, necesitamos un script de Python para controlar leds usando botones. Entonces, vamos a crear un script. El guión se da arriba.

Cuando ejecute el script, su script debería verse como se muestra en la imagen, si el código de resultado no es cero, entonces es un error, puede verificar el error en el sitio web de paho.

Paso 6: Diagrama de conexiones y circuito

Conexiones y diagrama de circuito
Conexiones y diagrama de circuito
Conexiones y diagrama de circuito
Conexiones y diagrama de circuito

Interfaz de botón, LED con NodeMCU

NodeMCU ===> ButtonGnd ===> Gnd

3,3 V ===> PIN1

GPIO4 (D2) ===> PIN2

NodeMCU ===> LED

Gnd ===> Cátodo (-ve)

GPIO5 (D1) ===> Ánodo (+ ve)

Interfaz de botón, LED con RPi

RPi ===> ButtonGnd ===> PIN1

GPIO 23 ===> PIN2

RPi ===> LED

Gnd ==> cátodo (-ve)

GPIO 24 ===> Ánodo (+ ve)

Paso 7: Resultado

Image
Image
Resultado
Resultado

Asegúrese de que su secuencia de comandos se esté ejecutando, de lo contrario, no podrá controlar el LED con los botones.

Recomendado: