Tabla de contenido:

Proyecto Iot NodeMCU MQTT - Botón de cambio: 4 pasos
Proyecto Iot NodeMCU MQTT - Botón de cambio: 4 pasos

Video: Proyecto Iot NodeMCU MQTT - Botón de cambio: 4 pasos

Video: Proyecto Iot NodeMCU MQTT - Botón de cambio: 4 pasos
Video: Lo que necesitas aprender para realizar controles IOT desde Cero - Internet de las Cosas 2024, Mes de julio
Anonim
Image
Image

Kit de inicio OSOYOO NodeMCU IOT

Síganos en Facebook, encuentre nuestro nuevo artículo lanzado y comparta su idea y video sobre cómo usar creativamente nuestros productos. ¡Puede obtener un reembolso en efectivo o un obsequio de parte nuestra! Facebook:

Youtube:

En esta lección, conectaremos un botón de cambio al NodeMCU y enviaremos el estado del cambio a un agente MQTT. Cuando se presiona el botón, NodeMCU publicará el estado del botón "presionado" al broker MQTT y el cliente MQTT se suscribirá a estos mensajes. Cuando se suelta el pulsador, se enviará "no pulsado".

Paso 1: preparación

Gráfico de conexión
Gráfico de conexión

Hardware:

Placa NodeMCU x 1

Botón de interruptor x 1

Resistencia de 1K x 1

Placa de pruebas x 1

Cables de puente

Software:

IDE de Arduino (versión 1.6.4+)

Paquete de placa ESP8266 y controlador de puerto serie

Cliente MQTT (MQTTBox aquí)

Biblioteca de Arduino: PubSubClient

Paso 2: Gráfico de conexión

En esta lección, usamos D2 (GPIO4) para controlar el interruptor, configure el hardware de acuerdo con el gráfico de conexión.

Nota: la resistencia de 1k se usa como resistencia desplegable, en un circuito de este tipo, cuando el interruptor está cerrado, la entrada NodeMCU está en un valor lógico alto, pero cuando el interruptor está abierto, la resistencia desplegable tira del voltaje de entrada a tierra (valor lógico cero), evitando un estado indefinido en la entrada.

Paso 3: Código

Código
Código
Código
Código

Copie el siguiente código en Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / * | | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _ / (_ / / _ / / _ | / _ / / _ (_) _) _ / | _ | _ | _ | * (_ / * Utilice el NodeMCU envía el estado del botón de cambio al cliente MQTT a través de WiFi * URL del tutorial: * CopyRight www.osoyoo.com * / #include #include

int BUTTON_PIN = D2; // el botón está conectado al pin GPIO D1

// Actualícelos con valores adecuados para su red. const char * ssid = "********"; // ponga su ssid wifi aquí const char * password = "********"; // ponga su contraseña wifi aquí. const char * mqtt_server = "broker.mqttdashboard.com"; // const char * mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

Cliente PubSubClient (espClient); long lastMsg = 0; char msg [50];

void setup_wifi () {

retraso (100); // Empezamos por conectarnos a una red WiFi Serial.print ("Conectando a"); Serial.println (ssid); WiFi.begin (ssid, contraseña); while (WiFi.status ()! = WL_CONNECTED) {retraso (500); Serial.print ("."); } semilla aleatoria (micros ()); Serial.println (""); Serial.println ("WiFi conectado"); Serial.println ("dirección IP:"); Serial.println (WiFi.localIP ()); }

devolución de llamada void (char * topic, byte * payload, unsigned int length)

{} // finalizar la devolución de llamada

void reconect () {

// Repetir hasta que nos volvamos a conectar while (! Client.connected ()) {Serial.print ("Intentando conexión MQTT…"); // Cree una ID de cliente aleatoria String clientId = "ESP8266Client-"; clientId + = String (aleatorio (0xffff), HEX); // Intente conectarse // si su agente MQTT tiene ID de cliente, nombre de usuario y contraseña // por favor cambie la siguiente línea a if (client.connect (clientId, userName, passWord)) if (client.connect (clientId.c_str ())) {Serial.println ("conectado"); // una vez conectado al broker MQTT, subscribe el comando si hay algún cliente.subscribe ("OsoyooCommand"); } else {Serial.print ("fallido, rc ="); Serial.print (client.state ()); Serial.println ("inténtelo de nuevo en 5 segundos"); // Espere 5 segundos antes de volver a intentarlo (5000); }}} // finaliza la reconexión ()

configuración vacía () {

Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (devolución de llamada); pinMode (BUTTON_PIN, INPUT); }

bucle vacío () {

if (! client.connected ()) {reconectar (); } client.loop (); largo ahora = millis (); estado int; // enviar mensaje cada 2 segundos if (ahora - lastMsg> 2000) {lastMsg = now; status = digitalRead (BUTTON_PIN); String msg = "Estado del botón:"; if (estado == ALTO) {msg = msg + "Presionado"; char mensaje [58]; msg.toCharArray (mensaje, 58); Serial.println (mensaje); // publicar los datos del sensor en el intermediario MQTT client.publish ("OsoyooData", mensaje); } else {msg = msg + "No presionar"; char mensaje [58]; msg.toCharArray (mensaje, 58); Serial.println (mensaje); // publicar los datos del sensor en el intermediario MQTT client.publish ("OsoyooData", mensaje); }}}

Edite el código para que se ajuste a su propia configuración de WiFi y MQTT de la siguiente manera: 1) Configuración de punto de acceso: busque la línea de código debajo, ingrese su propio ssid y contraseña allí.

const char * ssid = “your_hotspot_ssid”; const char * contraseña = “your_hotspot_password”;

2) Configuración de la dirección del servidor MQTT: puede usar su propia URL o dirección IP del agente MQTT para establecer el valor por encima de mqtt_server. También puede utilizar algún famoso servidor MQTT gratuito para probar el proyecto, como “broker.mqtt-dashboard.com”, “iot.eclipse.org”, etc.

const char * mqtt_server = “broker.mqtt-dashboard.com”;

3) Configuración del cliente MQTT Si su agente MQTT requiere autenticación de ID de cliente, nombre de usuario y contraseña, debe cambiar

si (client.connect (clientId.c_str ()))

Para

if (client.connect (clientId, userName, passWord)) // ponga su clientId / userName / passWord aquí

De lo contrario, manténgalos como predeterminados. Después de hacer eso, elija el tipo de placa correspondiente y el tipo de puerto como se muestra a continuación, luego cargue el boceto en NodeMCU.

  • Placa: "NodeMCU 0.9 (módulo ESP-12)"
  • Frecuencia de CPU: "80 MHz" Tamaño de flash:"
  • 4M (3M SPIFFS)”
  • Velocidad de subida:”115200 ″
  • Puerto: elija su propio puerto serie para su NodeMCU

Paso 4: Configuración del cliente MQTT

Configuración del cliente MQTT
Configuración del cliente MQTT
Configuración del cliente MQTT
Configuración del cliente MQTT

Si no sabe cómo configurar el cliente MQTT, visite nuestro último artículo:

Configuración de temas: Tema para publicar: OsoyooCommand

Tema para suscribirse: OsoyooData

Resultado de ejecución

Una vez realizada la carga, si la configuración del nombre y la contraseña del punto de acceso wifi está bien y el agente MQTT está conectado, abra el Monitor en serie, verá el siguiente resultado: Siga presionando este botón, el Monitor en serie mostrará el "Estado del botón: Presionado" cada 2 segundos; una vez que suelte este botón, el monitor en serie mostrará el mensaje "Estado del botón: no presionado" cada 2 segundos.

Recomendado: