
Este módulo estará implementado con un microcontrolador 68HC11, utilizando para ello el kit de evaluación 68HC11 Evaluation Board. Tanto el teclado como la unidad de transmisión de radio frecuencia estarán conectados al los puertos diponibles en el kit.
Esquemático de la conexión eléctrica:

La comunicación entre el control y el robot poseerán las siguientes características:
Medio de Transmisión : Aire.
Transmisor y Receptor: Radio frecuencia en la banda UHF a 418 MHZ, hasta 4800 baudios, compatible TTL, con modulación directa (ASK), el 1 lógico equivale a la presencia de la portadora y el 0 lógico equivale a la ausencia de la portadora.
Codificación: 1 bit de inicio 8 bit de datos y 1 de parada.
Velocidad de Comunicación: 2604 baudios. Se selecciona esta velocidad debido a la limitación impuesta por los módulos transmisor y receptor de 4800 baudios; además esta velocidad es posible configurarla con exactitud en los microcontroladores utilizados para ambos módulos.
Comados transmitidos del control al robot: Los comandos serán específicamente caracteres ASCII.
A: Avance
I: Giro a la izquierda
D: Giro a la derecha
P: Parada
T: Trípode
M: Marcha
O: Oruga
El módulo controlado poseerá un microcontrolador AT89C2051, el cual dispondrá de la interfaz de potencia, la interfaz de radio frecuencia y el sensor de contacto, necesarios para la recibir los comandos y ejecutarlos, y detectar obstáculos.
Esquemático de la conexión eléctrica:

Los agoritmos de las rutinas a ser implementadas en el módulo de control remoto se describen a continuación:
Rutina:
Control
Esta es la subrutina principal.
Variables:
BANDERA: Si bandera vale 1 hay un comando a transmitir y 0 en otro caso.
VECES: Si vale 0 significa que en ese barrido no se detectó alguna tecla apretada, si esta variable tiene otro valor significa que alguna tecla está siendo presionada.
TECLA: Contiene el valor numérico de la tecla apretada es decir el valor del comando.
ASCII: Contiene el valor ASCII de la tecla apretada.
INICIO
INCIALIZAR LAS VARIABLES
HABILITAR INTERRUPCIONES
INICIALIZAR EL PUNTERO
LLAMAR A SUBRUTINA INICIAL
MIENTRAS
SI BANDERA=1(si es verdadero significa que hay un comando a transmitir)
LIMPIAR BANDERA
LLAMAR A SUBRUTINA TRANSMITIR
FIN SI
FIN MIENTRAS
*************************************************************************
Subrutina:
Teclado
Realiza el barrido de teclado. Esta es la parte de la rutina que permite configurar los puertos y la interrupción periódica.
Variables:
FILA: Indica la fila actual.
INICIO
ESTABLECER EL TEMPORIZADOR DE LA INTERRUPCIÓN PERIÓDICA PARA QUE NO INTERRUMPA NUEVAMENTE
SI FILA ES IGUAL A CERO ENTONCES
ESCRIBIR EN LA PRIMERA FILA A TRAVÉS DEL PUERTO DE SALIDA
LLAMAR A SUBRUTINA COLUMNAS
SI NINGUNA TECLA ES PRESIONADA ENTONCES
INCREMENTAR PARA IR A LA SIGUIENTE FILA
FINSI
SINO
SI FILA ES IGUAL A UNO ENTONCES
ESCRIBIR EN LA SEGUNDA FILA A TRAVÉS DEL PUERTO DE SALIDA
LLAMAR A SUBRUTINA COLUMNAS
SI NINGUNA TECLA ES PRESIONADA ENTONCES
INCREMENTAR PARA IR A LA SIGUIENTE FILA
FINSI
SINO
SI FILA ES IGUAL A DOS ENTONCES
ESCRIBIR EN LA TERCERA FILA A TRAVÉS DEL PUERTO DE SALIDA
LLAMAR A SUBRUTINA COLUMNAS
SI NINGUNA TECLA ES PRESIONADA ENTONCES
INCREMENTAR PARA IR A LA SIGUIENTE FILA
FINSI
SINO
ESCRIBIR EN LA CUARTA FILA A TRAVÉS DEL PUERTO DE SALIDA
LLAMAR A SUBRUTINA COLUMNAS
SI NINGUNA TECLA ES PRESIONADA ENTONCES
LIMPIAR PARA LA IR A LA PRIMERA FILA
FINSI
FINSI
FINSI
FINSI
FIN
*************************************************************************
Subrutina:
Columnas
Forma parte del módulo barrido de teclado.
Variables:
COLUMNA: Indica la columna actual.
INICIO
SI COLUMNA ES IGUAL A CERO ENTONCES
LEER DE LA PRIMERA COLUMNA A TRAVÉS DEL PUERTO DE ENTRADA
SI TECLA ES APRETADA ENTONCES
LLAMAR A SUBRUTINA FILTRADO
SINO
ESTABLECER QUE NINGUNA TECLA HA SIDO APRETADA
INCREMENTAR PARA IR A LA SIGUIENTE COLUMNA
FINSI
SINO
SI COLUMNA ES IGUAL A UNO ENTONCES
LEER DE LA SEGUNDA COLUMNA A TRAVÉS DEL PUERTO DE ENTRADA
SI TECLA ES APRETADA ENTONCES
LLAMAR A SUBRUTINA FILTRADO
SINO
ESTABLECER QUE NINGUNA TECLA HA SIDO APRETADA
INCREMENTAR PARA IR A LA SIGUIENTE COLUMNA
FINSI
SINO
LEER DE LA TERCERA COLUMNA A TRAVÉS DEL PUERTO DE ENTRADA
SI TECLA ES APRETADA ENTONCES
LLAMAR A SUBRUTINA FILTRADO
SINO
ESTABLECER QUE NINGUNA TECLA HA SIDO APRETADA
LIMPIAR PARA IR A LA PRIMERA COLUMNA
FINSI
FINSI
FINSI
FIN
*************************************************************************
Subrutina:
Filtrado
Forma parte del módulo barrido de teclado
Variables:
INICIO
SI VECES ES IGUAL A CERO ENTONCES
INCREMENTAR VECES IR AL SIGUIENTE VALOR
SINO
SI VECES ES IGUAL A UNO ENTONCES
LLAMAR A SUBRUTINA GUARDAR
INCREMENTAR VECES PARA IR AL SIGUIENTE VALOR
SINO
SI VECES ES IGUAL A DOS ENTONCES
INCREMENTAR VECES PARA IR AL SIGUIENTE VALOR
FINSI
FINSI
FINSI
FIN
*************************************************************************
Subrutina:
Mostrar
Forma parte del módulo barrido de teclado. Permite guardar el valor numérico de la tecla apretada, esto se realiza aplicando la fórmula: 3*FILA+COLUMNA+1, además avisa al principal que fue apretada una tecla.
Codificación:
1------1 4------4 7-------7 *------10
2------2 5------5 8-------8 0------11
3------3 6------6 9-------9 #------12
INICIO
CARGAR FILA EN A
CARGAR FILA EN B
EN A CARGAR A+B
CARGAR COLUMNA EN B
EN A CARGAR A+B
EN A CARGAR A+1
GUARDAR EN MEMORIA (TECLA)
EN B CARGAR (TECLA)
INCREMENTAR BANDERA
LLAMAR A SUBRUTINA TRANSMITE
LLAMAR A SUBRUTINA MOSTRAR
FIN
*************************************************************************
Subrutina:
Transmitir
Se encarga realizar la transmisión de la orden o comando (1 BYTE) de la siguiente manera: transmite la orden PARAR 'P', luego se produce un retardo de 2,8 seg. aproximadamente, esto es para que el robot siempre pueda procesar la orden de parada y posteriormente la nueva orden.
INICIO
TRANSMITE 'P' PARAR
ESPERA
TRANSMITE EL COMANDO
FIN
*************************************************************************
Subrutina:
Digascii_1
Realiza la conversión a bytes para poder transmitir. Se realiza la siguiente conversión:
ASCII_1 ----- $54 T
ASCII_2 ----- $4D M
ASCII_3 ----- $4F O
ASCII_4 ----- $34 4
ASCII_5 ----- $41 A
ASCII_6 ----- $36 6
ASCII_7 ----- $49 I
ASCII_8 ----- $38 8
ASCII_9 ----- $44 D
ASCII_# ----- $2A *
ASCII_0 ----- $50 P
ASCII_* ----- $23 #
*************************************************************************
Subrutina:
Inicial
Permite la configuración del RTI para el teclado y la configuración del puerto serial.
INICIO
CONFIGURAR LA INTERRUPCIÓN PERIÓDICA PARA EJECUTAR LA RUTINA DE INTERUPCIÓN
CONFIGURAR EL PUERTO SERIAL
FIN
En la gráfica se muestra la máquina de estados que controla el flujo del comportamiento del módulo controlado:

Algoritmo de control de movimiento de las patas de Stiquito se describe mediante el siguiente diagrama de flujo:

El tiempo de activación se implementará según el siguiente diagrama. El valor de la bandera será inicialmente igual a uno, por lo que se quedará en el loop hasta que el temporizador llegue al tiempo configurado, cuando esto suceda el valor de la bandera cambiará a cero en el manejador de interrupción del temporizador y de esta manera terminará el loop.

El tiempo de recuperación, es decir, el tiempo en el que las patas activadas vuelven a su posición original se implementará como lo indica el siguiente diagrama:
