El proyecto consiste en dotar de "vida propia" a un coche de radiocontrol (elegí un coche por aquello de que no entran en pérdida con facilidad, y suelen moverse a ras de suelo, por lo que los daños durante las pruebas suelen ser menores que con aviones o helicópteros). Inicialmente sólo se usa un sensor de ultrasonidos para detectar obstáculos, aunque pienso incorporar otro sensor de infrarrojos, para salvar obstáculos que absorben los ultrasonidos (y le hacen chocar como un tontorrón), quizás una brújula que le permita saber hacia dónde se dirige durante las maniobras (por aquello de saber si está dando vueltas una y otra vez maniobrando), probablemente acelerómetros o giróscopos (tengo que documentarme sobre ésto) que me digan si el coche se mueve, y a qué velocidad, casi al final me gustaría incorporarle un GPS, para que sepa en todo momento dónde se encuentra, dónde tiene que volver después de darse un garbeo, y poder recorrer waypoints sorteando obstáculos. Seguramente haría falta algo para detectar hoyos y alcantarillas de bordillo, para que no se cuele por ningún sitio, pero de momento un saco de cemento, que ya es bastante.
Como habéis podido deducir, el cacharro en si no servirá para absolutamente nada, o al menos a mi no se me ocurre ninguna aplicación práctica, salvo, como dice blood, hacer que me traiga unas cervecitas de la cocina, para lo cual debería prepararle un remolque cuanto antes
Esta es la segunda versión, con un sensor de ultrasonidos, estático en el morro del coche. La primera versión llevaba dos LiPo, una para el motor, ESC y servo de dirección, y la otra para el Arduino, pero en la segunda versión aligeré algo de peso alimentanto todo con el mismo BEC que integra el variador:

En su tercera versión, el sensor de ultrasonidos está montado a lomos de un servo, además de tener una simple programación de búsqueda de rutas despejadas que hace uso de dicho servo y el sensor:

Aquí tenéis un vídeo, donde se le ve moverse por primera vez. Las dimensiones de la habitación hacen difícil poder probarlo como se merece:
Por tanto decidí llevarlo de paseo al pabellón, y dejarle campar a sus anchas. Grata sorpresa al ver que nos esquivaba a todos, y salvo con la dichosa moqueta enrrollada, que no terminaba de "verla", el resto fue bastante bien. Echamos unas cuantas risas a costa del coche.
Finalmente he aquí un vídeo donde se puede apreciar que el sensor de ultrasonidos ahora está montado sobre un servo móvil, que en caso de acercarse demasiado a un objeto (para un coche que corre como éste, los 70cm que he estipulado como mínimos casi se me hacen pocos), permite que el coche busque un camino abierto, y se mueva hacia él. No está del todo logrado (me vendría de lujo la brújula, la verdad), pero empieza a verse algún resultado. Habrá que verlo en el pabellón nuevamente:
El siguiente paso a dar será aplicarle velocidad variable en función de la distancia a la que se encuentren los objetos más cercanos, para que corra un poquito más rápido cuando va por una zona despejada, y hacer que vaya un poquito más recto (siempre tiende a girar para sortear los obstáculos ya desde lejos), y sobre todo a que no haga siempre giros en círculo (siempre a izquierdas, o siempre a derechas), sino que gire en el sentido que le interese según su rumbo (de nuevo todo apunta a incorporarle una brujulita).
Y para el que se pregunte, ¿y cómo se hace para educar a este chisme?, aquí va una pequeña muestra de lo que tiene en la cabeza:
- Código: Seleccionar todo
//Obtiene una medición desde el sensor de ultrasonidos
int obtenerMedicionMaxSonar() {
pinMode(7, INPUT);
long pulso = pulseIn(7, HIGH);
long inches = pulso/147;
long cm = inches * 2.54;
return cm;
}
Seguiré documentando el proyecto según vaya avanzando en él. Espero que os guste.







