LOGOBOT RF
Descripción del proyecto

0.-INDICE

1.-Presentación. Imprescindible para saber de qué va esto e información de contacto.
2.-Fases del proyecto. Aquí explico las distintas partes en las que he dividido el proyecto.
3.-El desarrollo paso a paso. Aquí encontraréis los circuitos realizados en cada fase, programas, etc.
4.-La posible estructura del robot. Aquí encontrareis fotos y características del robot.
5.-Cómo colaborar. En esta última sección están todas las dudas que se me plantean, problemas, etc.
6.-Documentación. Enlaces a documentos necesarios o interesantes para el desarrollo de este proyecto.
7.-Fotografías. Fotografías del proyecto.
8.-Comunicaciones. Diversas notas sobre como realizar las comunicaciones independientemente del medio de comunicación elegido.


Nº de visitas:Counter

1.-PRESENTACION

        Hola a todos, me voy a presentar. Soy Iker Etxebarria (iker.cv@euskalnet.net), profesor del Colegio Vizcaya de Zamudio. Soy profesor de informática y doy en 1º de ESO el lenguaje LOGO. Ya sé que el Logo es antiquísimo. No lo pongo en duda. Pero lo doy porque me parece que es un lenguaje de programación asequible a todas los niños, porque viene en la Ley de Educación del Gobierno Vasco y porque me parece que pedagogicamente es un recurso buenísimo para desarrollar muchas habilidades en la mente de un niño. Pero también sé que el LOGO, es muy antiguo. No he encontrado ningún otro lenguaje de programación que sea tan asequible como este (he dado DIV, he dado BASIC y ahora, solo a aquellos que quieren aprenderlo, les enseño Visual Basic). Pero quiero cambiarlo. Quiero hacerlo más motivante. Sus gráficos, hace 20 años eran divertidos. Hoy en día resultan penosos y obsoletos. Para los que no conozcais el Logo, es un lenguaje con el que mandamos comandos a una tortuga que obedece nuestras ordenes. Son ordenes del estilo avanza X pasos, gira a la derecha X grados, baja el lápiz, pon la goma, repite X veces un proceso,... instrucciones con las que se hacen gráficos en la pantalla (aunque también tiene comandos del tipo lee caracter, escribe, etc para hacer programas de tipo texto). Pues bueno, mi intención es hacer más atractivo el LOGO, haciendo que la tortuga en vez de ser cuantro pixels en la pantalla, sea un robot que manejemos desde el ordenador. El proyecto no va a consistir en hacer solamente el microbot (bautizado LOGOBOT RF) sino también el programa intérprete de LOGO que controle dicho microbot.

 

 

Busco colaboradores para este nuevo proyecto. No me importa que no sepas nada, yo te explico lo poco que sé, para que me puedas hechar un cable ( eso sí, tendrás que ser un poco paciente porque no dispongo de mucho tiempo.) Busco colaboradores para investigar cosas, descubrir como se hacen ciertas cosas, etc. Por ejemplo, investigar como comunicarse con un microbot a través de señales de radio, como hacer que un microbot disponga de un lápiz que suba y baje, investigar en el campo de las baterías del microbot, utilizar paneles solares en vez de pilas, diseñar un protocolo de comunicaciones y naturalmente para sugerir todo tipo de ideas.

 

Interesados escribid a iker.cv2001@hotmail.com

P.D.: Existen muchas formas de colaborar, informando de fallos que veas en la página, haciendo críticas constructivas,... Todo será bienvenido.

 

 

 

        El objetivo por tanto, es controlar por radiocontrol un microbot. El objetivo final es crear dicho microbot asistido por radio control para la enseñanza del lenguaje LOGO.

        El microbot estará basado en el PIC 16F84. Sé que es una limitación, pero es el único que conozco como para poder llevar a cabo este proyecto.

2.-FASES DEL PROYECTO

Primera fase: 

        Quiero conseguir 2 modulos de emisión y recepción por radiofrecuencia. Después de buscar por internet, he encontrado unos archivos con ejemplos de como hacerlo y parece muy sencillo.

        Los documentos son los siguientes:
                                    Emisor/Receptor de la compañía Reynolds (www.rentron.com). La documentación es bastante clara con ejemplos muy sencillos. (Documento pdf 119 Kb) También he encontrado dos documentos de los encoders que se utilizan en el documento anterior (HT640 155 Kb HT648 837 Kb)

                                    De la empresa telecontrolli distribuido en  www.microcontroladores.com he encontrado estos dos esquemas que son también claros y sencillos. Pero según me han comentado, tienen problemas con la empresa suministradora. Su catalogo ocupa 303 kb en documento pdf.

