Sistema de blogs Diarium
Universidad de Salamanca
Raúl Alves Santos
Facultad de Ciencias. Informática y Automática
 

MiniAntimorlacoPi (Primera Versión)

Siguiendo la tradición del los robots de madera y con el objetivo de emplear la RaspberryPi en un robot se procede a crear a MiniAntimorlacoPi.

Componentes necesarios:

 

Montando la plataforma:

Siguiendo el diseño de Antimorlaco con varias capas de madera obtenemos la estructura en la cual se van a montar los motores, ruedas y controladora.

 

 

Probando la controladora con la RaspberryPi:

 

 

En la siguiente dirección se puede encontrar un manual de la controladora de motores:

http://www.mineco.gob.es/stfls/mineco/prensa/ficheros/noticias/2013/130802_APLSCP_2_agosto.pdf

 

Como se ve en la siguiente figura no es exactamente la misma controladora pero es muy similar.

Controladora

Para manejar los botones se necesitan 6 salidas (ENA, ENB, IN1, IN2, IN3 e IN4). Estas están agrupadas de tres en tres (ENA-IN1-IN2 y ENB-IN3-IN4). La entradas INx sirven para seleccionar la dirección de giro, y las ENx para habilitar el motor o no, en este caso estas entradas conectadas a una salida PWM permitirían manejar la velocidad de giro.

Para manejar estas 6 señales se van a emplear seis pines de la RaspberryPi (hay que tener en cuenta que las E/S son de 3.3v, aunque en este caso, en principio da lo mismo). Para manejarlos se va a emplear la librería Wiring Pi:

WiringPi is a GPIO access library written in C for the BCM2835 used in the Raspberry Pi. It’s released under the GNU LGPLv3 license and is usable from C and C++ and many other languages with suitable wrappers (See below) It’s designed to be familiar to people who have used the Arduino “wiring” system” http://wiringpi.com/

La placa tiene dos conectores, P1 y P5, con los pines GPIO

Se conectaran directamente los pines de la Raspberry a la controladora (la numeración de pines es la indicada para WiringPi):

  • ENA -> Pin 0
  • IN1 -> Pin 2
  • IN2 -> Pin 3
  • ENB -> Pin 1
  • IN3 -> Pin 4
  • IN4 -> Pin 5

P1000821

Para probar el funcionamiento, una vez conectado todo, se alimenta la placa controladora con una fuente de 9v y habrá que hacer un programa en C para activar y desactivar las distintas salidas. Para ello se va a emplear la librería WiringPi, para instalarla hay que seguir los siguientes pasos (http://wiringpi.com/download-and-install/)

  1. sudo apt-get install git-core
  2. sudo apt-get update
  3. sudo apt-get upgrade
  4. git clone git://git.drogon.net/wiringPi
  5. cd wiringPi
  6. git pull origin
  7. cd wiringPi
  8. ./build

Una vez hecho esto hay gran variedad de ejemplos de demostración de uso de las GPIO, PWM, I2C, etc.

Para probar si está bien instalado:

  1. cd ./wiringPi/gpio
  2. ./pintest
  3. ./gpio readall

Para la prueba inicial basta con realizar un programa que maneje los seis pines:

  1. Declarar la librería: #include <wiringPi.h>
  2. Inicializar: wiringPiSetup();
  3. Configurar los pines: pinMode(ENA,OUTPUT);
  4. Escribir un valor: digitalWrite(ENA, HIGH);

Para realizar una prueba modificando la velocidad de giro de los motores se va a emplear PWM, como solamente se dispone de un PWM hardware se va a emplear PWM software, para ello:

  1. Declarar adicionalmente la librería: #include <softPwm.h>
  2. Iniciar los PEM software: softPwmWrite(ENA, 0, RANGO);
  3. Dar un valor: softPwmWrite(EN1, velocidad);

 

Con esto, y unas funciones para pasar de valores de velocidad de avance y giro a valores de PWM y determinar el sentido de giro, ya se podrían controlar los motores.

 

Todo junto:

Ahora, para ver como se mueve la plataforma, hay que montar el soporte junto a la RaspberryPi y las baterías.

 

 Primera prueba:

La primera prueba realizada se ha hecho siguiendo lo visto anteriormente, un programa que según se pulsen las teclas O,P,Q,A se mueva el robot, y pulsando N y M que se permita variar la velocidad. Con este programa se ha probado los motores, al aire, y después para manejarlo de forma remota simplemente se ha iniciado una conexión ssh remota y se ha arrancado el programa desde el terminal.

Segunda prueba:

La segunda prueba realizada en vez de arrancar un terminal remoto… lo que se ha creado es un servidor al cual se puede conectar un cliente y mandarle órdenes de movimiento por un socket. En este caso se ha respetado el protocolo empleado en Antimorlaco, con lo que el mismo programa cliente podría conectarse a los dos robots sin necesidad de modificaciones.

Reutilizando el software existente para Antimorlaco se ha creado el servidor (RaspberryPi-Linux) y el cliente (Windows 7).

 

WindowsAntimorlacoPi

 

 

Y con esto ya está preparado para la segunda versión en la que se añadirán los detectores de proximidad y seguidores de líneas.

 

Galería completa:

 

 

 

 

About ralves

Raúl Alves Santos

,

Se han bloqueado los comentarios.
Política de privacidad
Studii Salmantini. Campus de excelencia internacional