Índice:

Como construir um sistema de detecção de movimento com Arduino: 7 etapas
Como construir um sistema de detecção de movimento com Arduino: 7 etapas

Vídeo: Como construir um sistema de detecção de movimento com Arduino: 7 etapas

Vídeo: Como construir um sistema de detecção de movimento com Arduino: 7 etapas
Vídeo: Curso de Arduino para Iniciantes - Aula 01 - Primeiros Passos (Exemplo de um Vumeter) 2024, Julho
Anonim
Como construir um sistema de detecção de movimento com o Arduino
Como construir um sistema de detecção de movimento com o Arduino

Construa um contador de produção de movimento e presença usando um Feather HUZZAH programado com Arduino e alimentado por Ubidots.

A detecção efetiva de presença e movimento físico em Smart Homes e Smart Manufacturing pode ser muito útil em aplicações que vão desde soluções de Ambient Assisted Living (AAL) para idosos ou um Sistema de Contagem de Produção que alimenta um MES maior. Outros aplicativos para detecção de movimento e presença incluem, mas não estão limitados a:

  1. Automação de portas e portões
  2. Sensores de estacionamento para designar vagas livres
  3. Monitoramento remoto do nível do tanque
  4. Casas e instalações inteligentes para iluminação e segurança
  5. Detecção e contagem de unidades em linhas de transporte
  6. Detecção de marca em materiais impressos
  7. Detecção de líquido dentro de tiras de papelão, plástico e papel
  8. Detecção de distância
  9. Contadores de pessoas

Embora existam muitas aplicações para presença e movimento, há igualmente muitos sensores para coletar dados, como sensores capacitivos, indutivos, fotoelétricos e ultrassônicos. Dependendo dos custos, condições ambientais e requisitos de precisão, deve-se selecionar o hardware mais adequado para um ambiente e requisitos de aplicação.

Para este tutorial, vamos nos concentrar na construção de um contador de produção em tempo real; o aplicativo contará todas as unidades que passarem por uma correia transportadora. Estaremos usando o IDE do Arduino para programar um Feather HUZZAH ESP8266, um sensor ultrassônico e Ubidots para desenvolver nosso aplicativo e exibir nosso painel IoT.

Etapa 1: Requisitos

  1. Pena HUZZAH com ESP8266MB7389-100
  2. Sensor ultrasônico
  3. Arduino IDE 1.8.2 ou superior
  4. Conta Ubidots -ou-Licença STEM

Etapa 2: configuração

  • I Configuração de Hardware
  • II. Configuração de Firmware
  • III. Desenvolvimento de aplicativos Ubidots (eventos, variáveis e painéis)

Etapa 3: configuração do hardware

Configuração de hardware
Configuração de hardware
Configuração de hardware
Configuração de hardware

O sensor ultrassônico MB7389-100 é uma opção de baixo custo para aplicações industriais com ampla gama e requisitos de baixo consumo de energia em condições climáticas adversas, graças à sua classificação IPv67.

Para começar, espelhe o diagrama abaixo para conectar o sensor ultrassônico ao Feather HUZZAH ESP8266.

NOTA: A leitura do sensor pode ser feita como leituras analógicas ou PWM; abaixo iremos explicar a configuração para a leitura do PWM; para informações adicionais, consulte os exemplos mostrados acima.

[Opcionalmente] coloque o microcontrolador e os sensores dentro da caixa IP67 para protegê-los contra poeira, água e outros fatores ambientais ameaçadores. O case padrão é semelhante ao mostrado nas fotos acima.

Etapa 4: configuração do firmware

Configuração de Firmware
Configuração de Firmware
Configuração de Firmware
Configuração de Firmware

Primeiro, você deve instalar o Feather Huzzah no Arduino IDE e compilar o código. Lembre-se de verificar esta configuração fazendo um teste simples de piscar. Para obter mais informações sobre como conectar seu dispositivo Feather, verifique este guia de configuração de hardware útil.

Para enviar dados do sensor para a Ubidots IoT Development Platform, copie e cole o código abaixo no IDE do Arduino. Lembre-se de atribuir o nome da rede Wi-Fi, a senha e o token da sua conta Ubidots onde indicado no código.

/ ******************************** Bibliotecas incluídas *************** ****************/#incluir /****************************** ** Constantes e objetos ******************************* // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Coloque aqui seu nome SSID char * SSID_PASS = "xxxxxxxx"; // Coloque aqui sua senhaconst char * TOKEN = "Assig_your_ubidots_token"; // Coloque aqui seu TOKENconst char * DEVICE_LABEL = "motion-control"; // Seu dispositivo labelconst char * VARIABLE_LABEL = "distance"; // Sua variável labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Business users // const char * HTTPSERVER = " coisas.ubidots.com "; // Ubidots Educational usersint HTTPPORT = 80; / * Sensor ultrassônico * / const int pwPin1 = 5; // O pino PWM onde o sensor está conectadoWiFiClient clientUbi; / ******************************* Funções auxiliares *** ***************************** // ** Obtém o comprimento do corpo da variável @arg o corpo do tipo char @return dataLen o comprimento da variável * / int dataLen (char * variável) {uint8_t dataLen = 0; for (int i = 0; i distance / 25,4 * / float distance = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, distance); delay (1000);} void sendToUbidots (const char * device_label, const char * variable_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (sizeof (char) * 300); / * Espaço para armazenar valores para enviar * / char str_val [10]; / * ---- Transforma os valores dos sensores para o tipo char ----- * / / * 4 é largura mínima, 2 é precisão; o valor flutuante é copiado em str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Constrói o corpo a ser enviado para a solicitação * / sprintf (body, "{"% s / ":% s}", variable_label, str_val); / * Constrói o HTTP solicitação para ser POST * / sprintf (dados, "POST /api/v1.6/devices/%s", device_label); sprintf (dados, "% s HTTP / 1.1 / r / n", dados); sprintf (dados, "% sHost: things.ubidots.com / r / n", data); sprintf (data, "% sUser-Agent:% s /% s / r / n", data, USER_AGENT, VERSION); sprintf (data, "% sX-Auth-Token:% s / r / n", dados, TOKEN); sprint f (dados, "% sConnection: close / r / n", dados); sprintf (dados, "% sTipo de conteúdo: aplicativo / json / r / n", dados); sprintf (dados, "% sContent-Length:% d / r / n / r / n", data, dataLen (body)); sprintf (dados, "% s% s / r / n / r / n", dados, corpo); / * Conexão inicial * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Verifique a conexão do cliente * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Postando suas variáveis:")); Serial.println (dados); / * Enviar a solicitação HTTP * / clientUbi.print (data); } / * Enquanto o cliente estiver disponível, leia a resposta do servidor * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Memória livre * / livre (dados); corpo livre); / * Pare o cliente * / clientUbi.stop ();}

