Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Construa uma Estação Meteorológica a Bateria com MKR FOX 1200

Componentes e Materiais

Arduino MKR FOX 1200 1
SparkFun Atmospheric Sensor Breakout - BME280 1
Sensor de Luminosidade Digital TSL2561 1
HTU21D 1

Aplicações e Serviços Online

Sobre o Projeto

Nota: Este tutorial pode estar desatualizado. Consulte esta versão mais atual.

Este projeto demonstra como transformar um MKR FOX 1200 e um conjunto de sensores I2C em uma estação meteorológica simples, alimentada por bateria.

Sensores Utilizados

Configuração do Hardware

A conexão dos sensores é bastante simples: todos utilizam interface I2C e operam a 3,3V. Apenas quatro fios são necessários a partir do MKR FOX 1200: GND, 3,3V, SDA (pino 11) e SCL (pino 12). Como cada sensor possui um endereço I2C único, as mesmas quatro conexões podem ser compartilhadas em paralelo entre os três sensores — as bibliotecas e funções cuidam da discriminação de cada um.

O projeto inteiro pode ser alimentado por duas pilhas AA ou AAA alcalinas conectadas em série (3V), ligadas ao bloco de terminais de parafuso na placa.

Mensagens Sigfox

Como a rede Sigfox permite no máximo 140 mensagens por dia, otimizamos as leituras e enviamos os dados em formato binário compacto. A compactação é essencial porque o tamanho máximo de uma mensagem é 12 bytes. Um float ocupa 4 bytes, então precisamos empacotar nossas leituras em representações menores.

O formato float é muito amplo (pode representar números até 3,402823e+38) e não precisamos de todo esse espaço. Definimos limites seguros baseados no local de instalação e restauramos a representação original no backend.

Configuração dos Serviços na Nuvem

Utilizamos dois serviços na nuvem:

Registre sua placa no backend Sigfox usando o PAC e ID fornecidos pelo exemplo FirstConfiguration (pode ser pulado se já feito em projeto anterior). Ambos precisam ser configurados para se comunicar e interpretar os dados no formato correto. Crie dois canais no ThingSpeak.

O primeiro canal receberá os dados brutos (readChannelID), enquanto o segundo coletará os dados reescalados (writeChannelID).

Configuração do Callback no Sigfox

  1. No backend Sigfox, clique em DEVICE TYPE → LIST, clique com botão direito na sua placa e selecione Edit
  2. No menu lateral, clique em CALLBACKS
  3. Clique no botão New no canto superior direito
  4. Selecione Custom callback
  5. Configure:

Custom Payload:

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 estrutura corresponde ao que empacotamos no sketch, permitindo referenciar cada campo no callback HTTP.

URL Pattern:

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}

Substitua api_key pela Write API Key do Channel1 fornecida pelo ThingSpeak. Salve e abra a porta serial para observar a primeira mensagem sendo enviada.

De Dados Brutos a Gráficos

A configuração roteia os dados ao ThingSpeak, mas ainda em formato bruto. Para reconvertê-los, use a ferramenta de análise do ThingSpeak com o snippet abaixo:

% TODO - Substitua [] pelo ID do canal de leitura: readChannelID = []; 
% TODO - Insira a Read API Key entre aspas: readAPIKey = 'T6UK7XO6A4H2AGT7'; 
% TODO - Substitua [] pelo ID do canal de escrita: writeChannelID = []; 
% TODO - Insira a Write API Key entre aspas: writeAPIKey = 'XU4TGY261P6B5USN'; 

%% Leitura dos Dados %%
data = thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table'); 
analyzedData = data; 

%% Análise dos Dados %%
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; 

%% Escrita dos Dados %%
thingSpeakWrite(writeChannelID, analyzedData, 'WriteKey', writeAPIKey); 

%% Agendamento: React → a cada 10 minutos

Substitua os IDs dos canais pelos seus e agende a ação de análise a cada 10 minutos usando React, ou ela nunca será executada. Pronto — você terá seus gráficos meteorológicos funcionando.

Código

WeatherMonitor

O código completo está disponível no repositório do projeto. Inclui a leitura dos sensores, empacotamento binário, envio via Sigfox e rotinas de baixo consumo para operação a bateria.

Processo de manufatura

  1. Construa Estação Meteorológica Raspberry Pi que Envia Dados Diários por Email
  2. Monitor Meteorológico – Estação Meteorológica DIY com Raspberry Pi e Upload para Dropbox
  3. Crie um Sistema Ambilight Impressionante para Monitor com Arduino
  4. Sensor K30 CO₂: Monitoramento de Qualidade do Ar Interno em Tempo Real
  5. Monitor de Frequência Cardíaca IoT em Tempo Real com Arduino e MAX30100
  6. Estação Meteorológica Compacta: Arduino Nano e ESP8266 com BMP280 e Display OLED/Nokia LCD
  7. Construa um Estadiómetro Digital: Acompanhe a Altura com Arduino e Sensor a Laser
  8. Integrando Sensor de Impressão Digital Capacitivo DFRobot com Arduino ou ESP8266
  9. Construa uma Torre de Sensores com Arduino Cloud: Monitoramento de Temperatura, Movimento e Gás
  10. Monitore a Qualidade do Ar com Precisão usando o Sensor Sharp GP2Y1010AU0F