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

Estação meteorológica de Internet minúscula

Componentes e suprimentos

Arduino Nano 33 IoT
× 1
Sensor meteorológico BME
× 1
0,96 em display OLED - 128x 64
× 1
Caixa de plástico 3,9 "x 2,7"
× 1
Cabo micro USB
× 1
Fios de ligação da placa de ensaio macho para fêmea
× 1
Carregador de parede USB
× 1

Ferramentas e máquinas necessárias

Pistola de cola quente (genérica)

Aplicativos e serviços online

Arduino IDE
Blynk

Sobre este projeto


Existem muitos aplicativos por aí que permitem que você conecte seu smartphone à Internet das Coisas. Eu tentei um monte deles e geralmente fico desapontado. Não é assim com Blynk! É realmente flexível, tem uma bela interface de usuário, funciona com todos os tipos de plataformas IoT e roda em Android e iPhone. Também é gratuito para amadores! Portanto, este é um projeto IoT relativamente simples que me permitiu explorar usando o Blynk.





Hardware


O hardware para este projeto é bastante simples. Usamos o Arduino Nano 33 IoT que lida com WiFi, uma placa de sensor BME280 com temperatura, umidade e pressão barométrica em uma unidade e um display OLED de 1 polegada. Todos os três funcionam bem com 3,3 volts. O display é obviamente opcional - o objetivo é fazer com que a estação meteorológica seja exibida no seu telefone. Mas torna muito mais fácil colocar tudo em funcionamento no display OLED primeiro, antes de lidar com Blynk e seu smartphone.

O esquema abaixo mostra como o hardware está interconectado. Tanto o sensor quanto a tela fazem interface com I2C. Em teoria, um I2C pode suportar vários dispositivos, mas as bibliotecas do sensor e do display tinham alguns conflitos, então acabei com duas portas I2C diferentes. O sensor usa a porta I2C padrão normal em analógica pinos 4 e 5. O monitor usa uma porta I2C secundária configurada em digital pinos 4 e 5. (E sim, eles estão invertidos - SDA é pino digital 5))

O hardware é envolto em uma pequena caixa de plástico com frente transparente, para que a tela possa ser visualizada. É plástico, pois precisa ser transparente para RF para WiFi. Ele precisa ser relativamente à prova de intempéries, mas o sensor é exposto ao clima externo por um orifício de 1/2 "na parte inferior. O sensor é conectado de forma que fique dentro desse orifício. Coloquei tudo dentro da caixa com água quente cola, mas você pode querer usar epóxi se estiver planejando colocá-la do lado de fora no calor do verão.

A alimentação é fornecida por meio do cabo USB. Dessa forma, ele pode ser programado ou alimentado por um único cabo que sai da caixa. Esse cabo pode ir para o seu computador durante a programação ou para uma fonte de alimentação USB plug-in quando em uso como uma estação meteorológica.





Software


O software em execução no Arduino é apenas um pouco mais do que um mash-up dos exemplos de biblioteca para o sensor, a tela e o Blynk. As bibliotecas envolvidas são a Adafruit_BME280_Library para o sensor, a biblioteca ss_oled para o monitor e a biblioteca Blynk para Blynk. Todos os três podem ser baixados diretamente do gerenciador de biblioteca do Arduino. Você pode querer experimentar cada uma dessas bibliotecas separadamente para obter uma melhor compreensão de cada uma.

Blynk tem vários exemplos de como configurar o hardware para fazer interface com ele:https://examples.blynk.cc/ Infelizmente, ele não lista o Nano 33 IoT como um de seus Arduino com suporte. Mas Blynk suporta WiFiNINA, que é usado pelo Nano 33 IoT e vários outros processadores Arduino. Portanto, adicionar esses dois inclui resolveu o problema:#include e #include
Uma outra adição que você verá em meu código é:#include Isso foi necessário para converter os números que saem do sensor em strings adequadas para exibição no display OLED. Uma pequena reviravolta nisso que me deixou um pouco triste foi que Blynk fica feliz em exibir os dados, sejam eles enviados como uma string ou um número. A princípio, enviei a Blynk a mesma string que estava enviando para o OLED. Funcionou bem para exibir os números, mas falhou totalmente quando adicionei os gráficos. Para fazer os gráficos funcionarem, Blynk obviamente precisava de números reais.

Nota - a pressão barométrica é normalmente relatada corrigida ao nível do mar. Em altitudes mais elevadas, a pressão barométrica obviamente cai, portanto, para corrigir os valores do sensor para sua leitura equivalente ao nível do mar, você deve adicionar um valor ao valor medido de aproximadamente 1 polegada Hg para cada 1000 pés de elevação. Em meu próprio código anexado, você verá que adicionei 1,3 para compensar minha própria elevação de 1300 pés acima do nível do mar. Você vai querer alterar este valor para corresponder à sua própria elevação. O 1 "Hg por 1000 pés é apenas uma estimativa aproximada. Se você deseja uma correção precisa, existem tabelas online que lhe darão a correção exata para a sua elevação.





