ESP8266 – Estación meteorológica inalámbrica con registro de datos en Excel

¿Alguna vez has querido tener tu propia estación meteorológica en casa? Con el ESP8266, un microcontrolador de bajo costo, ahora es posible. En este artículo te enseñaremos cómo crear una estación meteorológica inalámbrica que registre datos en Excel. ¡Sigue leyendo para descubrir cómo hacerlo!

En este proyecto estableceremos comunicación inalámbrica entre dos ESP y enviaremos datos de tres sensores a una hoja de cálculo de Excel. Este tutorial muestra una estación meteorológica inalámbrica con registro de datos que puede implementar en su hogar.

Este proyecto es una colaboración entre Yves Arbor y Rui Santos.

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Antes de continuar leyendo este proyecto, complete los siguientes tutoriales:

  • Comenzando con el ESP8266
  • Cómo hacer que dos ESP8266 hablen
  • Cómo flashear tu ESP8266 con NodeMCU

Si te gusta el módulo ESP WiFi y quieres crear más proyectos, puedes descargar mi libro electrónico “Domótica con ESP8266” aquí. ¡Vamos a empezar!

Resumen

Aquí hay un diagrama que describe exactamente cómo funciona todo en conjunto:

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Lista de artículos

Aquí está el hardware que necesita para construir la estación meteorológica:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

DS18B20 – Sensor de temperatura digital de un solo cable

En este proyecto usaremos esto Sensor de temperatura digital de un solo cable DS18B20. Ahora, antes de pasar a la parte de programación, aprendamos cómo conectar nuestro sensor de temperatura.

El DS18B20 puede funcionar de 3,0 V a 5,5 V, por lo que simplemente puede conectar su pin GND a GND y el pin VDD a 3,3 V desde ESP8266.

Luego conecte el pin DQ a IO04 en el ESP8266. Para subirlo a 3,3 V se requiere una resistencia pull-up de 4K7 ohmios en el pin DQ.

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Leer el valor ADC

Usaremos el pin ADC para leer un valor analógico, y cuando nos referimos al pin ESP ADC, a menudo escuchará estos diferentes términos indistintamente:

  • ADC (convertidor analógico-digital)
  • TRACTOR
  • Pin6
  • A0
  • pin analógico 0

Todos estos términos se refieren al mismo pin en el ESP8266 Esto se resaltará en la siguiente sección (consulte este artículo para obtener más información sobre el pin ADC).

Actualmente, TOUT (Pin6) tiene una precisión de 10 bits y su rango de voltaje de entrada es de 0 a 1,0 V cuando TOUT está conectado a un circuito externo.

Acceda al pin analógico ESP8266

Con el ESP-201 Acceder al ADC es muy simple: simplemente conecte un cable de puente al pin resaltado en la imagen a continuación.

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Flashear ambos ESP con NodeMCU

Usaremos el firmware NodeMCU, por lo que deberá actualizar sus ESP con el firmware NodeMCU.

Descargue el IDE de ESPlorer

Recomiendo usar ESPlorer IDE, un programa creado por 4refr0nt para cargar scripts a su ESP8266.

Siga estas instrucciones para descargar e instalar ESPlorer IDE:

1) haga clic aquí para descargar ESPlorer

2) Descomprime la carpeta

3) Ir a la carpeta principal

4) Ejecute ESPlorer.jar

5) Abre ESPlorer

Cargando un script a su ESP8266 (programador FTDI de 3.3V)

Los esquemas para subir scripts a un ESP son muy simples. Todo lo que necesita hacer es crear una conexión en serie entre su programador FTDI y su ESP8266 (repita los esquemas a continuación para el cliente y el servidor).

Aquí están las conexiones:

  • VCC – 3,3 V
  • Tierra – Tierra
  • Enviar recibir
  • RX-TX
  • GPIO 0-3,3V
  • GPIO 15 – TIERRA

Escribe los scripts de tus clientes

Hay tres scripts que debes cargar en tu cliente ESP8266:

Comience cargando el siguiente script y nombrándolo ContadorMax.lua. Es solo un número numérico 1 que cuenta un poco y ayuda a restablecer su placa si se pierde la conexión al servidor ESP.

1

Ver código sin formato

Cuando subes el ContadorMax.lua Se espera que el script dé el siguiente error:

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Para leer la temperatura en ºC, sube o sube el script a continuación Este script muestra la temperatura en ºF. Asegúrate de guardar el archivo en tu ESP con el nombre ds18b20.lua.

--------------------------------------------------------------------------------
-- DS18B20 one wire module for NODEMCU
-- LICENCE: http://opensource.org/licenses/MIT
-- Vowstar <[email protected]>
-- Dramatic simplification: Peter Scargill
--------------------------------------------------------------------------------

