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

Sonda sem fio de umidade do solo com hélio e DFRobot

Componentes e suprimentos

Módulo Helium Atom Xbee
× 1
Ponto de acesso do elemento Helium
× 1
DFRobot Gravidade:Sensor analógico capacitivo de umidade do solo
× 1
Helium Arduino / adaptador mbed
× 1
Arduino UNO
× 1

Aplicativos e serviços online

Arduino IDE
Helium Dashboard

Sobre este projeto





Dê voz às suas plantas com um sensor sem fio de umidade do solo




Vamos encarar. As plantas morrem o tempo todo por falta de rega. Você está ocupado e essas samambaias não vão levantar a mão quando estiverem com sede. Portanto, para o entusiasta de plantas em movimento, este protótipo de sonda de umidade do solo é o seu ingresso para samambaias e ficus felizes e saudáveis.





O que vamos cobrir


De ponta a ponta, todo este guia deve levar cerca de 60 minutos. Aqui está o que iremos revisar:
  • Construindo sua sonda completa de umidade do solo usando o Sensor Capacitivo de Umidade do Solo do Robô DF, um Módulo de Prototipagem de Átomo de Hélio, um Adaptador Arduino de Hélio e uma placa Arduino (escolhemos o UNO);
  • Registrando seu elemento de hélio e módulo de prototipagem de átomo de hélio no painel de controle de hélio; e construir sua própria rede sem fio de área ampla e de baixo consumo;
  • Programação da sonda de umidade do solo por meio do IDE Arduino. Ao longo do caminho, também instalaremos o Hélio e ArduinoJson Bibliotecas Arduino;
  • Medindo e enviando dados de umidade do solo quase em tempo real de sua planta para o painel de hélio; e canalizando-o para um Canal HTTP Helium.

Tudo bem. Vamos lá. Temos samambaias para salvar.





Construindo sua sonda de umidade do solo


Primeiro, precisamos construir a unidade de detecção. Isso é rápido e fácil. Quando terminar, sua sonda completa deve ser semelhante a esta:

Para construir isso:
  • Primeiro, fixe seu Módulo de prototipagem Helium Atom no adaptador Helium Arduino e, em seguida, conecte esta unidade combinada à placa Arduino de sua escolha. Certifique-se de configurar o RX e TX jumpers em conformidade dependendo de qual placa você está usando. Detalhes completos sobre como fixar todas essas placas juntas, junto com as configurações de jumper corretas, podem ser encontrados aqui. Dê uma olhada, conclua e volte.
  • Em seguida, precisamos conectar a sonda real de umidade do solo ao adaptador Helium Arduino usando o cabo jumper de três fios fornecido com a sonda de umidade do solo do robô DF. As três cores dos fios são preto , vermelho e azul . No adaptador Helium Arduino, o preto fio se conecta a GND ; o vermelho fio se conecta a 5V ; e o azul fio se conecta ao ADO cabeçalho. Há um ótimo diagrama da equipe do DFRobot sobre como essa conexão funciona aqui. Nossa placa fica assim quando a fiação é feita corretamente:


  • Por último, conecte o conector branco do cabo de ligação à sonda de umidade do solo do robô DF. Embora isso possa ser um pouco complicado, ele deve se encaixar com o mínimo de esforço.





Implantando seu elemento de hélio


Agora é hora de construir sua própria rede de hélio. Isso leva cerca de 30 segundos. (Se você quiser saber mais sobre como um aplicativo de ponta a ponta é construído no Helium e como lidamos com o componente de rede sem fio, comece com esta visão geral da arquitetura.)

Para implantar o Elemento e criar cobertura de rede para seu (s) sensor (es) baseado em Atom, basta conectá-lo à alimentação e a uma porta Ethernet ativa usando os cabos fornecidos. ( Observação:se você tiver um Elemento de celular, usar a conectividade Ethernet é opcional, mas é recomendado como backup. ) Depois de conectado, você verá alguma atividade do LED. Seu elemento será conectado quando o LED frontal ficar verde ( sinalizando conectividade Ethernet ) ou verde-azulado ( para conectividade celular ) Você pode assistir a um pequeno vídeo sobre o Element e como conectá-lo aqui.





Registrando seu Helium Element e Atom no Helium Dashboard


