Ejemplo 6
Uso del switch magnetico KY-021 en el ESP32
Descripci贸n
Este ejemplo fue adaptado de la pagina Grove - Magnetic Switch (link) para el ESP32. En este, se emplea un switch magnetico (Reed switch) el cual se abre o cierra dependiendo de la presencia de un campo magnetico:

Este switch hace parte de un modulo KY-021 MINI MAGNETIC REED SWITCH MODULE (link) el cual es conectado directamente usando cables al ESP32 como lo veremos en breve.

El programa lo que hace es encender y apagar el led que viene integrado con la ESP32 cuando hay un iman cercano que activa o desactiva el switch magnetico al acercarse o alejarse.
Componentes
La siguiente tabla muestra los componentes principales del circuito a montar:
ESP32
1
KY-021 MINI SWITCH
1
Disponible en el 37 sensor Kit. Para mas informaci贸n sobre este puede consultar la pagina KY-021 MINI MAGNETIC REED SWITCH MODULE (link)
Conexi贸n
La conexi贸n entre el sensor de ultrasonido se muestra en la siguiente tabla:
3.3V
Vin
GPIO4
S
GND
GND (-)
Esquematico
A continuaci贸n se muestra el esquematico del circuito:

Conexi贸n
A continuaci贸n se muestra la conexi贸n entre los componentes:

Archivo Fritzing
Pasos previos si se usa platformio
Configurar en Platformio la plataforma a emplear eligiendo como dispositivo el ESP32 tal y como se resume en la siguiente tabla:
Name
Nombre del proyecto (REED-SWITCH-ESP32 para este ejemplo)
Board
NodeMCU-32S (Board disponible en el laboratorio)
Framework
Arduino (Es el que hemos manejado)
Agregue las librerias necesarias: En nuestro caso no fue necesario agregar ninguna libreria para este ejemplo.
Finalmente una vez hecho lo anterior, si todo esta bien, el archivo platform.ini se vera de la siguiente forma:
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
platform = espressif32
board = nodemcu-32s
framework = arduino
Configurar el monitor serial.
Programa (implementado en el IDE de Arduino)
A continuaci贸n se muestra el programa que se ejecuta en el ESP32, este el cual basicamente es el mismo programa implementado para el Arduino UNO pero empleando otros pines. Si este se hubiese implementado en platformio adicionalmente el main.cpp tendria incluida la libreria al principio:
#include <Arduino.h>
En nuestro ejemplo como la implementaci贸n se hizo en el IDE de Arduino no se incluye esta libreria de modo que queda como se muestra a continuaci贸n.
/*macro definitions of magnetic pin and LED pin*/
#define MAGNECTIC_SWITCH 4
#define LED LED_BUILTIN //the on board LED of the Arduino or Seeeduino
void setup()
{
pinsInit();
Serial.begin(9600);
}
void loop()
{
if(isNearMagnet())//if the magnetic switch is near the magnet?
{
turnOnLED();
Serial.println("Switch closed");
}
else
{
turnOffLED();
Serial.println("Switch open");
}
}
void pinsInit()
{
pinMode(MAGNECTIC_SWITCH, INPUT);
pinMode(LED,OUTPUT);
}
/*If the magnetic switch is near the magnet, it will return ture, */
/*otherwise it will return false */
boolean isNearMagnet()
{
int sensorValue = digitalRead(MAGNECTIC_SWITCH);
if(sensorValue == HIGH)//if the sensor value is HIGH?
{
return true;//yes,return ture
}
else
{
return false;//no,return false
}
}
void turnOnLED()
{
digitalWrite(LED,HIGH);
}
void turnOffLED()
{
digitalWrite(LED,LOW);
}
Referencias
Last updated