Nota

¡Hola! Bienvenidos a la comunidad de entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto con otros apasionados.

¿Por qué unirse?

  • Soporte de Expertos: Soluciona problemas post-venta 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: Accede anticipadamente a anuncios de nuevos productos y adelantos.

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

  • Promociones y Sorteos Festivos: Participa en sorteos y promociones especiales en días festivos.

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

3.1.2 Bienvenida

Introducción

En este proyecto, utilizaremos un sensor PIR para detectar el movimiento de personas y, con un servo, LED y un zumbador, simularemos el funcionamiento de una puerta automática de tienda. Cuando el peatón se encuentre dentro del rango de detección del PIR, la luz indicadora se encenderá, la puerta se abrirá y el zumbador emitirá el sonido de bienvenida.

Componentes

../_images/list_Welcome1.png

Diagrama de Circuito

T-Board Name

physical

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_one21.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

C:\Users\sunfounder\Desktop\3.1.4_Welcome_bb.png3.1.4_Welcome_bb

Paso 2: Cambia al directorio.

cd ~/davinci-kit-for-raspberry-pi/c/3.1.2/

Paso 3: Compila.

gcc 3.1.2_Welcome.c -lwiringPi

Paso 4: Ejecuta.

sudo ./a.out

Al ejecutar el código, si el sensor PIR detecta a alguien pasando, la puerta se abrirá automáticamente (simulada por el servo), se encenderá el indicador y se reproducirá la música de bienvenida. Al terminar la melodía, el sistema cerrará la puerta y apagará la luz indicadora, quedando listo para la próxima detección de alguien que pase.

El módulo PIR cuenta con dos potenciómetros: uno para ajustar la sensibilidad y otro para ajustar la distancia de detección. Para optimizar el rendimiento del módulo PIR, ajusta ambos potenciómetros al máximo en sentido antihorario.

Nota

Si no funciona tras ejecutar el código, o aparece el mensaje de error: "wiringPi.h: No such file or directory», consulta ¿El código en C no funciona?.

Explicación del Código

void setAngle(int pin, int angle){    //Crear función para controlar el ángulo del servo.
    if(angle < 0)
        angle = 0;
    if(angle > 180)
        angle = 180;
    softPwmWrite(pin,Map(angle, 0, 180, 5, 25));
}

Crea una función, setAngle, para definir el ángulo en el servo en un rango de 0 a 180.

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

Crea una función doorbell para activar el zumbador y reproducir música.

void closedoor(){
digitalWrite(ledPin, LOW);   //apaga el LED
for(int i=180;i>-1;i--){  //gira el servo desde el ángulo máximo al mínimo
    setAngle(servoPin,i);
    delay(1);
    }
}

Crea 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);   //enciende el LED
    for(int i=0;i<181;i++){  //gira el servo desde el ángulo mínimo al máximo
        setAngle(servoPin,i);
        delay(1);
    }
    doorbell();
    closedoor();
}

La función opendoor() incluye varias acciones: encender la luz indicadora, girar el servo (simulando la apertura de la puerta), reproducir la música de bienvenida de la tienda y llamar a la función closedoor() después de la música.

    int main(void)
{
    if(wiringPiSetup() == -1){ //si la inicialización de wiring falla, imprime mensaje en pantalla
        printf("setup wiringPi failed !");
        return 1;
    }
    if(softToneCreate(BuzPin) == -1){
        printf("setup softTone failed !");
        return 1;
......

En la función main(), inicializa la biblioteca wiringPi y configura softTone, luego establece ledPin en estado de salida y pirPin en estado de entrada. Si el sensor PIR detecta que alguien pasa, la función opendoor será llamada para simular la apertura de la puerta.