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:

Componentes
Cantidad
Observaciones

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:

ESP32
KY-021 MINI SWITCH

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

  1. Configurar en Platformio la plataforma a emplear eligiendo como dispositivo el ESP32 tal y como se resume en la siguiente tabla:

Parametro
Valor

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)

  1. 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
  1. 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