Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye una estación meteorológica MKR FOX 1200 alimentada por batería

Componentes y suministros

Arduino MKR Fox 1200 × 1
SparkFun Atmospheric Sensor Breakout - BME280 × 1
TSL2561 sensor digital de luminosidad × 1
HTU21D × 1

Aplicaciones y servicios en línea

Sobre este proyecto

Nota: Este tutorial podría estar desactualizado. Para una versión más actual, consulta este enlace.

Este proyecto muestra cómo convertir un MKR FOX 1200 y varios sensores I2C en una estación meteorológica simple alimentada por batería.

Sensores utilizados

Montaje del hardware

Las conexiones son muy sencillas: todos los sensores usan interfaz I2C y funcionan a 3,3 V. Necesitan cuatro cables desde el MKR FOX 1200: GND, 3,3 V, SDA (pin 11) y SCL (pin 12). Los tres sensores comparten las mismas cuatro conexiones en paralelo porque cada uno tiene una dirección I2C única; las bibliotecas correspondientes se encargan de discriminarlos.

El proyecto completo puede alimentarse con dos pilas alcalinas AA o AAA conectadas en serie (3 V) y cableadas al bloque de terminales de tornillo de la placa.

Mensajes Sigfox

La red Sigfox permite un máximo de 140 mensajes al día, por lo que optimizaremos las lecturas y enviaremos los datos en formato binario compacto.

El empaquetado de datos es crucial porque el tamaño máximo de un mensaje es 12 bytes. Un float ocupa 4 bytes, así que necesitamos empaquetar nuestras lecturas en una representación más pequeña.

El formato float es muy amplio (puede representar números tan grandes como 3,402823e+38) y no necesitamos todo ese espacio; podemos definir límites seguros (basados en dónde se desplegará la estación) y restaurar la representación original en el backend.

Configuración de los servicios en la nube

Utilizaremos dos servicios en la nube:

Registra tu placa en el backend de Sigfox usando el PAC y el ID proporcionados por el ejemplo FirstConfiguration (puedes omitir este paso si ya lo hiciste para un proyecto anterior).

Ambos servicios deben configurarse para comunicarse e interpretar los datos en el formato correcto. Regístrate en ambos y crea un par de canales en ThingSpeak. La configuración se muestra en la imagen siguiente.

Construye una estación meteorológica MKR FOX 1200 alimentada por batería
Configuración de canales ThingSpeak: canal de lectura (raw) y canal de escritura (datos reescalados)

El primer canal configurado recibirá los datos en bruto (readChannelID), mientras que el segundo recopilará los datos reescalados (writeChannelID).

Es hora de subir el sketch usando el Arduino Create Editor. El sketch por defecto te permite probar exhaustivamente toda la infraestructura antes de desplegar en campo.

Recuerda declarar:

oneshot = false

cuando estés seguro de que la configuración del backend es correcta. El sketch espera al puerto serie, así que no lo lanzaremos aún. En su lugar, abre el backend de Sigfox y configura un callback:

  1. Haz clic en DEVICE TYPE → LIST → clic derecho en tu placa → Edit.
  2. En el menú lateral, selecciona CALLBACKS.
  3. Pulsa el botón New (arriba a la derecha).
  4. Selecciona Custom callback.

La configuración relevante es:

Como Custom Payload, establece:

status::uint:8 temp1::int:16:little-endian temp2::int:16:little-endian press::uint:16:little-endian hum::uint:16:little-endian light::uint:16:little-endian lastMsg::uint:8

Esta estructura coincide con la que empaquetamos en el sketch. Asignamos una variable a cada campo para referenciarlas en el callback HTTP.

Como URL Pattern, establece:

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXX&field1={customData#temp1}&field2={customData#press}&field3={customData#temp2}&field4={customData#hum}&field5={customData#light}&field6={customData#status}&field7={customData#lastMsg}

Recuerda cambiar la api_key por la Write API Key que ThingSpeak proporciona para el Channel1.

Construye una estación meteorológica MKR FOX 1200 alimentada por batería
Ventana de callback configurada correctamente

Guarda y sal. Ahora puedes abrir el puerto serie y observar el primer mensaje enviado. ¡Listo!

De datos brutos a gráficos

La configuración anterior envía los datos al backend de ThingSpeak, pero aún están en formato bruto. Para reconvertirlos, usamos la herramienta de análisis de ThingSpeak (MATLAB) con el siguiente fragmento:

% TODO - Reemplaza [] con el channel ID de lectura: readChannelID = []; 
% TODO - Introduce la Read API Key entre comillas: readAPIKey = 'T6UK7XO6A4H2AGT7'; 
% TODO - Reemplaza [] con el channel ID de escritura: writeChannelID = []; 
% TODO - Introduce la Write API Key entre comillas: writeAPIKey = 'XU4TGY261P6B5USN'; 

%% Lectura de datos %%
data = thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table'); 
analyzedData = data; 

%% Análisis de datos %%
INT16_t_MAX = 32767; 
UINT16_t_MAX = 65536; 
analyzedData.('Temperature1') = data.('Temperature1') / INT16_t_MAX * 120 ; 
analyzedData.('Temperature2') = data.('Temperature2') / INT16_t_MAX * 120 ; 
analyzedData.('Pressure') = data.('Pressure') / UINT16_t_MAX * 200000 ; 
analyzedData.('Light') = data.('Light') / UINT16_t_MAX * 100000 ; 
analyzedData.('Humidity') = data.('Humidity') / UINT16_t_MAX * 110 ; 

%% Escritura de datos %%
thingSpeakWrite(writeChannelID, analyzedData, 'WriteKey', writeAPIKey); 

%% Programar acción: React → cada 10 minutos

Sustituyendo los channel IDs por los nuestros, convertimos los datos brutos en valores reales. ¡Recuerda programar la acción de análisis cada 10 minutos usando React o nunca se ejecutará!

Construye una estación meteorológica MKR FOX 1200 alimentada por batería
Programación de la acción React cada 10 minutos
Construye una estación meteorológica MKR FOX 1200 alimentada por batería
Gráficas de temperatura
Construye una estación meteorológica MKR FOX 1200 alimentada por batería
Gráficas de presión y humedad

Finalmente, obtenemos nuestras maravillosas gráficas.

Construye una estación meteorológica MKR FOX 1200 alimentada por batería
Construye una estación meteorológica MKR FOX 1200 alimentada por batería

Código

WeatherMonitor

El código completo está disponible en el repositorio del proyecto. Incluye la inicialización de sensores, empaquetado de datos, envío por Sigfox y gestión de bajo consumo.

Proceso de manufactura

  1. Construya una estación meteorológica con Raspberry Pi que envíe datos diarios por email
  2. Monitor Meteorológico – Estación Meteorológica DIY con Raspberry Pi y Subida a Dropbox
  3. Crea un Impresionante Sistema Ambilight para Monitor con Arduino
  4. Sensor K30 CO₂: Monitorización en tiempo real de la calidad del aire interior
  5. Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
  6. Estación meteorológica compacta: Arduino Nano y ESP8266 con sensor BMP280 y pantalla OLED/Nokia LCD
  7. Construye un estadiómetro digital: Controla tu altura con Arduino y sensor láser
  8. Integración del sensor de huella capacitivo DFRobot (ID809) con Arduino o ESP8266
  9. Construye una Torre de Sensores con Arduino Cloud: Temperatura, Movimiento y Gas
  10. Construye un monitor de calidad del aire preciso con el sensor Sharp GP2Y1010AU0F
  11. Estación meteorológica Arduino Nano: Sensores BMP280, DHT11, UV y RTC en OLED 0,96"