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

Comunicador de planta

Componentes e suprimentos

Arduino MKR IoT Bundle
× 1

Aplicativos e serviços online

Zapier
API ThingSpeak

Sobre este projeto


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





Introdução


Como o poeta inglês William Wordsworth disse uma vez:

"Sua mente é o jardim, seus pensamentos são as sementes, a colheita pode ser flores ou ervas daninhas."

Manter suas plantas vivas pode ser um grande desafio, pois elas são muito ruins em comunicação.

Uma maneira de mantê-los felizes é trazer suas plantas com você, mas talvez você não queira arrastar esse cacto ou samambaia grande saindo dos bolsos de sua jaqueta de inverno. Além disso, a maioria das plantas não gosta do frio.

Depois de passar meses tentando nos comunicar com nossa planta aranha, desistimos e usamos os componentes MKR IoT Bundle para criar um dispositivo que analisa remotamente o bem-estar de qualquer planta.





Em poucas palavras:


Neste experimento, você aprenderá como proteger suas plantas e garantir que elas sobrevivam usando a magia do Arduino.

Ao monitorar a umidade, temperatura e luz, você pode ter certeza de que suas plantas estão felizes. Pode enviar e-mails e gráficos diariamente e notificá-lo de suas necessidades.





Componentes

  • sensor de temperatura TMP36
  • Fototransistor
  • Sensor de umidade faça você mesmo





Metas de aprendizagem

  • Apresentando o serviço de Internet Zapier
  • Envio de solicitações HTTP
  • Gerenciando relógios e alarmes em tempo real
  • Construindo um sensor de umidade faça você mesmo
  • Traçando valores com thingSpeak #ProTips
  • Estilize seu e-mail com HTML e CSS #ProTips
  • Teste APIs com PostMan #ProTips





Quer saber mais?


Este tutorial é parte de uma série de experimentos que o familiarizam com o MKR1000 e a IoT. Todos os experimentos podem ser construídos usando os componentes contidos no MKR IoT Bundle.
  • Travesseiro Amo você
  • Caixa de quebra-cabeça
  • Gato de Pavlov
  • O Nerd
  • Comunicador de planta





Configure o Zapier


Zapier é uma ferramenta de automação online que pode facilmente gerenciar as APIs de outros aplicativos para nós. É uma ótima ferramenta para combinar múltiplas tarefas ou se o aplicativo que queremos usar possui API complexa que não pode ser gerenciada por um Arduino.

No nosso caso, vamos usá-lo para enviar um e-mail com os dados recuperados do Arduino.

Siga estes poucos passos simples para criar seu próprio zap!

Para prosseguir, precisamos testar nosso gancho, primeiro copiando o URL fornecido e, em seguida, selecionando o botão Testar e revisar que aparece quando você pressiona Continuar. Adicione estes parâmetros ao URL:

custom_webhook_URL? temperatura =0 &umidade =0 &luz =0 &aviso =0

Agora basta copiar e colar este URL em uma nova página do navegador.

Você deve ver uma resposta como esta:

Parabéns! Você acabou de enviar uma solicitação http!

Isso é exatamente o que faremos com nossa placa Arduino. Mas em vez de colar esse URL em uma página do navegador, vamos enviá-lo diretamente para o servidor Zapier. Além disso, modificaremos os valores dos parâmetros que agora estão definidos como zero com os valores de nossos sensores.

Para uma maneira mais avançada de testar e trabalhar com API, dê uma olhada no #ProTip na parte inferior da página.

Depois de testar sua solicitação, você pode continuar criando o Zap.

Prossiga na edição com Faça isto ...

Verifique sua caixa de correio para ver o e-mail gerado por Zapier. Será da conta que você usou na primeira etapa da configuração do gmail.





Configure o Conselho


Para implementar todas as funcionalidades, vamos usar as seguintes bibliotecas:
  • WiFi101 // para se conectar à internet e verificar as redes
  • RTCZero // para gerenciar eventos acionados por tempo

Você pode baixá-los do gerenciador de biblioteca conforme explicado neste guia.

Para usar a API de Zapier, primeiro precisamos fazer upload dos certificados no MKR1000. Isso se aplica à maioria dos serviços online e APIs!

Faça upload do exemplo do Firmware Updater da biblioteca WiFi101 e adicione hooks.zapier.com para os domínios.
 > examples> WiFi101> FirmwareUpdater  

Se você estiver usando o Editor da Web do Arduino, esse recurso ainda não foi implementado e você precisa fazer isso por meio do Aplicativo de desktop Arduino.





Enviando solicitação HTTP


Agora estamos prontos para enviar a solicitação HTTP da placa Arduino.

Por enquanto vamos definir um valor arbitrário para o nosso parâmetro que mais tarde será substituído por valores reais do sensor.
  temperatura flutuante =22; umidade interna =150; luz interna =40; String warning ="Esta é uma mensagem de aviso"; warning.replace ("", "% 20");  

Observe que a string deve ser codificada , uma vez que os espaços em branco não podem ser enviados em uma solicitação HTTP. Todos os espaços em branco são substituídos pelo equivalente codificado % 20