-- Set module name as parameter of require
local modname = ...
local M = {}
_G[modname] = M
--------------------------------------------------------------------------------
-- Local used modules
--------------------------------------------------------------------------------
-- Table module
local table = table
-- String module
local string = string
-- One wire module
local ow = ow
-- Timer module
local tmr = tmr
-- Limited to local environment
setfenv(1,M)
--------------------------------------------------------------------------------
-- Implementation – you don’t get any shorter than this
--------------------------------------------------------------------------------

function readNumber(pin)
        ow.setup(pin)
        ow.reset(pin)
        ow.write(pin, 0xCC, 1)
        ow.write(pin, 0xBE, 1)
        data = nil
        data = ""
        for i = 1, 2 do
            data = data .. string.char(ow.read(pin))
        end
        t = (data:byte(1) + data:byte(2) * 256) / 16
        if (t>100) then
        t=t-4096
        end
        ow.reset(pin)
        ow.write(pin,0xcc,1)
        ow.write(pin, 0x44,1)  
        return t          
end

-- Return module table
return M

Ver código sin formato

Finalmente, cargue el script principal en su ESP y asígnele el nombre init.lua.

-- Yves Arbour wireless weather station project with data logging to Excel sheets with Things Gateway
-- code based on the following
-- Rui Santos - ESP8266 Client
-- DS18B20 one wire module for NODEMCU 
-- Vowstar <[email protected]> 
-- Peter Scargill 
-- Wimp Weather Station by sparkfun Nathan Seidle

wifi.sta.disconnect()
wifi.setmode(wifi.STATION)
wifi.sta.config("test","12345678")
wifi.sta.connect() 
print("Looking for a connection")
temp=0
function readds18b20sensor()
    t=require("ds18b20.lua")   
   -- print(t.readNumber(2))  for debuging
    temp = (t.readNumber(2)) --GPIO 04
end

winDirection=0
gpio.mode(0,gpio.INPUT)
function readWindDirection ()
    windDirection = adc.read(0)
        if (windDirection < 26) then windDirection=90 --E
       --if (windDirection < 17) then windDirection=113      -- ESE
       --elseif (windDirection < 21) then windDirection=68   -- ENE
       --elseif (windDirection < 26) then windDirection=90   -- E
       --elseif (windDirection < 36) then windDirection=158  -- SSE
       elseif (windDirection < 43) then windDirection=135 --SE
       --elseif (windDirection < 60) then windDirection=203  -- SSW
       elseif (windDirection < 85) then windDirection=180 --S
       --elseif (windDirection < 98) then windDirection=23   -- NNE
       elseif (windDirection < 120) then windDirection=45 --NE
       --elseif (windDirection < 170) then windDirection=248  -- WSW
       elseif (windDirection < 210) then windDirection=225 -SW
       --elseif (windDirection < 275) then windDirection=338  -- NNW
       elseif (windDirection < 380) then windDirection=0 --N
       --elseif (windDirection < 500) then windDirection=293  -- WNW
       elseif (windDirection < 750) then windDirection=315 --NW
       elseif (windDirection < 1005) then windDirection=270 --W
       else windDirection=-1
       end
end
irqPin = 1  --GPIO5
windSpeed = 0
windClicks = 0
lastWindCheck = 0
function debounce (func)   
    local delay = 100000   
    return function (...)  
        now = tmr.now() 
        now = now - lastWindCheck               
        if now < delay then return end
        lastWindCheck = tmr.now()        
        return func (...)
    end
end

function windSpeedIrq ()    
    windClicks = windClicks+1 * 10000000
    print (windClicks)
end  
function calcWindSpeed ()
    local deltaTime = tmr.now () - lastWindCheck        
    windSpeed = windClicks / deltaTime
    print(deltaTime)              
    windSpeed = windSpeed * 1492 /10000 -- Replace " *1492/10000 " with " *24/100 " for Km/h instead of Mp/h
    windClicks = 0
    lastWindCheck = tmr.now()
end 
gpio.mode(irqPin,gpio.INT)
gpio.trig(irqPin,"down",debounce(windSpeedIrq))
      
