Se realiza la conexion del sensor HCSR04 con la tarjeta STM32F407G

Dependencies:   mbed

DEBER 1

¿Que es un sensor de ultra sonidos?

Un sensor de ultra sonidos es un dispositivo para medir distancias. Su funcionamiento se base en el envío de un pulso de alta frecuencia, no audible por el ser humano. Este pulso rebota en los objetos cercanos y es reflejado hacia el sensor, que dispone de un micrófono adecuado para esa frecuencia.
arduino ultrasonido
Midiendo el tiempo entre pulsos, conociendo la velocidad del sonido, podemos estimar la distancia del objeto contra cuya superficie impacto el impulso de ultrasonidos.

¿CÓMO FUNCIONA UN SENSOR DE ULTRASONIDOS?

El sensor se basa simplemente en medir el tiempo entre el envío y la recepción de un pulso sonoro. Sabemos que la velocidad del sonido es 343 m/s en condiciones de temperatura 20 ºC, 50% de humedad, presión atmosférica a nivel del mar. Transformando unidades resulta

https://os.mbed.com/media/uploads/carlosm93/eq1.png

Diagrama de conexion en Arduino

Se adjunta la conexión con una placa arduino UNO, en nuestro caso lo realizaremos con nuestra placa de entrenamiento STM32F4 discovery.
https://os.mbed.com/media/uploads/carlosm93/arduino-ultrasonidos-esquema-electrico.png

Montaje en Arduino
https://os.mbed.com/media/uploads/carlosm93/arduino-ultrasonidos-montaje.png
Para activar el sensor necesitamos generar un pulso eléctrico en el pin Trigger (disparador) de al menos 10us. Previamente, utilizaremos la librería HCSR04.h proveniente de https://os.mbed.com/users/aralshukaili/code/HCSR04/
Los pines a utilizar en la tarjeta STM32F4 son PB6 y PB7, se adjunta el Pinout de la placa con sus respectivas funcionalidades para cada pin, en este caso dicho pines son Rx, Tx para recepción y transmisión de datos.
https://os.mbed.com/media/uploads/carlosm93/stm32f4-discovery-pinout.png

main.cpp

#include "mbed.h"
#include "HCSR04.h"
HCSR04 ultrasonico(PB_6,PB_7); //PB6 pin TX y pb7 pin RX estos pines se usan para transmision y recepcion de datos
DigitalOut VERDE(PD_13);// LED PARA INDICAR DISTANCIA MAYOR A 50 CM
DigitalOut NARANJA(PD_14); // LED PARA INDICAR DISTANCIA MENOR O IGUAL A 10CM
Serial comunicacion(PA_2,PA_3); // PINES DE COMUNICACION SERIAL
int main() {
    comunicacion.baud(115200); // VELOCIDAD DE COMUNICACION
    comunicacion.printf("comienzo"); //IMPRIMIR PALABRA COMIENZO
    while(1) {
        long d= ultrasonico.distance(1);
        comunicacion.printf("Distancia:%i\n\r",ultrasonico.distance(1));
        if(d<=10) { // DISTANCIA MENOR O IGUAL A 10CM
            VERDE=0;
            NARANJA=1;
        }
        if(d>=50) { //DISTANCIA MAYOR IGUAL A 50CM
            VERDE=1;
            NARANJA=0;
        }
        wait(0.1);

    }
}


Una vez programado el sensor utilizamos comunicación serial para observar los rangos de medición.

https://os.mbed.com/media/uploads/carlosm93/distancias.jpg

main.cpp

Committer:
carlosm93
Date:
2020-02-15
Revision:
0:cc8dba9e9014

File content as of revision 0:cc8dba9e9014:

#include "mbed.h"
#include "HCSR04.h" //https://os.mbed.com/users/aralshukaili/code/HCSR04/
HCSR04 ultrasonico(PB_6,PB_7); //PB6 pin TX y pb7 pin RX estos pines se usan para transmision y recepcion de datos

DigitalOut VERDE(PD_13);// LED PARA INDICAR DISTANCIA MAYOR A 50 CM
DigitalOut NARANJA(PD_14); // LED PARA INDICAR DISTANCIA MENOR O IGUAL A 10CM
Serial comunicacion(PA_2,PA_3); // PINES DE COMUNICACION SERIAL

int main()
{
    comunicacion.baud(115200); // VELOCIDAD DE COMUNICACION
    comunicacion.printf("comienzo"); //IMPRIMIR PALABRA COMIENZO
    while(1) {
        long d= ultrasonico.distance(1);
        comunicacion.printf("Distancia:%i\n\r",ultrasonico.distance(1));
        if(d<=10) { // DISTANCIA MENOR O IGUAL A 10CM
            VERDE=0;
            NARANJA=1;

        }
        if(d>=50) { //DISTANCIA MAYOR IGUAL A 50CM
            VERDE=1;
            NARANJA=0;
        }
        wait(0.1);

    }
}