Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Conexión ESP32 con ThinkSpeak - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 29 de diciembre de 2026 por Francisco J. G.

3 visualizaciones

Conexión ESP32 con ThinkSpeak. Recibir temperaturas en gráfica

Descargar la transcripción

Buenas tardes. Tengo aquí otro esquema en el que únicamente lo que he leído en WorkWe 00:00:00
es una placa ESP32. Vamos a hacer ahora envío de datos. Vamos a simular una estación meteorológica, 00:00:11
pero sin sensor, sino que cada cierto tiempo le vamos a ir enviando una serie de valores que 00:00:20
serán las temperaturas y lo vamos a enviar a una página que va a ser 00:00:27
Thingspeak en el que nos va a permitir 00:00:31
que allí se pueda representar 00:00:35
por medio de una gráfica esos valores que vamos enviando. 00:00:37
La página de Thingspeak es esta en el que si yo 00:00:43
me pongo aquí donde tengo canales, entonces tenéis que 00:00:47
dar de alta en ella y una vez que da de alta en 00:00:51
en mis canales, veis yo tengo varios canales, yo puedo crear un nuevo canal 00:00:54
donde lo que quiero es que se conecte a esta página 00:00:59
y esos datos de temperatura me los vaya apareciendo en una gráfica 00:01:03
conforme los va enviando, yo puedo crear un nuevo canal como veis aquí 00:01:07
y le puedo llamar pues como le he llamado, estación meteorológica vamos a poner 00:01:11
1 y podéis poner aquí 00:01:15
la descripción, los datos que queréis que se vayan a enviar 00:01:19
Por ejemplo, temperatura. Y bueno, aquí tenéis un montón de campos que podéis añadir y una serie de datos que podéis añadirle. Bueno, para hacer el vídeo un poco más corto, vamos a salvar este nuevo canal que le llamamos Estación Meteorológica 1 para que veáis cómo es. 00:01:23
y le dais a ejecutar 00:01:39
y veis que ya nos aparece un dashboard aquí 00:01:42
y nos aparece una gráfica de temperaturas 00:01:43
que va a ir enviando 00:01:45
desde nuestro proyecto en Wotwi 00:01:47
podemos permitir que Wotwi 00:01:49
veis aquí, ahora explicaré el código 00:01:51
el servidor donde va a enviar 00:01:53
vhttp los valores 00:01:55
de las temperaturas sería este que 00:01:58
aparece aquí, que sería la página de Cinespeak 00:01:59
y luego lo único que necesitamos 00:02:02
es una API Key en el que 00:02:03
aquí tengo varias API Key 00:02:05
esta es la piqui que tenía del primer proyecto, esta sería la segunda, lo voy a poner 00:02:07
comentado y para que veáis que tendríamos que coger la nueva piqui 00:02:12
del nuevo canal que hemos generado, vamos a meternos aquí 00:02:16
este sería el canal y aquí vamos a ver 00:02:22
vamos a ver aquí de todos 00:02:28
los que tenemos, que serían estos de aquí 00:02:40
tenemos este, vamos a ver los canales que tenemos públicos, veis que por cada canal podemos permitir que esos datos sean enviados y puedan aparecer en la gráfica, yo doy mis canales, tengo los tres que he generado, este tercero es el que acabo de generar y en el que tenemos que poner su key, vamos a coger su, esta sería la API key para escribir ese dato en mi propia gráfica 00:02:45
tenemos que ponerlo en el propio código ahora luego explicaré cómo como en qué 00:03:13
consiste dicho código lo único que voy a hacer aquí es añadir el nuevo api key 00:03:17
sería esta de aquí voy a borrar todas las demás 00:03:25
le he hecho una nueva para que veáis cómo se hace y por medio de esta api key 00:03:28
lo que va a hacer y la dirección del servidor va a permitir que dicha página 00:03:33
web reciba mis datos y me lo vaya sacando en una gráfica. Lo que vamos a hacer a continuación es 00:03:38
ejecutar de nuevo el código, va a tardar un poquito y veremos cómo se conecta a Zinespeak 00:03:45
y cómo a través de Swapiki y ese canal que he creado va a permitir que los datos de temperatura 00:03:52
puedan ser enviados a Zinespeak y allí vayan saliendo en una gráfica. Esto lo va a hacer en 00:04:00
el código a través de cada 15 segundos. Aquí hemos puesto un delay de 15.000 milisegundos. 00:04:06
Luego explicaré todo el programa. Aquí nos ponemos en el dashboard y veis que no hay 00:04:11
ningún dato. No hemos recibido todavía ninguno porque esto todavía no se ha ejecutado. Ya 00:04:20
se ha ejecutado, se está conectando a la Wi-Fi y ahora se está conectando y nos ha enviado 00:04:24
un código HTTP 200 que indica que ha sido correcto. El primer dato que envía es con 00:04:27
el valor de 25. Vamos a ver si la gráfica se ha actualizado. Se ha actualizado a 25 00:04:32
grados que ha enviado nuestro propio 00:04:37
programa. Esto lo suyo sería 00:04:40
hacerlo con un sensor en el que 00:04:42
en un cultivo va recogiendo el sensor 00:04:43
cada uno de los datos y esos datos van pasando 00:04:45
a una página web. Esa página 00:04:47
veis ahora cada 15 segundos va actualizando 00:04:49
y veis lo que va haciendo es 00:04:52
que va realizando 00:04:53
la operación es muy 00:04:56
sencilla, lo único que va haciendo es 00:04:57
aquí lo tenéis 00:04:59
lo único que va haciendo es 00:05:01
incrementando un valor 00:05:08
de temperatura ese valor se va incrementando para que se vaya actualizando aquí veis que el primer 00:05:10
valor ha sido de 25 el segundo ha sido de 20 y el tercero ha pasado a ser también de temperatura de 00:05:18
20 luego veremos el programa lo modificaremos y veremos cómo cómo hacer que eso varía bien 00:05:25
Sabiendo ya que este programa se va a conectar con la placa SP32 a través de su Wi-Fi a la página de Cinespeak 00:05:33
y que permite enviar los datos, vamos a explicar el código y cómo se hace esto. 00:05:42
Sigue enviando datos y esto lo sigue actualizando, ¿lo veis? 00:05:47
WhatWe tiene, como es vía cloud, pues no podemos hacerlo directamente con un servidor local, 00:05:52
sino tendremos que hacerlo a través de un intermediario. 00:05:59
que lo veremos luego en el NGROC en la práctica final del paso 10. 00:06:01
Aquí lo único que hemos hecho es a través de esta página 00:06:10
que nos permite desarrollar proyectos IoT y tener un servidor 00:06:13
donde poder enviar los datos, lo hemos simulado aquí. 00:06:18
En cuanto al código es sencillo, lo único que comienza 00:06:22
es primero con una inclusión de las dos librerías 00:06:26
que necesitamos para que esto se lleve a cabo. 00:06:30
Una sería la de Wi-Fi, que ya lo vimos en el ejemplo anterior 00:06:33
para la conexión, y otro sería el htclient.h, 00:06:36
este es el fichero cabecera en el que luego veremos 00:06:39
los propios métodos que va a utilizar. 00:06:42
Entonces, en definitiva, vamos a ver un ejemplo completo 00:06:45
de proyecto IoT usando ESP32. 00:06:50
El objetivo es enviar datos a una plataforma IT en la nube, 00:06:52
en este caso hemos utilizado Cinespeak, 00:06:55
y visualizarlos en un dashboard o con gráficas en tiempo real. 00:06:57
Es un ejemplo muy típico y además totalmente compatible con WebWin. 00:07:01
Como veis, funciona. 00:07:05
Por ello, necesitamos WebWin para poderlo realizar 00:07:08
y hay que decir que con respecto a Cinespeak, 00:07:12
es una plataforma IoT que nos permite recibir datos desde dispositivos como el ESP32 00:07:15
y mostrarlos en gráficos como estáis viendo automáticamente. 00:07:22
Luego veremos por qué ha disminuido la temperatura en 5 grados y va sacando siempre el mismo valor. 00:07:24
Luego haremos la gráfica para que nos vaya generando una gráfica diferente. 00:07:35
Entonces lo muestra en gráficos automáticamente y es muy usada en proyectos educativos y prototipos de sensores, 00:07:41
como estaciones meteorológicas, como este es el caso. 00:07:47
esta habéis visto en la página de Cinespeak 00:07:49
es un canal con una gráfica 00:07:51
que aparece en la imagen, que ese sería el dashboard 00:07:53
el objetivo del proyecto, ¿cuál sería? 00:07:56
el ESP32 se conecta 00:07:58
a una red wifi, genera un dato 00:08:00
de ejemplo, en este caso una temperatura simulada 00:08:02
y lo envía periódicamente a Cinespeak 00:08:04
usando, en este caso 00:08:06
cada 15 segundos 00:08:07
¿lo veis? aquí lo he pospuesto 00:08:09
Cinespeak permite un envío cada 15 segundos 00:08:11
lo envía 00:08:14
periódicamente a Cinespeak usando el que? 00:08:16
la petición HTTP. Por eso necesitamos de la librería 00:08:17
HTTP client. Zinespeak lo muestra automáticamente en una gráfica 00:08:21
y poco más. Bien, vamos a ver en cuanto al código. 00:08:26
Hemos visto que lo primero que aparece aquí serían las dos librerías que necesitamos. 00:08:30
La primera librería sería la de Wi-Fi, en el que para conectarnos a una red Wi-Fi 00:08:34
y la segunda, la de http client.h, sería para enviar datos por 00:08:37
HTTP, que es lo que se usa para Zinespeak. 00:08:41
Bien, a continuación genera los datos de Cinespeak. Estos datos de Cinespeak que tenemos aquí serían tanto una constante que sería pues que nos aparece, veis que aquí esto es un puntero, bueno, esto es un puntero porque en C++ para crear una cadena lo crea así, esta sería una cadena de caracteres donde el puntero, se crea un puntero que se llama server. 00:08:45
Y este sería el servidor al que se va a conectar, que sería justamente Cinespeak. 00:09:12
También necesitamos una cadena, la Piqui, que es la que nos genera Cinespeak para que se pueda conectar a la propia página, que ya lo habéis visto anteriormente. 00:09:16
Bien, y por último necesitamos un valor decimal, almacenado una variable float, que sería temperatura y que como comienzo va a tener un valor de 25. 00:09:26
bien, pasamos al 00:09:35
voice setup, el voice setup es muy sencillo 00:09:37
se crea el monitor 00:09:39
en serie igual, con los 115.200 00:09:41
baudios y se inicializa 00:09:43
con dos valores, tanto con el valor 00:09:45
del SSID y con la password 00:09:47
SSID será 00:09:51
hemos puesto walkway west, que es la propia 00:09:53
wifi de 00:09:55
de walkway 00:09:57
y luego la password que hemos puesto 00:09:59
vacía, porque no 00:10:01
vamos a dejar que no necesite password. Para inicializar 00:10:03
la Wi-Fi hemos puesto el begin y necesita de esos dos parámetros, tanto 00:10:07
el ssid como el password. A continuación imprimimos conectando a Wi-Fi, que es lo que 00:10:11
ha puesto aquí, ¿veis? Y 00:10:15
luego hay que establecer si se conecta o no. 00:10:18
Para ello viene implícito la conexión a Wi-Fi. La conexión 00:10:24
a Wi-Fi la simula el propio programa Huawei. 00:10:27
a través de un while se compara el estado 00:10:30
de esa wifi y se dice si 00:10:34
está conectada o no, si no está conectada 00:10:36
pues entonces 00:10:38
para el programa durante medio segundo 00:10:39
y escribe un puntito 00:10:42
y así en el while hasta que 00:10:44
se conecte, una vez que se ha conectado 00:10:46
salda del while y por tanto pondrá que la wifi 00:10:48
ha sido conectada, aquí como lo ha hecho rápidamente 00:10:50
no ha sacado ningún 00:10:52
ha sacado directamente 00:10:53
bueno, ha puesto tres puntitos 00:10:56
que eso es lo que ha tardado, tres veces que ha pasado 00:10:58
y a continuación has conectado con la wifi 00:11:00
eso sería en cuanto al setup 00:11:05
sencillo, que tenemos en cuanto al loop 00:11:09
el loop igual, volvemos a poner un condicional 00:11:11
en el que cada vez que entre en el loop 00:11:14
quiere ver si el estado de la wifi, el método status 00:11:16
es igual a conectado, si es igual a conectado 00:11:20
entonces realizará todo esto, si no pues se lo saltará 00:11:23
lo primero que crea es un objeto HTTP client 00:11:25
que le llama http, acordado, la librería está aquí 00:11:29
y necesitamos esta librería para poder 00:11:32
crear este objeto 00:11:36
bien, con respecto 00:11:38
a url 00:11:44
aquí lo que va a hacer es crear una url 00:11:49
con el campo a enviar, la url que va a incluir 00:11:52
va a incluir la piki y el valor que queremos enviar 00:11:56
en este caso sería este valor, fill1, que sería la temperatura, que si veis aquí lo he puesto aquí dentro. 00:12:00
Esto lo que genera no es nada más que una cadena de texto, una cadena que sea toda la URL, 00:12:11
que sería el servidor, server, que sería esta cadena, luego le pone, porque lo va a enviar a través de un método get, 00:12:17
no post y pone api key igual a la api key 00:12:26
que hemos puesto aquí arriba que sería esta 00:12:30
a continuación le pone que añade un campo 00:12:33
que sería este y cuyo campo va a ser la temperatura que vamos a enviar 00:12:39
en forma de cadena, todo esto será por tanto una cadena 00:12:42
y lo va a englobar dentro de url 00:12:46
entonces como inicia el objeto http o http client con begin 00:12:49
y añadir siempre una URL con este método, que va a ser el método get. 00:12:54
Después, lo que utiliza es el método get de este objeto. 00:13:00
¿Para qué? Para ver, concretamente, 00:13:04
usamos esta petición get para enviar el dato a thin speak. 00:13:09
Lógicamente, cuando apliquemos el método get al objeto HTTP, 00:13:15
nos va a dar un código de HTTP, que será un entero. 00:13:19
Este nos puede dar un valor de 200, en el que el valor de 100 significa que el envío ha sido correcto. 00:13:23
Entonces, lo que hará después es imprimir el código HTTP y el código que ha recibido al aplicar el método GET al objeto HTTP. 00:13:28
Y por último, lo único que hace es cerrar ese envío o ese objeto HTTP. 00:13:36
Una vez que se ha realizado la simulación y ha enviado ese dato, lo que hace es que ahora lo que va a hacer es un incremento de la temperatura. 00:13:45
Esto que aparece aquí sería lo mismo que temperatura igual a temperatura más 10,5. Nos dice que si temperatura es mayor que 30, que ponga siempre temperatura de 20. Por eso, cuando aquí está enviando, está enviando constantemente un valor de temperatura de 20. ¿Por qué? Porque le está diciendo, por ejemplo, en el primer incremento aquí, ¿qué es lo que ha pasado? 00:13:52
En el primer incremento aquí lo que hace es que temperatura es igual a, como la he sumado 10,5, será igual a, como la he partido de 25, sería 35,5. 00:14:12
Al ser mayor de 30, entonces la temperatura siempre le pone un valor de 20. 00:14:26
Vamos a poner aquí un valor de 60 para que vaya incrementando, bueno, vamos a poner de 100 para que la vaya incrementando y nos genere una serie de picos. 00:14:32
El siguiente valor sería de 35,5, luego le suma 45,5, así sucesivamente y genera una pendiente. 00:14:44
Vamos, por tanto, como le he puesto mayor que 100, ahora nos dirá que si la temperatura es mayor que 100, 00:14:54
entonces le ponga un valor de 20, pero si no, permita estos incrementos. 00:14:58
Vamos a ejecutarlo de nuevo, va a tardar otro poquito. 00:15:03
Veis que la última línea es que cada lectura la realice cada 15 segundos. 00:15:10
cada 15 segundos va a volver otra vez al loop 00:15:15
y lo que hará es que se enviará, creará otro objeto 00:15:19
HTTP y con él la misma URL, pero ahora con un valor 00:15:22
de temperatura incrementado en 10,5 00:15:25
grados 00:15:28
vamos a ver si lo ejecuta 00:15:29
bien, veis que se está conectando la wifi 00:15:32
y veis que 00:15:36
vamos a ver, y aquí cuando se actualice 00:15:39
el último valor que hemos obtenido era de 20 00:15:45
Veis cómo ya ha pasado a 35, pasaría como tiene un valor de 20, le ha incrementado 10,5, tendría un valor de 25,5. Aquí le he puesto un valor de 25. Vamos a ver en la segunda lectura qué es lo que realiza. 00:15:49
Hasta que nos tengamos aquí un código HTTP 200 no habrá enviado otro valor. 00:16:06
Como espera 15 segundos, vamos a esperar 15 segundos a ver que ya ha enviado otro y a continuación se actualizará en Zinespeak y veis la ha generado de 35. 00:16:11
Si veis, no está aplicando los valores de, porque yo le estoy incrementando en 10.5, pero directamente él está aplicando valores de, está aplicando valores como si incrementara en vez de 10.5, incrementara en valores de 10. 00:16:21
este posible error, aunque esto es un float 00:16:40
vamos a ver si es que 00:16:45
porque la escala la estamos poniendo cada 10 00:16:49
vamos a ver si podemos modificar la escala del mismo, vamos a ver en el canal 00:16:56
que sería esta 00:17:01
y los datos importados 00:17:04
vale, y las características 25 00:17:14
si vemos algún error 00:17:20
hay porque no nos refleja 00:17:46
veis va incrementando, ves 45 00:17:48
aquí ya ha puesto, ah no, si si si 00:17:52
estaba bien, no lo había visto yo 00:17:56
era 25 así que aquí ya le he incrementado 00:17:58
en 10.5, lo veis, que sea entre 00:18:00
5.5 y luego pues aquí 00:18:02
ya como tiene que incrementarle 10.5 00:18:04
pasa a 46 que sería este, estaría 00:18:06
correcto, y esto sería 00:18:08
en definitiva cómo podemos hacer una 00:18:10
estación metodológica muy sencillita, nada más que enviando 00:18:12
datos a un 00:18:14
servidor como puede ser Cinespeak. 00:18:16
Repaso de todo el código. 00:18:18
Necesitamos dos librerías. 00:18:21
Serían las librerías, 00:18:22
para establecer la Wi-Fi y la 00:18:23
HTTP client para generar las peticiones 00:18:26
GET HTTP. 00:18:28
Necesitamos dos constantes, una que 00:18:30
aparezca el nombre de la Wi-Fi y otra que 00:18:32
sea que aparezca la password. Como 00:18:34
password lo vamos a dejar en blanco, pues 00:18:36
sería así. Y luego necesitamos otra 00:18:38
constante que sería un la url que sería la página donde se va a ser enviada que va a ser haciendo 00:18:40
speak puntocom barra update y necesitamos el api key para que el propio canal sepamos que a qué 00:18:44
canal tiene que enviarlo este sería la epique en el canal que nos lo ha dado el propio cuando la 00:18:52
cuando lo creí. Aquí estaba, vamos a verlo dónde estaba, en las settings. 00:18:59
No generaba, no, aquí, perdón, en API Keys. Esta es la que he puesto aquí. 00:19:06
Bien, una vez que tenemos también la API Key, tenemos que generar un valor float, 00:19:12
porque va a tener, a alojar valores decimales, que sería el de temperatura. 00:19:17
Iniciamos el monitor, creamos la Wi-Fi con Begin y con dos parámetros, 00:19:22
el SID y el password 00:19:28
y ponemos que conectado a wifi en el monitor 00:19:30
a continuación comprobamos el estado 00:19:32
si el estado de la wifi no está conectado 00:19:34
esto es una constante 00:19:37
WLConnected 00:19:37
es una constante en la que nos va a decir 00:19:40
si está conectado o no, si no está conectado 00:19:43
entonces espera medio segundo 00:19:45
imprime un puntito, vuelve otra vez 00:19:46
no está conectado o imprime otro puntito y así sucesivamente 00:19:48
él tarda poquito porque 00:19:51
solo imprime tres puntos, a continuación 00:19:52
wifi conectado, veis, sería aquí 00:19:54
Y luego ya en el loop es el que va a entrar de manera continua, de manera continua, de manera infinitas veces hasta que paremos la aplicación. Lo único que hace es que primero comprueba que el estado de la Wi-Fi está conectada, ¿veis? Y si está, entonces realizaría todo esto que aparece aquí. 00:19:56
Lo primero que hace es que crea un objeto de tipo HTTP client, que se llama HTTP, crea una URL, que sería el nombre del servidor, que es Cinespeak. 00:20:10
Como va a ser un envío en GET, va a ir a través de la URL, entonces el API key le pone el valor del API key y el campo, pues el de la temperatura. 00:20:19
A continuación, inicia el objeto HTTP con BEGIN y con la URL hacia donde va a ser enviado. 00:20:29
Y posteriormente vemos, al ejecutar el método GET de ese objeto HTTP, vemos qué tipo de código nos devuelve, que va a ser un código de tipo entero. Y lo imprime. Nos imprime un valor de código HTTP de 200, que quiere decir que se ha enviado de manera correcta. 00:20:36
cierra el objeto HTTP y finaliza el envío 00:20:55
a continuación lo que hace es que 00:20:58
le incrementa en 10.5 00:21:01
y compara la temperatura con el valor de 100 00:21:04
si es mayor de 100 le dice que vuelva al valor de 20 00:21:07
pero si no que le vaya incrementando 10.5 valores 00:21:11
esto lo va a realizar cada 15 segundos 00:21:14
puesto que hemos puesto aquí un delay de 15.000 segundos 00:21:17
si vemos el dashboard 00:21:20
veis que ha ido incrementando incrementando hasta que llega a 100 porque hemos dicho en 98.5 ya 00:21:23
como era mayor que 100 pasa el valor a 20 después de 20 pues va a incrementar no se veis 30 con 5 00:21:29
41 51 con 5 etcétera y veis que lo va actualizando en nuestro dashboard en cinespeak y esto es 00:21:35
básicamente lo que es una estación meteorológica muy sencilla y como previo a la estación 00:21:43
meteorológica que vamos a hacer en el proyecto final donde ya si nosotros 00:21:48
crearemos un propio un servidor propio y a través de negro conectaremos o 00:21:52
actuará como intermediario entre nuestro servidor y nuestra estación 00:21:57
meteorológica en el que incluiremos además un sensor que simulará un cultivo 00:22:00
en donde estamos en dicho cultivo capturando a través del sensor las 00:22:06
temperaturas que va teniendo cada un cierto tiempo y esas son enviados a 00:22:11
a través de una gráfica, a nuestro propio servidor. 00:22:14
Idioma/s:
es
Materias:
Informática
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado básico
      • Primer Curso
      • Segundo Curso
    • Ciclo formativo de grado medio
      • Primer Curso
      • Segundo Curso
    • Ciclo formativo de grado superior
      • Primer Curso
      • Segundo Curso
Autor/es:
Francisco José González Constanza
Subido por:
Francisco J. G.
Licencia:
Todos los derechos reservados
Visualizaciones:
3
Fecha:
29 de diciembre de 2026 - 20:47
Visibilidad:
Público
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
22′ 26″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
520.85 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid