Blynk es una aplicación para teléfonos inteligentes (iOS y Android) que permite controlar plataformas de hardware populares (Arduino, Raspberry Pi y similares) conectadas a Internet.
https://www.blynk.cc/Actualmente Blynk permite controlar directamente los GPIOs de un router OpenWRT, así como lanzar procesos y scripts con tan sólo pulsar un widget en el móvil. Un sistema típico estaría formado por:
- Un teléfono móvil desde el que se controla el router.
- Un servidor Blynk en la nube, responsable de las comunicaciones entre el móvil y el hardware.
- Un router OpenWRT.
https://github.com/vshymanskyy/blynk-library-luaPara dotar al router de mayores posibilidades, también es posible conectar un Arduino a su puerto USB:
1. Router Huawei EchoLife HG553 con OpenWrt 18.06.1 recién instalado.
2. Iniciar sesión ssh.
ssh root@192.168.1.1
3. Actualizar lista de paquetes.
root@LEDE:~# opkg update
4. Dar soporte al convertidor USB-Serie Winchiphead CH341 (que es el que montan los arduinos chinos compatibles).
root@LEDE:~# opkg install kmod-usb-serial-ch341
Si enchufamos el arduino al USB, debe detectarlo.
root@LEDE:~# dmesg | grep ch341
usbcore: registered new interface driver ch341
usbserial: USB Serial support registered for ch341-uart
ch341 2-2:1.0: ch341-uart converter detected
usb 2-2: ch341-uart converter now attached to ttyUSB0
Adicionalmente, se puede comprobar que realmente existe el dispositivo.
root@LEDE:~# ls /dev/ttyU*
/dev/ttyUSB0
5. Instalar herramientas para configurar el puerto serie.
root@LEDE:~# opkg install coreutils-stty
El puerto serie se configura con el comando
root@LEDE:~# stty -F /dev/ttyUSB0 raw speed 9600 -echo -hupcl
Ahora es posible enviar mensajes al Arduino desde una sesión ssh.
root@LEDE:~# echo "mensaje" > /dev/ttyUSB0
Y también recibirlos.
root@LEDE:~# cat /dev/ttyUSB0
6. Instalar socat.
root@LEDE:~# opkg install socat
Socat servirá para establecer un flujo bidireccional de datos entre el socket TCP del servidor Blynk en la nube y el puerto ttyUSB0 local. No es posible usar un socket SSL porque el paquete se compiló con la opción openssl desactivada.
7. Lanzar socat desde un script.
root@LEDE:~# ./blynk-s.sh
El contenido del script
blynk-s.sh es:
#!/bin/sh
GEN_ATTR="-d -d"
FROM_ATTR="FILE:/dev/ttyUSB0,raw,echo=0,clocal=1,cs8,nonblock=1,b9600"
TO_ATTR="TCP:blynk-cloud.com:80,nodelay"
# Setup exit handler
trap "echo Exited!; exit;" SIGINT SIGTERM
echo [ Press Ctrl+C to exit ]
stty -F /dev/ttyUSB0 raw speed 9600 -echo -hupcl
while [ 1 ]; do
socat $GEN_ATTR $FROM_ATTR $TO_ATTR
echo Reconnecting in 3s...
sleep 3
done
No hay que olvidar hacerlo ejecutable antes de lanzarlo.
root@LEDE:~# chmod +x blynk-s.sh
Eso es todo.