En este tutorial vas a aprender cómo usar un interruptor de inclinación de bola para detectar ángulos pequeños de inclinación. Es una solución simple y efectiva para sumar detección de movimiento u orientación a tus proyectos con el ESP32.
Componentes requeridos
(1) x Elegoo ESP32
(1) x Interruptor de inclinación de bola SW520D
(2) x Protoboard de 400 puntos
(2) x Cables M-M (cables DuPont macho a macho)
Introducción al componente
Los sensores de inclinación te permiten detectar la orientación o la inclinación de un objeto. Son componentes económicos, de bajo consumo y fáciles de usar que, si se manejan correctamente, no sufren desgaste. Por su simplicidad, se usan mucho en juguetes, gadgets y electrodomésticos.
A menudo se los conoce como "interruptores de mercurio" o "sensores de bola rodante". Generalmente están formados por una cavidad con una masa conductora libre en su interior (como una bolita metálica). Cuando el sensor se orienta de modo que ese extremo queda hacia abajo, la masa rueda sobre los polos y los pone en cortocircuito, actuando como un interruptor cerrado.
A diferencia de los acelerómetros, que entregan un voltaje analógico o digital que requiere procesamiento complejo, estos interruptores son binarios: detectan el movimiento o la orientación de forma directa.
Esquema de conexión y cableado
Asegurate de seguir el diagrama de cableado correctamente. El pin GPIO 2 del ESP32 se utiliza para el LED integrado en la placa, por lo que no vas a necesitar un LED externo para esta prueba básica. El sensor se conecta al pin GPIO 5.
Código
Podés descargar el archivo ball_switch.ino y abrirlo con el Arduino IDE una vez terminada la descarga. Antes de subir el código, fijate de tener instalado el soporte para placas ESP32 y los drivers correspondientes.
const int ledPin = 2; // Pin del LED integrado
void setup() {
pinMode(ledPin, OUTPUT); // Inicializa el pin del LED como salida
pinMode(5, INPUT); // Configura el pin 5 como entrada (sensor)
}
void loop() {
int digitalVal = digitalRead(5); // Lee el estado del pin 5
if(LOW == digitalVal) {
digitalWrite(ledPin, HIGH); // Prende el LED
} else {
digitalWrite(ledPin, LOW); // Apaga el LED
}
}
Fundamentos de las entradas digitales
Las entradas digitales solo pueden leer dos estados: HIGH (1) o LOW (0). En el caso del ESP32, el nivel lógico alto (HIGH) está entre 2.5V y 3.3V, mientras que el nivel bajo (LOW) se ubica entre 0V y 0.8V. Recordá que, si decidís usar un LED externo, tenés que conectar una resistencia limitadora (se recomiendan 220Ω) para no dañar el pin del microcontrolador.
Solución de problemas
Si el LED se queda siempre prendido, confirmá si un extremo del sensor está conectado al pin VCC; si es así, reemplazalo por una conexión a GND. En caso de que el LED no prenda nunca, chequeá que los pines estén en los puertos indicados en el código. Si el funcionamiento es intermitente, revisá que los cables no estén sueltos y que el sensor esté bien firme en la protoboard.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.