⚠ Antes de cargar: saca el cable del puerto naranja COM
Si cargas el programa con el cable puesto, la carga falla y sale el error avrdude: stk500_getsync(): not in sync. Es lo que más frustra y es lo que más se olvida.
Qué vamos a hacer
En el Chisme 179 leímos los cinco sensores de la estación EducaCont por la consola serie. Hoy los mandamos a internet: crearemos un canal en ThingSpeak, daremos de alta un dispositivo MQTT, configuraremos los bloques de STEAMakersBlocks con tus datos y comprobaremos que llegan los cinco valores.
| Marcador | Qué es | De dónde sale |
|---|---|---|
| [TU_CHANNEL_ID] | El número de tu canal | Paso 1 |
| [TU_CLIENT_ID] | Nombre con el que tu placa se presenta | Paso 2 |
| [TU_USERNAME] | Usuario MQTT | Paso 2 |
| [TU_PASSWORD] | Clave MQTT | Paso 2 |
| [TU_WIFI] | Nombre de tu red Wi-Fi (2,4 GHz) | Tu red |
| [TU_CLAVE_WIFI] | Clave de esa red Wi-Fi | Tu red |
Material
Estación EducaCont 986 (Easy Plug) con los cinco sensores y el módulo Wi-Fi ESP-01 en el puerto COM; placa Keyestudio Easy Plug Control Board V2.0 (Arduino UNO); ordenador con Windows, STEAMakersBlocks Connector 6.0 y cuenta en steamakersblocks.com; cuenta en ThingSpeak y una red Wi-Fi de 2,4 GHz.
Antes de empezar: cinco ideas
1. La nube y el IoT
El Internet de las Cosas (IoT) son objetos con sensores que mandan sus datos por internet. La nube son ordenadores de otra gente (servidores) que guardan esos datos para que los veas desde cualquier sitio.
2. ThingSpeak, canal y campos
ThingSpeak (de MathWorks) es un servicio que recibe, guarda y dibuja datos. Un canal es tu cuaderno de datos; cada campo (field) es una columna del cuaderno. Nuestra estación manda cinco datos, así que usa cinco campos.
El orden importa: el campo 1 del canal tiene que recibir lo que los bloques mandan al «field1», y así con los cinco. Si no coinciden, la humedad saldrá dibujada como temperatura.
3. MQTT: broker, cliente, publicar
MQTT es la forma de hablar entre la placa y ThingSpeak. Piensa en un tablón de anuncios: el broker es el tablón (en ThingSpeak, mqtt3.thingspeak.com), tu placa es un cliente que se acerca al tablón, y publicar es pegar un papelito con un dato en el sitio que toca (tu canal y su campo).
4. Credenciales: por qué no se comparten
Cliente, usuario y clave son como la llave de tu casa: quien las tenga puede escribir en tu canal y ensuciar tus datos. Por eso las guardas tú, no las publicas y no las pegas en capturas.
5. La espera entre envíos
ThingSpeak, en la cuenta gratuita, solo admite una actualización de canal cada 15 segundos y un máximo de 3 millones de mensajes al año (preguntas de licencia de ThingSpeak). Por eso los bloques esperan entre publicaciones y entre mediciones.
En las dos formas están las mismas instrucciones. En A, cada paso se abre al marcar «He terminado» en el anterior. En B ves los 11 pasos a la vez y el programa completo ya relleno (solo faltan tus datos).
El programa completo (modo B)
Todo lo que no es personal ya está puesto. Rellena solo lo marcado [TU_…].
1 Crea el canal en ThingSpeak
🔒 Marca «He terminado» en el paso anterior para abrir este.
- Entra en thingspeak.mathworks.com e inicia sesión con tu cuenta de MathWorks (si no tienes, créala; la licencia gratuita es para uso no comercial).
- Pulsa Channels → My Channels → New Channel.
- En Name pon el nombre de tu estación.
- Activa y rellena los campos en este orden exacto: Field 1 =
humedad, Field 2 =temperatura, Field 3 =no2, Field 4 =particulas, Field 5 =co. - Baja y pulsa Save Channel.
- Arriba, junto al nombre, verás el Channel ID (un número). Apúntalo como [TU_CHANNEL_ID].
| Campo | Dato | Unidad |
|---|---|---|
| field1 | humedad | % |
| field2 | temperatura | °C |
| field3 | no2 | µg/m³ |
| field4 | particulas | µg/m³ |
| field5 | co | mg/m³ |
2 Da de alta el dispositivo MQTT
🔒 Marca «He terminado» en el paso anterior para abrir este.
- En ThingSpeak pulsa Devices → MQTT.
- Pulsa Add a new device.
- Ponle un nombre (por ejemplo,
estacion-educacont). - En Authorize channels to access elige tu canal y pulsa Add Channel.
- Deja marcado Allow Publish (publicar). No hace falta suscribirse.
- Pulsa Add Device.
- Aparecen tres datos: Client ID, Username y Password. Cópialos ahora (o descarga el archivo de credenciales si te lo ofrece): son [TU_CLIENT_ID], [TU_USERNAME] y [TU_PASSWORD].
- Guárdalos en un sitio seguro (gestor de contraseñas o un archivo tuyo que no se comparta).
3 Abre el proyecto de Easy Plug en STEAMakersBlocks
🔒 Marca «He terminado» en el paso anterior para abrir este.
- Abre el proyecto público: steamakersblocks.com/web/project/3005861 e inicia sesión con tu cuenta.
- Guarda una copia en tu cuenta para poder cambiarla (así el original no se toca). Si tu profesor te da el archivo
.abpdel proyecto, también puedes importarlo. - Comprueba que cada bloque Publicar de ThingSpeak lleva solo Channel ID y Field. No lleva «Write API Key».
ThingSpeak ya no pide la «Write API Key» para publicar por MQTT: ahora basta con las credenciales del dispositivo. Si ves ese campo, tienes una versión antigua: vuelve a abrir el enlace.
4 Rellena el bloque Inicializar
🔒 Marca «He terminado» en el paso anterior para abrir este.
- En el bloque Inicializar → Iniciar (ESP-01 WiFi) pon los valores de la tabla, uno por uno.
- Lo marcado [TU_…] lo escribes tú con tus datos; lo demás es igual para todos.
| Casilla | Valor |
|---|---|
| Rx / Tx | COM-TX / COM-RX |
| Baudios | 115200 |
| WiFi red | [TU_WIFI] |
| clave (Wi-Fi) | [TU_CLAVE_WIFI] |
| Broker | mqtt3.thingspeak.com |
| Puerto | 1883 |
| Cliente Id | [TU_CLIENT_ID] |
| Usuario | [TU_USERNAME] |
| Clave (MQTT) | [TU_PASSWORD] |
5 Rellena los cinco bloques de publicar
🔒 Marca «He terminado» en el paso anterior para abrir este.
- Busca el bloque para subir datos a la nube. Tiene cinco bloques Publicar, cada uno seguido de Esperar 2000 milisegundos.
- En los cinco, Channel ID = [TU_CHANNEL_ID].
- Comprueba el campo de cada uno en orden:
field1afield5, con la variable de la tabla.
| Bloque | Field | Valor (variable) |
|---|---|---|
| 1.º | field1 | humedad |
| 2.º | field2 | temperatura |
| 3.º | field3 | no2_ug_m3 |
| 4.º | field4 | particulas_ug_m3 |
| 5.º | field5 | co_mg_m3 |
6 Acorta la espera para las pruebas
🔒 Marca «He terminado» en el paso anterior para abrir este.
El bloque detener medición hace una espera larga entre una medición y la siguiente: por defecto, 15 minutos (repetir 15 veces esperar 60000 ms). Para probar sería un aburrimiento, así que lo acortamos.
- En detener medición, cambia repetir de 15 a 1 (esperará 1 minuto).
- Deja esperar 60000 ms como está.
- Cuando todo funcione (paso 11), lo volverás a poner en 15.
Prueba el cambio:
7 Abre el STEAMakersBlocks Connector 6.0
🔒 Marca «He terminado» en el paso anterior para abrir este.
- En el ordenador con Windows, abre el programa STEAMakersBlocks Connector 6.0.
- Comprueba que está en ejecución y déjalo abierto mientras trabajas.
- Si no lo tienes, descárgalo de steamakersblocks.com/web/site/abconnector.
8 Saca el cable del puerto COM
🔒 Marca «He terminado» en el paso anterior para abrir este.
- Desconecta el USB de la placa.
- Busca el puerto naranja COM de la placa: es el que va al módulo Wi-Fi.
- Aprieta la lengüeta del conector y saca el cable por el lado de la placa. El otro extremo se queda enchufado en el adaptador Wi-Fi.
- Vuelve a conectar el USB.
9 Conecta la placa, compila y carga
🔒 Marca «He terminado» en el paso anterior para abrir este.
- Con el Connector abierto (paso 7), conecta la placa desde la web. Si la web no la ve, mira primero que el Connector esté abierto.
- Revisa por última vez tus datos [TU_…] en los bloques.
¿Has sacado el cable del puerto naranja COM? Si sí, pulsa Compilar y cargar en STEAMakersBlocks y espera a que termine sin errores.
Si sale avrdude: stk500_getsync(): not in sync, casi seguro es que el cable sigue puesto: vuelve al paso 8.
10 Vuelve a enchufar el cable y reinicia
🔒 Marca «He terminado» en el paso anterior para abrir este.
- Enchufa de nuevo el cable en el puerto naranja COM hasta oír el clic.
- Reinicia la placa: desconecta el USB y vuelve a conectarlo.
Con el cable puesto y el programa ya cargado, la placa se conecta al Wi-Fi y empieza a publicar. Aquí no se mira la consola serie: el puerto COM comparte línea con el USB y se pisan. Se comprueba mirando ThingSpeak.
11 Comprueba que llegan los cinco gráficos
🔒 Marca «He terminado» en el paso anterior para abrir este.
- En ThingSpeak abre Channels → My Channels y entra en tu canal.
- Abre la pestaña Private View.
- Espera unos minutos y mira: deben aparecer cinco gráficos (Field 1 a Field 5), cada uno con sus puntos.
- Comprueba el orden: el Field 1 es la humedad, el Field 2 la temperatura, el 3 el NO2, el 4 las partículas y el 5 el CO.
Si faltan gráficos o no llega nada, mira la sección «Si algo falla».
Si algo falla
| Qué pasa | Causa más probable | Qué hacer |
|---|---|---|
avrdude: stk500_getsync(): not in sync | El cable sigue puesto en el puerto COM | Pasos 8, 9 y 10: desconecta el USB, saca el cable, carga, vuelve a enchufar y reinicia. |
| La web no ve la placa o no carga el programa | El Connector no está abierto | Abre el Connector 6.0 (paso 7) antes de tocar nada más. |
| No llega ningún dato | Wi-Fi mal escrito, red de 5 GHz o con portal de acceso, o cable sin enchufar tras cargar | Revisa [TU_WIFI] y [TU_CLAVE_WIFI], usa 2,4 GHz y comprueba el paso 10. |
| No llega ningún dato (y el Wi-Fi está bien) | Cliente, usuario o clave MQTT mal copiados, o Allow Publish sin marcar | Revisa [TU_CLIENT_ID], [TU_USERNAME], [TU_PASSWORD] y el dispositivo del paso 2. |
| Llegan solo algunos campos | Pausa demasiado corta o Channel ID/Field mal puestos | Comprueba los cinco bloques (paso 5) y, si hace falta, alarga la pausa de 2000 ms. |
| Un gráfico muestra otro dato | El orden de campos no coincide | Compara el canal (paso 1) con los Field de los bloques (paso 5). |
| Dejó de enviar tras días funcionando | Se cayó el Wi-Fi (el programa no reconecta, visto en los bloques, sin probarlo) | Reinicia la placa. |
Déjala funcionando: tiempos y lugar
Tiempos (986 Easy Plug)
| Ajuste | Pruebas | Funcionando |
|---|---|---|
| Detener medición: repetir × esperar 60000 ms | 1 vez (1 minuto) | 15 veces (15 minutos entre envíos, valor por defecto de EducaCont) |
| Pausa entre publicaciones | 2000 ms (comprobado: con 2 s llegan los cinco campos) | |
Cada ciclo manda 5 mensajes. Con 15 minutos son unos 480 al día; con 5 minutos, unos 1.440. La cuenta gratuita de ThingSpeak admite hasta 3 millones de mensajes al año (fuente).
Lista de comprobación antes de dejarla
Dónde montarla (necesita enchufe de 5 V y Wi-Fi de 2,4 GHz)
- Exterior bajo cubierto (porche, pasillo abierto, entrada): a la sombra, protegida de la lluvia, a 1,5–2 m de altura, lejos de cocina, cantina, escapes y zonas donde se fume.
- Cerca de la zona de coches o autobuses, para ver si se nota el tráfico en las horas de entrada y salida.
- Interior, en un aula: cerca de una ventana, sin sol directo ni radiador; sirve para ver el efecto de ventilar.
Consejos prácticos
- Habla antes con el coordinador TIC: las redes con usuario y contraseña o con portal de acceso no suelen funcionar con el ESP-01.
- Usa un cargador de móvil de 5 V y 1 A o más, no el USB de un ordenador que se apaga.
- Si deja de enviar, reinicia la placa (el programa no reconecta el Wi-Fi si se cae).
- Ponla donde el alumnado no pueda tocarla ni moverla.
Resumen: lo primero que hay que recordar
- Crea el canal con los campos en orden (humedad, temperatura, no2, particulas, co) y apunta [TU_CHANNEL_ID].
- Da de alta el dispositivo MQTT con Allow Publish y guarda [TU_CLIENT_ID], [TU_USERNAME] y [TU_PASSWORD] en un sitio seguro.
- Rellena los bloques con tus datos; las credenciales no se comparten ni se publican.
- Abre el Connector, saca el cable COM, carga, vuelve a enchufar y reinicia.
- Mira ThingSpeak, no la consola serie.