Circuito emisor conectado a un PIC 16F84

        Y circuito receptor:

                        También he encontrado emisores de la empresa aurel, distribuidos por www.iberfutura.es en donde también he encontrado el siguiente documento pdf de 558 kb.

                        De los tres distintos, los más interesantes me parecen los primeros, pues describen muy al detalle como realizar la conexión entre los dos sistemas, y además decodifica la información enviada para poder transmitir varios bits, lo cual es sumamente interesante.

                    Como primera experiencia voy a tratar de conseguir este para emisor recpetor y hacer que al activar un pulsador conectado al emisor, se encienda un led en el receptor. Tan simple y llanamente. El esquema de conexionado que voy a utilizar es el siguiente:

           

El objetivo de esta primera fase es ver que funciona y que los voltajes están bien puestos, que las antenas funcionan, etc.

    Al final he utilizado los de telecontrolli ya que los otros al importarlos de Londres, me salían mucho más caros y los he encontrado a un precio interesante en www.micropic.com

    Tras realizar esta experiencia el resultado ha sido no tan bueno como el deseado. Resulta que a veces funciona perfectamente, pero de vez en cuando le da el siroco y recibe una señal que yo no envío. No sé si será porque tengo interferencias o qué. Eso sí cuando yo emito señal (un 1) el receptor solo recibe mi señal, pero cuando envío un 0 entonces hay veces que funciona de maravilla y otras en cambio,....

    Para solucionarlo, y para empezar ya a meterme con las comunicaciones he variado un poco las fases. Ahora la segunda fase se va a centrar más en llevar a cabo las comunicaciones.

Segunda fase:

    Para probar las comunicaciones voy a montar un emisor y un receptor con un PIC 16F84. El emisor cuando emita, previamente enviará una secuencia de 1 y 0 a una velocidad constante (la misma que el muestreo en el receptor) Solo cuando el receptor reciba esa secuencia entonces leerá los siguientes cuatro bits y los visualizará por un led. Así que eliminamos las fases anteriores por esta y las siguientes. En esta fase haremos lo siguiente:

    Establecer un protocolo de comunicación entre dos microcontroladores, enviando uno tres datos con tres pulsadores asociados y recibiéndolo el receptor con 3 leds.

    Estos tres bits servirán para codificar las ordenes enviadas al robot:
   
                                         000   Stop con el lápiz subido
                                            001   Girar izquierda con el lápiz subido
                                            010   Girar derecha con el lápiz subido
                                            011   Avanzar con el lápiz subido
                                            1XX Lo mismo que los estados anteriores pero con el lapiz bajado   

3ª Fase

   He encontrado un adaptador RS232 aislado eléctricamente. Es un circuitillo que principalmente transforma los voltages del puerto RS232 a señal TTL para poder conectar al mismo un microcontrolador.

   Si queremos controlar el microbot desde el ordenador, deberemos sacar la información del mismo por algún puerto. Quizás para ahorrarnos líos la mejor solución sería el paralelo, conectando tres líneas al circuito emisor de la tercera fase, ya que si utilizamos el puerto serie, no sé como se envía la información, es decir se que hay unos bits de inicio, de stop o de no se qué más que puede que interfiriesen en la información que queremos enviar al receptor(microbot). Como veis, aquí tengo una gran laguna en la que espero que me ayudeis.

4ª Fase.

   Tras esto voy a sustituir el cable que unía la salida aislada del puerto serie?, por el emisor de radiofrecuencia y en el microcontrolador voy a conectar el receptor de radio frecuencia. Es decir que la conexión que antes hacía directamente entre el adaptador RS232 y el microcontrolador, lo sustituyo por el emisor y el receptor de radiofrecuencia.

