PROYECTO DEL ELECTRÓNICA
SEMANA 1
Introducción
En este trabajo se va a utilizar un diseño de robot móvil en forma de hexápodo que se halla disponible en el Grupo de Robótica y se va a realizar el programa de control para que dicho robot pueda realizar movimientos básicos. De esta forma se pretende crear unas rutinas básicas de comportamientos sencillos.
Administración del Proyecto
El proyecto necesita un proceso que se ira avanzando mediante una aplicación (GanttProyect) que permite organizar y planificar proyectos a través de diagramas Gannt, como así también la carga horaria de los integrantes dentro del mismo.
Materiales del proyecto (robot hexápodo)
- Tres servos TowerPro SG90 9g
- Arduíno Duemilanove
- HC-06 bluetooth module
- madera para las patas del robot
- 4 diode led red
- 5 resistencias 330ohm 1/2w
- placa de circuito impreso
- 2 switch de encendido
- ultrasonic sensor (HC-SR04)
- 2 baterías de 9v
- clip de pilas
SEMANA 2
Construcción mecánica del Hexápodo
Para la construcción del hexápodo eh utilizado material ligero como el Poliestireno (material plástico) para evitar el exceso de peso.
También utilizo madera para fabricar las patas del hexápodo.
Construcción de una placa de conexionado
La placa de conexionado nos va a permitir dar alimentación externa a cada una de las partes del microrobot (placa Arduino, servomotores, placa de sensores), cuando esté funcionando de forma autónoma.
Placa de conexionado a los servomotores
Esta placa solo alimenta a los servomotores
Diseño en el simulador ISIS de Proteus para detectar posibles errores y también para crear las pistas del circuito
Una ves terminado el circuito en ISIS pasamos al ARES para la creación de placa de circuito impreso con una generación automática de pistas
Programa para controlar los servos con arduino
Servo servoderecho;
Servo servoizquierdo;
Servo servocentro;
void setup()
{
Serial.begin(9600);
servocentro.attach(11);
servoderecho.attach(10);
servoizquierdo.attach(9);
}
void loop()
{
servocentro.write(75);
servoizquierdo.write(60);
delay(300);
servocentro.write(105);
servoderecho.write(120);
servoizquierdo.write(120);
delay(300);
}
servocentro.write(105);
servoderecho.write(120);
servoizquierdo.write(120);
delay(300);
}
Placa Conexionada de Servos, Arduino, bluetooth, ultrasonic Doble Cara
Proceso en photoplotter
Con la maquina photoplotter se saca los fotolitos de distintas mascaras a realizar ,tales como:
botton Copper
Top Copper
Top Solder Mask
Bottom Solder Mask
Obtenido las cuatro mascaras . Se procede a una serie de pasos para obtener una placa de circuito impreso listo para usar y soldar sus respectivos componentes.
- Pasar por la Insoladora las placas fotosensibles
- Luego pasamos al revelado
- Después al proceso del ácido para quitar el cobre restante.
- Por ultimo recurrimos al proceso de quita film
El resultado final de todo este proceso es el siguiente:
PLACA TERMINADA
Esta Placa de doble cara está lista para usarse. Por lo que solo queda soldar sus respectivos componentes para dicha función.
Configuración del modulo bluetooth HC-05
Para comenzar con la configuración del modulo mediante el Arduino, (en este ejemplo utilizaremos la placa Arduino UNO), es necesario conectar previamente el circuito mostrado a continuación:
El modulo de bluetooth HC-05 soporta los voltajes de entrada de 3.3 y 5V.
Una vez armado el circuito hay que cargar el “Sketch” que nos permitirá entrar al modo de configuración del HC-05, conocido como modo AT, mediante el IDE de Arduino.
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
void setup()
{
pinMode(9, OUTPUT);
digitalWrite(9, HIGH);
Serial.begin(9600);
Serial.println("Enter AT commands:");
BTSerial.begin(38400);
}
void loop()
{
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
}
Cuando se tenga cargado con éxito el Sketch y el circuito armado procedemos a meter el HC-05 en modo AT (sin apagar o desconectar el Arduino de la Pc-Usb), para esto solo es necesario desconectar el cable de voltaje (VCC) de la placa Arduino un momento y volverlo a conectar, notaremos además que el led del bluetooth prenderá y se apagara cada dos segundos aproximadamente. Si todo sale bien abriremos en el IDE de Arduino /herramientas/monitor serial, modificamos los valores de velocidad a “9600 baud” y a “Ambos Nl y CR”, en este momento observaremos en la pantalla que dice: “Enter AT commands:” , si nosotros mandamos el comando AT, nos debe responder OK.
Ahora si podemos comenzar con la configuración del dispositivo HC-05. Los siguientes son los comandos básicos que debemos saber para configurar nuestro dispositivo bluetooth:
Saber el nombre del modulo.
AT+NAME?
Cambiar el nombre, en el ejemplo siguiente se cambia por “MINOMBRE”.
AT+NAME= MINOMBRE
Un dato muy importante el HC-05 funciona como esclavo y maestro.
- Como esclavo: espera que desde otro dispositivo nos conectemos.
- Como maestro: el HC-05 se conecta a otro dispositivo.
Saber cómo está configurado con el comando: AT+ROLE?
- Si nos contesta “0″ esta en modo esclavo.
- Si nos contesta “1″ esta en modo maestro.
Por defecto viene en modo esclavo.
- Cambiarlo al modo esclavo: Comando:AT+ROLE=0
- Cambiarlo al modo maestro: Comando:AT+ROLE=1
Saber la contraseña del HC-05 Comando: AT+PSWD?
Por defecto suele venir la “1234″ o la “0000″.
Muestra la configuración con la placa Arduino, por defecto viene configurado a una velocidad de 9600. Comando: AT+UART?
COMUNICACIÓN VÍA BLUETOOTH ANDROID ARDUINO
La aplicación Android que se utilizar es el ai2.appinventor
visualmente mi programa se vera así:
Aquí esta el programa para pasar a nuestro móvil.
y a su vez el programa arduino para que la aplicación androi pueda realizar las rutinas propuestas.
#include <Servo.h>
Servo servocentro;
Servo servoderecho;
Servo servoizquierdo;
int c; // declaramos las variables a usar
int pos = 90;
void setup(){
Serial3.begin(9600);
servocentro.attach(11); //conecta el servo del centro al pin 9
servoderecho.attach(10); // conecta el servo derecho al pin 8
servoizquierdo.attach(9); // conecta el servo izquierdo al pin 10
}
void loop()
{
if (Serial3.available()>0) { // Comprueba si hay algún dato recibido, y si es así
c = Serial3.read();
switch(c){ // Dependiendo del dato leido realiza una de las siguientes acciones
case 'A': adelante(); break;
case 'R': atras(); break;
case 'D': girar_der(); break;
case 'I': girar_iz(); break;
case 'P': parado(); break;
}
}
}
//funciones de caminar//
// camina hacia adelante//
void adelante()
{
servocentro.write(105);
servoderecho.write(120);
servoizquierdo.write(120);
delay(500);
servocentro.write(75);
servoderecho.write(60);
servoizquierdo.write(60);
delay(500);
}
//camina retrocediendo
void atras()
{
servocentro.write(105);
servoderecho.write(60);
servoizquierdo.write(60);
delay(500);
servocentro.write(75);
servoderecho.write(120);
servoizquierdo.write(120);
delay(500);
}
//gira el cuerpo
void girar_iz()
{
servocentro.write(75);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
servocentro.write(105);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
servocentro.write(75);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
servocentro.write(105);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
servocentro.write(75);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
servocentro.write(105);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
servocentro.write(75);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
servocentro.write(105);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
servocentro.write(75);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
servocentro.write(105);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
}
void girar_der()
{
servocentro.write(75);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
servocentro.write(105);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
servocentro.write(75);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
servocentro.write(105);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
servocentro.write(75);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
servocentro.write(105);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
servocentro.write(75);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
servocentro.write(105);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
servocentro.write(75);
servoderecho.write(60);
servoizquierdo.write(120);
delay(500);
servocentro.write(105);
servoderecho.write(120);
servoizquierdo.write(60);
delay(500);
}
void parado()
{
servocentro.write(90);
servoderecho.write(90);
servoizquierdo.write(90); // Posiciona el servo2 en la posicion cetrada
}
ROBOT HEXAPODO CON SENSOR DE DISTANCIA (ULTRASONIC HC_SR04)
También el hexapodo caminara de forma automática usando un sensor de distancia (Ultrasonic HC_SR04) que evitara los obstáculos
Su Programa arduino para realizar distintas funciones son:
#define trigPin 2
#define echoPin 3
#include <Servo.h>
Servo servoMain; // Define our Servo
Servo servoMain1;
Servo servoMain2;
int pos= 90;
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servoMain.attach(9); // servo on analog pin 0
servoMain1.attach(10);
servoMain2.attach(11);
}
void loop() {
servoMain.write(120); // Turn Servo Right to 135 degrees
servoMain1.write(120);
servoMain2.write(105);
delay(100); // Wait 1 second
servoMain.write(60); // Turn Servo Left to 45 degrees
servoMain1.write(60);
servoMain2.write(75);
int duration, distance;
digitalWrite(trigPin, HIGH);
delayMicroseconds(100);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
Serial.print(distance);
Serial.println(" cm");
if (distance >=15){
servoMain.write(90);
servoMain1.write(90);
servoMain2.write(90);
delay(100);
}
else {
servoMain.write(60);
servoMain1.write(120);
servoMain2.write(75);
delay(100);
servoMain.write(120);
servoMain1.write(60);
servoMain2.write(75);
delay(100);
servoMain.write(60);
servoMain1.write(120);
servoMain2.write(105);
delay(100);
servoMain.write(120);
servoMain1.write(60);
servoMain2.write(75);
delay(100);
servoMain.write(60);
servoMain1.write(120);
servoMain2.write(105);
delay(100);
servoMain.write(120);
servoMain1.write(60);
servoMain2.write(75);
delay(100);
}
}
DIAGRAMA DE ESTADOS
VÍDEO Y FOTOS FINALES DEL PROYECTO
hexápodo control automático por un sensor
de distancia ( ultrasonido).
Fotos de perfil del Hexapodo
No hay comentarios:
Los comentarios nuevos no están permitidos.