Beruflich Dokumente
Kultur Dokumente
Dallas DS18B20
Pgina de inicio 2015 noviembre Construye un nodo WiFi de temperatura con el ESP8266 y el Dallas DS18B20
Pablo 25 de noviembre de 2015 Electrnica 0
,
Qu es el ESP8266
El ESP8266 es un pequeo microcontrolador de Espressif, de bajo coste y con Wifi
integrado. Su bajo coste y pequeo tamao lo hace ideal para dotar de conectividad Wifi a
cualquier sensor o actuador para el Internet de las Cosas. Adems podemos programarlo
utilizando Arduino IDE y muchas de las libreras que ya conocemos para Arduino, as que
utilizarlo es muy fcil.
Qu necesitas
En este post voy a utilizar un ESP-01. Es el circuito ms bsico que incorpora un
ESP8266, y con l podemos conectarnos a una red Wifi, actuar sobre dos pines digitales y
comunicarnos por el puerto serie.
Para programarlo necesitamos un conversor USB-serie que funcione a 3.3V. Esto ltimo
es muy importante ya que el ESP8266 no tolera ms de 3.6V en sus pines. Si tu conversor
USB-serie no puede funcionar a 3.3V, como alternativa puedes usar un conversor de niveles
TTL y una fuente de 3.3V.
Un sensor digital de temperatura Dallas DS18B20 y su resistencia pull-up, un pequeo
integrado para medir temperatura en tus proyectos. Es un sensor muy preciso, presenta un
Vamos a empezar programando un servidor web que responda con una cadena esttica
Hola mundo y despus haremos la lectura del sensor de temperatura. Haciendo los
sketches paso a paso podemos comprobar que cada parte funciona correctamente antes de
pasar a la siguiente, y evitaremos quebraderos de cabeza depurando errores.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
ESP8266WebServer server(80);
Por ltimo, antes de empezar a programar, definimos dos cadenas donde vamos a guardar el
nombre de nuestra red WiFi y la contrasea para que el ESP8266 pueda conectarse.
Sustituye MI_SSID y MI_PASSWORD por los de tu red WiFi:
Vamos a conectar el ESP8266 a nuestra red WiFi. Como es algo que va a ocurrir solo una
vez al inicio del programa, en setup() llamamos a la funcin para conectarnos, y
esperamos a que la conexin se haya realizado:
delay(500);
server.on("/", [](){
});
El primer argumento de server.on es una cadena (/) que indica que estamos creando la
respuesta del servidor cuando el navegador solicita la URL raz. El ESP8266 nos permite
definir comportamientos diferentes para subdirectorios de la URL, y as podramos
configurar diferentes respuestas para /sub-url-1, /sub-url-2, etc.
server.begin();
void loop(void){
server.handleClient();
Para acceder al servidor web necesitamos conocer su IP. Mi mtodo preferido es entrar en
la web de configuracin del router y buscarlo en la lista de dispositivos conectados, pero, si
no puedes hacerlo as, tambin puedes incluir el monitor serie en tu sketch para que mande
esta informacin a Arduino IDE. Para ello inicializa el monitor serie y al final
de setup() incluye la lnea Serial.println(WiFi.localIP());.
Abre tu navegador favorito, teclea la IP del ESP8266 y tiene que aparecerte algo como esto:
Incluso desde el
mvil!
void respondeTemperatura() {
No voy a entrar en detalles de cmo se utiliza el Dallas DS18B20 en Arduino IDE para no
repetirme alargar innecesariamente el post.
Una vez hecha la funcin, donde antes tenamos:
server.on("/", [](){
});
El sketch completo
Como no vamos a entrar en detalles de cmo se utiliza el Dallas DS18B20 en Arduino IDE,
y ya tenemos una idea de cmo funciona el servidor web en el ESP8266, deberamos ser
capaces de entender el cdigo completo del sketch:
#include <ESP8266WiFi.h>
#include
#include
#include
#include
<WiFiClient.h>
<ESP8266WebServer.h>
<OneWire.h>
<DallasTemperature.h>
// Crea un objeto OneWire para comunicar con dispositivos OneWire (no solo Dallas
DS18B20)
OneWire oneWire(ONE_WIRE_BUS);
/*
* Funcin de respuesta del servidor web.
* Responde con la temperatura de la forma:
* "Temperatura: 25 C"
*/
void respondeTemperatura() {
String respuesta = "Temperatura: "; // Respuesta del servidor
sensors.requestTemperatures(); // Solicita las temperaturas
respuesta += sensors.getTempCByIndex(0); // Aade la temperatura a la respuesta
void setup(void){
Serial.begin(9600); // No necesitamos el monitor serie, pero ayuda a encontrar la IP del
ESP8266
WiFi.begin(ssid, password); // Conectamos al WiFi
void loop(void){
server.handleClient(); // Espera solicitudes de los navegadores
}
view rawESP8266-WebServer-DallasDS18B20.ino hosted with by GitHub
Funciona! Ten en cuenta que la respuesta es una web que generamos en el momento de la
solicitud y que la temperatura no cambia en nuestro navegador automticamente. Tendrs
que recargar la pgina para actualizar su valor.