file.open("counterMax.lua","r")
counter=(file.read())
file.close()
  tmr.alarm(0, 2000, 1, function()
   if(wifi.sta.getip()~=nil) then
          tmr.stop(0)
          print("Client IP Address:",wifi.sta.getip())
          cl=net.createConnection(net.TCP, 0)
          cl:connect(80,"192.168.4.1")
          tmr.alarm(1, 5000, 1, function()
          counter=counter+1       
       
        readds18b20sensor()            
        readWindDirection()
        calcWindSpeed()
        print (temp)
        print(windSpeed)
-- Next is the properly formated string that Things Gateway needs to show Date,Time,Wind speed,Wind direction and  Temp.    
  cl:send("XLS,write,Example,A"..counter..",%date%nXLS,write,Example,B"..counter..",%time%nXLS,write,Example,C"..counter..","..windSpeed.."nXLS,write,Example,D"..counter..","..windDirection.."nXLS,write,Example,E"..counter..","..temp)
  
  cl:on("disconnection",function(reconnect)
    file.open("counterMax.lua","w+")
    file.writeline(counter)
    file.close()
   end)
       end)
   else
         print("Connecting...")
       end
end)
function reconnect()    
wifi.setmode(wifi.STATION)
wifi.sta.config("test","12345678")
wifi.sta.connect()
end  

Ver código sin formato

Circuito cliente

Siga este circuito para crear su cliente ESP. Si está utilizando el ESP-12, puede ver los esquemas aquí:

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

El interruptor derecho, conectado a IO05, se utiliza para simular la velocidad del viento. Actualmente, el programa no proporciona la velocidad del viento en tiempo real, sino un valor medio de los últimos 5 segundos.

