Cómo mantener despejado tu escalón
Vivir en una zona de bares presenta ciertos desafíos. Uno de ellos es que muchísima gente ebria necesita sentarse en el escalón de ingreso a tu casa con el fin de gritar opiniones, entonar canciones de cancha y pelearse en cámara lenta.
Mi primera iniciativa fue colocar un cartel. Pronto descubrí algo que ya sospechaba de mis épocas de escritor de baja tirada: la gente no lee. Total que tuve que fabricar un dispositivo llamado Step Guard 1.0
El Step Guard 1.0 tenía un sensor ultrasónico en el zócalo conectado a un ESP32. Al detectar un obstáculo por más de 5 segundos — el tiempo que me tomaba abrir la cerradura — reproducía un audio gritando lo mismo que estaba escrito en el cartel “Por favor mantener…” El Step Guard 1.0 cuidó mi escalón por un año hasta que la semana pasada, un joven idealista decidió expresar su opinión sobre mi dispositivo orinando el sensor.
Me pareció entonces que era el momento de subir la apuesta y diseñar el Step Guard 2.0
Características de la nueva versión:
- Planteo con sensor remoto wifi (ubicado a una altura difícilmente orinable)
- Base interna de exquisito gusto con pantalla color, botones lumínicos y visualización del historial
- Notificación remota vía Telegram
- Alertas progresivas: primero solicitud de despeje, luego alarma rompe timpanos
- Administración manual remota: aviso, sirena y muteo
Nota: hubo un intento de implementar la detección con Inteligencia Artificial/Computer Vision, pero la placa Xiao ESP32S3 con Cam integrada no conseguía mantener un enlace estable al router, así que lo reemplacé por un potente ESP32C3 de DFRobot, otro sensor Ultrasónico, una caja estanca, la minifuente de un Kindle y código de programación C++
Para el módulo interno usé la fabulosa placa Unihiker de mi proveedor preferido de piezas electrónicas DFRobot. Usé también dos botones, una placa de audioUSB, un relay de un canal, un amplificador de 3 watts, el parlante de un Home Theater que arrastro en todas las mudanzas y dos fuentes de 5V. La programación del módulo interno fue realizada en Python. Telegram es utilizado no solo para las notificaciones, sino también para el enlace entre los módulos y el control remoto manual.
from telethon.sync import TelegramClient, events
client = TelegramClient('Step Guard', api_id, api_hash)
client.start()
@client.on(events.NewMessage())
async def handle(event):
print(event.text)
if event.text=='horn':
writeLog("Horn")
relay.write_digital(1)
img = gui.draw_image(w=240, h=320, image='images/start.png')
img.config(w=240, h=320, image='images/horn.png')
audio.start_play('sounds/lrad.mp3')
time.sleep(5)
relay.write_digital(0)
img.config(w=240, h=320, image='images/start.png')
Ni bien encendí el Step Guard 2.0 se acercó un beta tester.
Estoy imprimiendo el gabinete en mi vieja impresora 3d Anet A8. Quizás mañana lo tenga más presentable para la demo.
Función del sensor para medir la distancia al obstáculo (AKA borracho)
int getDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.println(distance);
return distance;
}
Notificaciones por Telegram
Lista completa de partes
Unihiker
Beetle ESP32C3
Sensor Ultrasónico HCSR04
Led Switch
Relay
Speaker
Amplificador 3 watts PAM8403
2 Fuentes de 5V
1 caja estanca
Jumper cables autopercibidos hembra-hembra
Gabinete 3d del módulo interno
Archivos
Nota: el enclosure se entrega a cambio del impuesto revolucionario destinado a reemplazar mi vieja impresora 3d Anet A8
Tutorial detallado
TikTok
Demo