Agora que nossa unidade de detecção está construída e sua rede Helium implantada, é hora de registrar seu hardware no Helium Dashboard. Dashboard é a interface de usuário hospedada do Helium para monitorar e gerenciar implantações de hardware conectado. Todo o hardware que o Helium envia já está registrado em nosso sistema, mas precisamos saber quem o está implantando.
  • Primeiro, crie uma conta Helium Dashboard se ainda não tiver feito isso.
  • Para registrar seu Atom, comece selecionando Novo Atom . Na IU, adicione um nome (por exemplo, Fern Saver ) e, em seguida, insira os quatro últimos de seu Endereço MAC e seu Código HVV de quatro dígitos . Clique em Salvar e pronto.
  • O registro do elemento é feito exatamente da mesma maneira. Selecione Novo Elemento, em seguida, forneça um nome, os quatro últimos de seu Endereço MAC e seu Código HVV de quatro dígitos . Além disso, certifique-se de inserir uma localização para o seu elemento para que o painel possa exibi-lo em um mapa.

Você pode verificar se seu Elemento está online olhando Status e Sinal no painel:






Implantando o Canal HTTP Helium


Uma das principais características da plataforma de hélio são os canais. Esses são conectores pré-construídos para serviços da web (como AWS IoT, Google Cloud IoT e Azure IoT) e protocolos (como MQTT e HTTP ) Com os canais, a Helium fez todo o trabalho pesado por você no que diz respeito à integração com um desses serviços ou protocolos da web. Para Fern Saver, nossa Sonda de Umidade do Solo, vamos criar um Canal HTTP. Isso nos permitirá canalizar dados para qualquer serviço da web que aceite dados sobre HTTP. Por exemplo, você poderia usar um Canal HTTP para enviar esses dados ao IFTTT e, por sua vez, receber um texto sempre que Fern Saver relatar umidade abaixo de um determinado nível.

Neste exemplo, vamos configurar um Canal HTTP que envia dados para requestb.in, um serviço da web gratuito e prático para testar serviços HTTP. Observe que a seguir, quando carregarmos o Sketch para o Arduino, faremos referência a este nome de canal, HTTP , no código para sabermos para onde enviar os dados.

Veja como é rápido e fácil configurar este canal:








Configurando seu Arduino IDE e fazendo upload do Sketch


Agora podemos passar à configuração de seu IDE Arduino e importar as bibliotecas necessárias. Para começar:
  • Certifique-se de ter baixado o IDE do Arduino mais recente. Obtenha aqui se necessário.
  • Precisamos então adicionar duas bibliotecas: Helium e ArduinoJson . Você pode adicionar bibliotecas de dentro do IDE acessando Sketch -> Incluir Biblioteca -> Gerenciar bibliotecas. Pesquise "hélio", selecione-o e clique em Instalar . Siga este mesmo processo de instalação para a biblioteca "ArduinoJson". (Precisamos dessa biblioteca porque a data de umidade do solo que registraremos está formatada como JSON.)

