Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

Instituto Tecnológico Superior de Pátzcuaro

REPORTE DE PRÁCTICAS

Nombre del alumno: Erick Ivan Ayala Talavera, Jeremy Zianya Fecha: 20/12/2023
Pérez González
No. de Práctica: practica Asignatura: Sistemas de Cómputo y Redes 2023
unidad 3

Reporte de conexión MQTT


Descripción del Problema: El problema a resolverse de la creación de una comunicación MQTT
mediante un ESP32, de un sensor que envía datos mediante un servidor web, es el de integrar dos
tecnologías diferentes. El ESP32 es un microcontrolador que puede conectarse a Internet a través de
Wi-Fi o Bluetooth. El protocolo MQTT es un protocolo de mensajería ligero que se utiliza para la
comunicación entre dispositivos IoT. Un servidor web es un software que permite a los usuarios
acceder a información a través de un navegador web.

Para resolver este problema, es necesario implementar un software que conecte el ESP32 al servidor
web. Este software debe ser capaz de leer los datos del sensor, codificarlos en formato MQTT y
enviarlos al servidor web.

El siguiente diagrama muestra un posible enfoque para resolver este problema:

ESP32
|
+---> Sensor
|
+---> Software de comunicación
|
+---> Servidor web

Una vez que el software de comunicación esté implementado, el ESP32 podrá enviar datos al servidor
web a través del protocolo MQTT. Estos datos podrán ser leídos por cualquier aplicación que admita
el protocolo MQTT.

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

Material:
• Arduino
• MQTTX
• ESP32
• SENSOR DHT11
• Protoboard
• Pines para Arduino
• Cable micro USB

Algoritmo/Diagrama/Pseudocódigo/Código:
Arduino código 1:
#ifdef ESP8266
#include <ESP8266WiFi.h> /* WiFi library for ESP8266 */
#else
#include <WiFi.h> /* WiFi library for ESP32 */
#endif
#include <Wire.h>
#include <PubSubClient.h>
#include "DHT.h" /* DHT11 sensor library */

#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);

#define wifi_ssid "Fusion Automate"


#define wifi_password "Fusion_Automate"
#define mqtt_server "192.168.1.7"

#define humidity_topic "sensor/DHT11/humidity"


#define temperature_celsius_topic "sensor/DHT11/temperature_celsius"
#define temperature_fahrenheit_topic "sensor/DHT11/temperature_fahrenheit"

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
Serial.begin(115200);
// dht.begin();
setup_wifi();
client.setServer(mqtt_server, 1883);
}

void setup_wifi() {
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(wifi_ssid);

WiFi.begin(wifi_ssid, wifi_password);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");

if (client.connect("ESP8266Client")) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}

void loop() {

if (!client.connected()) {
reconnect();
}
client.loop();

// Wait a few seconds between measurements.


delay(2000);

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

// Reading temperature or humidity takes about 250 milliseconds!


// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);

// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

// Compute heat index in Fahrenheit (the default)


float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

Serial.print(hif);
Serial.println(" *F");

Serial.print("Temperature in Celsius:");
Serial.println(String(t).c_str());
client.publish(temperature_celsius_topic, String(t).c_str(), true);

Serial.print("Temperature in Fahrenheit:");
Serial.println(String(f).c_str());
client.publish(temperature_fahrenheit_topic, String(f).c_str(), true);

Serial.print("Humidity:");
Serial.println(String(h).c_str());
client.publish(humidity_topic, String(h).c_str(), true);

Arduino código 2 corregida versión final con conexión a MQTTX:

#include <WiFi.h>
#include <PubSubClient.h>
#include <DHTesp.h>

const int DHT_PIN = 15;


DHTesp dht;
const char* ssid = "Wokwi-GUEST"; /// wifi ssid
const char* password = "";
const char* mqtt_server = "test.mosquitto.org";// mosquitto server url

WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
float temp = 0;
float hum = 0;

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.print(".");
}

randomSeed(micros());

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}}
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
String clientId = "ESP32Client-";
clientId += String(random(0xffff), HEX);
if (client.connect(clientId.c_str())) {
Serial.println("Connected");
client.publish("/ThinkIOT/Publish", "Welcome");
client.subscribe("/ThinkIOT/Subscribe");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

Serial.println(" try again in 5 seconds");


delay(5000);
}}
}
void setup() {
pinMode(2, OUTPUT);
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
dht.setup(DHT_PIN, DHTesp::DHT22);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();

unsigned long now = millis();


if (now - lastMsg > 2000) { //perintah publish data
lastMsg = now;
TempAndHumidity data = dht.getTempAndHumidity();

String temp = String(data.temperature, 2);


client.publish("/Thinkitive/temp", temp.c_str()); // publish temp topic /ThinkIOT/temp
String hum = String(data.humidity, 1);
client.publish("/Thinkitive/hum", hum.c_str()); // publish hum topic /ThinkIOT/hum

Serial.print("Temperature: ");
Serial.println(temp);
Serial.print("Humidity: ");
Serial.println(hum);
}
}

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

Resultados:

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

Pruebas en video:
https://drive.google.com/file/d/1QaTmOIxQvFRxcpFeBx9KK0jmVSmUEDgQ/view?usp=drive_lin
k
https://drive.google.com/file/d/1QaUMzey1c3NsjFzDdroA8yOAhC2YnHiE/view?usp=drive_link
https://drive.google.com/file/d/1QjPqM5-phtuN5ZypXAoq0B7Fsw4wUxuL/view?usp=drive_link

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx
Instituto Tecnológico Superior de Pátzcuaro

CONCLUSIONES

El protocolo MQTT es un protocolo de comunicación de mensajes ligero y eficiente, diseñado para


aplicaciones de Internet de las Cosas (IoT). Es un protocolo de publicación/suscripción en el que los
dispositivos pueden publicar mensajes a temas y otros dispositivos pueden suscribirse a esos temas
para recibir los mensajes.

El ESP32 es un microcontrolador de doble núcleo con Wi-Fi y Bluetooth integrados, lo que lo hace
ideal para aplicaciones IoT. El ESP32 tiene soporte nativo para el protocolo MQTT, por lo que es
fácil implementarlo en proyectos IoT.

En conclusión, el uso del protocolo MQTT con una ESP32 es una forma sencilla y eficiente de
implementar comunicación entre dispositivos IoT.

Carretera Pátzcuaro-Morelia Av. Tecnológico No.1, Tzurumutaro, Pátzcuaro, Michoacan, México. C.P. 61615
Tel. (434) 542-5049, 5063, 5067. e-mail: [email protected] www.itspa.edu.mx

También podría gustarte