Barrebot v1.0 c803032ec0fd70e1a9af9ff9bb182402 by carloslon19 3d model
3dmdb logo
Thingiverse
Barrebot v1.0  c803032ec0fd70e1a9af9ff9bb182402 by carloslon19

Barrebot v1.0 c803032ec0fd70e1a9af9ff9bb182402 by carloslon19

by Thingiverse
Last crawled date: 2 years, 11 months ago
Este es un robot para el trabajo educativo, y tiene el propósito de ayudante casero para barrer y aspirar el piso en una vivienda,
Paso 1. diseño de piezas para su montaje; se diseñó en tinkercad la pieza del frente y otra pieza que va unida a la de enfrente en la parte superior donde se aloja la matriz de leds. en la de enfrente van los ultrasonidos
Paso 2. se realiza el corte de las piezas; las piezas de la base se consiguió en el comercio, se agrego la pieza del frente y otra que va unida en la parte superior, adicional a estas piezas se realizaron otras piezas con material reciclado de aluminio para el soporte del banco de baterías, el servomotor del brazo, la base de la placa de arduino se monto sobre soportes de placa de pc reciclados.
Paso 3. Se realiza el montaje de la electrónica en la base del carro robótico, se prueban los elementos para su funcionamiento con los ejemplos de Facilino, y se realizan las conexiones según el diseño en Fritzing. se realizo el video de los ejemplos cuyo funcionamiento es visible. se modifico el uso de los servomotores de rotación por motores DC y para su control se uso el Driver L298N
http://fritzing.org/projects/barrebot-v-10
Paso 4. Se utiliza la aplicación de Arduino y de APP Inventor para generar el código de la aplicación Barrebot. se puso a funcionar el cambio de caras, el acceso al Bluetooth el acceso al acelerómetro, en el centro a las direcciones del los motores del carro, y a subir y a bajar la escoba con el servo. no se ha activado el seguilineas ni el ultrasonido aun tratare de hacerlo antes del vencimiento del examen. en algun momento pense que fallaba el sistema pero era solo falta de energía en las baterías por eso el video aparece con energía conectada a la red y el cable de USB conectado al Arduino, el sistema consume mucha energía, lo cual es un parámetro a tener en cuenta para el diseño de la barredora rea. subo los códigos utilizados
pude trabajar el acelerómetro, pero para el movimiento autónomo no pude realizar el seguilineas ya que los motores DC se mueven con diferente fuerza y no funciona bien, trate de que barriera su recorrido pero parece mas un baile loco, por los mismos motores.
BARREBOT_V_1.0
/
Barrebot v 1.0
El proposito de este ejercicio es tener las bases necesarias para hacer un robot ayundante
domestico, poder calcular las necesidades de fuerza y demas parametros necesarios para que
realice su labor en solitario/
include
Servo servo;
include
int _bt_cmd=0;
/ Global variables /
SoftwareSerial blueToothSerial(2,4);
/ Function declaration /
void LEDMatrix_init(int cs, int din, int clk);
void writeRow(int cs, int din, int clk, int row, int data);
void maxAll (int cs, int din, int clk, int reg, int col);
void putByte (int din, int clk, int data);
void happy(int cs, int din, int clk);
void angry(int cs, int din, int clk);
void sad(int cs, int din, int clk);
void heart(int cs, int din, int clk);
int IN3 = 6;
int IN4 = 5;
int IN1 = 8;
int IN2 = 9;
void setup()
{
//Attach servo to pin 3
servo.attach(3);
//Set pins for bluetooth transmission/reception
pinMode(2,INPUT);
pinMode(4, OUTPUT);
blueToothSerial.begin(9600);
blueToothSerial.flush();
//Set LED Matrix pins
pinMode(10,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
//Initialize LED Matrix
maxAll(10,12,11,11,7);
maxAll(10,12,11,9,0);
maxAll(10,12,11,12,1);
maxAll(10,12,11,15,0);
int i=0;
for (i = 1; i <= 8; i++)
maxAll(10,12,11,i,0);
maxAll(10,12,11,10,15);
pinMode (IN4, OUTPUT); // Input4 conectada al pin 5
pinMode (IN3, OUTPUT); // Input3 conectada al pin 6
pinMode (IN1, OUTPUT); // Input4 conectada al pin 8
pinMode (IN2, OUTPUT); // Input3 conectada al pin 9
}
void loop()
{
digitalWrite (IN4, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
//Check received command
if (blueToothSerial.available()>0 || _bt_cmd>0)
{
int cmd=blueToothSerial.read();
if ((cmd==2)||(_bt_cmd==2)){
happy(10,12,11);

}
if ((cmd==3)||(_bt_cmd==3)){
sad(10,12,11);
delay(2000);
}
if ((cmd==4)||(_bt_cmd==4)){
heart(10,12,11);

}

if ((cmd==5)||(_bt_cmd==5)){
angry(10,12,11);

}

if ((cmd==21)||(_bt_cmd==21)){
_bt_cmd=21;
// Motor adelante
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN1, LOW);

}
if ((cmd==22)||(_bt_cmd==22)){
_bt_cmd=22;
// Motor atras

digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN1, HIGH);
// delay(100);
}
if ((cmd==25)||(_bt_cmd==25)){
_bt_cmd=25;
// Motor PARA
digitalWrite (IN4, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);

}
if ((cmd==23)||(_bt_cmd==23)){
_bt_cmd=23;
// Motor derecha

digitalWrite (IN4, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);

}
if ((cmd==24)||(_bt_cmd==24)){
_bt_cmd=24;
// Motor izquierda

digitalWrite (IN4, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);

}
if ((cmd==34)||(_bt_cmd==34)){
_bt_cmd=34;
// Escoba abajo
servo.write(45);

}
if ((cmd==32)||(_bt_cmd==32)){
_bt_cmd=32;
// Escoba arriba
servo.write(135);

}

}
}
/ Function definition /
void LEDMatrix_init(int cs, int din, int clk) {
maxAll(cs,din,clk,11,7);
maxAll(cs,din,clk,9,0);
maxAll(cs,din,clk,12,1);
maxAll(cs,din,clk,15,0);
int i=0;
for (i = 1; i <= 8; i++) {
maxAll(cs,din,clk,i, 0);
}
maxAll(cs,din,clk,10,15);
}
void writeRow(int cs, int din, int clk, int row, int data) {
digitalWrite(cs,LOW);
putByte(din,clk,row);
putByte(din,clk,data);
digitalWrite(cs,LOW);
digitalWrite(cs,HIGH);
}
void maxAll (int cs, int din, int clk, int reg, int col) {
digitalWrite(cs,LOW);
putByte(din,clk,reg);
putByte(din,clk,col);
digitalWrite(cs,LOW);
digitalWrite(cs,HIGH);
}
void putByte (int din, int clk, int data) {
byte i = 8;
byte mask;
while(i > 0) {
mask = 0x01 << (i - 1);
digitalWrite(clk,LOW);
if (data & mask){
digitalWrite(din,HIGH);
}
else{
digitalWrite(din,LOW);
}
digitalWrite(clk,HIGH);
--i;
}
}
void sad(int cs, int din, int clk) {
writeRow(cs,din,clk,1, 12);
writeRow(cs,din,clk,2, 24);
writeRow(cs,din,clk,3, 48);
writeRow(cs,din,clk,4, 48);
writeRow(cs,din,clk,5, 48);
writeRow(cs,din,clk,6, 48);
writeRow(cs,din,clk,7, 24);
writeRow(cs,din,clk,8, 12);
}
void angry(int cs, int din, int clk) {
writeRow(cs,din,clk,1, 2);
writeRow(cs,din,clk,2, 68);
writeRow(cs,din,clk,3, 36);
writeRow(cs,din,clk,4, 16);
writeRow(cs,din,clk,5, 16);
writeRow(cs,din,clk,6, 36);
writeRow(cs,din,clk,7, 68);
writeRow(cs,din,clk,8, 2);
}
void happy (int cs, int din, int clk) {
writeRow(cs,din,clk,1, 48);
writeRow(cs,din,clk,2, 24);
writeRow(cs,din,clk,3, 12);
writeRow(cs,din,clk,4, 12);
writeRow(cs,din,clk,5, 12);
writeRow(cs,din,clk,6, 12);
writeRow(cs,din,clk,7, 24);
writeRow(cs,din,clk,8, 48);
}
void heart(int cs, int din, int clk) {
writeRow(cs,din,clk,1, 12);
writeRow(cs,din,clk,2, 30);
writeRow(cs,din,clk,3, 62);
writeRow(cs,din,clk,4, 124);
writeRow(cs,din,clk,5, 124);
writeRow(cs,din,clk,6, 62);
writeRow(cs,din,clk,7, 30);
writeRow(cs,din,clk,8, 12);
}

Tags