Esta lección le mostrará cómo hacer que el PiBot evite obstáculos frente a él. Primero le mostrará cómo agregar el sensor de distancia ultrasónico al PiBot. Luego te mostrará cómo programar el PiBot para evitar obstáculos que se encuentren frente a él. Finalmente, describirá cómo la electrónica permite que el PiBot “vea” los obstáculos y gire para evitarlos.
Las partes siguientes son necesarias para completar esta lección. Tenga en cuenta que todas las piezas, excepto los bloques de espuma de poliestireno y el hardware opcional, se incluyen en el kit OSOYOO que se puede comprar en Amazon.
Cuando manipule cualquiera de las placas de circuito, asegúrese de usar su muñequera antiestática ESD y de conectarla a un punto de conexión a tierra.
Cuando instale elementos con varios tornillos o tuercas, déjelos sueltos hasta que todos estén instalados y luego apriételos para asegurarse de que pueda insertarlos todos.
Instale el micro servomotor desde la parte inferior de la placa del chasis superior. Los tornillos M2.2×8 mm deben deslizarse a través de los orificios de la placa del chasis superior y atornillarse en los orificios del micro servomotor.
Los tornillos y tuercas hexagonales M1.4x8mm o los tornillos y tuercas hexagonales M1.6x8mm se pueden usar en lugar de los tornillos y tuercas M1.5x8mm si se desea o es necesario
Cree bucles en los cables envolviéndolos alrededor de su dedo para mantener el cableado ordenado
El canal 15 en el módulo PCA9685 está completamente en el lado derecho cuando se mira el PiBot desde el frente
Micro Servomotor | Módulo PCA9685 |
---|---|
GND (Marrón) | GND15 |
5V (Roja) | V+15 |
SIG (Naranja) | PWM15 |
Tire de los cables uno a la vez para separarlos del haz de cables
Tuerza los pares de cables que van a la misma placa juntos y cree bucles en los cables envolviéndolos alrededor de su dedo para mantener el cableado ordenado
Pase los cables a través del pequeño orificio rectangular en el chasis superior para llevarlos a la placa compatible con PCA9685. Para mantener limpios los cables de la Raspberry Pi, introdúcelos a través del pequeño orificio rectangular en el chasis superior y haz una copia de seguridad del orificio rectangular grande en el chasis superior para llevarlos a la placa Raspberry Pi.
Use un par de alicates de punta fina o pinzas para ayudar a pasar los cables nuevos más allá de los otros cables entre las placas del chasis superior e inferior
Deje algo de holgura en los cables cerca del sensor de distancia ultrasónico para que el servo pueda girarlo.
Sensor de Distancia Ultrasónico | Módulo PCA9685 | Tablero Raspberry Pi |
---|---|---|
VCC | V+11 | — |
Trig | — | Pin 38 (GPIO 20) |
Echo | — | Pin 40 (GPIO 21) |
GND | GND11 | — |
Use algunas paredes de la habitación para crear una caja con los bloques de espuma de poliestireno en los que el PiBot pueda conducir
Seleccione el enlace correspondiente a continuación para obtener instrucciones para configurar el software en PiBot y una exploración de cómo funciona.
El sensor de distancia ultrasónico HC-SR04 tiene 2 transductores ultrasónicos. Un transductor actúa como un altavoz para enviar pulsos ultrasónicos y el otro actúa como un micrófono para recibir los pulsos que rebotan. Los pulsos ultrasónicos son sonidos que están por encima de las frecuencias que los humanos pueden escuchar, por lo que para nosotros es silencioso. Los humanos no pueden escuchar sonidos por encima de $20kHz$ y el HC-SR04 envía pulsos ultrasónicos a $40kHz$.
Cuando el pulso de activación de $10 \mu s$ se le da al HC-SR04, envía 8 pulsos de sonido de $40kHz$ usando el transductor del altavoz. Cuando termina de enviar los pulsos, coloca el pin de eco en alto y espera escuchar cualquier reflejo que pueda rebotar en algo que está frente a él. Cuando recibe un eco, establece el pin de eco en un nivel bajo, y si no se recibe ningún eco, tiene un temporizador interno que establecerá el pin de eco en un nivel bajo después de $38ms$.
El tiempo que el pin de eco está alto se puede usar para determinar qué tan lejos del transductor se encuentra un objeto. Dado que la distancia al objeto es solo la velocidad del sonido multiplicada por el tiempo que lleva llegar allí, podemos usar esa fórmula para calcular la distancia al objeto. Esta es la fórmula que se proporciona en la datasheet y a continuación en la ecuación \ref{eqn1}. La velocidad del sonido en el aire es generalmente una constante de $343m/s$. Cuando multiplicas el tiempo que el pin de eco está alto con esa velocidad constante, obtienes la distancia que viajaron los pulsos de sonido. Dado que el sonido tuvo que viajar hacia el objeto y luego regresar al sensor de distancia ultrasónico, la distancia desde el sensor al objeto es $1/2$ la distancia total calculada. Para ver una representación gráfica de cómo funciona el HC-SR04, consulte este sitio.
\begin{equation}Distancia (m) = {Tiempo (s) \times 343 (m/s) \over 2} \label{eqn1}\end{equation}
Los pines de disparo y eco están conectados a la Raspberry Pi GPIO para que la Raspberry Pi pueda controlar cuándo se inicia una medición y detectar el tiempo en que el pin de eco está alto.
El PiBot utiliza el Micro Servo Motor para girar el Sensor de Distancia Ultrasónico para que pueda detectar si hay algún objeto a la izquierda o derecha de él, además de directamente enfrente de él. El micro servomotor usa una señal PWM que le dice en qué ángulo girar. Esto es similar a cómo funciona PWM para controlar los motores como se describe en Lección 1. El micro servomotor puede girar hasta $180^{\circ}$ y el ángulo está determinado por el tiempo alto de la señal PWM.
El micro servomotor usa tiempos altos entre $1ms$ y $2ms$ para representar los ángulos entre $0^{\circ}$ y $180^{\circ}$ donde $1ms$ es $0^{\circ}$ y $2ms$ es $180^{\circ}$. La señal PWM genera un pulso alto basado en el valor pasado a la función set_pwm en la Raspberry Pi. Cada recuento de ese valor equivale a $4.069 \mu s$ cuando la frecuencia se establece en $60Hz$ como se muestra en la ecuación \ref{eqn2} a continuación. Esto significa que cada cuenta es igual a $0,732^{\circ}$ de rotación en el servo, como se puede ver en la ecuación \ref{eqn3} a continuación.
\begin{equation} \begin{split} Contar (s/cnt)& = {1/Frecuencia(Hz) \over Recuento Máximo(cnt)}\\ & = {1/60(Hz) \over 4096(cnt)}\\ & = 4.069(\mu s/cnt) \end{split} \label{eqn2} \end{equation}
\begin{equation} \begin{split} Ángulo (^{\circ}/cnt)& = {Grados Máximos (^{\circ}) - Grados Mínimos (^{\circ}) \over Tiempo Máximo (s) - Tiempo Mínimo (s)} \times Contar (s/cnt)\\ & = {180 (^{\circ}) - 0 (^{\circ}) \over 2 (ms) - 1 (ms)} \times 4.069 (\mu s/cnt)\\ & = 0.7324 (^{\circ}/cnt) \end{split} \label{eqn3} \end{equation}
Volver a la Página Principal de PiBot