5ª Fase

   Montaje del robot. Voy a montar el robot de forma que obedezca a una señal que en principio lo voy a poner con interruptores. (Las tres líneas de entrada)

    El robot ya está montado en parte. He utilizado un 16F84 como cerebro del robot. Para conectarlo, en vez de hacerlo yo, porque soy un poco chapucero con el soldador, he comprado una placa en www.micropik.com para el gobierno del mismo. Dicha placa solo tiene los conectores de las puertas de entrada/salida y la alimentación.

    En otra placa he montado el circuito de alimentación, el driver para los motores y el circuito para los sensores.

    Como chasis he utilizado el del robot monty.

    Para los motores he utilizado dos motores de CC con reductora de 23:1.

Fotografía del microbot:

        En breve disponible.

    ¿Como puedo hacer el mecanismo de sube lápiz y baja lápiz?

 

7ª Fase

   Sustituir los tres interruptores por el sistema de la fase 5 y probarlo mandando señales desde el ordenador.

 

8ª Fase

   Desarrollo del intérprete de logo, con el robot, etc. Seguramente en Visual Basic. Aunque todavía no está decidido ya que igual me animo a hacerlo en C para que también funcione sobre Linux. 

3.-EL DESARROLLO PASO A PASO

    El primer circuito que voy a construir es un estabilizador de señal basado en el estabilizador 7805 al cual en la entrada colocaré una pila de 9v para obtener en la salida 5v y colocaré un led para saber que el circuito está alimentado.

    Basicamente este circuito es el siguiente:

    A la salida de 5v he conectado una resitencia de 330 ohmios y un led y este a su vez conectado a tierra para comprobar que el circuito funciona.

    Por otro lado he construido una placa para control de motores y de sensores CNY70. Esta placa practicamente lo unico que tiene son dos integrados. Un 40106 que es un inversor, con el que conseguimos amplificar la señal del CNY70 y un L293B que sirve para controlar los motores del microbot el esquema es el siguiente:

donde la salida al transistor BC 107 no es tal, sino una conexión a las puertas del PIC.

 

El driver 293 se colocaría según el siguiente esquema:

4.-POSIBLE ESTRUCTURA DEL ROBOT

    La estructura va a ser muy sencillita. 2 motores con reductora (si veo que van mal compraré 2 servos) controlados con un driver L293. Una de las ruedas del motor llevará un encoder que intentaré montar con un CNY70 junto a una rueda sobre la que dibujaré franjas negras y blancas. También debe llevar un lápiz o algo que pinte (un rotulador grueso), que pueda subirse o bajarse para que escriba o deje de escribir.

    Todo esto estará gobernado por un microcontrolador PIC 16F84 que recibirá ordenes del receptor de radiofrecuencia. A ese receptor le enviaremos la señal a través del emisor conectado al puerto serie del ordenador que emitirá las instrucciones tecleadas en el Logo que deberemos desarrollar.

    

5.-COMO COLABORAR

DUDAS QUE SE ME PLANTEAN

1.-Leer apartado de comunicaciones.

2.-Si hay alguien interesado en empezar a programar el Logo, que se ponga en contacto conmigo para que definamos  que instrucciones vamos a implementar, etc. Y si no sabes nada de logo, tranquilo que yo te mando un logo y te voy explicando poco a poco. Si te interesa... ya sabes, escríbeme. 

3.-Leer la fase 3ª

6.-DOCUMENTACIÓN(En construcción)

Aquí voy a incluir enlaces a todos los documentos de interés, esquemas eléctricos, datasheets,...  Un poquito de paciencia... en breve lo colocaré.

           

7.-FOTOGRAFIAS.


8.-COMUNICACIONES

Aquí voy a incluir información que estoy recibiendo por correo de todos los colaboradores de esta página (muchas gracias) del tema de las comunicaciones.

Carlos Chavez acerca de RS-232

Hola, estuve buscando sobre la transmisión de datos y si no me equivoco se trata de la norma RS-232 (puerto serie) espero no que te sirvan las siguientes direcciones:


http://www.euskalnet.net/shizuka/rs232.htm
http://www.pchardware.org/puertos/transmision.htm
http://facyt.uc.edu.ve/~rrodrigu/redes/clase8.html Muy precisa.

 

En respuesta a Juan Pablo Garca

Muchas gracias. Tu idea me parece buena. Ahora en cuanto a lo de como girar,tengo otra idea que te comento. Voy a poner un encoder en cada rueda para saber cuanto avanza. Así si le mando avanzar 5 posiciones. No tengo que hacerlo controlando el tiempo sino controlando la salida de dicho encoder (lo mismo para girar).

