Utilizando Sensor Magnético MC-38A com Arduino
Olá tudo bem? Hoje iremos realizar um projeto para o controle residencial. Portanto, vamos estar utilizando o sensor magnético Mc-38A com Arduino. A ideia é tornar a sua casa ainda mais inteligente. Mas como fazer isso?
Certamente, quando pensamos em automação residencial, logo vem a ideia de tomadas, lâmpadas ou equipamentos controlados remotamente. Contudo, podemos focar em outros pontos para deixar a sua casa ainda mais inteligente. Que tal monitorar suas portas e janelas?
Portanto, hoje vamos aprender a como estar utilizando o sensor magnético MC-38A com Arduino, para conseguirmos monitorar nossas portas e janelas. Quer saber como? Chegue mais!
Funcionamento do sensor MC-38A com Arduino
Este sensor trabalha como uma chave ou switch, os quais possuem duas configurações:
- NA (Normalmente Aberto);
- NF (Normalmente Fechado).
Então, estas configurações se referem ao estado do sensor quando ele está em contato com a sua outra parte. Para ficar mais claro, observe a imagem abaixo:
Portanto, como podemos ver na imagem, temos uma coluna do estado NF e NA. Onde no estado normal fechado (NF), observe que quando as partes do sensor estão em contato, ele trabalha como uma chave fechada, ou basicamente um fio. Em contra partida, quando as partes são separadas, essa chave se abre.
Entretanto, na coluna do estado normalmente aberto (NA), temos o contrário. Quando as partes estão conectadas, ele está como uma chave aberta e ao separar as partes, a chave é fechada.
Dessa forma, é muito importante saber qual a configuração do sensor magnético você está comprando para inverter a ação que você procura fazer. Beleza? Para isso, estou deixando abaixo alguns pontos importantes sobre o sensor e o seu datasheet caso queira informações mais detalhadas!
Especificações do sensor MC-38A
- Dimensões: 27.15mm X 13.9mm X 7.7mm
- Material: ABS
- Distância de trabalho: 10-25mm
- Max. Switching Tensão: 100 VDC
- Min. Tensão de Ruptura: 220 VDC
- Max. Comutação De Corrente: 0.5A
- Max. Carry Atual: 1 A
Componentes do Projeto
- 01 x Arduino UNO R3;
- 01 x Sensor Magnético Com Fio para Portas e Janelas;
- 01 x Protoboard;
- 02 x Led 5mm
- 01 x Resistor 220Ω 1/4W ;
- 01 x Resistor 330Ω 1/4W ;
- Alguns Jumpers.
Montagem do Circuito com MC-38A
Um detalhe importante sobre nosso sensor, é que ele não tem polaridade. Assim, não precisa se preocupar qual fio se conecta ao GND e qual se conecta ao resistor. Beleza?
Código do Projeto Comentado
/* Programa: Monitoramento de portas ou janelas com MC-38A Autor: Saulo Alexandre - Autocore Robótica * *** SENSOR NA CONFIGURAÇÃO NA (NORMAL ABERTO) ** * Para mais informações e tutoriais incriveis como esse acesse http://autocorerobotica.blog.br */ // ================================================================================================== // --- Declaração Bibliotecas --- int ledVermelho = 13; // porta 13 em output para o LED vermelho int ledVerde = 12; // porta 12 em output para o LED verde int pinoSensor = 7; // porta 7 em input para o sensor int val = 0; // variável para ler o status do pino do sensor // ================================================================================================== // --- Configurando void setup() --- void setup() { pinMode(ledVermelho, OUTPUT); // declarando o pino do LED vermelho como output pinMode(ledVerde, OUTPUT); // declarando o pino do LED verde como output pinMode(pinoSensor, INPUT); // declarando o pino do sensor como input } // ================================================================================================== // --- Configurando void loop() --- void loop(){ val = digitalRead(pinoSensor); // lendo o estado do sensor e atribuindo a variável val // verifica se a entrada é alta (quando os dois módulos estão separados), e acende o led vermelho e apaga o verde if (val == HIGH) { digitalWrite(ledVermelho, HIGH); // LED verde ON digitalWrite(ledVerde, LOW); // LED vermelho OFF } // se não acenderá o led verde e apagará o vermelho else { digitalWrite(ledVerde, HIGH); // LED verde ON digitalWrite(ledVermelho, LOW); // LED vermelho OFF } } // ================================================ FIM =============================================
Explicação do Código
Em primeiro lugar, é importante saber que o nosso sensor é da configuração de NA (Normal Aberto), isso será importante quando entrarmos no void loop(). Mas antes, precisamos declarar as nossas variáveis. Logo em seguida, temos a declaração do modo de operação dos leds e o sensor.
<code>// --- Declaração Bibliotecas --- int ledVermelho = 13; // porta 13 em output para o LED vermelho int ledVerde = 12; // porta 12 em output para o LED verde int pinoSensor = 7; // porta 7 em input para o sensor int val = 0; // variável para ler o status do pino do sensor // ================================================================================================== // --- Configurando void setup() --- void setup() { pinMode(ledVermelho, OUTPUT); // declarando o pino do LED vermelho como output pinMode(ledVerde, OUTPUT); // declarando o pino do LED verde como output pinMode(pinoSensor, INPUT); // declarando o pino do sensor como input }</code>
Dessa forma, entrando no void loop(), temos a nossa lógica onde verificamos se as partes estão separadas (HIGH = Partes Separadas). Caso seja verdadeiro, aciona o led vermelho e apaga o led verde.
Caso seja estado LOW, então as partes do sensor estão juntas (a porta ou janela se fechou), assim, o led verde acende e o led vermelho apaga.
<code>// --- Configurando void loop() --- void loop(){ val = digitalRead(pinoSensor); // lendo o estado do sensor e atribuindo a variável val // verifica se a entrada é alta (quando os dois módulos estão separados), e acende o led vermelho e apaga o verde if (val == HIGH) { digitalWrite(ledVermelho, HIGH); // LED verde ON digitalWrite(ledVerde, LOW); // LED vermelho OFF } // se não acenderá o led verde e apagará o vermelho else { digitalWrite(ledVerde, HIGH); // LED verde ON digitalWrite(ledVermelho, LOW); // LED vermelho OFF } }</code>
Resultado do Projeto
Por fim, tem um vídeo em nosso canal mostrando o funcionamento do nosso projeto de monitoramento em ação!
Gostou do projeto? Funcionou tudo certinho? Então comenta aqui em baixo! Nós vamos adorar ler e responder os seus comentários, dúvidas e sugestões.
Confira mais conteúdos em nosso blog. Conteúdos exclusivos e altamente explicativos.
Muito legal o tutorial, mas na era do IoT, seria legal esse projeto com o Esp-01 e notificação no celular 😉
Parabéns pelo blog!
Olá Filipe, obrigada pelo seu comentário!
Ótima ideia! Com certeza, vamos implementar sua sugestão.
Agradecemos seu feedback.
Olá, essa implementação me ajudou bastante. Muito obrigado e parabéns.
Quero deixar um recado para observarem os comentários do código, no primeiro if do loop:
digitalWrite(ledVermelho, HIGH); // LED verde ON
digitalWrite(ledVerde, LOW); // LED vermelho OFF
Nessa parte, a primeira linha ligaria o led vermelho e a segunda desligaria o verde, não é? Ou estou enganado? hahahaha espero ter contribuído com algo.
Mais uma vez, muito obrigado e parabéns 🙂
Olá Helio, agradecemos o seu feedback! Iremos modificar os comentários, valeu! 😉
Qual é o resistor do sensor?
Olá, resistor de 150R.