Cónstruya un robot con Raspbery Pi y Arduino


 

En el video anterior en efecto vemos  un robot controlado a distancia basándose  en interfaces web usando para ello  una red  inalámbrica .Dado la potencia de la Raspberry Pi se usa esta para el soporte de Video  y  una placa  Arduino  para el control de los motores 

Se usa la Raspberry Pi pues para la gestión  de la cámara, una red Wi-Fi para la  interfaz de usuario  entre el robot u el usuario  y una placa  Arduino para controlar servos, sensores y motores.

¿Qué necesitamos para construir el robot?,pues propprcionamos a continuacion la siguiente lista de componentes:

 

En realidad dado que  todos estos módulos ya vienen montados , el esquema de conexiones es bastante sencillo ,pues se usa  un convertidor dc/dc  para alimentar  el puente  en h para los 4 motores , los 2 servos y el sensor ultrasonico  , y otro convertidor dc/dc para alimentar exclusivamente  el Arduino Nano

La comunicación entre  Raspberry Pi y Arduino se lleva  a cabo a través de GPIO TX serie / RX (/ dev / ttyAMA0) por medio de un convertidor de nivel.

Otro aspecto destcable  es que tanto el sensor ultrasonido como los dos servos son controlados por la propia placa Arduino Uno

Asimismo se  hace uso de un modulo de cámara para Raspberry Pi  , la cual va conectada con un cable de cinta  a la Raspberry Pi . La cámara se sujeta al soporte movil especial el cual  permite gracias a los dos servos  mover la cámara  en los tres ejes

Aquí puede echar un vistazo a los detalles de  ensamblaje de los componentes mas importantes:

Detalle de conexion con los servos
Raspberry Pi / Arduino y convertidor de nivel

 

Software:

El software se divide en dos secciones: software para Raspberry  Pi  y software de Arduino.

Para la Raspberry se usa dawnrobotics SD imagen para su cámara robot Pi , la cual proporciono  con una pequeña modificación  el  archivo robot_web_server.py  para permitir la comunicación serie con Arduino Nano en lugar del controlador dawnrobotics.

A continuación se detalla el código fuente empleado:

 

#include <ecat.h>
#include <Servo.h>

Servo servoP1B2; Servo servoP1B3;

#define MAX_GRAUS 170
#define MIN_GRAUS 20

String szMissatge;
Ecat ecat;
int valorServoV;
int valorServoH;

void setup(){
  ecat.setupNibbleMode(NIBBLE_H_P1,OUTPUT);
  ecat.vUltrasonicSensorP1b0b1_init();
  
  valorServoV=90;
  valorServoH=90;
  pinMode(ecat.nPinP1B2,OUTPUT);
  pinMode(ecat.nPinP1B3,OUTPUT); 
  servoP1B2.attach(ecat.nPinP1B2);
  servoP1B3.attach(ecat.nPinP1B3);
  servoP1B2.write(valorServoV);
  servoP1B3.write(valorServoH);  
  pinMode(ecat.nPinP2B7,OUTPUT);
  pinMode(ecat.nPinP2B6,INPUT);
  pinMode(ecat.nPinP2B5,INPUT);
  pinMode(ecat.nPinP2B4,INPUT);
  ecat.setupNibbleMode(NIBBLE_L_P2,INPUT);
  Serial.begin(115200);
}

void vRobotAturat(){
  ecat.vWriteHighNibbleP1(0x00);
}

void vRobotEndarrera(){
  ecat.vWriteHighNibbleP1(B00000110);
}

void vRobotEndavant(){
  ecat.vWriteHighNibbleP1(B00001001);
}

void vRobotEsquerra(){
  ecat.vWriteHighNibbleP1(B00000101);
}

void vRobotDreta(){
  ecat.vWriteHighNibbleP1(B00001010);
}



void vManageMsg(){
 
  if(szMissatge == "b"){
    vRobotEndarrera();
  }
  if(szMissatge == "f"){
    if (ecat.nUsDistanceCmP1b0b1()>7) {
        vRobotEndavant();
    }
  }
  if(szMissatge == "s"){
    vRobotAturat();
  }
  if(szMissatge == "l"){
    vRobotEsquerra();
  }
  if(szMissatge == "r"){
    vRobotDreta();
  }
  if(szMissatge == "w"){
    if (valorServoH<MAX_GRAUS) {
      valorServoH++;
    }
  }
  if(szMissatge == "x"){
    if (valorServoH>MIN_GRAUS) {
      valorServoH--;
    }
  }
  if(szMissatge == "a"){
    if (valorServoV>MIN_GRAUS) {
      valorServoV--;
    }
  }
  if(szMissatge == "d"){
    if (valorServoV<MAX_GRAUS) {
      valorServoV++;
    }
  }
}

