Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Conexión ESP32 con ThinkSpeak - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Conexión ESP32 con ThinkSpeak. Recibir temperaturas en gráfica
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
y
00:02:20
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
el
00:09:49
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:
- 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
- Ciclo formativo de grado básico
- 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