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.

145 lines
4.4 KiB

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