Estação meteorológica sem Blynk


Neste ponto, você pode configurar o hardware e usar meu software attahed para exibir dados meteorológicos no display OLED. Basta comentar a linha Blynk.begin () na Configuração para que a estação meteorológica funcione sozinha. (Se você não comentar Blink.begin (), sem uma conexão válida com Blynk, o esboço irá parar ou travar nesse ponto.) Na próxima seção, falaremos sobre Blynk, como configurá-lo no esboço do Arduino e no smartphone para exibir a estação meteorológica no telefone.





Blynk


O Blynk é fácil de instalar no seu iPhone ou Android e vem com documentação detalhada:http://docs.blynk.cc/ Mas há tantas informações lá e tantas opções que achei as coisas um pouco confusas no início, então vou forneça aqui minha própria versão de como começar a usar o Blynk.

Usei o Blynk com um iPhone, mas acho que a experiência é semelhante o suficiente com o Android para que você possa seguir minhas instruções com qualquer um deles. Depois de ter o aplicativo, você precisa criar uma conta. A partir daí, dentro do aplicativo, você cria um novo projeto. Seu projeto é fornecido com um código de autenticação que é usado para vincular seu hardware ao projeto. Seu primeiro trabalho é conectar seu hardware através de WiFi ao seu projeto Blynk. Você pode fazer isso e testá-lo usando o esboço / programa padrão de Blynk chamado Blynk Blink em examples.blynk.cc, que permite ligar e desligar o LED integrado em seu Nano 33 IoT. Minha sugestão é que você experimente e faça funcionar antes de tentar fazer a estação meteorológica funcionar com Blynk.

Já falamos um pouco sobre como configurar nosso software para fazer com que nosso Nano 33 IoT funcione com Blynk. Se você abrir examples.blynk.cc, o padrão é uma placa ESP8266. Encontre #include e #include e substitua-os por #include e #include
Além de adicionar suporte WiFiNINA para o Nano 33 IoT, como já falamos, você precisa adicionar suas credenciais WiFi e o código de autenticação do seu projeto Blynk. Explicaremos como ligar e desligar o LED em um minuto, mas primeiro, vamos apenas verificar a conexão. Com o esboço do Blynk Blink configurado e em execução corretamente, abra o Serial Monitor do Arduino e você poderá observar a conexão sendo feita com o servidor em nuvem Blynk. Nesse ponto, podemos deixar de lado nosso hardware e trabalhar com o aplicativo Blynk no telefone.

Admito que achei o aplicativo Blynk um tanto confuso. O ícone no canto superior esquerdo permite que você selecione entre projetos e também saia da sua conta. O que está no canto superior direito permite que você entre e saia do modo Editar Projeto. O que o do meio faz depende de onde você está.

Para obter o controle de nosso LED integrado, precisamos entrar no modo de edição no aplicativo. Você verá uma tela em branco. Se você deslizar para a esquerda, ele se moverá para o lado para revelar uma caixa de ferramentas de widgets. Selecione um botão clicando nele e agora ele estará na tela principal. Clique nele e ele abrirá para configuração. Mova-o do modo push para o modo switch. Use a seleção de pino para selecionar o LED integrado - pino digital 13 em nosso Nano 33 IoT. Agora clique em OK e no ícone superior direito para sair do modo de edição. Seu botão agora deve controlar o LED.





Estação meteorológica com Blynk


Agora estamos prontos para conectar nossa estação meteorológica ao nosso projeto Blynk. Abra meu software anexado, descomente a linha Blynk.begin () em Setup, adicione o código de autenticação do projeto e as credenciais WiFi e faça upload para o Arduino.

Abra o Blynk no seu telefone. Se você seguiu este tutorial, seu botão ainda está lá e ainda deve ser capaz de ligar e desligar o LED integrado. Vá para o modo de edição, clique no botão para configurá-lo e exclua-o com Excluir na parte inferior. Agora vá para a caixa de ferramentas e selecione um valor etiquetado. Encontra-se na lista abaixo de Monitores. De volta à página de exibição, clique na exibição Valor rotulado para configurá-lo. Clique no pino e selecione Pino virtual V3. Explicaremos os pinos virtuais no próximo parágrafo. Agora, para o rótulo, onde diz "por exemplo, Temp" digite "Temp /pin.#/ deg.F". O. # Instrui o aplicativo a exibir uma casa após a vírgula decimal. Selecione o tamanho do texto grande e deixe Intervalo de atualização em Push e Cor do texto em Verde. Agora clique em OK. Seu valor etiquetado agora está quase pronto para exibir a temperatura, mas é muito estreito. Selecione-o lentamente - lento o suficiente para que não entre novamente no modo de configuração. O contorno da etiqueta acenderá. Agora pode ser esticado para exibir toda a linha. Ele também pode ser movido, embora não façamos isso aqui. Estique-o cerca de 3/4 da tela. Em seguida, saia do modo Editar e você deverá ver a temperatura exibida em seu telefone.

