El sensor de distanciamiento social Arduino

El sensor de distanciamiento social Arduino regula el distanciamiento social a través de un sensor ultrasónico y un LED.

Cosas utilizadas en este proyecto

Componentes de hardware
Arduino UNOArduino UNO×1
SparkFun Solder-able Breadboard - MiniTablero de soldadura SparkFun – Mini×1
Ultrasonic Sensor - HC-SR04 (Generic)Sensor ultrasónico – HC-SR04 (genérico)×1
LED (generic)LED (genérico)×1
Jumper wires (generic)Cables de puente (genéricos)×1
Male/Female Jumper WiresAlambres de puente macho/hembra×1
Aplicaciones de software y servicios en línea
Arduino IDEArduino IDE
Herramientas manuales y máquinas de fabricación
3D Printer (generic)Impresora 3D (genérica)

Historia

¿Por qué elegí hacerlo –

Este proyecto se inspiró en los recientes acontecimientos de la pandemia covid-19, donde pensé que podía hacer un sensor que regulase el distanciamiento social.

¿Cómo funciona? –

Funciona por el sensor ultrasónico que envía pulsos altos y bajos para medir la distancia entre él y un obstáculo o persona. Esto se hace desde la conversión del tiempo que tardó el pulso en volver a una distancia (cm en este caso).

Después de medir la distancia, he codificado el LED para encenderlo si está a menos de 50 cm de distancia (esta cantidad es fácilmente ajustable cambiando el valor en la sentencia IF) y me apá la vuelta cuando hay más de 50 cm de distancia. Aquí hay un video que muestra cómo funciona.

La realización del circuito –

Al principio, estaba planeando conectar todos los componentes a la placa de pan de mi circuito y no al Arduino en sí, pero después de algunas pruebas, me di cuenta de que era mucho más fácil conectar el sensor ultrasónico al Arduino mientras se conecta el LED a la placa de pan. De esta manera también podría hacer un poco de espacio para el LED en sí porque el sensor ultrasónico habría ocupado la mayoría del espacio de la placa de pan mini.

La creación del código –

Primero desarrollé pseudocódigo y diagramas de flujo para visualizar mi código y cómo funcionaría. Esto ayudó mucho en el desarrollo de la estructura y la secuenciación del código. Después de algunos ajustes, este fue mi diagrama de flujo final.

Después de planificar el código, fui fácilmente capaz de hacer progresos en la codificación del LED, pero estaba atascado en el desarrollo del código para el sensor ultrasónico, ya que esta fue la primera vez que co waiveré algo como esto.

El sensor ultrasónico funciona enviando ondas sonoras que rebotarían de un objeto que golpea de nuevo en el sensor. Para utilizar esto en un sensor de distanciamiento social tendría que convertir el tiempo que tardó el pulso en rebotar en una medida de centímetros. Logré este proceso usando este proceso.

Después de algunas investigaciones, había descubierto que para que el sensor ultrasónico funcione desde el código, tendría que programarlo para disparar un pulso bajo, alto y bajo. Esto era para producir un pulso limpio del pulso alto. Después de averiguar los pines correspondientes para los componentes de eco y trig del sensor, estaba listo para codificar una sentencia IF para encender el LED cuando había un objeto con un alcance de 50 cm. Esta fue definitivamente la parte más fácil del código.

Fabricación de la carcasa –

A continuación, desarrollé el caso como un modelo 3D utilizando el software SketchUp. Desafortunadamente en este momento, no tenía acceso a impresoras 3D así que no pude hacerlo, pero he adjuntado el archivo imprimible 3d por encima del esquema del circuito, si desea probarlo.

Piezas y cerramientos personalizados

Carcasa imprimible 3d para el sensor social – de distanciamiento

Esquemas

Tinkercad modelo de circuito

Código

Código de sensor de distanciamiento social

Arduino

int trigger_pin = 2;

int echo_pin = 3;

int buzzer_pin = 10; 

int time;

int distance; 




void setup ( ) {

        Serial.begin (9600); 

        pinMode (trigger_pin, OUTPUT); 

        pinMode (echo_pin, INPUT);

        pinMode (buzzer_pin, OUTPUT);

        pinMode(13, OUTPUT);



}




void loop ( ) {

    digitalWrite (trigger_pin, HIGH);

    delayMicroseconds (10);

    digitalWrite (trigger_pin, LOW);

    time = pulseIn (echo_pin, HIGH);

    distance = (time * 0.034) / 2;

    

  if (distance <= 50) 

        {


        Serial.print (" Distance= ");              

        Serial.println (distance);        

        digitalWrite(13, HIGH);

        delay (500);

        }

  else {
\

        Serial.print (" Distance= ");              

        Serial.println (distance);        

        digitalWrite(13, LOW);

        delay (500);        

  } 

  }

Fuente: hackster.io