9. ESP32

Versión para imprimir.

A. Introduccion

B. Blink.ino

Video de la placa

Ve como capturar y ejecutar este ejemplo.

Ve como desplegar este ejemplo en Tinkercad y compartirlo.

1/* Este programa es un derivado de
2 ESP8266 Blink by Simon Peter */
3
4/** Función que se invoca una sola
5 vez al inicio del programa. */
6void setup() {
7 /* Todas las placas compatibles
8 con Arduino incluyen un led
9 de prueba ligado a un pin
10 cuyo número está definido por
11 la constante LED_BUILTIN.
12 Inicializa el pin para
13 LED_BUILTIN como salida. */
14 pinMode(LED_BUILTIN, OUTPUT);
15}
16
17/* Función que se invoca
18 repetidamente mientras el
19 programa esté activo. */
20void loop() {
21 /* Enciende el LED_BUILTIN (HIGH
22 es el nivel de voltaje). */
23 digitalWrite(LED_BUILTIN, HIGH);
24 delay(1000); // Espera 1 segundo
25 /* Apaga el LED_BUILTIN haciendo
26 que el nivel de voltaje sea
27 LOW. */
28 digitalWrite(LED_BUILTIN, LOW);
29 delay(1000);
30}
31

C. Button.ino

Video de la placa

Ve como desplegar este ejemplo en Tinkercad y compartirlo.

1/* Este es un derivado de Button
2 por DojoDave y Tom Igoe */
3
4/* Pin para el botón. */
5const int BOTON = 0;
6
7int estadoDelBoton = 0;
8
9void setup() {
10 /* Inicializa el pin para
11 LED_BUILTIN como salida. */
12 pinMode(LED_BUILTIN, OUTPUT);
13 /* Initializa el pin para
14 BOTON como entrada. */
15 pinMode(BOTON, INPUT);
16}
17
18void loop() {
19 estadoDelBoton =
20 digitalRead(BOTON);
21 /* Checa si el botón está
22 presionado. Esto es, si
23 estadoDelBotón es LOW. */
24 if (estadoDelBoton == LOW) {
25 // Enciende el LED_BUILTIN.
26 digitalWrite(LED_BUILTIN, HIGH);
27 } else {
28 // Apaga el LED_BUILTIN.
29 digitalWrite(LED_BUILTIN, LOW);
30 }
31}
32

D. Dispositivo.ino

Video del dispositivo
Implementación del ejemplo de IoT con MQTT en Arduino IDE.

Ve como configurar y ejecutar este ejemplo. No hagas caso a la parte de los certificados,

1#include "EspMQTTClient.h"
2
3const char *const SSID =
4 "Galaxy A723C85";
5const char *const PASS =
6 "bdoi1764";
7const char *const URL =
8 "test.mosquitto.org";
9const uint16_t PUERTO =
10 1883;
11const char *const CLIENT_ID =
12 "gilpgdmIoT-esp32-1";
13const char *const TOPICO_FOCO =
14 "gilpgdm/IoT/foco";
15
16EspMQTTClient cliente(
17 SSID,
18 PASS,
19 URL,
20 0, // Usuario opcional
21 0, // Contraseña opcional
22 CLIENT_ID,
23 PUERTO);
24const int BOTON = 0;
25bool presionado = false;
26String valor = "0";
27
28void recibeMensaje(
29 const String &payload)
30{
31 valor = payload;
32 digitalWrite(LED_BUILTIN,
33 valor == "1"
34 ? HIGH
35 : LOW);
36}
37
38void enviaMensajeMqtt(
39 String valorAEnviar,
40 String topico)
41{
42 cliente.publish(topico,
43 valorAEnviar);
44}
45
46void onConnectionEstablished()
47{
48 cliente.subscribe(
49 TOPICO_FOCO, recibeMensaje);
50 enviaMensajeMqtt(
51 valor, TOPICO_FOCO);
52}
53
54void setup()
55{
56 Serial.begin(115200);
57 pinMode(BOTON, INPUT);
58 pinMode(LED_BUILTIN, OUTPUT);
59 // Funcionalidades opcionaes
60 // Mensajes para depurar conexión
61 cliente.enableDebuggingMessages();
62 cliente.enableHTTPWebUpdater();
63 // Actualizaciones
64 // OTA (Over The Air)
65 cliente.enableOTA();
66 // Mensaje de última voluntad.
67 cliente.enableLastWillMessage(
68 "gilpgdm/IoT/lastwill",
69 "Adios");
70}
71
72void loop()
73{
74 cliente.loop();
75 if (cliente.isConnected())
76 {
77 bool actual =
78 digitalRead(BOTON);
79 if (!presionado &&
80 actual == LOW)
81 {
82 enviaMensajeMqtt(
83 valor == "1" ? "0" : "1",
84 TOPICO_FOCO);
85 }
86 presionado = (actual == LOW);
87 }
88}
89

E. Resumen