Antes de terminarmos de configurar o Blynk, vale a pena explicar algumas coisas que acabamos de ver ao configurar o visor de temperatura. Blynk usa uma ideia um tanto única chamada pinos virtuais. O widget de valor de exibição pode ser configurado para ler um pino analógico em nosso processador ou para ler se um pino digital é alto ou baixo. Porém, na maioria das vezes, queremos exibir o conteúdo de uma variável. Fazemos isso atribuindo a essa variável um número de pino virtual e, a partir de então, o aplicativo Blynk fará referência a essa variável por seu número de pino virtual. Portanto, no meu software, você verá um local onde atribuí a temperatura em Fahrenheit ao pino virtual V3.

Outra ideia de Blynk que vale a pena mencionar rapidamente é o intervalo de atualização que deixamos no modo Push. Isso significa que o esboço do Arduino está empurrando os dados, em nosso caso atualizando temperatura, umidade e pressão barométrica uma vez por minuto. Mas Blynk também oferece suporte a um método Pull, em que o aplicativo Blynk define o intervalo e interroga o hardware em busca de novos dados.

Então, agora vamos terminar de exibir nossa estação meteorológica em Blynk. Você precisará de mais dois visores de valores rotulados, um para umidade em% (pino virtual V4) e um para pressão em "pol. HG" ou polegadas de mercúrio (pino virtual V5). Para torná-lo parecido com o meu, você vai querer umidade em dourado e pressão em vermelho. Para umidade, mostrei uma casa após a vírgula; para pressão, mostrei duas casas após a vírgula decimal.

Se agora você tem as três exibições de valor etiquetado mostrando temperatura, umidade e pressão barométrica, você pode adicionar o gráfico de todas as três. Isso é feito com a adição de um widget SuperChart. Primeiro, estique-o para baixo para que preencha o resto da tela. Em seguida, clique nele para configurar. Ativei Mostrar valores do eixo x e escolhi as resoluções ao vivo, 1 hora, 6 horas, 1 dia, 1 semana, 1 mês. e 3 meses. Precisamos de três fluxos de dados - um para cada uma de nossas 3 variáveis. Para configurar cada fluxo de dados, clique no ícone à direita dele. Precisamos selecionar novamente o pino virtual para cada um. Para a escala do eixo y, escolha a altura. Em seguida, para temperatura, defina a altura para 67 - 100. Para umidade, defina a altura para 34 - 66. Para pressão, defina a altura para 0 - 33. Defina as cores para corresponder aos valores rotulados. Ative Mostrar eixo Y. É sobre isso. Saia do modo de edição e a tela do telefone deve ser parecida com a minha. Demora um pouco para o gráfico começar. Para resultados rápidos, veja ao vivo ou resolução de 1 hora.

Mais um recurso do Blynk que você pode querer saber é compartilhar seu projeto Blynk concluído com outros smartphones, para que mais de um telefone possa visualizar a estação meteorológica. Para iniciar o compartilhamento, coloque seu projeto no modo Editar e clique no ícone superior central para Configurações do projeto. Ative o Compartilhamento e gere um link. Ele fornecerá um código QR que você pode enviar por e-mail ou compartilhar de outra forma. O novo usuário precisa do aplicativo Blynk, mas não de uma conta no Blynk. O aplicativo de um usuário não registrado tem um link para carregar o código QR do projeto Blynk de outra pessoa. É isso.

Esta foi uma introdução bastante limitada a Blynk, mas deve ser um bom lugar para começar. Mencionei anteriormente que o Blynk é gratuito - bem, quase é. Tanto os widgets quanto o compartilhamento consomem pontos que Blynk chama de energia. Acho que você ganha 2.500 pontos grátis para começar. Isso é mais do que suficiente para fazer este projeto de graça. Mas compartilhá-lo ou acrescentá-lo pode fazer com que você fique sem energia de Blynk. Gastei $ 6 para obter 5000 pontos adicionais. Você pode precisar gastar alguns dólares com o combustível de Blynk se quiser fazer outros projetos com Blynk.

Código

  • Estação meteorológica Tiny Internet