void loop(){

  while(Serial.available()){
    delay(3);
    char c = Serial.read();
    szMissatge += c;
  }
  vManageMsg();
  szMissatge = "";
  if (ecat.nUsDistanceCmP1b0b1()<7) {
    vRobotAturat();
  }
  servoP1B2.write(valorServoV);
  servoP1B3.write(valorServoH);
}

Como estamos utilizando versión ligeramente modificada de la imagen downrobots, la Raspberry Pi está configurado para actuar como un punto de acceso Wi-Fi, por lo que para conectarse a la nueva red inalámbrica   debe aparecer llamada ‘CameraRobot’. La contraseña de la red es «raspberry».

Nota: En algunas ocasiones el dongle WiFi en el Pi no obtendrá una dirección IP (error conocido) y por lo que no será capaz de conectarse a la red (el dispositivo pasará edades autenticación y obtener una dirección IP).Este problema suele resolverse girando el robot apagado y otra vez.

 

Para la sección de Arduino Nano,  gracias a @JordiBinefa y @electronicscat se  usa su  biblioteca de e-cat .

El robot se controla con una interfaz web que significa que debería ser accesible desde la más amplia gama de dispositivos posibles. La interfaz web hace uso de HTML5 sin embargo, por lo que tendrá que utilizar un navegador hasta la fecha. Se encontró que Chrome funciona bien en todas las plataformas que se ha probado.

 

Para controlar el robot escriba la dirección IP 192.168.42.1 en la barra de direcciones.

 

 

 

Tiene conexión Wifi, por lo tanto se puede trastear con ella sin cables y eso es muy cómodo. Con éste sistema básico, se puede expandir muchísimo y quizás dar el paso con OpenCV o algún otro tipo de funcionalidad compleja gracias a la potencia que ofrece la Raspberry Pi.

El proyecto desde luego es sumamente interesante  y desde luego abre un camino para nuestra imaginación para replicarlo y mejorarlo dotándolo de nuevas modificaciones   que sin duda lo harán mucho mejor si cabe

Fuente aqui

Sencillísimo detector de desbordamiento para aire acondicionado


Puede parecer una  trivialidad ,pero a veces  hay objetos  entre los que destacaría los  automatismos, que nos pueden ayudar  en nuestra vida diaria.

Todos sabemos que el aire acondicionado «produce»agua sobre todo en los meses de verano, que es cuando hacemos más uso de él, porque vemos que por el tubo de desagüe no para de echar agua mientras el aparato está encendido. Pero ¿de dónde viene ese agua? Pues la respuesta correcta es que nuestro aparato la “genera”. Imagine que sacamos una botella de agua, en verano, de la nevera ¿qué es lo que ocurre? Si observamos bien con el paso de unos minutos la botella empezará a sudar debido a la condensación, pues de igual manera ocurre con el aire acondicionado.

Cuando ponemos el aire acondicionado en frío el intercambiador de la unidad interior se inunda de gas a baja presión y temperatura, por lo que este se pone muy frio, de manera que toda la humedad que hay en el aire se va pegando al intercambiador, esta se convierte en agua, cae a la bandeja del desagüe y va a parar al tubo que todos vemos en la calle y que echa tanta agua en verano. Esta es la razón por la que el aire acondicionado echa agua y nos suele secar la mucosa de la garganta y la nariz, porque al pegarse la humedad en el intercambiador el aire del habitáculo se vuelve más seco.

En este caso pues vamos ha tratar de solucionar el problema del desbordamiento de los depósitos de Aire Acondicionado de  aquellas instalaciones donde el agua generada por el aparato  no va canalizada  al desague   necesitando un deposito de un capacidad finita que tarde o temprano se desbordara  pudiendo generar un desastre  sino estamos atentos a vaciarlo manualmente para que no alcance ese nivel critico

