Nota

¡Hola! Bienvenidos a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.

¿Por qué unirse?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances exclusivos: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones festivas y sorteos: Participa en sorteos y promociones especiales.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

3.1.2 Bienvenida

Introducción

En este proyecto, usaremos un sensor PIR para detectar el movimiento de los peatones, y utilizaremos servos, LED y un zumbador para simular el funcionamiento de la puerta automática de una tienda de conveniencia. Cuando el peatón aparezca dentro del rango de detección del PIR, la luz indicadora se encenderá, la puerta se abrirá y el zumbador reproducirá el sonido de apertura.

Componentes necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/list_Welcome.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ITEMS IN THIS KIT

LINK

Raphael Kit

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Módulo Sensor de Movimiento PIR

-

Servo

COMPRAR

Zumbador

COMPRAR

Transistor

COMPRAR

Diagrama Esquemático

Nombre T-Board

Físico

wiringPi

BCM

GPIO18

Pin 12

1

18

GPIO17

Pin 11

0

17

GPIO27

Pin 13

2

27

GPIO22

Pin 15

3

22

../_images/Schematic_three_one2.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/image239.png

Paso 2: Cambiar directorio.

cd ~/raphael-kit/c/3.1.2/

Paso 3: Compilar.

gcc 3.1.2_Welcome.c -lwiringPi

Paso 4: Ejecutar.

sudo ./a.out

Después de ejecutar el código, si el sensor PIR detecta a alguien pasando, la puerta se abrirá automáticamente (simulada por el servo), encenderá el indicador y reproducirá la música del timbre. Después de que la música del timbre se reproduzca, el sistema cerrará automáticamente la puerta y apagará el indicador, esperando la próxima vez que alguien pase.

Hay dos potenciómetros en el módulo PIR: uno para ajustar la sensibilidad y el otro para ajustar la distancia de detección. Para que el módulo PIR funcione mejor, necesitas girar ambos en sentido contrario a las agujas del reloj hasta el final.

../_images/PIR_TTE.png

Nota

Si no funciona después de ejecutarlo, o aparece un mensaje de error: "wiringPi.h: No such file or directory", consulta Instalar y verificar WiringPi.

Explicación del Código

void setAngle(int pin, int angle){    //Create a funtion to control the angle of the servo.
    if(angle < 0)
        angle = 0;
    if(angle > 180)
        angle = 180;
    softPwmWrite(pin,Map(angle, 0, 180, 5, 25));
}

Crear una función, setAngle, para escribir el ángulo en el servo que es de 0-180.

void doorbell(){
for(int i=0;i<sizeof(song)/4;i++){
        softToneWrite(BuzPin, song[i]);
        delay(beat[i] * 250);
    }

Crear una función, doorbell, para permitir que el zumbador toque música.

void closedoor(){
digitalWrite(ledPin, LOW);   //led off
for(int i=180;i>-1;i--){  //make servo rotate from maximum angle to minimum angle
    setAngle(servoPin,i);
    delay(1);
    }
}

Crear una función closedoor para simular el cierre de la puerta, apagar el LED y hacer que el servo gire de 180 grados a 0 grados.

void opendoor(){
    digitalWrite(ledPin, HIGH);   //led on
    for(int i=0;i<181;i++){  //make servo rotate from minimum angle to maximum angle
        setAngle(servoPin,i);
        delay(1);
    }
    doorbell();
    closedoor();
}

La función opendoor() incluye varias partes: encender la luz indicadora, girar el servo (simular la acción de abrir la puerta), reproducir la música del timbre de la tienda de conveniencia y llamar a la función closedoor() después de reproducir la música.

    int main(void)
{
    if(wiringPiSetup() == -1){ //when initialize wiring failed,print message to screen
        printf("setup wiringPi failed !");
        return 1;
    }
    if(softToneCreate(BuzPin) == -1){
        printf("setup softTone failed !");
        return 1;
......

En la función main(), inicializar la biblioteca wiringPi y configurar softTone, luego establecer ledPin en estado de salida y pirPin en estado de entrada. Si el sensor PIR detecta que alguien pasa, se llamará a la función opendoor para simular la apertura de la puerta.

Imagen del Fenómeno

../_images/image240.jpeg