Estação meteorológica Tiny Internet Arduino
Com WiFi e Blynk para Smartphone
 / * Este esboço é para o Arduino Nano 33 IoTIt usa uma placa de sensor BME280Ele usa um display OLED de 128 x 64 de 0,96 polegadas. Ele se conecta por WiFi ao servidor de nuvem Blynk para exibição de dados meteorológicos em um smartphone * / # include  #include  #include  // Biblioteca BME280 # include  // usado para converter números meteorológicos em strings para exibição no OLED # include  // biblioteca OLED // Próximos dois includes necessários para fazer o Nano 33 IoT funcionar com Blynk # include  #include  char auth [] ="YourBlynkProjectCode"; char ssid [ ] ="YourWifiID"; char pass [] ="YourWiFiPassword"; Adafruit_BME280 bme; // use I2C interfaceAdafruit_Sensor * bme_temp =bme.getTemperatureSensor (); Adafruit_Sensor * bme_pressure =bme.getPressureSensor (); Adafruit_Sensor * bme_humidity =bme.getHumiditySensor # define OLE_PIND_ -1 define # RESPIND_ -1 define SDA_PIND_ -1 definir SDA_PIND_ -1 definir SDA_PIND_ -1DRID 5 * bme_humidity =bme. -1 # define FLIP180 0 # define INVERT 0 # define USE_HW_I2C 0 # define MY_OLED OLED_128x64 # define OLED_WIDTH 128 # define OLED_HEIGHT 64SSOLED ssoled; // instância do temporizador OLEDBlynkTimer; // instância do Blynk timervoid setup () {if (! bme.begin (0x76)) {// esperar até que o sensor seja detectado while (1) delay (10); } bme_temp-> printSensorDetails (); bme_pressure-> printSensorDetails (); bme_humidity-> printSensorDetails (); oledInit (&ssoled, MY_OLED, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 400000L); oledFill (&ssoled, 0x0, 1); Blynk.begin (auth, ssid, pass); // comente esta linha para operar a estação meteorológica sem Blynk timer.setInterval (60000L, myupdate); // executa myupdate uma vez por minuto myupdate (); // executa uma atualização inicial de exibição e dados para Blynk porque o loop principal espera um minuto} void loop () {Blynk.run (); // Blynk prefere executar sozinho no loop principal. timer.run (); // Todo o resto é tratado por meio do temporizador Blynk} // esta rotina é chamada pelo temporizador Blynk para atualizar o display OLED e enviar dados para Blynkvoid myupdate () {sensores_event_t temp_event, pressure_event, umidade_event; bme_temp-> getEvent (&temp_event); bme_pressure-> getEvent (&pressure_event); bme_humidity-> getEvent (&umidade_event); float ctemp =temp_event.temperature; // obtém a temperatura em centígrados float ftemp =32 + (9 * ctemp) / 5; // converter temp para fahrenheit float hum =umidade_event.relative_humidity; // obtém a umidade relativa do ar float ppress =pressure_event.pressure; // obtém pressão em mm float mpress =1.3 + ppress / 33.8939; // converta para polegada Hg e adicione 1,3 para corresponder à pressão barométrica // real relatada localmente. Você pode querer remover 1.3 e / ou adicionar seu próprio ajuste. char mytemp [8]; dtostrf (ftemp, 6, 2, mytemp); // converte temp em string char myhum [8]; dtostrf (hum, 6, 2, myhum); // converte a umidade em uma string char mypress [8]; dtostrf (mpress, 6, 2, mypress); // converte a pressão em uma string // atualiza a exibição OLED oledWriteString (&ssoled, 0,2,1, (char *) "Weather Station", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,2,3, (char *) "Temp =", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,50,3, (char *) mytemp, FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,105,3, (char *) "F", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,2,5, (char *) "Úmido =", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,50,5, (char *) myhum, FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,105,5, (char *) "%", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,2,7, (char *) "Press =", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,50,7, (char *) mypress, FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,105,7, (char *) "in", FONT_NORMAL, 0, 1); // envia novos dados meteorológicos para Blynk Blynk.virtualWrite (V3, ftemp); Blynk.virtualWrite (V4, zumbido); Blynk.virtualWrite (V5, mpress); } 

Esquemas


Processo de manufatura

  1. Circuito Integrado
  2. Estação meteorológica baseada no Raspberry Pi
  3. Estação meteorológica Raspberry Pi 2
  4. Estação meteorológica Raspberry Pi
  5. Junte-se ao IOT com sua estação meteorológica - CWOP
  6. Estação meteorológica V 2.0
  7. Estação de comando modelo Rail Digital DCC Arduino e aplicativo gratuito
  8. 6-Shooter:Estação de Mistura de Bebidas Arduino
  9. MotionSense
  10. Registrador de dados do balão meteorológico Arduino