Más cosas. Se me ocurre transmitir a 2400 baudios (que para los datos que hay que enviar me parece más que suficiente), 8 bits de datos, sin paridad y con un bit de parada. El par emisor receptor que he comprado se supone que funciona bien a esta velocidad. Supongo que entonces tendré que calcular lo que dura cada bit, para hacer cada muestreo a cada intervalo correspondiente.

Como voy a enviar 8 bits cada vez. Los 3 primeros podrían mandarme el código de operación y los 5 siguientes un parámetro. Así quedaría el juego de instrucciones de la siguiente manera:
    avanzar            000    XXXXX  (donde XXXXX son el nº de pasos a girar)
    retroceder        001    XXXXX
   girar izquierda   010     XXXXX
   girar derecha     011    XXXXX
   subir pluma       100    00000
   bajar pluma       101   00000
   marcador          110   00000
Para detectar el inicio de la comunicación debo esperar a recibir 2 marcadores. Y tras esto interpreto el byte que reciba.

Me parece que algo así es lo que tu me indicas. Ahora, me vienen más dudas. ¿Cómo hago para seguir leyendo e interpretar las ordenes simultaneamente? Me explico, si interpreto un comando, por ejemplo avanza 50, como hago para
seguir leyendo si estoy mandándole avanzar 50. ¿Sería conveniente ir guardando la información en la memoria (un poco corta en el pic que he elegido) e ir interpretándola cuando reciba el marcador de fin de emisión?

Voy a  intentar una cosa. Voy a intentar comunicar dos pics, primero uniéndolos con un cable. Uno enviará un byte mediante este protocolo y el otro lo recibirá y lo sacará a unos leds para ver si esto funciona.

¿Qué te parece? ¿Crees que vamos por buen camino? Otro tema que me preocupa es que creo que el ordenador envía unos caracteres de sincronización al principio, creo que son unos bits de inicio. Y claro como este sistema va a estar conectado al ordenador, tendré que averiguar cuales son esos bits. Si sabes algo te lo agradezco.

Saludos y muchísimas gracias.
    Iker Etxebarria

----- Original Message -----
From: "Juan Pablo Garca" <juan31415926@yahoo.com>
To: "Iker Etxebarria" <ikercv2001@yahoo.es>
Sent: Wednesday, November 21, 2001 5:27 PM
Subject: Re: Comienza el tema


 En las comunicaciones, comentas que no sabes como va  lo de RS232, si mal no recuerdo, hay que establecer  una velocidad (mínimo 300, máximo en un  PC 115200) se establecen los bits de datos (7 u 8) y los de paridad
 (sin paridad, con paridad par o impar) y número de bits de parada (1 ó 2),normalmente la línea está a un 1 lógico, y los de parada son uno o dos ceros, separados, creo recordar. se suelen ver cosas como 9600,8 1 N que es 9600 bits/s 8 bits de datos 1 de parada y sin paridad (así se conectaban antes en las BBS, luego cambió la velocidad).
 En cuanto a la comunicación, recomendaría que enviases al robot órdenes con unos indicadores de tiempo de ejecución, me explico, si lo haces como comentas en la página, o bien das a cada orden una rodaja de tiempo (imaginemos que los motores permiten girar 10 grados por segundo, entonces para girar 90 grados tendrías que enviar 9 veces la misma orden) o bien indicas una orden y la siguiente transmisión indica cuantas veces o cuanto tiempo repetirlo ( girar a la izquierda 9 veces). De esta forma el ordenador, si por lo que fuera, un salvapantallas, un conjunto de tareas retrasadas,... se queda un tiempo sin poder responder, puede completar una orden y siempre será un movimiento más suave si espera la orden a cada paso.además si al protocolo le añades un fin de órdenes, pede ejecutar un paquete de acciones directamente sin tener que estar esperando a que el ordenador le dé todas las órdenes.
Si estás limitado a 3 bit, son 8 órdenes que podrían ser: avanzar,parar,retroceder,girar-izq,girar-dcha, subir-pluma,bajar-pluma,marcador. El marcador podría ser 101 y tener la secuencia: marcador,marcador como inicio de programa, luego las instrucciones y tiempos (de 1 a 8, o de dos veces de 1 a 64 )y marcador para fin, con un máximo de 10 instrucciones, por ejemplo.