From 45300d178ef73c5c9b6e11aa9b7323c9c73c33a8 Mon Sep 17 00:00:00 2001 From: andrespm Date: Mon, 4 Jul 2022 11:56:14 -0500 Subject: [PATCH] Edicion README --- README.md | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/README.md b/README.md index e69de29..91c2727 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,140 @@ +# Descarga de Arduino IDE + +Lo primero que debemos hacer es descargar el archivo de instalacion desde [La pagina de descarga](https://www.arduino.cc/en/Main/Software) + +Despues de descargarlo, lo extraemos, anrimos una terminal dentr de la misma carpeta, y ejecutamos el siguiente comando: + + sudo sh install.sh + +Una vez en el IDE de arduino, es necesario configurar la tarjeta ESP-32, nos dirijimos al menu de **Archivo** y damos clic en la opcion de **Preferencias** y en el campo de **Gestor de tarjetas adicionales** escribimos la siguente direccion: + + https://dl.espressif.com/dl/package_esp32_index.json + +![PubSubClient](/Imagenes/Preferencias.png) + +Ahora nos dirijimos al menu de **Herramientas** y dentro de la opcion de **Tarjeta** buscamos la que llamada **ESP32 Dev Module** + + +Adicionalmente debemos ver en que puerto esta conectada nuestra tarjeta, para eso, dentro de la pestaña de herramientas buscamos la opcion de puerto, la mayoria de veces se conecta en el **ttyUSB0** + +# Instalacion de libreria PubSubClient + +Dentro del mismo menu de **Herramientas** nos vamos a la opcion de **Gestor de Librerias** y en el buscador escribimos **PubSubClient** e instalamos la librería + +![PubSubClient](/Imagenes/PubSub.png) + + +# Programa de ESP32 + +Copiamos el siguiente codigo dentro del programa + + #include + #include + + const char* ssid = "NombreWIFI"; + const char* password = "ContraseñaWIFI"; + const char* mqttServer = "DireccionMQTT"; + const int mqttPort = 1883; + const char* mqttUser = "MQTTuser"; + const char* mqttPassword = "MQTTpass"; + + WiFiClient espClient; + PubSubClient client(espClient); + + void OnMqttReceived(char *topic, byte *payload, unsigned int length) + { + Serial.print("Received on "); + Serial.print(topic); + Serial.print(": "); + String content = ""; + for (size_t i = 0; i < length; i++) + { + content.concat((char)payload[i]); + } + Serial.print(content); + Serial.println(); + } + + void setup() + { Serial.begin(115200); + WiFi.begin(ssid, password); + Serial.println("..................................."); + + Serial.print("Connecting to WiFi."); + while (WiFi.status() != WL_CONNECTED) + { delay(500); + Serial.print(".") ; + } + Serial.println("Connected to the WiFi network"); + + client.setServer(mqttServer, mqttPort); + while (!client.connected()) + { Serial.println("Connecting to MQTT..."); + if (client.connect("prueba", mqttUser, mqttPassword )) + {Serial.println("connected"); + client.subscribe("prueba/xd"); + client.setCallback(OnMqttReceived); + } + else + { Serial.print("failed with state "); + Serial.print(client.state()); + Serial.println(); + delay(2000); + } + } + } + + void loop() + { client.loop(); + char str[16]; + + if(Serial.read()>0) + { + sprintf(str, "%u", random(100)); + + client.publish("prueba/xd", str); + Serial.println(str); + delay(100); + } + + } + +Una vez pegado, cargamos el codigo con el icono que esta apuntando hacia la derecha, en la parte superior izquierda de la pantalla + +![Upload](/Imagenes/Upload.png) + + +# Posibles errores + + +## Permission denied + + +El error mas comun puede ser el siguiente: + + could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0' + +Para resolver este error puedes escribir el siguiente comando en la consola + + sudo usermod -a -G dialout $USUARIO + +Despues de ejecutar el comando anterior, cerramos y abrimos nuevamente la sesion, despues de esto el programa deberia cargarse sin problemas + +## No se detecta el esp32 + +Puede pasar (Mas comunmente en la version 22.04 de Ubuntu) que la tarjeta solo se detecta unos poco segundos justo despues de conectarla, y despues deja de aparecer. + +Para solucionarlo debemos deshabilitar **brtltty** + + + systemctl stop brltty-udev.service + sudo systemctl mask brltty-udev.service + systemctl stop brltty.service + systemctl disable brltty.service + +# Probar el cliente + +Basicamente, recibe cualquier caracter del puerto serial, posteriormente genera un numero aleatorio, y lo envia al servidor mqtt, despues de enviarlo lo recibe nuevamente. + + +![Serial](/Imagenes/Serial.png)