Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Bună tuturor! Fericit Holloween !! Am construit un felinar de dovleac care va cânta muzică și va scuipa bomboane când cineva se apropie de el.
Pasul 1: Lucruri utilizate în acest proiect
Componente hardware
- Arduino UNO / Seeeduino V4.2
- Scutul de bază V2
- Grove - Senzor de mișcare PIR
- Grove - MP3 v2.0
- Grove - WS2813 RGB LED Strip Waterproof - 60 LED / m - 1m
- Servomax EMax 12g ES08MD high Sensitive
Aplicații software și servicii online
IDE Arduino
Pasul 2: Poveste
Halloween vine, felinarele cu dovleac sunt esențiale. Folosim Seeeduino și PIR Motion Senser a construit un felinar de dovleac, când cineva se apropie de el, va reda muzică și va scuipa bomboane.
Structura mecanică
** Pasul 1: ** Cumpărați niște bomboane și un dovleac, săpați o gaură în spatele dovleacului, astfel încât să-l putem pune pe Seeeduino.
** Pasul 2: ** Tăiați o cutie ca aceasta și fixați-o pe gura dovleacului.
** Setp 3: ** Montați un braț pe servomotor. Pentru a fixa un servomotor în interiorul dovleacului, folosim o cutie ca suport.
** Pasul 4: ** Asigurați-vă că atunci când brațul servomotorului se ridică, bomboanele din cutie vor fi scuipate din gura dovleacului.
Pasul 3: Conexiune hardware
** Pasul 1: ** Creați un folder numit MP3 într-o bucată de card SD, copiați un fișier mp3 pe acesta, denumiți-l 0001.mp3. Conectați un difuzor la MP3 Grove prin portul de 3,5 mm și conectați MP3 Grove la portul D2 de pe Base Shield.
** Pasul 2: ** Conectați senzorul de mișcare PIR Grove la portul D4 al bazei Shield și conectați banda NeoPixel la portul D5 al bazei Shield.
** Pasul 3: ** Conectați Servo Grove la pinul digital 9 al lui Base Shield, deci este posibil să trebuiască să folosim liniile DuPont.
** Pasul 4: ** conectați Scutul de bază la Seeeduino.
** Pasul 5: ** Pentru a descărca programul pe Seeeduino, folosim un cablu USB pentru a ne conecta la computer. După descărcare, putem folosi doar un cablu de alimentare în interiorul dovleacului.
Pasul 4: Programare software
** Pasul 1: ** Instalați bibliotecile
Pentru un efect mai bun, folosim un sistem de operare numit FreeRTOS, acesta poate fi descărcat de aici.
În plus, acest proiect are nevoie de următoarele biblioteci, descărcați-le și instalați-le:
- Grove - MP3 v2.0
- Adafruit NeoPixel
- Adafruit TicoServo
Sau puteți include pur și simplu MP3.h în folderul proiectului pentru a utiliza MP3 Grove.
** Pasul 2: ** Construiți și încărcați programul
* AVIZ: Marco MAX_BRIGHTNESS controlează luminozitatea maximă a NeoPixel, reduce luminozitatea acestuia pentru a reduce consumul de energie. *
Poate fi greu de înțeles programul dacă nu ați folosit sistemul de operare pe Seeeduino înainte, următorul articol îl va face simplu.
În metoda setup (), am inițializat Serial, MP3 Grove și Servo Motor în mod normal și am creat o variabilă pe care o numim semafor, o puteți considera ca o variabilă de semnalizare care a folosit pentru a indica dacă vine sau nu cineva.
vSemaphoreCreateBinary (xPIRBinarySemaphore);
Apoi am creat 3 sarcini, acestea pot rula împreună. Dar prioritățile de atunci s-ar putea să nu fie aceleași.
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);
După verificarea semaforului și sarcinile sunt inițializate corect, metoda vTaskSetartScheduler () pornește întregul FreeRTOS.
if (xPIRBinarySemaphore == NULL || s1! = pdPASS || s2! = pdPASS || s3! = pdPASS)
{ pentru (;;); } vTaskStartScheduler ();
Metoda loop () nerver utilizată în FreeRTOS. Acum restul este simplu, sarcina vFadingLEDsTask se estompează LED-ul Variable Color și vScanPIRTask scanează pinul senzorului de mișcare PIR tot timpul. Când senzorul de mișcare PIR detectează că vine cineva, acesta setează semnalizatorul, apoi începe să ruleze sarcina vHandlePIRTask. Deoarece prioritatea sarcinii vHandlePIRTask este 2, atunci când rulează, alte două sarcini rămase vor fi suspendate.
Următoarele apeluri sunt utilizate pentru a seta sau a reseta un semnalizator.
xSemaphoreGive (xPIRBinarySemaphore);
xSemaphoreTake (xPIRBinarySemaphore, portMAX_DELAY);
Pasul 5: Operațiune
Puneți difuzorul, Seeeduino și Groves în interiorul felinarului de dovleac și porniți-l. Acum puteți aștepta ca cineva să vină la el, Trick or Treat:-).
Verificați videoclipul făcând clic pe lumina de dovleac de Halloween. (https://www.youtube.com/embed/CFjuWXOIUN4)