Font Size

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

utilizando-sensor-magnetico-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:

utilizando-sensor-magnetico-MC-38A-com-arduino
Esquemático de Ligação do sensor MC-38A

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
sensor MC-38A com Arduino
Datasheet Sensor MC-38A

Componentes do Projeto

Montagem do Circuito com MC-38A

utilizando-sensor-magnetico-MC-38A-com-arduino
Esquema de ligação do sensor 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.

0.00 avg. rating (0% score) - 0 votes