Así que no importa qué tan rápido presiones el interruptor correcto. Al presionar el interruptor derecho 5 veces en el período de muestreo de 5 segundos, se obtendrá un promedio de una vez por segundo, lo que da 1,492 MPH o 2,4 KMH (en este punto estamos usando la versión entera de NodeMCU, por lo que obtienes 1492 MPH y 24 KMH. Tienes que dividir por 100 y 10 en la tabla.

Escribiendo el script de tu servidor

Cargue el siguiente script en su ESP y asígnele un nombre init.lua.

-- Rui Santos - ESP8266 Server
-- Modified by Yves Arbour to ennable print string to go directly to an Excel sheet with Things Gateway

print("ESP8266 Server")
wifi.setmode(wifi.STATIONAP);
wifi.ap.config({ssid="test",pwd="12345678"});
print("Server IP Address:",wifi.ap.getip())
 
sv = net.createServer(net.TCP)
sv:listen(80, function(conn)
    conn:on("receive", function(conn, receivedData)
      --print("Received Data"..receivedData)
        print(receivedData)-- string "Received Data" removed...
        --Things Gateway ignores strings that do not start with proper command...
        --XLS in this case for Excel sheet        
    end)
    conn:on("sent", function(conn)
      collectgarbage()
    end)
end)

Ver código sin formato

Cambio de servidor final

Siga este circuito para crear su servidor ESP. Si está utilizando el ESP-12, puede ver los esquemas aquí.

ESP8266 - Estación meteorológica inalámbrica con registro de datos en ExcelCreamos una PCB personalizada para el ESP-201. Aquí están los detalles:

  • Cable amarillo: puede conectar GPIO 0 a GND para actualizar el firmware NodeMCU o a VCC para almacenar scripts en ESP
  • GPIO15 está cableado a GND
  • Botón de reinicio y resistencia pull-up de 10 K ohmios al pin RST (para reiniciar la placa, es necesario tirar del pin RST hacia abajo y luego volver a subirlo)

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Poniendo todo junto

Encienda ambos ESP y asegúrese de que el servidor ESP todavía tenga comunicación en serie con su computadora, ya que así es como publicará los datos en su hoja de cálculo de Excel.

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Descargar e instalar Things Gateway

Para este proyecto utilizamos Things Gateway, un software de Roberto Valgolio, para escribir datos en una hoja de cálculo de Excel y mostrar gráficos que se actualizan automáticamente en tiempo real.

Things Gateway es una aplicación para PC que conecta un microcontrolador y le permite:

  • Recuperar datos de archivos de Excel
  • Escribir archivos de Excel
  • Escribir archivos de registro CSV
  • Enviar correos electrónicos (si se cumplen ciertas condiciones)
  • Mostrar valores y gráficos (los gráficos son independientes de Excel)

Things Gateway también puede conectar un GPS y mostrar en pantalla:

  • Velocidad, rumbo, altitud y otra información de navegación.
  • Seguimientos en tiempo real en Google Maps

Ir a Puerta de enlace de las cosas sitio web, descargue e instale el programa. Este proyecto fue probado con la versión Beta4.

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Lanzando su aplicación Things Gateway

Iniciar la aplicación Things Gateway es muy fácil. Ir a Tu PC > Documentos > ThingsGateway y abre la aplicación.

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Luego sigue estas instrucciones:

  1. Ir a configuración pestaña
  2. Elegir Puerto COM serie su servidor ESP8266
  3. Configurar el puerto serie velocidad A 9600

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

demostración

Abre esto Tiempo real Tabulador y seleccione De serie a Excel.

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

¡Debería aparecer una hoja de cálculo de Excel y sus datos deberían aparecer allí cada pocos segundos!

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Sus datos se guardarán en la hoja de cálculo de Excel de muestra en esta carpeta:

ESP8266 - Estación meteorológica inalámbrica con registro de datos en Excel

Mejoras futuras

En este tutorial, configuramos un sistema básico para enviar datos de forma inalámbrica a una hoja de cálculo de Excel utilizando 2 ESP8266 y el software Things Gateway.

Utilice este ejemplo para explorar otras funciones de Things Gateway, como:

  • Gráfico autoactualizable en tiempo real (no depende de Excel)
  • Registro de datos en archivos CSV
  • Envío automático de correo electrónico cuando se cumplen condiciones personalizadas (viento fuerte a tantos km/h, temperatura demasiado baja… advertencia de fallo del sistema de calefacción o congelador no lo suficientemente frío, etc.)
  • Registro de datos en stream.txt, que se puede reproducir a velocidades de 0,1, 0,5, 1, 5, 10, 60 o 3600 veces más rápido.
  • La ruta GPS también se puede transmitir en el mapa de Google a la velocidad real o 0,1, 0,5, 5, 10, 60 o 3600 veces más rápido.

Un mayor desarrollo también podría incluir:

  • Otros sensores como el sensor de presión de aire bmp180
  • Sensores de luz
  • Sensor de humedad
  • Cualquier otro sensor digital o analógico que utilice multiplexación.

Tenga en cuenta que Things Gateway está diseñado para usarse con placas Arduino, pero siempre que envíe la cadena correcta en serie, se puede usar con cualquier placa.

Espero que esta guía te haya resultado útil y muchas gracias a Yves Arbor por crear este proyecto.

¿Tiene alguna pregunta o comentario? Deja un comentario a continuación.

Gracias por leer. Si te gusta esta publicación, probablemente también te gustarán las siguientes. Así que apóyame suscribiéndote a mi blog y a mi página de Facebook.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

ESP8266 – Estación meteorológica inalámbrica con registro de datos en Excel

En este proyecto vamos a establecer una comunicación inalámbrica entre dos ESPs y enviar datos de tres sensores a una hoja de Excel. Este tutorial muestra una estación meteorológica inalámbrica con registro de datos que puedes implementar en tu hogar.

Este proyecto es una colaboración entre Yves Arbour y Rui Santos.

Resumen

Aquí hay una Figura que describe exactamente cómo todo funciona en conjunto.

Lista de Piezas

Aquí está el hardware que necesitas para hacer la estación meteorológica:

  1. Recomendado: 2x ESP-12E
  2. Alternativa: 2x ESP-201 + 1x FTDI Programmer
  3. 1x DS18B20
  4. 1x Placa de pruebas (Breadboard)
  5. 3x Botones
  6. 3x Resistencias de 10k Ohm
  7. 1x Resistencia de 4700 Ohm
  8. 1x Potenciómetro de 10k Ohm

Puedes encontrar todas las piezas para tus proyectos al mejor precio en MakerAdvisor.com/tools.

DS18B20 – Sensor de Temperatura Digital de un solo cable

En este proyecto, vamos a utilizar el sensor de temperatura digital DS18B20 de un solo cable. Antes de entrar en la parte de programación, aprendamos cómo conectar nuestro sensor de temperatura.

El DS18B20 puede ser alimentado entre 3.0V y 5.5V, por lo que puedes simplemente conectar su pin de GND a GND y el pin de VDD a 3.3V del ESP8266.

Luego conecta el pin de DQ a IO04 en el ESP8266. Se requiere una resistencia de pull-up de 4k7 ohmios en el pin de DQ para llevarlo hasta 3.3V.

Leyendo el Valor ADC

Vamos a usar el pin ADC para leer un valor analógico. Al referirnos al pin ADC del ESP8266, a menudo escucharás estos términos intercambiables:

  1. ADC (Convertidor Analógico-Digital)
  2. TOUT
  3. Pin6
  4. A0
  5. Pin Analógico 0

Estos términos se refieren al mismo pin en el ESP8266 que se destaca en la siguiente sección.

Actualmente, TOUT (Pin6) tiene una precisión de 10 bits y su rango de voltaje de entrada es de 0 a 1.0V cuando TOUT está conectado a un circuito externo.

Accediendo al Pin Analógico del ESP8266

Con el ESP-201 es muy fácil acceder al ADC, simplemente conecta un cable puente al pin resaltado en la Figura.

Para más información sobre cómo implementar este proyecto, visita el siguiente enlace.

1 comentario en «ESP8266 – Estación meteorológica inalámbrica con registro de datos en Excel»

Deja un comentario