Feito isso, é hora de fazer alguma programação real do Arduino. O código-fonte completo do Sketch que iremos enviar pode ser encontrado aqui no GitHub. A seguir está o Soil_Humidity.ino completo esboço.
  / * * Copyright 2017, Helium Systems, Inc. * Todos os direitos reservados. Consulte LICENCE.txt para obter informações sobre a licença * * Fazer leituras de umidade usando o sensor de umidade capacitivo SEN0192 *. Instruções de fiação:* https://www.dfrobot.com/wiki/index.php/Capacitive_Soil_Moisture_Sensor_SKU:SEN0193 * * Instale as seguintes bibliotecas por meio do Sketch-> Gerenciar bibliotecas:* - ArduinoJson * - Helium * / #include "Board.h "#include  #include  #include  #include  // Este nome de canal deve corresponder ao canal que você implantou no Helium // Dashboard para ingeri-lo dados. #define CHANNEL_NAME "HTTP" // Atraso de um segundo #define CHANNEL_DELAY 5000 // Envia 60 ciclos (segundos) #define CHANNEL_SEND_CYCLE 12 Helium helium (&atom_serial); Canal do canal (&hélio); int channel_counter; void report_status (int status, int result =0) {if (helium_status_OK ==status) {if (result ==0) {Serial.println (F ("Succeeded")); } else {Serial.print (F ("Falha -")); Serial.println (resultado); }} else {Serial.println (F ("Failed")); }} void connect () {while (! helium.connected ()) {Serial.print (F ("Conectando -")); status interno =hélio.conectar (); report_status (status); if (helium_status_OK! =status) {delay (1000); }}} void channel_create (const char * channel_name) {int8_t result; status interno; do {// Certifique-se de que estamos conectados connect (); Serial.print (F ("Criando Canal -")); status =channel.begin (channel_name, &result); // Imprimir status e resultado report_status (status, resultado); if (helium_status_OK! =status) {delay (1000); }} while (helium_status_OK! =status || resultado! =0); } void channel_send (const char * channel_name, void const * data, size_t len) {int status; int8_t result; do {// Tente enviar Serial.print (F ("Sending -")); status =channel.send (data, len, &result); report_status (status, resultado); // Cria o canal se algum erro de serviço for retornado if (status ==helium_status_OK &&result! =0) {channel_create (channel_name); } else if (status! =helium_status_OK) {delay (1000); }} while (helium_status_OK! =status || resultado! =0); } void setup () {Serial.begin (9600); Serial.println (F ("Iniciando")); helium.begin (HELIUM_BAUD_RATE); channel_create (CHANNEL_NAME); channel_counter =0; } #define DRY_VALUE 536 // Tirado do ar #define WET_VALUE 303 // Tirado da água #define HUM_RANGE (DRY_VALUE - WET_VALUE) void loop () {Serial.print (F ("Reading -")); leitura flutuante =analogRead (A0); percentual flutuante =100 * (1 - (leitura - WET_VALUE) / HUM_RANGE); Serial.print (leitura); Serial.print ("-"); Serial.println (porcentagem); if (--channel_counter <=0) {StaticJsonBuffer  jsonBuffer; JsonObject &root =jsonBuffer.createObject (); root [F ("valor")] =leitura; raiz [F ("porcentagem")] =porcentagem; buffer char [HELIUM_MAX_DATA_SIZE]; size_t usado =root.printTo (buffer, HELIUM_MAX_DATA_SIZE); channel_send (CHANNEL_NAME, buffer, usado); channel_counter =CHANNEL_SEND_CYCLE; } atraso (CHANNEL_DELAY); }  

Com o Helium e ArduinoJson bibliotecas instaladas, crie um novo esboço ( Arquivo -> Novo de dentro do IDE do Arduino) e cole o código acima. Em seguida, com o pacote completo de hardware da sonda de umidade do solo conectado à sua estação de trabalho por meio de um cabo USB, clique em Upload botão.

Os LEDs em seu Módulo de Prototipagem Atom devem começar a piscar após alguns instantes. Este é o Atom se conectando à rede Helium (por meio do Elemento que implantamos anteriormente). Se o IDE do Arduino não apresentar nenhum erro ao enviar o código, isso foi bem-sucedido e a sonda de umidade do solo agora está gerando leituras.





Uma nota sobre os dados de umidade do solo


Conforme observado acima, este Sketch irá capturar dados de umidade do solo e codificá-los como JSON antes de enviar para a plataforma de hélio. Usando o Sketch acima, um ponto de dados será parecido com isto (como JSON ):
  {"valor":433, "por cento":55,5}  

É importante notar que o Sensor Capacitivo de Umidade do Solo por Gravidade DFRobot está, na verdade, capturando essas leituras como leituras analógicas entre uma leitura calibrada de seco e úmido. Você pode obter detalhes completos sobre como isso é implementado e calibrado aqui. Você pode querer ajustar um pouco a calibração.





Verificando a conectividade do sensor e os dados no painel de hélio


Agora que seu sensor está implantado, podemos verificar se ele está online e transmitindo dados. No Dashboard, podemos fazer isso de algumas maneiras, tanto por meio da IU do Atom vista para o sensor que você acabou de implantar.
  • Se o seu Atom estiver online, o painel mostrará seu Status e sinal , junto com vários outros metadados sobre seu status. Será algo parecido com isto:
  • Mais abaixo na mesma interface Atom, também exibimos um Log de eventos mostrando cada ponto de dados do sensor e se ele foi ou não transmitido com sucesso para um canal de hélio. Como observamos acima, esses são conectores pré-construídos para serviços da Web ou protocolos brutos. Anteriormente, implantamos um canal HTTP para sua organização Helium. E o esboço acima diz à sonda de umidade do solo para enviar dados para este canal - chamado HTTP . Neste exemplo ilustrado abaixo, no entanto, estamos enviando nossos dados para o Canal HTTP Helium:
  • Também fornecemos um Debug interface para cada Atom que exibirá suas leituras conforme elas chegam (uma vez que você habilitou esta opção). Aqui estão alguns dados de umidade do solo no visualizador de depuração do painel:









Próximas etapas e ajuda


Parabéns! Este é o fim deste guia. Agora você preparou sua samambaia para o futuro com uma sonda sem fio de umidade do solo. Este é um grande negócio. Suas samambaias, obrigado.