Afortunadamente existe  una manera muy económica de construir  un sencillo detector de desbordamiento  que nos puede ser muy útil para que nos se desborde el deposito del agua  de nuestro Aire Acondicionado  incluso pudiendo desconectar  este automáticamente si llegase  el caso

Para construir nuestro automatismo la parte mas importante es el detector de nivel de liquidos , lo cual es la pieza mas importante a tener en cuenta para  nuestro circuito pues en su precisión y fiabilidad va a depender el comportamiento del conjunto

Un detector muy sencillo y fiable , común usado en acuarios es el Interruptor con  Flotador Sensor de Nivel de Agua con Cable para Acuario  de la marca SODIAL(R) que puede  encontrase en Amazon por menos de 2€ cuya imagen vemos mas abajo

 

sensor2

El sensor como vemos lleva una rosca de  12.5mm/0.49 » con unclip de retención: 13mm/0.5 » que permite fijar el sensor a  cualquier angulo o soporte

Obviamente el sensor  cuenta con una salida  normalmente abierta que sera la que uilizaremos en nuestro circuito para activar el rele y hacer sonar el zumbador.

También puede ser fácilmente convertido de normalmente abierto a normalmente cerca invirtiendo el flotador.

En cuanto a las características mas importantes  de este modelo  son  estas:

  •  Maximo de contacto: 10W
  •  Max Voltaje de Interruptor: 100 V CC
  •  Max Corriente de Interruptor: 0.5 A
  •  Max voltaje de ruptura: 220 V CC
  •  Max corriente de transporte: 1.0A
  •  Max Resistencia de Contacto: 100MW
  •  Grado de la temperatura: -10 ~ 85 grados
  •  Material de bola flotador: p.p
  •  Material del cuerpo flotador: Plástico
  •  Longitud total de cuerpo: 45mm/1.8 «»
  •  Longitud del cable: 36cm/14 «
  •  Peso: 10g;

 

Este  tipo de interruptores de flotador son dispositivo utilizados para detectar el nivel de liquido dentro de un tanque pudiendo accionar una bomba, un indicador , una alarma u otro dispositivo.

Se usan con la hidroponía, tanque de agua salada, tanque de agua dulce, la jardinería, acuarios para el control del aireadores, tazones de las mascotas, peceras, filtraciones, calefacción, bombas, estanques, alarmas del sótano, botes, bandejas de drenaje de aire acondicionado , lavadoras a presión , limpieza de alfombras mach, acuario de arrecife, control de líquidos, máquinas de hielo, cafeteras, marina , automotriz , automóviles, tanques de peces tropicales, bobinas de evaporador, línea de condensación,  y un largo etcétera

Nosotros  vamos a usar el sensor para detectar el desbordamiento del deposito de agua de nuestro equipo de AA, para lo cual la forma mas sencilla simplemente de fijar el sensor  es:

  • Cortar la manguera de salida hasta  la altura que queramos en que  se active la alarma
  • Unir cinta de doble cara a la  tuerca para que haya separación entre el tubo  y el sensor  ya que el flotador debe quedar libre para que cuando alcance justo ese novel  el propio agua haga elevar el flotador del sensor
  • Encintar con cinta aislante el sensor al tubo de drenaje
  • Fijar con una brida el conjunto
  • Encintar el tubo con el cable de salida del sensor para que este puede llegar al circuito de control

 

img_20161004_203033

Una vez preparado  el sensor, la forma mas sencilla de implementar la alarma es simplemente optar por alimentar un simple zumbador  con 4  pilas AA  para que en caso de desbordamiento se active el zumbador (la razón de elegir pilas es por su altamisa  fiabilidad  y sobre todo por suponer un consumo cero ya que el circuito esta abierto en ausencia de agua)

Otro forma de entender esta alarma es con el automatismo que simplemente se consigue   añadiendo  un rele de 6V  que se activara al cerrarse al  circuito con el sensor  y que gracias a su  contacto de reposo apagaría nuestra maquina de AA impidiendo que esta llenase  mas el deposito evitando  el consiguiente peligro de desbordamiento .

En el siguiente esquema vemos la instalación completa:

esquema

Aunque en la instalación de pruebas no ha quedado muy estético, con objeto de que se  vea claramente el conjunto  en la siguiente vemos lo sencillo que es instalar esta alarma con automatismo que sin duda nos evitara mas de un disgusto  ..

img_20161004_202956