# SMART HOME ESP32

# ¿Qué es Smart Home con ESP32?

Se trata de una maqueta con montón de sensores y actuadores muy bien diseñada para sacarle al máximo jugo a la domótica, programación y mundo maker.

Te recomiendo [ver la lista de componentes](https://docs.innovadidactic.com/es/manuals/smart_home/parts), muy variados y con gran potencial educativo

[![smart_home.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/smart-home.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/smart-home.png)

*Fuente [Innovadidactic ](https://docs.innovadidactic.com/es/manuals/smart_home/mounting)con permiso del comercial*

# Introducción

# Objetivos y contenidos

#### <span style="color: rgb(22, 145, 121);">**Objetivos**</span>

- Capacidad de desarrollar retos **STEAM** con un amplio nivel educativo: primaria hasta secundaria 
    - Retos **STEAM** de nivel principiante con manejo de sensores
    - Retos **STEAM** de nivel medio adentrándose en las comunicaciones Bluetooth y wifi y almacenamiento de datos
    - Retos **STEAM** de nivel avanzado con prácticas IoT
- Realizar retos STEAM en un entorno **STEAMAKERSBLOCKS** amigable, sin complicaciones técnicas, multiplataforma y con lenguaje gráfico por bloques 
    - Conocer **STEAMAKERSBLOCKS** una plataforma web que permite programar por bloques gráficos
    - Conocer las diferentes posibilidades de la programación por bloques de **STEAMAKERSBLOCKS**
    - Conocer las posibilidades didácticas de **STEAMAKERSBLOCKS** y su gestión de proyectos en el aula
- Conocer el kit robótico **TDR STEAM ESP32** que se propone, con un coste económico bajo pero de calidad para que un centro educativo lo pueda asumir para su aplicación en el aula (mínimo 12 por aula)  
    
    - Conocer la placa **TDR STEAM ESP32**, sus sensores y actuadores
    - Aplicaciones prácticas del **TDR STEAM ESP32**

#### <span style="color: rgb(22, 145, 121);">**Contenidos**</span>

- **PLACA ESP32**
    - Placa ESP32, hardware y software
    - Sensores
    - Actuadores
    - Shield TDR Steam
- **STEAMAKERSBLOCKS**   
    
    - **Retos**
    - **Telecomunicaciones**
        - **Bluetooth**
        - **IOT -WIFI**
            - MQTT
            - BLYNK IOT

# Pensamiento computacional

¿Dónde se encaja este robot? ¿Se puede comparar este robot con otros robots de otros cursos que hacemos desde CATEDU?

Esta es la hoja de ruta que proponemos, no se tiene que tomar al pie de la letra, pero intenta ayudar al profesorado que tenga una visión global de tanta oferta robótica:

Como se puede ver **SMARTHOME** tiene la ventaja de ser un proyecto maker con un amplio rango en programación en bloques y código y con prácticas avanzadas IoT es decir, un producto con muchas posibilidades.

{{@4518}}

# Hardware ¿Qué es ESP32?

{{@8286}}

# Software

{{@8288}}

# Sensores

{{@7009}}

# Actuadores

{{@8292}}

# Montaje

# Preliminar

La casa nos lo venden a piezas, y es más difícil de montar que un mueble de Ikea

<p class="callout danger">**NO RECOMENDAMOS REALIZAR EL MONTAJE CON LOS ALUMNOS**. La probabilidad de una rotura podría hacer la maqueta totalmente inservible.</p>

Ojo, que quede bien claro que nosotros estamos para ayudarte en tu formación, no somos comerciales de este robot. O sea, esto mejor que no:

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-2u1motkz.png)

Pero te queremos animar:

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-oiyo4ye9.gif)

Luego al final el resultado es muy satisfactorio :

[![2025-10-21 23_52_30-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-21-23-52-30-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-21-23-52-30-whatsapp.png)

# Las paredes

Tienes dos sitios para seguir todo el proceso de montaje:

- Página del comercial Innovadidactic [https://docs.innovadidactic.com/es/manuals/smart\_home/mounting](https://docs.innovadidactic.com/es/manuals/smart_home/mounting)
- La documentación del fabricante en [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html)

Vamos siguiendo los pasos, aquí sólo vamos a nombrarlos y decir algunas observaciones:

##### <span style="color: rgb(22, 145, 121);">**Pared principal**</span>

Los tornillos de la placa LCD son los largos estrechos, y hay que fijarse bien en la orientación, que los pines queden hacia la izquierda

El resto de componentes van con los tornillos normales :

[![2025-10-22 08_13_22-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-08-13-22-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-08-13-22-greenshot.png)  
*Fuente [Innovadidactic ](https://docs.innovadidactic.com/es/manuals/smart_home/mounting)con permiso del comercial*

El sensor RFID puede ir por dentro como en la figura de arriba o exterior como esta foto:

[![2025-10-21 23_20_16-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-21-23-20-16-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-21-23-20-16-whatsapp.png)

##### <span style="color: rgb(22, 145, 121);">**Tejado**</span>

El techo no tiene muchas complicaciones y son los tornillos normales, tiene dos paneles :

[![2025-10-22 08_17_56-Documento1 - Word.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-08-17-56-documento1-word.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-08-17-56-documento1-word.png)

*Fuente [Innovadidactic ](https://docs.innovadidactic.com/es/manuals/smart_home/mounting)con permiso del comercial*

##### <span style="color: rgb(22, 145, 121);">**Pared trasera**</span>

Todos son tornillos normales, menos el del portapilas, que debe de tener la cabeza plana (en caso contrario, impide la colocación de las pilas)

[![2025-10-22 08_18_33-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-08-18-33-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-08-18-33-greenshot.png)  
*Fuente [Innovadidactic ](https://docs.innovadidactic.com/es/manuals/smart_home/mounting)con permiso del comercial*

También hay que tener en cuenta que el cable de alimentación tiene que salir hacia el borde de la pared para que llegue a la placa, es decir, orientar el cable del portapilas hacia la izquierda.

[![2025-10-21 23_26_09-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-21-23-26-09-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-21-23-26-09-whatsapp.png)  
Detalle de los tornillos cabeza plana y colocación del cable portapilas

##### <span style="color: rgb(22, 145, 121);">**Pared lateral con ventana**</span>

Esta pared tiene su dificultad pues tiene un servo, con una rueda dentada transparente y una ventana transparente que se tiene que mover con libertad:

[![2025-10-22 08_22_26-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-08-22-26-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-08-22-26-greenshot.png)  
*Fuente [Innovadidactic ](https://docs.innovadidactic.com/es/manuals/smart_home/mounting)con permiso del comercial*

<p class="callout warning">La colocación de los tornillos de la ventana, van con unas tuercas autobloqueantes.  
[![2025-10-21 23_37_01-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-21-23-37-01-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-21-23-37-01-whatsapp.png)  
**NO TIENES QUE APRETAR MUCHO. LA VENTANA TIENE QUE TENER LIBERTAD DE MOVERSE  
TAMPOCO TIENE QUE ESTAR SUELTO**  
</p>

En [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html) recomiendan poner la rueda dentada, con 4 tornillos normales, que no pueden apretarse por el peligro de atravesar el tornillo a la otra parte y por lo tanto impedir su movimiento. Nosotros recomendamos usar los tornillos en punta los más pequeños, y como también lo utilizaremos en otro servo, y no hay 8, entonces con 2 es suficiente:

[![2025-10-21 23_41_04-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-21-23-41-04-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-21-23-41-04-whatsapp.png)

<p class="callout danger">**ATENCIÓN: NO PONER EL TORNILLO CENTRAL.**   
Pues ¿Con qué giro lo colocamos? En teoría estará a 0º por lo tanto ventana cerrada, tenemos que dejar la ventana cerrada pero [cuando hagamos el reto 5.2](https://libros.catedu.es/books/smart-home-esp32/page/project-52-close-the-window) nos aseguramos que está en la posición correcta por lo tanto pondremos el tornillo.</p>

##### <span style="color: rgb(22, 145, 121);">**SUELO CON LA PLACA**</span>

Es un suelo interior que contiene la placa ESP32 y el servo que moverá la puerta

[![2025-10-22 08_23_21-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-08-23-21-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-08-23-21-greenshot.png)  
*Fuente [Innovadidactic ](https://docs.innovadidactic.com/es/manuals/smart_home/mounting)con permiso del comercial*

Igual que antes, recomendamos usar los tornillos en punta más pequeños que fijan muy bien el servo con la rueda. Como no hay suficientes ponemos 3

[![2025-10-21 23_50_54-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-21-23-50-54-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-21-23-50-54-whatsapp.png)

# Montando las paredes

Lo primero es hacer una **U** con la pared principal y las dos paredes que tiene ventanas (la que hemos montado el cristal que se mueve y otra pared sin ningún elemento electrónico). Todos los elementos se fijan con unas **T** de madera fáciles de poner aunque a veces se resisten.

[![di1.png](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A37.png)](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A37.png)  
Fuente [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html)

Luego uniremos con

- La pared trasera que tiene el portapilas
- El suelo que tiene la placa (**OJO** no te olvides)
- Un lateral del tejado que tiene las luces

[![di1.png](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A39.png)](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A39.png)  
Fuente [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html)

El siguiente elemento **NO LO PONDRÍA PUES DIFICULTA LAS CONEXIONES.  
DEJARLO PARA DESPUÉS DE REALIZAR EL CABLEADO.**

[![di1.png](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A46.png)](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A46.png)  
  
Fuente [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html)

El siguiente elemento es difícil de visualizar, es unir la base con una puerta giratoria con el suelo que tiene la placa

[![di1.png](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A52.png)](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A52.png)  
Fuente [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html)

A lo mejor con una foto, ayuda a cómo tiene que ser :

[![2025-10-22 00_12_33-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-00-12-33-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-00-12-33-whatsapp.png)

Finalmente encajamos la rueda dentada especial en la parte superior de la puerta giratoria.

[![di1.png](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A58.png)](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A58.png)  
Fuente [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html)

# Conexiones

<p class="callout warning">RECOMENDAMOS NO TENER PRISA Y UTILIZAR  
1 BUENA ILUMINACIÓN  
2 GAFAS - LUPA  
3 PINZAS O TENAZAS PUNTA FINA  
4 NO MONTAR EL TEJADO  
5 CHICLES-CARAMELOS PARA ARMARSE DE PACIENCIA</p>

[![2025-10-21 23_43_54-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-21-23-43-54-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-21-23-43-54-whatsapp.png)

En [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/index.html) hay fotos para ver PASO A PASO TODAS LAS CONEXIONES con fotos bien claras de donde van cada sensor y actuador.

<p class="callout success">**EL SENTIDO DE LOS CABLES ES MUY FÁCIL: LA MASA G - GND SIEMPRE EL CABLE NEGRO**</p>

Aquí sólo vamos a nombrar de forma escueta donde va cada elemento y qué cable utilizar:

<table border="1" id="bkmrk-elemento-a-qu%C3%89-pin-d" style="border-collapse: collapse; width: 100.002%; height: 575.717px;"><colgroup><col style="width: 25%;"></col><col style="width: 25%;"></col><col style="width: 25%;"></col><col style="width: 25%;"></col></colgroup><thead><tr style="height: 29.6887px;"><td style="height: 29.6887px;">**ELEMENTO**</td><td style="height: 29.6887px;">**A QUÉ PIN DEL ESP32**</td><td style="height: 29.6887px;">**CABLE**</td><td style="height: 29.6887px;">**OBSERVACIONES**</td></tr></thead><tbody><tr style="height: 29.6887px;"><td style="height: 29.6887px;">Sensor humedad DHT11</td><td style="height: 29.6887px;">IO17</td><td style="height: 29.6887px;">3 polos corto 15cm</td><td style="height: 29.6887px;">  
</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">LED amarillo</td><td style="height: 29.6887px;">IO12</td><td style="height: 29.6887px;">3 polos corto 15cm</td><td style="height: 29.6887px;">  
</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">Sensor vapor</td><td style="height: 29.6887px;">IO34</td><td style="height: 29.6887px;">3 polos corto 15cm</td><td style="height: 29.6887px;">  
</td></tr><tr style="height: 46.4717px;"><td style="height: 46.4717px;">Ventilador</td><td style="height: 46.4717px;">IN- AL IO18  
IN+ AL IO19</td><td style="height: 46.4717px;">4 polos  
sueltos en los dos extremos</td><td style="height: 46.4717px;">ver detalle conexión ventilador</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">Sensor PIR</td><td style="height: 29.6887px;">IO14</td><td style="height: 29.6887px;">3 polos corto 15cm</td><td style="height: 29.6887px;">  
</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">Botón izquierdo</td><td style="height: 29.6887px;">IO16</td><td style="height: 29.6887px;">3 polos largo 20cm</td><td style="height: 29.6887px;">ojo tiene que ser el largo</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">Botón derecho</td><td style="height: 29.6887px;">IO27</td><td style="height: 29.6887px;">3 polos largo 20cm</td><td style="height: 29.6887px;">idem</td></tr><tr style="height: 46.4717px;"><td style="height: 46.4717px;">RFID</td><td style="height: 46.4717px;">IIC</td><td style="height: 46.4717px;">4 polos</td><td style="height: 46.4717px;">da igual a qué IIC lo pongas, tienes 4 conectores</td></tr><tr style="height: 63.2547px;"><td style="height: 63.2547px;">LCD1602</td><td style="height: 63.2547px;">IIC</td><td style="height: 63.2547px;">4 polos</td><td style="height: 63.2547px;">da igual a qué IIC lo pongas, tienes 3 libres, el otro lo has ocupado con el RFID</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">LEDS RGB</td><td style="height: 29.6887px;">IO26</td><td style="height: 29.6887px;">3 polos corto 15cm</td><td style="height: 29.6887px;">  
</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">Sensor GAS</td><td style="height: 29.6887px;">IO23</td><td style="height: 29.6887px;">3 polos largo 20cm</td><td style="height: 29.6887px;">ojo tiene que ser el largo</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">buzzer</td><td style="height: 29.6887px;">IO25</td><td style="height: 29.6887px;">3 polos largo 20cm</td><td style="height: 29.6887px;">idem</td></tr><tr style="height: 63.2547px;"><td style="height: 63.2547px;">servo ventana</td><td style="height: 63.2547px;">IO5</td><td style="height: 63.2547px;">tiene su cable</td><td style="height: 63.2547px;">el marrón es la masa luego ya esta claro la forma de conectarlo</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">servo puerta</td><td style="height: 29.6887px;">IO13</td><td style="height: 29.6887px;">idem</td><td style="height: 29.6887px;">idem</td></tr><tr style="height: 29.6887px;"><td style="height: 29.6887px;">la alimentación del portapilas</td><td style="height: 29.6887px;">  
</td><td style="height: 29.6887px;">  
</td><td style="height: 29.6887px;">sólo hay un sitio</td></tr></tbody></table>

Resulta difícil localizar los pines, aquí tienes una imagen ampliada del ESP32

[![2025-10-22 00_45_49-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-00-45-49-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-00-45-49-whatsapp.png)

##### <span style="color: rgb(22, 145, 121);">**Un resumen**</span>

<span style="color: rgb(22, 145, 121);">**[![2025-10-22 08_25_30-.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-08-25-30.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-08-25-30.png)** </span>

*Fuente [Innovadidactic ](https://docs.innovadidactic.com/es/manuals/smart_home/mounting)con permiso del comercial*

##### <span style="color: rgb(22, 145, 121);">**Detalle conexión ventilador**</span>

Son 4 cables, viendo la foto :

[![2025-10-22 00_27_51-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-00-27-51-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-00-27-51-whatsapp.png)

- El negro masa G
- El blanco la alimentación V
- El gris al IN+
- El morado al IN-

Esto se tiene que conectar

1. bajar el cable de 4 polos
2. Desplazar el morado IN- al IO18
3. El gris IN+ al IO19
4. El blanco a V como es alimentación al macho rojo del IO19 (vale también el del IO18)
5. La masa al macho negro del IO19 (vale también el del IO18)

Los pasos 3-4-5 están alineados al IO19  
El que esta separado es el paso 2

[![2025-10-22 00_25_56-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-00-25-56-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-00-25-56-whatsapp.png)

**AHORA YA PUEDES PONER EL TEJADO.**

[![di1.png](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A46.png)](https://docs.keyestudio.com/projects/KS5009/en/latest/_images/A46.png)

# Cómo programar la Smart Home ESP32

##### <span style="color: rgb(22, 145, 121);">**No utilices su programa predeterminado**</span>

La placa viene con un programa predeterminado para comunicarse con la [app keyes IOT home](https://play.google.com/store/apps/details?id=com.keyestudio.keyesiothome)

[![2025-10-22 09_33_09-Inbox - jjquintana@educa.aragon.es - Mozilla Thunderbird.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-09-33-09-inbox-jjquintana-at-educa-aragon-es-mozilla-thunderbird.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-09-33-09-inbox-jjquintana-at-educa-aragon-es-mozilla-thunderbird.png)

En la placa ESP32 [hay un programa que viene de fábrica y sólo sirve para comunicarse con la APP](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Arduino/arduino.html)

<p class="callout success">**P: ¿Y qué se consigue didácticamente?  
R: Pues nada** Si grabamos el programa de fábrica y hacemos funcionar la maqueta con la APP convertimos el Smart home ESP32 en un juguete en vez de un instrumento didáctico para fomentar el pensamiento computacional y aprender a programar.</p>

##### <span style="color: rgb(22, 145, 121);">**¿Qué opciones tengo?**</span>

- Puedes utilizar programación por bloques, recomendado para primaria, y primer ciclo de secundaria.  
    Tienes muchas opciones de programas pero recomendamos **Steamakerblocks**
- O la programación por código, en ese caso puedes utilizar programación ArduinoIDE pero recomendamos **Python**

<p class="callout info">Para saber más sobre las diferencias y opciones de programación en bloques o programación en código para placas compatibles con Arduino, mira [https://libros.catedu.es/books/programa-arduino-mediante-codigo/page/software](https://libros.catedu.es/books/programa-arduino-mediante-codigo/page/software)</p>

# STEAMAKERSBLOCKS

# Qué es Steamakersblocks

{{@5126}}

# Crear cuenta en Steamakerblocks

{{@5973}}

# Cuentas alumnos

{{@5127}}

# Connector

{{@5128}}

# Empezando un proyecto

{{@5129}}

# Mi primer programa

Vamos a borrar el programa que tiene prederminado, y simplemente vamos a apagar el dichoso ventilador y visualizar un texto por el Display para tener la seguridad de que tenemos el control

Abrimos Steamakerblocks un nuevo proyecto y elegimos la placa ESP32 STEAMAKER

[![2025-10-22 09_58_45-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-09-58-45-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-09-58-45-greenshot.png)

Escribimos este programa simple, que apaga al inicio el ventilador y en bucle representa la palabra CATEDU (también se podría poner en el bloque inicializar) [https://www.steamakersblocks.com/web/project/2519579](https://www.steamakersblocks.com/web/project/2519579)

[![2025-10-22 09_59_58-Configuración.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-09-59-58-configuracion.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-09-59-58-configuracion.png)

Y ya tenemos todo bajo control:

[![2025-10-21 23_52_30-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-21-23-52-30-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-21-23-52-30-whatsapp.png)

# PYTHON

# Descarga del programa

Existen muchos compiladores Python de micropython, recomendamos **Thomy**

Podemos descargarnos de la página oficial de Thomy [https://thonny.org/](https://thonny.org/) o de la [página de keystuidio](https://docs.keyestudio.com/projects/KS5009/en/latest/_downloads/2437db5a73e56669b3562ff78104e2f5/Resource-compression-package.7z)

[![2025-10-23 12_31_47-Descargas - Explorador de archivos.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-12-31-47-descargas-explorador-de-archivos.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-12-31-47-descargas-explorador-de-archivos.png)

##### <span style="color: rgb(22, 145, 121);">**¿Qué es eso de "micro" python?**</span>

{{@12238#bkmrk-como-puedes-ver-en-e}}

{{@12238#bkmrk-%C2%BFy-a-mi-qu%C3%A9-m%C3%A1s-me-d}}

{{@12238#bkmrk-no%2C-para-nada%2C-si-pr}}

<p class="callout danger">{{@12238#bkmrk-si-programas-esp32-c}}</p>

{{@12238#bkmrk-%C2%BFy-con-esto-ya-puedo}}

{{@12238#bkmrk-no%2C-con-esto-tienes-}}

# Instalar el firmware

Dentro de Thomy nos vamos a

1. Herramientas
2. Opciones
3. Interprete
4. Instala o actualiza Micropython (ver apartado más abajo)
5. Interprete: ESP32
6. Puerto (el que sea COMx)

[![python-home.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/python-home.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/python-home.png)

##### <span style="color: rgb(22, 145, 121);">**Instalar el firmware**</span>

Descargamos de la web [https://micropython.org/download/ESP32\_GENERIC/](https://micropython.org/download/ESP32_GENERIC/) el firmware más actual

[![2025-10-23 12_28_29-Configuración.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-12-28-29-configuracion.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-12-28-29-configuracion.png)

Y ahora al pinchar en el punto 4 anterior nos sale este diálogo

[![python-home2.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/python-home2.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/python-home2.png)

1. Pulsamos en las tres rayas horizontales
2. Seleccionamos la imagen Micropython que hemos descargado de [https://micropython.org/download/ESP32\_GENERIC/](https://micropython.org/download/ESP32_GENERIC/)
3. Automáticamente se rellenan los campos
4. Instalar

La instalación dura unos 5 minutos pues **tiene que instalarse dentro del ESP32**

[![2025-10-23 12_10_39-Opciones de Thonny.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-12-10-39-opciones-de-thonny.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-12-10-39-opciones-de-thonny.png)

# Mi primer programa

Abrimos Thomy nuevo archivo y pegamos un código por ejemplo este [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-4-1-play-happy-birthday](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-4-1-play-happy-birthday)

<p class="callout warning">Al darle a GUARDAR hay que guardarlo en el dispositivo ESP32 pues recuerda que es un Micropython y el compilador esta dentro de la placa.</p>

[![python-home3.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/python-home3.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/python-home3.png)

Al darle al botón play pues suena ...

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/ryl1_8k0qCM" title="feliz cumpleaños" width="492"></iframe>

# Instalando librería LCD en Micropython

Si vas a utilizar el display (cosa muy recomendable pues da mucho juego) tienes que instalar la librería que se descarga en [https://docs.keyestudio.com/projects/KS5009/en/latest/\_downloads/2437db5a73e56669b3562ff78104e2f5/Resource-compression-package.7z](https://docs.keyestudio.com/projects/KS5009/en/latest/_downloads/2437db5a73e56669b3562ff78104e2f5/Resource-compression-package.7z)

concretamente estas dos

[![2025-10-23 12_42_28-Configuración.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-12-42-28-configuracion.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-12-42-28-configuracion.png)

Abre “Thonny”, clic en “Este equipo” → “D:” → “2. Proyectos de Python” → “pj8\_1\_lcd1602”. Seleccione “i2c\_lcd.py” y clic derecho para seleccionar “Subir a”

[![2025-10-23 12_44_00-Configuración.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-12-44-00-configuracion.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-12-44-00-configuracion.png)

Te tiene que quedar las librerías puestas en la memoria del ESP32

[![2025-10-23 12_44_29-Configuración.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-12-44-29-configuracion.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-12-44-29-configuracion.png)

# Librería MFRC

Si vas a utilizar el MFRC tienes que instalar la librería que se descarga en [https://docs.keyestudio.com/projects/KS5009/en/latest/\_downloads/2437db5a73e56669b3562ff78104e2f5/Resource-compression-package.7z](https://docs.keyestudio.com/projects/KS5009/en/latest/_downloads/2437db5a73e56669b3562ff78104e2f5/Resource-compression-package.7z)

Abre “Thonny”, clic en “Este equipo” → “D:” → “2. Proyectos de Python” → “pj8\_1\_lcd1602”. Seleccione “i2c\_lcd.py” y clic derecho para seleccionar “Subir a”

[![2025-10-23 12_44_00-Configuración.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-12-44-00-configuracion.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-12-44-00-configuracion.png)

Te tiene que quedar las librerías puestas en la memoria del ESP32

[![2025-10-23 13_46_41-Mattermost Desktop App.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-13-46-41-mattermost-desktop-app.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-13-46-41-mattermost-desktop-app.png)

# Introducción al Python

{{@12415}}

# RETOS no IoT

# Project 1.1 LED Flashing

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/EFZorJNhyPI" title="22 de octubre de 2025" width="492"></iframe>

SOLUCIÓN CON BLOQUES [https://www.steamakersblocks.com/web/project/2520299](https://www.steamakersblocks.com/web/project/2520299)

SOLUCION CON CODIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-1-1-led-flashing](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-1-1-led-flashing)

# Project 1.2 Breathing LED

En este código se va a utilizar la intensidad PWM para dar la sensación de subida y bajada gradual

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/VzL1NKdFmjc" title="Project 1.2 Breathing LED" width="492"></iframe>

- Solución con bloques [https://www.steamakersblocks.com/web/project/2520329](https://www.steamakersblocks.com/web/project/2520329)
- Solución con código [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-1-2-breathing-led](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-1-2-breathing-led)

##### <span style="color: rgb(22, 145, 121);">**¿Qué son las salidas PWM?**</span>

{{@2946}}

# Project 2.1 Read the Button

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="815" src="https://www.youtube.com/embed/YrgTis942QU" title="22 de octubre de 2025" width="458"></iframe>

- SOLUCIÓN POR BLOQUES [https://www.steamakersblocks.com/web/project/2520373](https://www.steamakersblocks.com/web/project/2520373)
    - he optado por un retardo de 1 segundo para que se vea bien
- SOLUCIÓN CON CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-2-1-read-the-button](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-2-1-read-the-button)

# Project 2.2. Table Lamp

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/y5tsisEHaSQ" title="Project 2.2. Table Lamp" width="492"></iframe>

- SOLUCIÓN CON BLOQUES [https://www.steamakersblocks.com/web/project/2520536](https://www.steamakersblocks.com/web/project/2520536)
- SOLUCIÓN CON CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-2-2-table-lamp](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-2-2-table-lamp)

# Project 3.1 Read the PIR Motion Sensor

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/drgaWBeH39k" title="Project 3.1 Read the PIR Motion Sensor" width="492"></iframe>

- SOLUCIÓN CON BLOQUES [https://www.steamakersblocks.com/web/project/2520553](https://www.steamakersblocks.com/web/project/2520553)
- SOLUCIÓN CON CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-3-1-read-the-pir-motion-sensor](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-3-1-read-the-pir-motion-sensor)

# Project 4.1 Play Happy Birthday

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="715" src="https://www.youtube.com/embed/5c0SQh66JUk" title="Project 4.1 Play Happy Birthday" width="402"></iframe>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/ryl1_8k0qCM" title="feliz cumpleaños" width="492"></iframe>

- SOLUCIÓN CON BLOQUES [https://www.steamakersblocks.com/web/project/2521317](https://www.steamakersblocks.com/web/project/2521317)
- SOLUCIÓN CON CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-4-1-play-happy-birthday](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-4-1-play-happy-birthday)

Bueno, en la solución con bloques no es happy birthday pero podemos elegir la melodía que queramos

[![2025-10-22 19_22_02-Mattermost Desktop App.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-19-22-02-mattermost-desktop-app.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-19-22-02-mattermost-desktop-app.png)

Si queremos crear un sonido RTTTL mirar [https://fgcoca.github.io/ESP32-STEAMakers/A05/](https://fgcoca.github.io/ESP32-STEAMakers/A05/)

# Project 5.1 Control the Door

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/xW5coiRVthg" title="Project 5.1 Control the Door" width="492"></iframe>

- SOLUCIÓN POR BLOQUES [https://www.steamakersblocks.com/web/project/2520583](https://www.steamakersblocks.com/web/project/2520583)
- SOLUCIÓN POR CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-5-1-control-the-door](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-5-1-control-the-door)

# Project 5.2 Close the Window

Si llueve, que cierre la ventana. Se ha decidido poner como límite de humedad 50, con sólo humedecer un poco el dedo, supera ese umbral, y si esta poco mojado, se seca enseguida y baja de 50 con lo que se vuelve a abrir la ventana.

Los ángulos correctos para el servo son

- 120º la ventana esta abierta
- 0º la ventana esta cerrada

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="715" src="https://www.youtube.com/embed/tUgCIbuZKTQ" title="Project 5.2 Close the Window" width="402"></iframe>

- SOLUCIÓN POR BLOQUES [https://www.steamakersblocks.com/web/project/2521324](https://www.steamakersblocks.com/web/project/2521324)
- SOLUCIÓN CON CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-5-2-close-the-window](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-5-2-close-the-window)

<p class="callout warning">**AJUSTAMOS LA VENTANA PARA QUE SE CIERRE Y ABRA CORRECTAMENTE CON ESTOS ÁNGULOS Y YA PODEMOS PONER EL TORNILLO CENTRAL**</p>

[![2025-10-22 21_09_24-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-22-21-09-24-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-22-21-09-24-whatsapp.png)

# Project 6.1 RGB Sk6812

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="715" src="https://www.youtube.com/embed/CqLUw9FjAEs" title="Project 6.1 RGB Sk6812 bloques" width="402"></iframe>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="715" src="https://www.youtube.com/embed/AujK40wtbx0" title="Project 6.1 RGB Sk6812" width="402"></iframe>

- SOLUCIÓN CON BLOQUES [https://www.steamakersblocks.com/web/project/2521483](https://www.steamakersblocks.com/web/project/2521483)
- SOLUCIÓN CON CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-6-1-rgb-sk6812](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-6-1-rgb-sk6812)

<p class="callout success">Hemos puesto dos vídeos, uno con el programa de bloques y otro con el de código ¿Quién es quien?</p>

# Project 7.2 Button Control Fan

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="715" src="https://www.youtube.com/embed/sK7B5ff6m4g" title="Project 7.2 Button Control Fan" width="402"></iframe>

- SOLUCIÓN POR BLOQUES [https://www.steamakersblocks.com/web/project/2521510](https://www.steamakersblocks.com/web/project/2521510)
- SOLUCIÓN CON CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-7-2-button-control-fan](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-7-2-button-control-fan)

# Project 8.2 Dangerous Gas Alarm

El detector de gas MQ2 es sensible al gas butano, si tenemos vitro, probarlo con un encendedor de gas pero sin hacer la chispa.

Hemos elegido que si detecta gas sale una advertencia por el display, suena un tono y hace funcionar el ventilador

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/UMf1K0L-ZPs" title="Project 8.2 Dangerous Gas Alarm" width="492"></iframe>

También detecta el **alcohol**, como se puede ver en el curso de SMART HOME PARA MICROBIT [https://libros.catedu.es/books/smart-home-para-microbit/page/gas](https://libros.catedu.es/books/smart-home-para-microbit/page/gas)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="715" src="https://www.youtube.com/embed/hSX2yizTSH4" title="DETECTOR GAS SMART HOME MICROBIT" width="402"></iframe>

<p class="callout warning">ATENCION: EN STEAMAKERSBLOCK no se encuentra este sensor de gas, pero como es un sensor de todo o nada pull down, es decir digital, que emite un 1 si no detecta y emite un 0 si detecta, se cambia por un sensor tactil, (o de lluvia o de cualquier cosa que haga 1 o 0)  
[![2025-10-23 13_29_13-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-13-29-13-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-13-29-13-whatsapp.png)  
</p>

- SOLUCIÓN CON BLOQUES HOME [https://www.steamakersblocks.com/web/project/2523009](https://www.steamakersblocks.com/web/project/2523009)
- SOLUCIÓN CON CÓDIGO https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-8-2-dangerous-gas-alarm

# Project 9.1 Temperature and Humidity Tester

[![2025-10-23 13_25_25-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-13-25-25-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-13-25-25-whatsapp.png)

- SOLUCION POR BLOQUES [https://www.steamakersblocks.com/web/project/2523126](https://www.steamakersblocks.com/web/project/2523126)
- SOLUCION CON CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-9-1-temperature-and-humidity-tester](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-9-1-temperature-and-humidity-tester)

# Project 10.1 Open the Door

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/zlfVCRCNZ68" title="Project 10.1 Open the Door" width="492"></iframe>

- SOLUCIÓN CON BLOQUES [https://www.steamakersblocks.com/web/project/2523179](https://www.steamakersblocks.com/web/project/2523179)
- SOLUCIÓN CON CÓDIGO [https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-10-1-open-the-door](https://docs.keyestudio.com/projects/KS5009/en/latest/docs/Python/Python.html#project-10-1-open-the-door)

# RETOS Bluetooth

# Un poco de teoría Bluetooth

{{@7221}}

# Bluetooth en el ESP32

A diferencia del [Arduino que necesita un módulo exterior el HC06](https://libros.catedu.es/books/arduino-en-el-aula/page/conexion-del-modulo-bluetooth), el **ESP32 tiene el Bluetooth integrado**

Para inicializar el Bluetooth, STEAMAKERBLOCKS tiene instrucciones específicas, lo primero es definir un nombre a la señal Bluetooth para que los otros dispositivos (tu móvil) lo encuentre, por ejemplo en la figura ESP32 STEAMakers

[![2025-10-24 08_37_02-Mattermost Desktop App.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-24-08-37-02-mattermost-desktop-app.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-24-08-37-02-mattermost-desktop-app.png)

El bloque **Fijar timeout** significa que fijamos el tiempo en la transmisión de datos por bluetooth. Por defecto está fijado en 1000 ms pero podemos reducirlo a 100 ms como en la figura para que funcione más fluido.

# Reto de la APP hacia ESP32

##### <span style="color: rgb(22, 145, 121);">**Enunciado**</span>

Si recibe un código, que encienda el ventilador. Por ejemplo:

- si recibe un 1 que se encienda el ventilador.
- si recibe otro código, apaga el ventilador

Este enunciado parecido a otro del curso[ ESP32 en el aula](https://libros.catedu.es/books/esp32-en-el-aula/page/actividad-15-app-esp32app-serial-bluetooth-terminal)

##### <span style="color: rgb(22, 145, 121);">**Programa**</span>

El programa es sencillo: [https://www.steamakersblocks.com/web/project/2523984](https://www.steamakersblocks.com/web/project/2523984)

[![2025-10-24 08_37_02-Mattermost Desktop App.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-24-08-37-02-mattermost-desktop-app.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-24-08-37-02-mattermost-desktop-app.png)

[![2025-10-24 08_57_50-Mattermost Desktop App.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-24-08-57-50-mattermost-desktop-app.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-24-08-57-50-mattermost-desktop-app.png)

{{@7223}}

##### <span style="color: rgb(22, 145, 121);">**El resultado**</span>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="715" src="https://www.youtube.com/embed/zlHzJxNET24" title="De la APP hacia ESP32" width="402"></iframe>

# Reto APP y ESP32 BIDIRECCIONAL

##### <span style="color: rgb(22, 145, 121);">**Enunciado**</span>

Ahora vamos a realizar la comunicación bidireccional. El propósito es que si recibe un código, que encienda y apague los leds, pero además vamos añadir comunicación hacia la APP del móvil, que nos envíe información de los sensores. Un ejemplo de enunciado sería:

- APP-&gt;ES`32  
    
    - si recibe un ON que se encienda el led
    - si recibe un OFF que se apague
- APP&lt;-ESP32: 
    - Que envíe a la APP el valor de la temperatura del DHT11.
    - Que envíe a la APP el valor del sensor llluvia.

Además lo vamos a complicar un poco más:

- que visualice los valores de temperatura y lluvia en el display LCD
- Que si lluvia es mayor de 50 que cierre la ventana (en caso contrario que este abierta)
- Que también lo diga el display LCD
- Y también la APP

Este enunciado parecido al programa en[ ESP32 en el Aula](https://libros.catedu.es/books/esp32-en-el-aula/page/actividad-16-app-esp32-enunciado-y-programa-steamakerblocks)

##### <span style="color: rgb(22, 145, 121);">**Programa**</span>

El programa ya es más complejo: [https://www.steamakersblocks.com/web/project/2524455](https://www.steamakersblocks.com/web/project/2524455)

[![2025-10-24 15_28_52-.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-24-15-28-52.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-24-15-28-52.png)

##### <span style="color: rgb(22, 145, 121);">**La APP en el móvil**</span>

La comunicación con la placa en este caso no es tan sencilla como en el caso anterior, no nos vale las APPs que hay en Google Play que envían un código y en paz, ahora tenemos que tener una APP que si reciben un código que hagan algo. Esto ya es **exclusivo** por lo tanto **hay que programar una APP que cumpla los requisitos. En nuestro caso lo hemos hecho en APP INVENTOR [https://appinventor.mit.edu/](https://appinventor.mit.edu/)**

<p class="callout danger">**NO ES EL OBJETIVO DE ESTE CURSO FORMARTE EN APP INVENTOR**  
Pero si no conoces el programa, te recomendamos que vayas a estos contenidos que de una manera muy fácil aprenderás a crear programas con APP INVENTOR y exportarlos al móvil  
[https://libros.catedu.es/books/app-inventor](https://libros.catedu.es/books/app-inventor)</p>

En la parte de **DESIGNER**

[![2025-10-24 15_30_25-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-24-15-30-25-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-24-15-30-25-whatsapp.png)

En la parte de **Blocks**

**[![2025-10-24 15_31_28-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-24-15-31-28-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-24-15-31-28-whatsapp.png)**

Puedes descargarte la APP e importarlo a APP INVENTOR : [HOMEBLUETOOTHBIDIRECCIONAL.aia](https://libros.catedu.es/attachments/240)

Aquí tienes los pasos de su realización

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" src="https://docs.google.com/presentation/d/e/2PACX-1vTRRqw_hTIQhfUlwZw7T_Uo6sTSvZxy5YgLfaDLBsM5Wb3J6PUrEU1F-PWef_FW0FaoyRjIC9hCGd8-/pubembed?start=false&loop=false&delayms=3000" width="960"></iframe>

##### <span style="color: rgb(22, 145, 121);">**La APP a tu móvil**</span>

{{@11546}}

##### <span style="color: rgb(22, 145, 121);">**El resultado**</span>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/m64C0wb3jKs" title="SMART HOME ESP32 BLUETOOTH BIDIRECCIONAL" width="492"></iframe>

# Qué es IoT

<p class="callout info">El **Internet de las cosas** (Internet of Thing IoT) describe objetos físicos —o grupos de estos— con sensores, capacidad de procesamiento, software y otras tecnologías que se conectan e intercambian datos con otros dispositivos y sistemas a través de internet u otras redes de comunicación.​ El Internet de las cosas se ha considerado un término erróneo porque los dispositivos no necesitan estar conectados a la Internet pública. Sólo necesitan estar conectadas a una red y ser direccionables individualmente</p>

[Fuente Wikipedia IoT Internet de las cosas CC-BY-SA](https://es.wikipedia.org/wiki/Internet_de_las_cosas)

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-uwb65wpc.jpeg)

[De Drawed by Wilgengebroed on FlickrTranslated by Prades97 CC BY-SA 3.0](https://commons.wikimedia.org/w/index.php?curid=32745149)

Estamos hablando de dispositivos que se conectan a internet de forma desatendida, por vía hardware (o mejor dicho firmware) a diferencia de un ordenador, tablet o móvil, donde tienes que configurar por software el dispositivo y hay un diálogo entre usuario y dispositivo sobre el uso de Internet (el software solicita tal página web, tales datos etc por voluntad del usuario o por diálogo con el usuario) Aquí los dispositivos están ya configurados de los datos que se comunican. Es decir "conectar y olvidar".

Piensa en la diferencia entre un enchufe inteligente y un ordenador, el primero es lo que se considera dentro de IoT

<p class="callout warning">**Desventajas**: El acceso a Internet de dispositivos caseros puede generar problemas a nivel mundial:  
[- el caso Mirai](https://hipertextual.com/2016/10/mirai-ddos-internet-cosas)  
[- aspiradores que nos espían](https://laboratoriolinux.es/index.php/-noticias-mundo-linux-/software/38838-desarrollador-descubre-una-puerta-trasera-en-su-aspiradora-inteligente-posible-espionaje-y-control-remoto.html)</p>

##### <span style="color: rgb(22, 145, 121);">**IoT en los cursos de Aularagón**</span>

- **Blynk:** lo que nos gusta de esta herramienta es que es casi "instantánea" o "síncrona". Esto es imprescindible con ciertos robots como el **Rover Marciano con Arduino**. Necesitamos que "gire" para evitar un obstáculo, no podemos esperar !!!. Veremos con **BLYNK** un protocolo que entre el dispositivo electrónico (nuestro robot) y nosotros (en ordenador, en una APP en el móvil) la comunicación es instantánea, gracias a un servidor que hará de intermedio, que puede ser local (BLYNK LEGACY) o en Internet (BLYNK IoT). 
    - **Blynk legacy** es la que se va a trabajar en 
        - **[Rover Marciano con Arduino ](https://libros.catedu.es/link/7229#bkmrk-en-este-caso-a%C3%B1adire)**
        - **[Arduinoblocks en el aula](https://libros.catedu.es/books/arduino-en-el-aula)**
        - **[ESP32 en el aula](https://libros.catedu.es/books/esp32-en-el-aula)**
    - **Blynk IoT** es la que se va a trabajar con 
        - **[En ESP32 en el aula](https://libros.catedu.es/books/esp32-en-el-aula)**
        - [**En Smart Home ESP32**](https://libros.catedu.es/books/smart-home-esp32)
- **ThinkSpeak y SmartioSpace**
    - [Smart Agriculture Kit para Micro:bit](https://libros.catedu.es/books/smart-agriculture-kit-microbit/page/led-neopixel)
- **MQTT** El emisor envía datos, se almacenan en un servidor, y cuando puede, lo vuelca al cliente. Cliente y emisor pueden ser el dispositivo electrónico y nosotros o viceversa. Veremos que esto es lo que hace el protocolo **MQTT** y está tremendamente extendido por lo barato y fácil que es. Hace que los servidores no estén tan ocupados, por lo tanto hay varios proveedores que ofrecen este servicio gratuitamente. Hay robots como los que tienen la placa **TDR STEAM IMAGINA** que envía datos de temperatura, humedad, .. y pueden recibir datos pero no precisan de esta exigencia instantánea como un rover. 
    - [ESP32 EN EL AULA](https://libros.catedu.es/books/esp32-en-el-aula)
    - [**En Smart Home ESP32**](https://libros.catedu.es/books/smart-home-esp32)
- **TELEGRAM**
    - [ESP32 EN EL AULA](https://libros.catedu.es/books/esp32-en-el-aula)
    - [**En Smart Home ESP32**](https://libros.catedu.es/books/smart-home-esp32)
- **Arduino cloud IoT**
    - **[Arduino Alvik](https://libros.catedu.es/books/arduino-alvik)**
- **Cyberpi y mBot2**
    - [Iot con Cyberpi](https://libros.catedu.es/books/cyberpi-y-mbot2/page/iot)

# RETO IoT Blynk

# ¿Qué es Blynk?

{{@6255}}

# Blynk legacy y Blynk IoT

{{@7053}}

# Crear DASHBOARD en Blynk.io

{{@8625}}

# Programa en Steamakersblock

Ya tenemos :

- Template ID
- Template Name
- Token

Lo ponemos junto con los datos de nuestra Wifi

[![2025-10-23 22_40_13-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-22-40-13-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-22-40-13-greenshot.png)

Para los datos de la ESP32 Temperatura y humedad al template:

[![2025-10-23 22_48_34-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-22-48-34-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-22-48-34-greenshot.png)

Y para los datos de Template hacia el ESP32, el botón ventilador

[![2025-10-23 22_42_15-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-23-22-42-15-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-23-22-42-15-greenshot.png)

# Resultado

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="715" src="https://www.youtube.com/embed/Ps6bnVRFIcE" title="BLYNK SMART HOME ESP32" width="402"></iframe>

# RETO IoT Telegram

# Crear bot en Telegram

{{@10223}}

# Encontrar tu ID en Telegram

{{@10224}}

# Código para enviar y recibir

#### <span style="color: rgb(22, 145, 121);">**Bucle Inicio**</span>

1. Lo primero es conectar con la wifi
2. Y lo segundo conectar con el **Bot** que hemos creado, gracias al **TOKEN** con la instrucción **INICIAR API TOKEN**
3. Enviamos al **ID** un mensaje de bienvenida con las instrucción **Enviar a Chat ID .... Mensaje ... Formato ....**

[![2025-10-24 00_06_08-‎JavierArduino @ ‎Javier Quintana (6998).png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-24-00-06-08-javierarduino-at-javier-quintana-6998.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-24-00-06-08-javierarduino-at-javier-quintana-6998.png)

Hemos añadido algunos elementos de control, como el LCD

<p class="callout danger">**ATENCIÓN** si en el mensaje a enviar pones caracteres no standard, puede ser que no funcione. Por ejemplo a mi no me ha funcionado enviar ºC</p>

#### <span style="color: rgb(22, 145, 121);">**Enviar y recibir**</span>

En el evento **TELEGRAM - NUEVO MENSAJE RECIBIDO** se puede utilizar el comando **TELEGRAM MENSAJE** en el siguiente programa se puede ver como en la pantalla del LCD aparecerá quien es el remitente y qué mensaje

Luego envía la temperatura si el usuario de Telegram envía la palabra *temp*

[![2025-10-24 00_07_15-‎JavierArduino @ ‎Javier Quintana (6998).png](https://libros.catedu.es/uploads/images/gallery/2025-10/scaled-1680-/2025-10-24-00-07-15-javierarduino-at-javier-quintana-6998.png)](https://libros.catedu.es/uploads/images/gallery/2025-10/2025-10-24-00-07-15-javierarduino-at-javier-quintana-6998.png)

# Resultado

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="715" src="https://www.youtube.com/embed/ZWRA3l0D6sU" title="Telegram con Smart Home ESP32" width="402"></iframe>

# Creditos

Autor:

- CATEDU Octubre 2025 por Javier Quintana Peiró
- 

Cualquier observación o detección de error en [soporte.catedu.es](https://catedu.es/soporte-catedu/)

Los contenidos se distribuyen bajo licencia **Creative Commons** tipo **BY-NC-SA** excepto en los párrafos que se indique lo contrario.

[![image-1648462225402.gif](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648462225402.gif)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648462225402.gif)

[![image-1648462299882.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648462299882.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648462299882.png)

[![image-1648462361893.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648462361893.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648462361893.png)