el Calinwire (Carro Linux Wireless)
nace como una iniciativa a un proyecto realizado por altaimpedancia (http://code.google.com/p/altaimpedancia/) llamado rolin (http://code.google.com/p/altaimpedancia/wiki/rolin) el cual consiste en un carro controlado inalambricamente ya sea desde un dispositivo mobil (celular) gracias a un routert wrt54gl el cual tiene como sistema operativo (embebido) openwrt de gnu/linux
tener encuenta que este proyecto esta en desarrollo y su parte fisica no esta totalmente terminada…
Elementos para la construccion:
- routert wrt54gl con SO openwrt.
Este es el que yo utilize para el diseño, lo minimo que necesitamos es un routert el cual permita instalar gnu/linux y que tenga un puerto serial libre para poder trabajar con el. la lista de dispositivos que soportan gnu/linux como sistema operativo la podemos encontrar aqui..http://wiki.openwrt.org/toh/start
- pinguino
Tambien podemos utilizar un arduino.. pero hay que tener encuenta la posicion y el numero de los pines que vamos a utilizar (puede variar).
- dispositivo mobil
con capacidad de conexión wireless capas de correr alguna aplicación de conexión remota ssh
- 2 x resistencias 330 ohm
- 2 x diodos de switcheo 1n4148
- 2 x baterias recargables hasta de 12v a 600mA
- 1 x regulador de 5V (7805)
- cable para las conexiones (utp)
- una tabla (triple) de 15*15 cm, esta es del tamaño del routert.
- un pedazo de neumatico el cual recubrira las llantas.
Construccion:
para realizar la comunicacion entre el pinguino y el routert wrt nos guiamos en esta documentacion el cual ya ha sido probada y funciona perfectamente :D https://sites.google.com/site/pinguinotutorial/wrt54gl es una buena idea primero hacer esta prueba para probar la conexion con el pinguino y asi verificar que funciona
la segunda parte es montar la estructura y montar los servo motores para esta parte subo unas fotos el cual los pueden guiar. es sencillo por eso creo que no es necesario casi explicar (una imagen habla mas que mil palabras XD)
la rueda loca es la que permite que el carro gire en cualquier direccion con el minimo rozamiento en el suelo el thing de la llanta loca esta en thinguiverse en el siguiente enlace http://www.thingiverse.com/thing:9884/ , es un sistema sencillo
el servo motor ha sido montado con las llantas en la tabla, estos no han sido atornillados ni nada por el estilo, solo han sido pegados a la tabla con algun pegante (sintesolda)
las llantas han sido atornilladas a la mariposa del servo motor el diseño de las llantas tambien esta en thinguiverse http://www.thingiverse.com/thing:9886 o pueden usar su propio diseño!!! :D
Software
en esta parte las herramientas necesarias son:
- Ide para la programacion de pinguino
- algun cliente SSH para dispositivos mobiles podemos usar:
-midssh (libre) -paderSyncSSH (privativo)
- codigo para el pinguino, el que nos permitira realizar la conexion con el puerto serial del pinguino y asi poder hacer funcionar los servomotores
- picocom: emulador de terminal el cual ira instalado en el openwrt del routert
lo primero es grabar en el pinguino el codigo que en este caso nos permitira la conexion entre este y el routert. tenemos los servo motores conectador a los pines 0 y 1 del pinguino
/* realizado por : heberth alexander ardila heberthardila@gmail.com wiki http://liure.uk.to version 0.1 */ int caractere; // dato que recibiremos por el puerto serial void setup() { servo.attach(0); // inicializacion de los pines con los que vamos a trabajar los servos servo.attach(1); Serial.begin(9600); // graduacion de la velocidad con el puerto serial } // funcion que mueve hacia adelante void adelante() { servo.setMaximumPulse(0); servo.setMinimumPulse(1); } // funcion que mueve hacia atras void atras() { servo.setMaximumPulse(1); servo.setMinimumPulse(0); } // funcion que mueve hacia la derecha void derecha() { servo.setMinimumPulse(1); servo.setMinimumPulse(0); } // funcion que mueve hacia la izquierda void izquierda() { servo.setMaximumPulse(1); servo.setMaximumPulse(0); } void loop() { if (Serial.available()) // nos damos cuenta si el puerto serial esta activo { caractere=Serial.read(); // recibimos el dato del puerto serial (puede ser 2, 4, 6, 8) que sera el sentido if(caractere=='2') // dependiendo de la opcion recogida hacia aya iremos { adelante(); } if(caractere=='8') { atras(); } if(caractere=='4') { izquierda(); } if(caractere=='6') { derecha(); } if(caractere=='0') { derecha(); delay(100); izquierda(); } } }
instalamos en el routert picocom
opkg install picocom
para hacer una prueba, prendemos el routert y nos conectamos directamente al puerto serial del pinguino con picocom, el comando seria:
picocom /dev/tts/1
por aqui un video en el que masomenos trato de explicar lo de la comunicacion
http://www.youtube.com/watch?v=wAnK3OEIv4o
estamos trabajando con el puerto numero 1 del routert, las teclas para el control del carro son los numeros 4. izquierda 6. derecha 8. arriba 2. abajo
son las direccions como se manejara Y LISTO!! hemos culminado nuestro proyecto :D alguna duda en la construccion .. comunicacion y demas comentarios se pueden comunicar con migo
heberthardila@gmail.com