Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
¡Hola todos! Feliz Halloween !! Construimos una linterna de calabaza que reproducirá música y escupirá caramelos cuando alguien se acerque.
Paso 1: Cosas utilizadas en este proyecto
Componentes de hardware
- Arduino UNO / Seeeduino V4.2
- Escudo base V2
- Grove - Sensor de movimiento PIR
- Grove - MP3 v2.0
- Grove - WS2813 RGB LED Strip Impermeable - 60 LED / m - 1m
- Servo de alta sensibilidad EMax 12g ES08MD
Aplicaciones de software y servicios en línea
IDE de Arduino
Paso 2: historia
Se acerca Halloween, los faroles de calabaza son imprescindibles. Usamos Seeeduino y PIR Motion Senser construido una linterna de calabaza, cuando alguien se acerca, reproducirá música y escupirá dulces.
Estructura mecanica
** Paso 1: ** Compra unos caramelos y una calabaza, cava un agujero detrás de la calabaza para que podamos ponerle Seeeduino.
** Paso 2: ** Corta una caja como esta y fíjala en la boca de la calabaza.
** Ajuste 3: ** Monte un brazo en el servomotor. Para fijar un servomotor dentro de la calabaza, usamos una lata como soporte.
** Paso 4: ** Asegúrese de que cuando el brazo del servomotor se levante, los caramelos de la caja saldrán de la boca de la calabaza.
Paso 3: Conexión de hardware
** Paso 1: ** Cree una carpeta llamada MP3 en una tarjeta SD, copie un archivo mp3 y asígnele el nombre 0001.mp3. Conecte un altavoz a MP3 Grove a través del puerto de 3,5 mm y conecte MP3 Grove al puerto D2 en Base Shield.
** Paso 2: ** Conecte el sensor de movimiento PIR Grove al puerto D4 de Base Shield y conecte la tira NeoPixel al puerto D5 de Base Shield.
** Paso 3: ** Conecte Servo Grove al pin digital 9 de Base Shield, por lo que es posible que necesitemos usar las líneas DuPont.
** Paso 4: ** conecte Base Shield a Seeeduino.
** Paso 5: ** Para descargar el programa a Seeeduino, usamos un cable USB para conectar con la computadora. Después de la descarga, solo podemos usar un cable de alimentación dentro de la calabaza.
Paso 4: Programación de software
** Paso 1: ** Instalar bibliotecas
Para un mejor efecto, usamos un sistema operativo llamado FreeRTOS, se puede descargar desde aquí.
Además, este proyecto necesita las siguientes bibliotecas, descárgalas e instálalas:
- Grove - MP3 v2.0
- Adafruit NeoPixel
- Adafruit TicoServo
O simplemente puede incluir MP3.h en la carpeta del proyecto para usar MP3 Grove.
** Paso 2: ** Cree y cargue el programa
* AVISO: Marco MAX_BRIGHTNESS controla el brillo máximo de NeoPixel, reduce el brillo del mismo para reducir el consumo de energía. *
Puede ser difícil entender el programa si no usó el sistema operativo en Seeeduino antes, el siguiente artículo lo simplificará.
En el método setup (), inicializamos Serial, MP3 Grove y Servo Motor normalmente, y creamos una variable que llamamos semáforo, puede considerarla como una variable de bandera que solía indicar si alguien viene o no.
vSemaphoreCreateBinary (xPIRBinarySemaphore);
Luego creamos 3 tareas, se pueden ejecutar juntas. Pero las prioridades de entonces pueden no ser las mismas.
s1 = xTaskCreate (vFadingLEDsTask, NULL, configMINIMAL_STACK_SIZE, NULL, 1, NULL);
s2 = xTaskCreate (vScaningPIRTask, NULL, configMINIMAL_STACK_SIZE, NULL, 1, NULL); s3 = xTaskCreate (vHandlePIRTask, NULL, configMINIMAL_STACK_SIZE, NULL, 2, NULL);
Después de verificar que el semáforo y las tareas se hayan inicializado correctamente, el método vTaskSetartScheduler () inicia FreeRTOS completo.
if (xPIRBinarySemaphore == NULL || s1! = pdPASS || s2! = pdPASS || s3! = pdPASS)
{ por (;;); } vTaskStartScheduler ();
El nerver del método loop () utilizado en FreeRTOS. Ahora el resto es simple, la tarea vFadingLEDsTask se desvanece LED de color variable y la tarea vScanPIRTask escanea el pin del sensor de movimiento PIR todo el tiempo. Cuando el sensor de movimiento PIR detecta que alguien está llegando, activa la bandera y luego comienza a ejecutarse la tarea vHandlePIRTask. Debido a que la prioridad de la tarea vHandlePIRTask es 2, cuando se esté ejecutando, se suspenderán otras dos tareas restantes.
Las siguientes llamadas se utilizan para configurar o restablecer una bandera.
xSemaphoreGive (xPIRBinarySemaphore);
xSemaphoreTake (xPIRBinarySemaphore, portMAX_DELAY);
Paso 5: Operación
Coloque el altavoz, Seeeduino y Groves dentro de la linterna de calabaza y enciéndalo. Ahora puedes esperar a que alguien venga, Truco o trato:-).
Mira el video haciendo clic en la luz de calabaza de Halloween. (https://www.youtube.com/embed/CFjuWXOIUN4)