Se você quiser saber mais sobre o Hélio e como criar um protótipo de seus próprios sensores usando este hardware e software, comece aqui:
  • Documentação do desenvolvedor Helium
  • Helium Developer Slack
  • Fórum de desenvolvedores Helium


Código

  • Umidade_do solo.ino
Soil_Humidity.ino C / C ++
O Arduino Sketch completo para começar a enviar dados de umidade do solo de seu sensor para um canal de hélio.
 / * * Copyright 2017, Helium Systems, Inc. * Todos os direitos reservados. Consulte LICENCE.txt para obter informações sobre a licença * * Fazer leituras de umidade usando o sensor de umidade capacitivo SEN0192 *. Instruções de fiação:* https://www.dfrobot.com/wiki/index.php/Capacitive_Soil_Moisture_Sensor_SKU:SEN0193 * * Instale as seguintes bibliotecas por meio do Sketch-> Gerenciar bibliotecas:* - ArduinoJson * - Helium * / # include "Board.h "#include  #include  #include  #include  #define CHANNEL_NAME" Helium MQTT "// Atraso de um segundo # define CHANNEL_DELAY 5000 // Envie muito 60 ciclos (segundos) #define CHANNEL_SEND_CYCLE 12Helium helium (&atom_serial); Canal do canal (&helium); int channel_counter; voidreport_status (int status, int result =0) {if (helium_status_OK ==status) {if (result ==0) { Serial.println (F ("Sucesso")); } else {Serial.print (F ("Falha -")); Serial.println (resultado); }} else {Serial.println (F ("Failed")); }} voidconnect () {while (! helium.connected ()) {Serial.print (F ("Conectando -")); status interno =hélio.conectar (); report_status (status); if (helium_status_OK! =status) {delay (1000); }}} voidchannel_create (const char * channel_name) {int8_t result; status interno; do {// Certifique-se de que estamos conectados connect (); Serial.print (F ("Criando Canal -")); status =channel.begin (channel_name, &result); // Imprimir status e resultado report_status (status, resultado); if (helium_status_OK! =status) {delay (1000); }} while (helium_status_OK! =status || resultado! =0);} voidchannel_send (const char * channel_name, void const * data, size_t len) {int status; int8_t result; do {// Tente enviar Serial.print (F ("Sending -")); status =channel.send (data, len, &result); report_status (status, resultado); // Cria o canal se algum erro de serviço for retornado if (status ==helium_status_OK &&result! =0) {channel_create (channel_name); } else if (status! =helium_status_OK) {delay (1000); }} while (helium_status_OK! =status || resultado! =0);} voidsetup () {Serial.begin (9600); Serial.println (F ("Iniciando")); helium.begin (HELIUM_BAUD_RATE); channel_create (CHANNEL_NAME); channel_counter =0;} # define DRY_VALUE 536 // Tirado do ar # define WET_VALUE 303 // Tirado da água # define HUM_RANGE (DRY_VALUE - WET_VALUE) voidloop () {Serial.print (F ("Reading -")); leitura flutuante =analogRead (A0); percentual flutuante =100 * (1 - (leitura - WET_VALUE) / HUM_RANGE); Serial.print (leitura); Serial.print ("-"); Serial.println (porcentagem); if (--channel_counter <=0) {StaticJsonBuffer  jsonBuffer; JsonObject &root =jsonBuffer.createObject (); root [F ("valor")] =leitura; raiz [F ("porcentagem")] =porcentagem; buffer char [HELIUM_MAX_DATA_SIZE]; size_t usado =root.printTo (buffer, HELIUM_MAX_DATA_SIZE); channel_send (CHANNEL_NAME, buffer, usado); channel_counter =CHANNEL_SEND_CYCLE; } atraso (CHANNEL_DELAY);} 

Processo de manufatura

  1. Trabalho e aplicações do sensor de umidade do solo
  2. Controle de acesso com QR, RFID e verificação de temperatura
  3. Sensor de umidade do solo Raspberry Pi
  4. Aeroponia com Raspberry Pi e sensor de umidade
  5. Construindo robôs com Raspberry Pi e Python
  6. Liderando com Persistência e Perseverança
  7. Sensor Portenta e Termopar (com MAX6675)
  8. Controle do Servo Motor com Arduino e MPU6050
  9. u-blox LEA-6H 02 Módulo GPS com Arduino e Python
  10. Câmera digital padrão e IA para monitorar a umidade do solo