Meses atrás, mis amigos en el campo estaban teniendo inconvenientes con el suministro de agua, así que comencé a jugar con unas placas Arduino.
Como siempre, armé una prueba rápida que tiene todo pegado con pegamento y cinta.
Esto esta funcionando de modo estable, así que es momento de desarrollar algo más real, con código más limpio y con el hardware en una disposición más permanente.
Receptor y transmisor usan Ethernet shields, y están conectados por una red local que interconecta varios edificios que están distantes entre sí.
Tener las placas conectadas a la red permitió agregar algunas cosas extras, como tener notificaciones al teléfono cuando algo no esta funcionando y reporte en tiempo real.
Larga vida al puerto serial
Lo primero que necesito es brindar es una forma de configurar los dispositivos en caso de que tengan que ser remplazados o si la configuración de la red cambia.
Sería lindo brindar una página web para configurar el dispositivo, pero el costo en memoria y trabajo extra no coincide con algo que va a ser usado 1 o 2 veces en la vida de cada placa.
La persona que cambie las placas debería estar familiarizada con el puerto serial, ¿no? :)
Linea de comandos interactiva en Arduino
La solución es simple, aceptar caracteres hasta detectar linea nueva o timeout.
...
if (MyCommander.read() &&
MyCommander.is("surrender") &&
MyCommander.confirm(F("Are you sure?")) {
// do something
}
...
PlatformIO
platformio lib install 288
http://platformio.org/lib/show/288/SerialCommander
Código fuente
Fuente disponible en GitHub