Paso 9: Comunicación Serial
Que el controlador de puerta para mascotas se comunican con el OpenWrt router que debe conectar del controlador TX pin RX de la fresadora y GND del controlador a GND del router (en nuestra situación que la comunicación es unidireccional, desde el controlador al router).En primer lugar, comentar (Añadir # delante) las líneas en/etc/inittab:
TTS/0::askfirst: / bin/ash--login
ttyS0::askfirst: / bin/ash--login
tty1::askfirst: / bin/ash--login
Esto desactivará la consola terminal en el puerto serial, por lo que podemos usarlo para ida y vuelta comunicación con arduino basada en controlador.
Puerto serial del router y puerto serie del controlador deben tener la misma velocidad para poder comunicarse. Velocidad serial del router a dispuesto a 9600 ejecutando:
raíz stty 9600 < /dev/tts/0
Para cada etiqueta RFID leída por el controlador de dor del animal doméstico, el controlador va a escribir a la serie la etiqueta RFID con .txt al final de línea, por ejemplo, si la etiqueta es 01068E2081, y el animal salió de la puerta (el rayo de IR rompiendo) el controlador va a escribir en el serial 01068E2081-out.txt y si la mascota fue en la puerta (puerta abierta por la etiqueta RFID) , el controlador se va a enviar el serial 01068E2081-in.txt
En el router, para leer lo que viene sobre comunicación serial del controlador, el código sería algo como esto:
# Dile el AVR que estamos listos para empezar a hacer cosas
echo "Inicio" > /dev/tts/0
mientras loop true # para siempre
hacer
inputline = "" # borrar entrada
# Bucle hasta que tengamos un comando válido de arduino
# la línea debe ser el archivo de texto que tenemos que abrir para conseguir
# un mensaje al azar
hasta el inputline = $(echo $inputline | grep -e ".txt")
hacer
inputline = $(cabeza - n 1 < /dev/tts/0)
hecho
[...]
buscando .txt sabemos cuando tenemos un nuevo comando desde el controlador de puerta para mascotas.
Después de que conseguimos un nuevo comando, por ejemplo 01068E2081-out.txt, vamos a leer una línea al azar del archivo con el mismo nombre:
LÍNEAS ='wc -l $inputline | awk ' {imprimir ($inputline + 1)}''
RANDSEED =' fecha ' + %S %M % I''
LÍNEA = "cat $inputline | awk - v cuenta = $LINES - v semilla = $RANDSEED ' FNR BEGIN {srand(SEED); i=int(rand()*COUNT)} i {impresión $0} ==''
tomar una foto desde la Webcam:
ln -s /dev/v4l/video1/dev/video1 # crear /dev/video1
spcacat -d/dev/video1 -g -f jpg -p 10000 -o >/dev/cero # tomar una foto cada 3 segundos
y subirlas al twitter (twitpic):
# Dile curl para enviar un formulario multipart a twitpic
# guardar el XML devuelto en una variable
RET = $(curl -s -S -F "$myname" -F "$pword" -F "$cargo" -F "$tweet" $target)
echo "$RET"
Nota: En este proyecto la comunicación es sólo una manera, OpenWrt router solo recibe los mensajes de controlador basado en arduino. Si desea comunicarse de dos maneras, en tu script de bash en el uso de router comando para enviar mensajes a conntroller basado en arduino:
echo "mensaje de prueba enviado de OpenWrt router a arduino" > /dev/tts/0