Usando wifi y Android
Buenas tardes, tengo un poco de sequía de post, lo siento. Últimamente hago muchas pruebas que no llevan a nada, así que pierdo mucho tiempo, del poco tiempo que tengo. Comentaros que ya tengo probados el 100% de los componentes del Quad-Raspbi-Copter por separado, incluso tengo ya listos todos los cables para la versión final.Bueno, hoy os voy a enseñar como me he montado la emisora, radio o mando distancia, como queráis llamarlo. Realmente este post podría llamarse "conexión wifi punto a punto contra un Android", pero es más interesante si lo oriento a lo que me interesa.
Uno de los grandes problemas a la hora de controlar un radiocontrol, es la radio. Si queremos poder controlar muchas cosas simultáneas, necesitaremos muchos canales, un sistema de radio emisión/recepción de muchos canales es muy caro y requiere un hardware adecuado, posiblemente Arduino. Así que paso, como es necesario que mi proyecto se controle desde el Android, voy a usar algo que Android tiene, wifi. Así que en el QRC lo único que tengo que poner es un wifi USB, y resulta que el otro día apareció en un cajón, mi antiguo wifi USB con el que me dedicaba al Aircrack:
tiene un señor antenon y una ganancia muy buena. Lo ideal sería, que el wifi del QRC actuase como AP, pero resulta que el driver de Realtek para este chipset, no trae ese modo. Así que será el Android, usando la función de Zona Wi-Fi Portatil, el que se muestre como AP y el QRC como cliente:
Lo primero será:
Configuración de Zona Wi-Fi Portatil en Android
En mi caso uso CyanogenMod, esta opción la tengo en Ajustes > CONEXIONES INALÁMBRICAS Y REDES (Más ...) > Anclaje a red y zona Wi-FIVamos a la configuración y ponemos (por ejemplo):
SSID: QRC
Seguridad: WPA2 PSK
Contraseña: vooooolaaaareeeeUOUO
y activamos la Zona Wi-Fi
Confuración del RaspberryPi como cliente WIFI
Primero antes que nada, es asegurarnos que el kernel de nuestro Raspberry, tiene el controlador apropiado. Conectamos el dispositivo y ejecutamos:dmesg
Veremos algo como esto:
[ 67.991351] rtl8187: wireless switch is on [ 67.992103] usbcore: registered new interface driver rtl8187
Eso quiere decir, que la cosa pinta muy bien. Nos aseguramos, si aparece el interfaz con:
ifconfig -a
eth0 Link encap:Ethernet HWaddr aa:bb:cc:dd:ee:ff inet addr:192.168.1.33 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:374 errors:0 dropped:0 overruns:0 frame:0 TX packets:386 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:28845 (28.1 KiB) TX bytes:69915 (68.2 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) wlan0 Link encap:Ethernet HWaddr ff:ee:dd:cc:bb:aa UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)siiiii ahí lo tenemos, se llama WLAN0, este nombre cambia dependiendo del controlador. Ahora instalamos un par de cosillas:
apt-get update apt-get install iw wireless-tools wpasupplicant
Ahora generamos "el código" que es la clave de la Zona Wi-Fi del Android:
wpa_passphrase QRC vooooolaaaareeeeUOUO
y nos devuelve, entre otras cosas, una linea que empieza por psk= y un montón de carácteres más. Ahora editamos el archivo /etc/wpa_supplicant/wpa_supplicant.conf:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="QRC" scan_ssid=1 proto=WPA RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP psk=elcodigosuperlargoquehasalidoanes }Activamos:
pkill wpa_supplicant ifconfig wlan0down ifconfig wlan0 up iwconfig wlan0 essid "QRC" wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf dhclient wlan0Comprobamos con:
ifconfig wlan0y si tenemos una IP (192.168.43.91 en mi caso) es que te ha funcionado. Ahora desde el Android puedes acceder al Apache, ssh o lo que sea que tengas en el RaspberryPi :)
Automatizando el proceso y reconexión
Ahora viene la parte curiosa, vamos a hacer que se conecte de forma automática en caso de perdida de señal o primera conexión. Se supone que el wpa_supplicant hace esto, tambien se supone que el network-manager lo hace, pero por más que lo he intentado, no he conseguido nada así que me he fabricado este script: /usr/local/bin/auto_conexion_android.sh#!/bin/bash android=192.168.43.1 while ((1)); do if ! $(ping -c 1 $android > /dev/null ); then echo no hay ping, levantar; echo led rojo; pkill wpa_supplicant; ifconfig wlan0 down; ifconfig wlan0 up; iwconfig wlan0 essid "QRC"; wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf; dhclient wlan0; fi sleep 1; echo led verde; donePonemos que el script se ejecute en cada inicio (/etc/rc.local) y listo, ya tengo el mando a distancia de mi "maquina de volar" y de lo más baratito.
Por fin públicas, llegue a pensar que abandonaste el blog, menos mal que no uf uf uf
ResponderEliminarque vaaaa, lo que pasa es lo que comento más arriba, hago muchas pruebas combinando muchas cosas a la vez y no salentodo lo bien que me ggustaría.
EliminarTengo como 10 posts en borrador y muchos más en la cabeza.
ala que pelado no lo as tratado de control con touchosc aqui te dejo una de mis pruebas con android y arduino por supuesto solo me falta integrar la raspi y ese script me servira mucho :) gracia te dejo el video si te interesa https://www.youtube.com/watch?v=_ucmo8Ie_Rs saludos desde guatemala
ResponderEliminaresta curioso el touchosc, no lo conocía. No se como lo as integrado con arduino, pero la verdad es que si no lo explicas en un tutorial o manual, no le veo interés ninguno ¿lo has publicado en alguna web?
Eliminarla verdad no lo e publicado solo se lo e enseñado a cierto amigos si queres aselo si te interesa jejeje hay mucha info pero relacionada con macintosh y pero yo lo e implementado con android si quere cuando llegue a casa impiezo aserlo porq esta app no tien soporte para crear tus propias plantillas pero con un poco de hack jejej podras aser las tuyas solo investigate un poco de todo lo que la gente a logrado touchosc en macintosh pero seria chilero verlo en tu raspicorter :) saludos de guatemala
ResponderEliminar