[Aporte] Controlador Remoto con ESP32 y Aplicación Android

D@rkbytes

Moderador
Saludos.
Les comparto un proyecto sencillo de un controlador remoto basado en ESP32
Se trata de controlar 3 dispositivos/artefactos/luces/etc. remotamente.
Esto es a modo de ejemplo sobre la conexión entre un ESP32 y un Servidor Broker MQTT

Está programado en B4X, en este caso: B4A (Basic For Android) y B4R (Basic For Arduino/ESP/RBPI)
A B4R lo considero un entorno de programación muy superior a Arduino, porque se basa en procesos a manera de Visual Studio .NET y no en el clásico Loop de Arduino, aparte de otras cosas muy innovadoras. (También acepta C y C++ por invocación.)
Sin embargo, Arduino es requerido por el IDE, por lo cual debe estar previamente instalado. (Aunque solo se use para administrar las tarjetas y el compilador.)
Para el caso de B4A, obviamente no requiere Arduino, y es un entorno muy completo con el cual se pueden crear aplicaciones Android de forma muy sencilla.
También se tiene la posibilidad de crear la aplicación para iPhone con el entorno B4I (Basic For iPhone)
B4A, B4J y B4R son entornos de programación gratuitos, B4I es de pago. (Para no perder la costumbre. :ROFLMAO:)

No incluyo diagrama esquemático del diseño, ya que el código B4R puede ser usado con otros modelos de ESP
En este caso es importante mencionar que el programa B4R fue escrito para usar el ESP-WROOM-32 de 38 pines.
Así que los pines seleccionados son para este módulo en específico, pero los pueden cambiar para un ESP8266 u otro, en dado caso.

En este ejemplo se está usando el Broker MQTT Test.MosQuiTTo, ya que puede ser usado de forma gratuita, pero es muy lento.
Existen otros más de forma gratuita, pero limitados, aunque más rápidos.
Por ejemplo: DIoTY, IoTicos o MaQiaTTo
Estos Brokers requieren darse de alta con una cuenta de usuario.
Si requieren algo superior pueden comprar un servicio, que es lo más conveniente cuando un proyecto es comercial, y para eso existen Brokers MQTT empresariales.

En resumen, con este proyecto podemos conectar un ESP a un servidor que nos permitirá una conexión remota fuera del Wi-Fi local.
O sea, podremos conectar la aplicación al ESP con Wi-Fi o datos de red telefónica desde cualquier parte del mundo. (Donde exista red) :)

Espero que este sencillo proyecto de ejemplo sea de utilidad para los que apenas comienzan en este mundo del IoT (Internet De las Cosas)
Cualquier duda y/o comentario lo responderé a la brevedad posible.
Un fuerte abrazo.
 

Adjuntos

  • B4A Android Interface.zip
    21.2 KB · Visitas: 8
  • Interface APK Compilada.zip
    251.5 KB · Visitas: 5
  • APK.jpg
    APK.jpg
    25.7 KB · Visitas: 18
  • B4R ESP32 Controller.zip
    2.5 KB · Visitas: 6
  • ESP-WROOM-32 (38 PINES).jpg
    ESP-WROOM-32 (38 PINES).jpg
    94.5 KB · Visitas: 10
Buen aporte D@rk como siempre.

Tengo una duda, al ser broker gratuito podemos saber bajo que servidor esta corriendo ? Y de acuerdo a los eventos de los dispositivos, dichos eventos están alguna base de datos ?🤔
 
Por lo que lei, mosquitto trabaja en local, no por internet, asi que el servidor es el local (propio del broker).
Por lo otro ni idea, recien estoy leyendo gracias a @D@rkbytes , por un comentario sobre MQTT, gracias...!!!
 

D@rkbytes

Moderador
Tengo una duda, ¿al ser broker gratuito podemos saber bajo qué servidor esta corriendo?
Esa información se encuentra aquí: Eclipse Mosquitto™
No es un servidor local, es un servidor remoto en Internet y el gratuito para pruebas es este: "tcp://test.mosquitto.org"
De acuerdo a los eventos de los dispositivos, ¿dichos eventos están alguna base de datos?
MQTT se basa en publicaciones y suscripciones a tópicos, pueden ser persistentes o desaparecer en cierto periodo, que es configurable.
Algunos Brokers gratuitos cuentan con un terminal para poder ver la información que entra y también pueden publicar tópicos.
Algo sobre MQTT: ¿Qué es MQTT? Su importancia como protocolo IoT
 
Habia leido que en la raspberry funcionaba como local, y que no salia nada hacia el exterior... :unsure:
Es mas, la ip para los clientes era la ip local, incluso la prueba desde el terminal de raspbian era localhost... 🤷‍♂️
 

D@rkbytes

Moderador
Sí, también se puede crear un servidor MQTT local, pero el ejemplo que subí se puede conectar al exterior.
El ESP32 tiene varias formas de conexión Wi-Fi, hasta puede generar una página WEB, incluso cuenta con Bluetooth.
Es bastante potente y versátil, lo que lo hace un dispositivo excelente para IoT
 
Hola...

Siguiendo con mi manía de "reformar cosas a lo que hay", pase/utilice lo aportado por D@rkbytes en este tema para un ESP32, a una placa ESP-01.

pines-esp01.png

Como en toda "guerra hay cosas que sacrificar" opte por no usar el led de estado/estatus de la conexión y uno de los tres led, quedando solo dos led on/off operativos(GPIO2 y GPIO0).

Indicación del Log del IDE del puerto serie donde se programo, cuando se pone en marcha el dispositivo(todo funciona) y esta conectado.

C1.JPG
En ese caso genere un AP virtual en la interfaz del AP real de mi Router a modo de prueba con el SSID "Invitado y el PAS "12345678"
generando una red separada de la mía con el rango de direcciones 10.10.10.100 a 120 en el servidor DHCP que corre en ella y atendiendo en 10.10.10.1, haciendo la regla de NAT correspondiente en el firewall del router para darle acceso al Internet de la conexión existente a modo de proveedor.

Todo esto no es necesario pero es lo que acostumbro a hacer cuando hago pruebas de dispositivos WIFI para poder hacer y deshacer cosas sin afectar a la conexión principal ni a los que la están usando(especialmente a la Bru...a principal).

Aquí muestro la aplicación para el teléfono Android corriendo...

TodoApa.jpg
Con el aviso de ya estar conectado al servidor en la nube y
DosPre.jpg
Cuando se enciende los dos led de forma remota

DosLPren.jpg

O solo uno
UnoPre.jpg
UnoVerd.jpg

Para no estropear el ESP-01 los LED de 3mm, están conectados mediante una resistencia cada uno de 2K7 lo que hace que los GPIO del modulo solo deban entregar poco mas de medio miliamperio cuando los led se encienden.

Por ultimo adjunto los archivos usados con algunos comentarios y también los compilados.

Espero que les sirva para no poner excusas de que no se tiene el led del color que se muestra en las fotos o el modulo ESP32 de 38 pines para probar.

Saludos.

Ric.
 

Adjuntos

  • ControlLED_ESP01.zip
    6.6 MB · Visitas: 3
Arriba