You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
4.3 KiB

2 years ago
  1. # Descarga de Arduino IDE
  2. Lo primero que debemos hacer es descargar el archivo de instalacion desde [La pagina de descarga](https://www.arduino.cc/en/Main/Software)
  3. Despues de descargarlo, lo extraemos, anrimos una terminal dentr de la misma carpeta, y ejecutamos el siguiente comando:
  4. sudo sh install.sh
  5. 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:
  6. https://dl.espressif.com/dl/package_esp32_index.json
  7. ![PubSubClient](/Imagenes/Preferencias.png)
  8. Ahora nos dirijimos al menu de **Herramientas** y dentro de la opcion de **Tarjeta** buscamos la que llamada **ESP32 Dev Module**
  9. 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**
  10. # Instalacion de libreria PubSubClient
  11. 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
  12. ![PubSubClient](/Imagenes/PubSub.png)
  13. # Programa de ESP32
  14. Copiamos el siguiente codigo dentro del programa
  15. #include <WiFi.h>
  16. #include <PubSubClient.h>
  17. const char* ssid = "NombreWIFI";
  18. const char* password = "ContraseñaWIFI";
  19. const char* mqttServer = "DireccionMQTT";
  20. const int mqttPort = 1883;
  21. const char* mqttUser = "MQTTuser";
  22. const char* mqttPassword = "MQTTpass";
  23. WiFiClient espClient;
  24. PubSubClient client(espClient);
  25. void OnMqttReceived(char *topic, byte *payload, unsigned int length)
  26. {
  27. Serial.print("Received on ");
  28. Serial.print(topic);
  29. Serial.print(": ");
  30. String content = "";
  31. for (size_t i = 0; i < length; i++)
  32. {
  33. content.concat((char)payload[i]);
  34. }
  35. Serial.print(content);
  36. Serial.println();
  37. }
  38. void setup()
  39. { Serial.begin(115200);
  40. WiFi.begin(ssid, password);
  41. Serial.println("...................................");
  42. Serial.print("Connecting to WiFi.");
  43. while (WiFi.status() != WL_CONNECTED)
  44. { delay(500);
  45. Serial.print(".") ;
  46. }
  47. Serial.println("Connected to the WiFi network");
  48. client.setServer(mqttServer, mqttPort);
  49. while (!client.connected())
  50. { Serial.println("Connecting to MQTT...");
  51. if (client.connect("prueba", mqttUser, mqttPassword ))
  52. {Serial.println("connected");
  53. client.subscribe("prueba/xd");
  54. client.setCallback(OnMqttReceived);
  55. }
  56. else
  57. { Serial.print("failed with state ");
  58. Serial.print(client.state());
  59. Serial.println();
  60. delay(2000);
  61. }
  62. }
  63. }
  64. void loop()
  65. { client.loop();
  66. char str[16];
  67. if(Serial.read()>0)
  68. {
  69. sprintf(str, "%u", random(100));
  70. client.publish("prueba/xd", str);
  71. Serial.println(str);
  72. delay(100);
  73. }
  74. }
  75. Una vez pegado, cargamos el codigo con el icono que esta apuntando hacia la derecha, en la parte superior izquierda de la pantalla
  76. ![Upload](/Imagenes/Upload.png)
  77. # Posibles errores
  78. ## Permission denied
  79. El error mas comun puede ser el siguiente:
  80. could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'
  81. Para resolver este error puedes escribir el siguiente comando en la consola
  82. sudo usermod -a -G dialout $USUARIO
  83. Despues de ejecutar el comando anterior, cerramos y abrimos nuevamente la sesion, despues de esto el programa deberia cargarse sin problemas
  84. ## No se detecta el esp32
  85. 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.
  86. Para solucionarlo debemos deshabilitar **brtltty**
  87. systemctl stop brltty-udev.service
  88. sudo systemctl mask brltty-udev.service
  89. systemctl stop brltty.service
  90. systemctl disable brltty.service
  91. # Probar el cliente
  92. Basicamente, recibe cualquier caracter del puerto serial, posteriormente genera un numero aleatorio, y lo envia al servidor mqtt, despues de enviarlo lo recibe nuevamente.
  93. ![Serial](/Imagenes/Serial.png)