Usar un sistema de juegos portátil ODROID-GO para controlar un par de pequeños motores DC ubicado dentro de un robot tanque es más fácil de lo que piensas. Esta tarea es aún más llamativa cuando te das cuenta que solo es necesario utilizar dos de los pines de entrada/salida de propósito general (GPIO) del GO.
En términos generales, la "típica" interfaz de control para un motor DC consta de cinco líneas separadas e independientes: las líneas de alimentación/control obvias, como es 5V o GND, y tres entradas lógicas para controlar el robot (por ejemplo, una entrada para avanzar, una entrada para retroceder y una línea lógica final para controlar la velocidad del motor). Sin embargo, los lectores más perspicaces se percatarán de que únicamente se conectan realmente al motor dos líneas. Las otras tres líneas configuran un controlador de motor para "manejar" estas dos líneas de alimentación conectadas (es decir, cambian la polaridad y controlan una serie de pulsos al motor a través de una señal de modulación de ancho de pulso (PWM)). ¿Cómo es esto posible?
El "ingrediente secreto" para que todo funcione es un pequeño circuito que reside entre el controlador del robot y el motor DC. Este circuito puede denominarse de varias formas como son un "controlador de motor", "Puente H" o "regulador de motor", aunque su función es manejar el motor de acuerdo con los comandos enviados desde el controlador del robot.
En nuestro caso, el ODROID-GO es el controlador del robot. Una plataforma móvil en forma de tanque DFRobot es nuestro robot tanque. Un pequeño circuito transistor es nuestro controlador de motor. Éste, sin embargo, NO es un circuito H-Bridge, sino un simple interruptor de alimentación. Por otro lado, solo usaremos dos pines GPIO para controlar nuestro robot tanque: GPIO #4 y GPIO #15. Sin embargo, también necesitaremos usar el pin GND #1 y el pin #6 3.3V de la interfaz del cabezal GPIO del ODROID-GO. Estos pines de alimentación NO controlan el robot. Sino más bien se utilizan para ayudar al ODROID-GO a "comunicarse" con el circuito del controlador de motor basado en un transistor.
Y lo mejor de GO-Tank es que tu dispositivo inteligente con WiFi será utilizado para controlar el robot tanque.
Componentes
- Plataforma móvil DFRobot Devastator Tank #ROB0128 - 84.90$ (mouser.com)
- Hardkernel Level Shifter: 5V a 3.3V - 1$ (hardkernel.com o ameridroid.com)
- DC-DC Hardkernel Step Up - 1.50$ (hardkernel.com o ameridroid.com)
- 2 Transistores 2N3904 NPN - 1.28$ (bgmicro.com)
- 2 Diode 1N4001 - 0.04$ (bgmicro.com)
- 2 resistencias de 330 ohmios - 5.23$ (bgmicro.com)
- Baterías, placas de prueba, cable
Paso a paso
1. De serie, el tanque Devastator no parecía el apropiado. De modo que fabrique un de par paneles laterales para la carcasa inferior. Estos nuevos paneles me permitieron mover las ruedas dentadas y los motores a la parte trasera del robot.
2. Sigue el diseño del circuito de la wiki ODROID Ultrasonic Distance Meter. Esta disposición permitirá que los pines GPIO de 3.3V en el ODROID-GO dirijan los controles del motor del interruptor transistor con alimentación de 5V. En este caso, el Step Up es utilizado para alimentar el Level Shifter y NO para alimentar los motores.
3. Conecta dos controladores de motor del interruptor de potencia siguiendo el diseño de este diagrama de placa de pruebas (Figura 7) y la fotografía (Figura 7a):
4. Conecta una de las salidas del controlador del motor a uno de los terminales de alimentación de los motores DC. Haz lo mismo para el otro controlador de motor y conéctalo al segundo motor DC. Conecta el cable de la puesta a tierra (GND; negro) al otro terminal no conectado en cada motor.
5. Conecta el paquete de baterías del Devastator a ambos controladores del motor (como se muestra en la Figura 8 con los cables GND rojo y negro). Cuando se envía un comando por uno de los pines GPIO ODROID-GO, los transistores en estos controladores de motor conmutarán la energía de la batería directamente en cada motor. ¡Interesante!
6. Programa el ODROID-GO con un código similar al siguiente:
#include #include #define PIN_MOTOR_RIGHT 15 #define PIN_MOTOR_LEFT 4 const char *apSSID = "ODROID_GO_AP"; const char *apPWD = "12345678"; WiFiServer server(80); ILI9341 lcd = ILI9341(); void setup() { IPAddress gateway(192, 168, 4, 1); IPAddress subnet(255, 255, 255, 0); --snip-- Inserta los parámetros del Punto de acceso WiFi, la configuración de la LCD y configura la interfaz web Luego añade las funciones para definir movimientos hacia la izquierda, derecha y hacia adelante: void goFORWARD() { lcd.setTextFont(4); lcd.setTextSize(2); lcd.setCharCursor(2, 5); lcd.setTextColor(PURPLE, BLACK); lcd.println("Come Back,"); lcd.setTextSize(3); lcd.setCharCursor(2, 7); lcd.println("Shane!"); digitalWrite(PIN_MOTOR_RIGHT, HIGH); digitalWrite(PIN_MOTOR_LEFT, HIGH); delay(2000); digitalWrite(PIN_MOTOR_RIGHT, LOW); digitalWrite(PIN_MOTOR_LEFT, LOW); }7. Coloca el robot Devastator encima de una pequeña caja para probar su funcionamiento.
Después de encender el ODROID-GO, conecta tu dispositivo inteligente al punto de acceso WiFi ODROID-GO creado dentro del código del programa y usa tu navegador para cargar la página web generada por el código en: http://192.168.4.1. Al presionar "LEFT" en esta página web, debería ver una pantalla roja en el ODROID-GO y la banda de rodadura izquierda debería moverse, esta acción girará el tanque a la derecha. Al presionar "RIGHT", la pantalla se vuelve verde y mueve el tanque hacia la izquierda, mientras que al presionar en “FORWARD" se ejecutan ambas huellas y el tanque se desplazará hacia adelante.
Ahora sal y disfruta de tu recién descubierto Tanque ODROID-GO móvil.
Notas
1. TODAS las líneas de puesta a tierra (GND) deben conectarse entre sí, ¡independientemente de los voltajes!
2. ¿Por qué Shane? Lee la clásica novela del oeste de Jack Schaefer de 1949, o ve la adaptación cinematográfica de 1953 protagonizada por Alan Ladd y espera al gemido del pequeño Joey por el pistolero que se marcha.
Be the first to comment