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

Monitor meteorológico MKR FOX 1200

Componentes e suprimentos

Arduino MKR Fox 1200
× 1
SparkFun Atmospheric Sensor Breakout - BME280
× 1
Sensor digital de luz de luminosidade TSL2561
× 1
HTU 1D
× 1

Aplicativos e serviços online

Arduino Web Editor
API ThingSpeak
Sigfox

Sobre este projeto


Observação:este tutorial pode estar desatualizado, vá aqui para uma versão mais atual.



Este projeto mostra como girar um MKR FOX 1200 e um monte de sensores I2C em uma estação meteorológica simples, movida a bateria.

Nós vamos usar:
  • o sensor de temperatura integrado (baixa precisão, ± 1 ° C)
  • Sensor HTU21D I2C para obter o nível de umidade
  • Bosch BMP280 para obter a pressão barométrica e a temperatura precisa
  • Sensor de luz TSL2561 para obter luminosidade





Configuração de hardware


As conexões de hardware para este projeto são bastante simples:todos os sensores usam interfaces I2C e funcionam a 3,3V.

Eles precisam de quatro fios do MKR FOX 1200:GND, 3,3V, SDA no pino 11 e SCL no pino 12. As mesmas quatro conexões podem ser compartilhadas em paralelo com os três sensores porque cada um deles tem um endereço I2C específico e, portanto, o bibliotecas e funções relevantes cuidarão de discriminar cada um deles.

Todo o projeto pode ser alimentado por duas baterias alcalinas AA ou AAA conectadas em série para gerar 3V e conectadas ao bloco de terminais de conexão a parafuso na placa.





Mensagens Sigfox


Como a rede Sigfox pode enviar no máximo 140 mensagens por dia, otimizaremos as leituras e enviaremos os dados em formato binário compacto.

A compactação de dados é importante porque o tamanho máximo de uma mensagem que você pode enviar é de 12 bytes. Um float ocupa 4 bytes, portanto, precisaremos compactar nossas leituras em uma representação menor.

O formato flutuante é muito amplo (você pode representar números tão grandes quanto 3,402823e + 38 (!)) E não precisamos de todo o espaço de dados; podemos então decidir os limites de segurança (com base em onde vamos implantar a estação) e restaurar a representação original no backend.





Configuração dos serviços em nuvem


Usaremos dois serviços em nuvem:
  • back-end Sigfox
  • Thingspeak

Registre sua placa no backend Sigfox usando PAC e ID fornecidos pelo exemplo FirstConfiguration (pode ser ignorado se você já fez isso para um projeto anterior).

Ambos precisam ser configurados para se comunicarem e interpretarem os dados no formato correto. Registre-se em ambos e crie alguns canais em Thingspeak. A configuração é relatada na imagem abaixo.

O primeiro canal que configuraremos será aquele que receberá os dados brutos ( readChannelID ), enquanto o segundo coletará os dados redimensionados ( writeChannelID )

É hora de fazer o upload do esboço usando o Arduino Create Editor. O esboço padrão permite que você teste extensivamente toda a infraestrutura antes de implantar no campo.

Lembre-se de declarar:
  oneshot =false  

quando você tiver certeza de que toda a configuração da infraestrutura de back-end está correta. O esboço aguarda a porta serial, portanto, não o lançaremos agora. Em vez disso, abra o back-end SigFox e configure um retorno de chamada:

Clique em TIPO DE DISPOSITIVO -> LISTA -> clique com o botão direito em seu quadro e clique em Editar.

Clique em CALLBACKS no menu do lado esquerdo:

Você verá uma janela como esta:

Clique em Novo botão no canto superior direito da janela:

Selecione Retorno de chamada personalizado:



As configurações relevantes são relatadas abaixo. Certifique-se de que o retorno de chamada esteja configurado como:
  • TIPO: DADOS / UPLINK
  • Canal: URL
  • Método Http: GET

Como carga útil personalizada, defina:
  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  

Isso representa a estrutura que empacotamos no esboço. Estamos atribuindo uma variável a cada campo, para que possamos referenciá-los no retorno de chamada HTTP.

Como padrão de URL, defina:
  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}  

Depois de configuradas, suas janelas devem ser assim:

Lembre-se de alterar a chave API api_key com aquele fornecido por Thingspeak como Write API Key para Channel1 .

Salvar e sair. Agora podemos abrir a porta serial e observar a primeira mensagem sendo enviada. Viva!





Do cru para o gráfico


A configuração que configuramos irá rotear nossos dados para o backend Thingspeak, mas eles ainda estão no formato bruto; para reconvertê-los, vamos usar a ferramenta de análise Thingspeak com este trecho
 % TODO - Substitua o [] pelo ID do canal para ler os dados de:readChannelID =[]; % TODO - Insira a chave API de leitura entre '' abaixo:readAPIKey ='T6UK7XO6A4H2AGT7'; % TODO - Substitua o [] pelo ID do canal para gravar dados em:writeChannelID =[]; % TODO - Insira a Chave de API de gravação entre '' abaixo:writeAPIKey ='XU4TGY261P6B5USN'; %% Read Data %% data =thingSpeakRead (readChannelID, 'ReadKey', readAPIKey, 'OutputFormat', 'tabela'); AnalyisedData =data; %% Analyze Data %% INT16_t_MAX =32767; UINT16_t_MAX =65536; analisadoDados. ('Temperatura1') =dados. ('Temperatura1') / INT16_t_MAX * 120; analisadoDados. ('Temperatura2') =dados. ('Temperatura2') / INT16_t_MAX * 120; analisadoDados. ('Pressão') =dados. ('Pressão') / UINT16_t_MAX * 200000; AnalyisedData. ('Light') =data. ('Light') / UINT16_t_MAX * 100000; analisadoDados. ('Umidade') =dados. ('Umidade') / UINT16_t_MAX * 110; %% Write Data %% thingSpeakWrite (writeChannelID, AnalyseData, 'WriteKey', writeAPIKey); %% Agendar ação:React -> a cada 10 minutos  

Substituindo os IDs de canal com o nosso, podemos finalmente converter de volta os dados brutos em valores reais. Lembre-se de agendar a ação de análise a cada 10 minutos usando React ou nunca será executado!





Finalmente temos nossos gráficos maravilhosos.




Código

WeatherMonitor

Processo de manufatura

  1. Estação meteorológica Raspberry Pi
  2. Monitor de clima
  3. Faça Monitor Ambilight usando Arduino
  4. Monitoramento de CO2 com Sensor K30
  5. Monitor de freqüência cardíaca usando IoT
  6. Arduino + ESP Weather Box
  7. Qual é sua altura?
  8. Sensor capacitivo de impressão digital com um Arduino ou ESP8266
  9. Arduino Cloud Sensor Tower
  10. Monitor de qualidade do ar faça você mesmo com sensor Sharp GP2Y1010AU0F