ProTip: você pode verificar se o seu dispositivo está conectado corretamente abrindo o monitor serial no IDE do Arduino.

Você pode verificar se um dispositivo foi criado em seu back-end Ubidots, visualizando-o em sua conta Gerenciamento de dispositivos -> Dispositivos.

Ao clicar no seu dispositivo, você encontrará uma variável chamada "distância" onde as leituras do sensor são armazenadas. Esse nome foi atribuído no código que você acabou de colar no IDE do Arduino. Se desejar ajustar suas variáveis automáticas, faça-o editando o cartão do dispositivo ou exibindo um código atualizado com a nomenclatura de variável correta para sua aplicação.

Com o Feather HUZZAH ESP8266 conectado e relatando dados para a Ubidots, agora é hora de construir o aplicativo usando a configuração de aplicativo sem código cuidadosamente projetada da Ubidots.

Etapa 5: Desenvolvimento de aplicativos Ubidots

Desenvolvimento de aplicativos Ubidots
Desenvolvimento de aplicativos Ubidots
Desenvolvimento de aplicativos Ubidots
Desenvolvimento de aplicativos Ubidots
Desenvolvimento de aplicativos Ubidots
Desenvolvimento de aplicativos Ubidots

Configuração de eventos Ubidots

As leituras atuais que estamos enviando para Ubidots são entradas de distância. Para traduzir essas leituras na saída desejada que queremos - unidades contadas - devemos criar um evento seguindo estas etapas:

  1. Dentro do dispositivo atual "controle de movimento", crie uma nova variável padrão chamada "caixas", que receberá um 1 toda vez que uma nova unidade for contada.
  2. Vá para Gerenciamento de dispositivos -> Eventos e clique no ícone de adição azul no canto superior direito da página para adicionar um novo evento.
  3. Configure seu evento começando com "If triggers":
  • Selecione uma variável: "distância"
  • Valor: valor (padrão)
  • É menor ou igual a [a distância máxima esperada} entre o sensor e as caixas que passam * nosso aplicativo exige 500 mm
  • Por 0 minutos
  • Salve 

4. Assim que os gatilhos forem configurados de acordo com as especificações do seu aplicativo, clique no ícone laranja "mais" no canto superior direito para adicionar uma ação condicional.

5. Selecione “Definir variável” como a ação.

6. Em seguida, escolha as "caixas" da variável padrão criada anteriormente e o valor "1".

7. Salve as alterações. Se o evento estiver configurado corretamente, ele enviará um "1" toda vez que a distância entre o sensor e a unidade for maior que um limite indicado, o que sugere que não há nenhum objeto próximo - e deve contar uma nova unidade que acabou de passar.

No cartão de dispositivo específico do Feather, você descobrirá que as "caixas" variáveis para as quais um "1" é enviado sempre que a presença de uma unidade é detectada.

Especialmente útil para correias transportadoras industriais e contagem de unidades, este protótipo pode ser personalizado para se adequar a diferentes ambientes ou hardware simplesmente em sua codificação ou desenvolvimento de aplicações.

8. Visualize o número de unidades detectadas (ou vezes que um objeto foi detectado) Agora, usando a variável "caixas", vamos criar uma nova variável de janela rolante para somar a quantidade total de leituras recebidas da variável "caixas" em um spam definido (minutos, horas, dias, semanas, etc). Para executar este desenvolvimento, siga estas etapas simples:

Atribua as seguintes credenciais à sua nova variável de janela contínua

Selecione um dispositivo: controle de movimento (ou o nome do dispositivo para o qual você está enviando seus dados)

Selecione uma variável: caixas

Calcule a: soma

A cada: "1" hora (ou de acordo com suas solicitações de aplicativo)

Agora atribua um nome à nova variável que indica o número de caixas (ou movimentos) contados em uma hora, assim como "caixas / hora" ou "unidades / horas.

Etapa 6: configurações do painel

Configurações do painel
Configurações do painel

Finalmente, crie um painel para exibir o número de unidades detectadas.

Vá para Gerenciamento de dispositivos -> Painéis e adicione um novo widget. Este widget exibirá a quantidade de caixas contadas hoje divididas por hora.

Atribua as seguintes credenciais ao seu novo widget para visualizar sua contagem.

Como você gostaria de ver seus dados ?: Gráfico

Selecione um tipo de widget: gráfico de linha

Adicionar um dispositivo: controle de movimento

Adicione uma variável: caixas / hora

Terminar. E com este desenvolvimento de painel final - seu aplicativo está completo e agora você tem um sistema de detecção de presença e movimento eficiente e eficaz. Aqui está uma olhada final em nossos resultados.

Recomendado: