Un proyecto sencillo. Un robot para de trasportar algunas cosas. Parece una tonteria, pero si alguien tiene movilidad reducida puede ser una pequeña ayuda
Controlado con teléfono Android a través de Bluetooth. Comandos por botones en pantalla o por medio del acelerómetro del teléfono.
Lleva una cámara IP wifi que a través del modem de la vivienda, nos permite ver por donde anda el "bicho".
Todo puede verse en las fotografias.
-Dos motores de CC instalados en tabla de cocina.
-Control de motores con circuito basado en L298N.
-Arduino mini con módulo Bluetooth.
-Cámara IP Wifi Edimax (opcional)
-Bateria Lipo 2S de 1500mA.
Robot camarero
//RobotCamarero //www.jopapa.me //2015
int d1A=2; //IN1 int d2A=3; //IN2 int speedA=9; //ENA int d1B=4; //IN3 int d2B=5; //IN4 int speedB=10; //ENB int speed; int f=0; //para aumentar fuerza en giros al ir cargado
void setup(){ Serial.begin(9600); pinMode(d1A, OUTPUT); pinMode(d2A, OUTPUT); pinMode(speedA, OUTPUT); pinMode(d1B, OUTPUT); pinMode(d2B, OUTPUT); pinMode(speedB, OUTPUT); speed=0; pinMode(6, OUTPUT); //activación del pin 6 como salida: para el pulso ultrasónico pinMode(7, INPUT); //activación del pin 7 como entrada: tiempo del rebote }
void loop(){ char dato= Serial.read(); // if (Serial.available()>0){input=Serial.read();}
if (dato == 'v') { //+ potencia (util en giros si el robot va cargado) if (f<240){ f=f+10;} } if (dato == 'b') { // - potencia if (f>=10){f=f-10;} }
//------------------------------------------------- if (dato == 'p') { //PARAR digitalWrite(d1A,LOW);digitalWrite(d2A,LOW); digitalWrite(d1B,LOW);digitalWrite(d2B,LOW); }
//----------------------------------- if (dato == '1') { //Adelante vel. baja digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW); digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW); analogWrite(speedA, 60); analogWrite(speedB, 60); } if (dato == '2') { //Adelante vel. media digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW); digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW); analogWrite(speedA, 160); analogWrite(speedB, 100); } if (dato == '3') { //Adelante vel. alta digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW); digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW); analogWrite(speedA, 240); analogWrite(speedB, 200); } //----------------------------------- if (dato == 'r') { //Retrocede vel. baja digitalWrite(d1A,LOW);digitalWrite(d2A,HIGH); digitalWrite(d1B,LOW);digitalWrite(d2B,HIGH); analogWrite(speedA, 60); analogWrite(speedB, 60); } //--------------------------------------------- if (dato == 'j') { //Derecha giro lento digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW); digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW); analogWrite(speedA, 90+(f/2)); analogWrite(speedB, 50); } if (dato == 'k') { //Derecha giro rapido digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW); digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW); analogWrite(speedA, 100+(f/2)); analogWrite(speedB, 40); } if (dato == 'l') { //Derecha giro muy rapido digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW); digitalWrite(d1B,LOW);digitalWrite(d2B,HIGH); analogWrite(speedA, 70+f); analogWrite(speedB, 40); }
//--------------------------------------------- if (dato == 'a') { //Izquierdo giro lento digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW); digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW); analogWrite(speedA, 50); analogWrite(speedB, 90+(f/2)); } if (dato == 's') { //Izquierdo giro rapido digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW); digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW); analogWrite(speedA, 40); analogWrite(speedB, 100+(f/2)); } if (dato == 'd') { //Izquierdo giro muy rapido digitalWrite(d1A,LOW);digitalWrite(d2A,HIGH); digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW); analogWrite(speedA, 40); analogWrite(speedB, 70+f); } }