Contador remoto com sensor indutivo e módulo wireless HC-12
Para você que precisa de um contador remoto que pode ser adaptado para várias situações, apresentamos um projeto de contador remoto com sensor indutivo e módulo wireless HC-12, que usa Arduino e é muito fácil de montar.
O nosso circuito vai usar apenas um sensor, mas pode ser alterado se você precisar de mais sensores, adaptado para ligar ou desligar equipamentos usando relés, emitir sinais sonoros, etc.
O projeto do contador remoto com sensor indutivo
O projeto deste post surgiu da necessidade de realizar a contagem de peças em uma máquina e enviar esses dados para uma “central”, onde esses dados são mostrados em um display LCD 20×4.
Para essa configuração vamos usar duas placas Arduino, uma atuando como circuito emissor e outra como central de recebimento de dados, seguindo a configuração abaixo:
Circuito emissor: contador com sensor indutivo, Arduino Nano e módulo HC-12, que enviará os dados para a central
Circuito Central: vai receber os dados do contador, também usando um HC-12
Obs: Vou utilizar um Arduino Nano e um Uno, mas você pode adaptar facilmente o projeto para utilizar outros modelos de placas da linha Arduino.
O módulo wireless HC-12 é uma placa de comunicação que utiliza a interface serial para conversar com o microcontrolador, e já foi abordada no post Comunicação sem fio com módulo wireless HC-12 e Arduino, onde você vai encontrar mais detalhes sobre a parte de configuração.
Lembre-se de que os módulos devem estar configurados na mesma frequência (entre 433 e 473MHz) para que a comunicação seja feita de forma correta.
O sensor indutivo NPN é um sensor que detecta a presença de peças metálicas, funciona com tensão entre 6 e 36VDC e que vimos no post Contador com sensor indutivo e Arduino.
Assim, vamos juntar esses dois componentes para montar o contador remoto com sensor indutivo e módulo wireless HC-12, ambos funcionando com Arduino.
Montagem e programa Circuito Emissor
O circuito emissor será o responsável por coletar as informações do sensor indutivo e enviá-las em intervalos regulares para o circuito central.
O sensor indutivo (conectado na porta analógica A4) utiliza um resistor de 1K como pull-up ligado no pino 5V do Arduino Nano, e o módulo HC-12 está conectado nos pinos digitais 10 e 11 do Arduino.
Repare que no circuito emissor vamos usar 2 fontes de alimentação: uma para o Arduino Nano (usei uma fonte de 5V/2A), e outra para o sensor indutivo (que aceita alimentação de 6 à 36V). No caso, utilizei para o sensor uma fonte de 24VDC.
Carregue o programa abaixo no Arduino Nano. Não estamos utilizando nenhuma biblioteca adicional para lidar com os componentes, já que o sensor indutivo usa a porta analógica A4 (pode ser uma porta digital, ok?) e o módulo wireless HC-12 fará a comunicação usando a biblioteca SoftwareSerial (já incluída no Arduino) através das portas digitais 10 e 11:
//Programa: Contador remoto HC-12 e sensor indutivo - Emissor //Autor: Arduino e Cia #include <SoftwareSerial.h> //Define os pinos para conexao serial do modulo wireless HC-12 SoftwareSerial mySerial(10, 11); // RX, TX int contador = 0; int pinosinal = A4; int leitura = 0; void setup() { //Inicializa a serial por hardware Serial.begin(9600); //Inicializa a serial por software (comunicacao HC-12) mySerial.begin(9600); //Define o pino do sensor indutivo como entrada pinMode(pinosinal, INPUT); } void loop() { //Verifica se o sensor indutivo foi acionado leitura = digitalRead(pinosinal); if (leitura != 0) { //Loop caso a peca pare em frente ao sensor while (digitalRead(pinosinal) != 0) { delay(100); } //Incrementa o contador e envia os dados pelo HC-12 contador = contador + 1; mySerial.println(contador); Serial.println(contador); } }
O programa não tem muito segredo. Ele checa o pino onde está ligado o sensor indutivo e, caso este seja acionado, incrementa o contador e envia os dados pelo HC-12.
Montagem e programa Circuito Central
O circuito central com Arduino é o responsável por receber as informações do emissor e exibi-las no display LCD.
Ele nada mais é do que um Arduino Uno conectado à um display LCD I2C 20×4, que fica “escutando” a porta serial (pinos 10 e 11) onde está ligado o módulo wireless HC-12.
Quando chega alguma informação do circuito emissor informando que o contador foi alterado, esta é repassada imediatamente para o display.
No circuito acima você pode usar o Arduino conectado no computador ou ligado em uma fonte 9V/1A, por exemplo.
O programa usa a biblioteca LiquidCrystal_I2C, que você pode instalar a partir da IDE do Arduino, no menu Sketch -> Incluir Bibloteca -> Gerenciar Bibliotecas:
Procure por LiquidCrystal_I2C e clique em instalar na biblioteca destacada acima.
Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.
Com a biblioteca devidamente instalada, carregue o seguinte programa:
//Programa: Contador remoto HC-12 e sensor indutivo - Receptor/Central //Autor: Arduino e Cia #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <SoftwareSerial.h> //Define os pinos para conexao serial do modulo wireless HC-12 SoftwareSerial mySerial(10, 11); // RX, TX //Inicializa o display no endereco 0x3F //e define o numero de colunas e linhas do display LiquidCrystal_I2C lcd(0x3F, 20, 4); //Armazena os dados que chegam pela serial String inputString = ""; //Variavel de string completa boolean stringComplete = false; //Dados do contador int contador = 0; int contador_anterior = 0; void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); lcd.setCursor(1, 0); lcd.print("Contador de pecas"); lcd.setCursor(0, 2); lcd.print("Cont. parcial: 0"); lcd.setCursor(0, 3); } void loop() { //Recebe os dados pelo HC-12 via porta serial if (mySerial.available()) { while (mySerial.available()) { char inChar = (char)mySerial.read(); inputString += inChar; if (inChar == 'n') { //Atualiza o valor do contador contador = inputString.toInt(); //Mostra o valor do contador na serial Serial.println(contador); stringComplete = true; inputString = ""; } } } //Caso o contador seja alterado, atualiza o display if (contador != contador_anterior) { lcd.setCursor(15, 2); lcd.print(" "); lcd.setCursor(15, 2); lcd.print(contador); contador_anterior = contador; } }
A biblioteca LiquidCrystal_I2C utilizada é um pouco diferente das outras bibliotecas que eu já usei aqui no blog.
Nesta biblioteca, basta você definir o endereço I2C do módulo (no caso, 0x3F) e o tamanho do display (20×4). Estas informações estão na linha 13 do programa.
Se tudo estiver ok, basta aproximar um objeto metálico do sensor indutivo para que o contador seja ativado.
Este programa pode ser alterado para realizar contagem de lotes ou caixas, por exemplo. Você também pode adicionar um botão de reset do contador no circuito emissor ou armazenar na memória EEPROM do Arduino o valor do contador, já que quando o mesmo é desligado o contador é zerado.
Gostou? Confira também o outro post sobre contador com sensor indutivo e Arduino, onde explico os conceitos básico desse sensor.
Boa tarde! consigo utilizar este módulo um como mestre e 2 como escravos?
Oi Argel,
Consegue sim. 😉
Abraço!
Adilson
Olá! Eu consigo utilizar esse sensor para desenvolver um tacômetro? A velocidade medida seria de até 80 km/h
Oi Rodrigo,
Eu não tentei nada parecido, mas a leitura do sensor é bem rápida.
Abraço!
Adilson
Não consigo fazer o contador remoto de peças com HC 12 funcionar. Pode me ajudar?
Oi João,
Vamos lá. O que acontece?
Abraço!
Adilson
Precisava de um , que Contase 3 Locais , Exemplo , LOCAL 1 = 10 OBjetos LOCAL 2=15 Objetos LOCAL 3 = 13 Objetos, e mandasse Relatorio por email, ou algum servidor
Olá, boa tarde!
Estou aprendendo muito com o site, parabéns aos responsáveis.
Existe algum tipo de sensor capaz de medir velocidade e/ou medir a altura de queda de um objeto? Meu problema é um martelo de queda livre (movimento vertical) e eu estou pensando como poderia medir a velocidade e/ou a altura de queda dele.
Eu vi alguns projetos de medida de velocidade e distância mas no caso da distância o objeto sempre está estático…
Obrigado!
Oi Guilherme,
Obrigado. Eu usaria um acelerômetro.. tem módulos bem baratos que vão te atender. Dê uma pesquisada aqui no site, por favor.
Abraço!
Adilson
Bom dia, eu consigo conectar esse contador a um aplicativo para celular?por exemplo quero saber final do dia quantos objetos passaram pelo contador.
Bom dia,
Consegue sim. Você pode até armazenar esses dados na mémória do Arduino e enviar na hora que o aplicativo conectar.
Abraço!
Adilson
Boas, estou com uma dúvida! O HC-12 consegue passar de um arduino para o outro arduino mais do que uma variável ?
Bom dia,
Consegue sim. Na primeira imagem deste post aqui, por exemplo, eu passei para o outro Arduino não só a contagem individual como também o total.
Abraço!
Adilson
Boa tarde, como faço para realizar a leitura do fluxo de água com sensor ultrassônico ou bobina?