Depois de configurar nossos parâmetros, chamaremos o send_email () função, que irá converter todos eles em Strings e irá reconstruir o mesmo URL que usamos antes para publicá-lo no servidor Zapier.

Preencha este esboço com sua credencial de WiFi e o pedaço de URL que você recebeu do Zapier e faça upload.
  #include  #include  const char * ssid =SECRET_SSID; // SSID (nome) da sua rede const char * password =SECRET_PSWD; // sua senha de rede String httpsRequest =SECRET_REQUEST; // seu URL Zapier const char * host ="hooks.zapier.com"; Cliente WiFiSSLClient; void setup () {Serial.begin (9600); while (! Serial); atraso (2000); Serial.print ("Conectando Wifi:"); Serial.println (ssid); while (WiFi.begin (ssid, senha)! =WL_CONNECTED) {Serial.print ("."); atraso (500); } Serial.println (""); Serial.println ("WiFi conectado"); } loop vazio () {temperatura flutuante =22; umidade interna =150; luz interna =40; String warning ="Esta é uma mensagem de aviso"; warning.replace ("", "% 20"); send_email (temperatura, umidade, luz, aviso); delay (20000)} void send_email (temperatura flutuante, umidade interna, luz interna, aviso de String) {// converter valores para String String _temperature =String (temperatura); String _moisture =String (umidade); String _light =String (luz); String _warning =aviso; if (client.connect (host, 443)) {client.println ("POST" + httpsRequest + "? temperature =" + _temperature + "&umidade =" + _moisture + "&light =" + _light + "&warning =" + _warning + "HTTP / 1.1"); client.println ("Host:" + String (host)); client.println ("Conexão:fechar"); client.println (); atraso (1000); while (client.available ()) {// Imprime no console a resposta do servidor char c =client.read (); Serial.write (c); } client.stop (); // Desconectar do servidor} else {Serial.println ("Falha ao conectar ao cliente"); }}  

Ele enviará um e-mail para o endereço que você escolher a cada 20 segundos.

Tenha cuidado com os pedidos, o Zapier permite apenas 100 pedidos grátis por mês.





RTC e alarmes


Podemos usar o relógio de tempo real do MKR1000 para enviar um e-mail todos os dias a uma determinada hora.

Este esboço definirá a hora e a data para 16h do dia 4 de dezembro de 2017 e, em seguida, disparará um alarme todos os dias às 16h01.

Observe que, uma vez que o alarme está associado a uma interrupção função não podemos incluir atrasos , mas podemos usar a variável booleana para disparar ações no loop ()
  #include  RTCZero rtc; // cria objeto RTC / * Altere esses valores para definir a hora inicial atual * / const byte segundos =0; minutos de byte const =0; horas de bytes const =16; / * Altere esses valores para definir a data inicial atual * / const byte day =4; const byte mês =12; ano const byte =17; bool email_already_sent =false; void setup () {Serial.begin (9600); while (! Serial); atraso (2000); rtc.begin (); // inicializa o formato RTC 24H rtc.setTime (horas, minutos, segundos); rtc.setDate (dia, mês, ano); rtc.setAlarmTime (16, 1, 0); // Defina a hora para o Arduino enviar o e-mail rtc.enableAlarm (rtc.MATCH_HHMMSS); rtc.attachInterrupt (alarmMatch); } void loop () {if (! email_already_sent) {// send_email (); email_already_sent =true; }} void alarmMatch () {// disparado quando o alarme dispara Serial.println ("Alarm Match!"); email_already_sent =false; }  





Sensor de umidade do solo faça você mesmo


Dois fios colocados no pote de solo formam um resistor variável, cuja resistência varia de acordo com a umidade do solo .

Esse resistor variável é conectado em uma configuração de divisor de tensão e o Arduino coleta uma tensão proporcional à resistência entre os 2 fios.

O que significa que quanto mais úmido for o solo, menos voltagem será medida no Arduino.

Usando o resistor de 1 Mega Ohm e dois fios, podemos criar nosso sensor DIY de umidade do solo!

Fazendo o upload do seguinte esboço, você pode começar a ler os valores do sensor, sugerimos que comece testando-o primeiro em um solo seco ee anote o valor que você leu.

Esse valor será usado para definir um limite para que o Arduino saiba quando suas plantas precisam de água e envie a você um e-mail de emergência .
  int umidadePin =A2; // Defina este limite de acordo com a resistência que você usou // A maneira mais fácil de calibrar este valor é testar o sensor em solo seco e úmido int limite =800; void setup () {Serial.begin (9600); while (! Serial); atraso (2000); } void loop () {Serial.println (get_average_moisture ()); atraso (5000); } int get_average_moisture () {// faça uma média de 10 valores para ser mais preciso int tempValue =0; // variável para armazenar temporariamente o valor da umidade para (int a =0; a <10; a ++) {tempValue + =analogRead (moistPin); atraso (100); } return tempValue / 10; }  





Adicionar temperatura e sensor de luz


Veja o esquema abaixo para conectar os dois sensores. Usaremos essas duas funções para ler os valores dos sensores:
  float get_temperature () {int reading =analogRead (A1); tensão flutuante =leitura * 3,3; tensão / =1024,0; // Imprime a temperatura em Celsius float temperatureC =(voltagem - 0,5) * 100; // convertendo de 10 mv por grau com deslocamento de 500 mV // Converter para Fahrenheit float temperatureF =(temperatureC * 9.0 / 5.0) + 32.0; temperatura de retornoC; } int get_light () {int light_value =analogRead (A0); return light_value; }  

Observe que você pode usar as unidades Fahrenheit retornando temperaturaF em vez de temperaturaC





#ProTip:Plote valores usando ThingSpeak


Para todos vocês maníacos por controle, aqui estão as instruções para traçar todos os dados coletados em um lindo gráfico como este:

Usaremos a plataforma ThingSpeak para traçar gráficos, siga estas etapas para começar.

Baixe a biblioteca ThingSpeak e vamos começar. Este esboço abaixo irá carregar os valores dos sensores para a nuvem a cada minuto, basta preencher suas credenciais WiFi e as chaves API do seu canal e fazer o upload.
  #include  #include  #include "ThingSpeak.h" const char * ssid =SECRET_SSID; // SSID (nome) da sua rede const char * password =SECRET_PSWD; // sua senha de rede WiFiClient ThingSpeakClient; não assinado long myChannelNumber =356392; const char * myWriteAPIKey =SECRET_WRITE_API; int lightPin =A0; // o pino analógico ao qual o sensor de luz está conectado int tempPin =A1; // o pino analógico do pino Vout (sentido) do TMP36 está conectado a int moistPin =A2; void setup () {Serial.begin (9600); while (! Serial); atraso (2000); Serial.print ("Conectando Wifi:"); Serial.println (ssid); while (WiFi.begin (ssid, senha)! =WL_CONNECTED) {Serial.print ("."); atraso (500); } Serial.println (""); Serial.println ("WiFi conectado"); ThingSpeak.begin (ThingSpeakClient);} void loop () {ThingSpeak.setField (1, get_light ()); ThingSpeak.setField (2, get_temperature ()); ThingSpeak.setField (3, get_average_moisture ()); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); Serial.println ("mensagem enviada para nuvem"); atraso (60.000); // envia valores a cada 1 minuto} float get_temperature () {int reading =analogRead (tempPin); tensão flutuante =leitura * 3,3; tensão / =1024,0; // Imprime a temperatura em Celsius float temperatureC =(voltagem - 0,5) * 100; // convertendo de 10 mv por grau com deslocamento de 500 mV // Converter para Fahrenheit float temperatureF =(temperatureC * 9.0 / 5.0) + 32.0; temperatura de retornoC; } int get_average_moisture () {// faça uma média de 10 valores para ser mais preciso int tempValue =0; // variável para armazenar temporariamente o valor da umidade para (int a =0; a <10; a ++) {tempValue + =analogRead (moistPin); atraso (10); } return tempValue / 10; } int get_light () {int light_value =analogRead (A0); return light_value; }  

No esboço completo do Pro abaixo você pode ver como anexar esse upload a um alarme RTC que é acionado a cada minuto.

Infelizmente o Gmail não nos permite incorporar gráficos e iframes no corpo do e-mail, mas podemos enviar o link por e-mail em um botão lindo, veja a dica abaixo.

Escolhemos ThingSpeak, mas existem inúmeras alternativas por aí! Dê uma olhada em Dweet.io e freeboard.io, por exemplo.





#ProTip:Estilize seu e-mail


Zapier nos permite incorporar algum código html e css no corpo do e-mail. Podemos usar isso para enviar e-mails bem estilizados como este:

Para obter este resultado, basta alterar o tipo de corpo para html na interface do Zapier e adicione seu HTML e CSS personalizados.

Copie e cole este modelo:
         

OLÁ!

Aqui está sua atualização diária sobre seu jardim e # 9752;

&# 9832; Temperatura:{{querystring__temperature}} C
&# 9748; Umidade:{{_querystring__moisture}}
&# 9728; Claro:{{querystring__light}}
{{querystring__warning}}
VEJA O GRÁFICO





#ProTip:Teste a API com PostMan


Trabalhar com solicitação HTTP pode ser difícil. Felizmente, existem várias ferramentas que podem nos ajudar a construir a URL de que precisamos.

Postman é um ótimo exemplo:

Basta colar a URL inicial fornecida pelo Zapier, adicionar parâmetros e enviar. Ele imprimirá a resposta do servidor e redigirá a URL para você.

Código

Esboço completo
#ProTips esboço completo

Esquemas


Processo de manufatura

  1. Componentes do circuito
  2. Fertilizante
  3. Circuito Integrado
  4. Apresentando a planta confiável
  5. MOSMusic
  6. O que é manutenção de fábrica?
  7. Aproveitando ao máximo as fábricas de produtos químicos a granel
  8. Componentes da máquina de perfuração
  9. Entendendo a manutenção da planta
  10. Componentes do motor de combustão interna