Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Ahoj všichni! Happy Holloween !! Postavili jsme dýňovou lampu, která bude hrát hudbu a plivat bonbóny, když na ni někdo přijde.
Krok 1: Věci použité v tomto projektu
Hardwarové komponenty
- Arduino UNO / Seeeduino V4.2
- Základní štít V2
- Grove - snímač pohybu PIR
- Grove - MP3 v2.0
- Grove - WS2813 RGB LED pásek vodotěsný - 60 LED/m - 1m
- EMax 12g ES08MD vysoce citlivé servo
Softwarové aplikace a online služby
Arduino IDE
Krok 2: Příběh
Halloween se blíží, dýňové lampiony jsou zásadní. Používáme Seeeduino a PIR Motion Sensor postavili dýňovou lampu, když k ní někdo přijde, pustí hudbu a plivne cukroví.
Mechanická struktura
** Krok 1: ** Kupte si bonbóny a dýni, za dýní vykopejte díru, abychom na ni mohli dát Seeeduino.
** Krok 2: ** Takto uřízněte krabici a připevněte ji k ústí dýně.
** Nastavení 3: ** Namontujte rameno na servomotor. K upevnění servomotoru uvnitř dýně používáme jako držák plechovku.
** Krok 4: ** Ujistěte se, že když se objeví rameno servomotoru, bonbóny v krabici budou vyplivnuty z dýňových úst.
Krok 3: Hardwarové připojení
** Krok 1: ** Vytvořte složku s názvem MP3 na kousek SD karty, zkopírujte do ní soubor mp3, pojmenujte jej 0001.mp3. Připojte reproduktor k MP3 Grove přes 3,5 mm port a připojte MP3 Grove k portu D2 na Base Shield.
** Krok 2: ** Připojte PIR Motion Sensor Grove k portu D4 Base Shield a připojte proužek NeoPixel k portu D5 Base Shield.
** Krok 3: ** Připojte Servo Grove k digitálnímu pinu 9 Base Shield, takže možná budeme muset použít linky DuPont.
** Krok 4: ** Připojte základní štít k Seeeduino.
** Krok 5: ** Ke stažení programu na Seeeduino používáme pro připojení k počítači kabel USB. Po stažení můžeme uvnitř dýně použít pouze napájecí kabel.
Krok 4: Programování softwaru
** Krok 1: ** Nainstalujte si knihovny
Pro lepší efekt používáme operační systém s názvem FreeRTOS, lze jej stáhnout odtud.
Kromě toho tento projekt potřebuje následující knihovny, stáhněte si je a nainstalujte:
- Grove - MP3 v2.0
- Adafruit NeoPixel
- Adafruit TicoServo
Nebo můžete jednoduše zahrnout MP3.h do složky projektu a použít MP3 Grove.
** Krok 2: ** Sestavte a nahrajte program
*UPOZORNĚNÍ: Marco MAX_BRIGHTNESS ovládá maximální jas NeoPixel, snižte jeho jas, abyste snížili spotřebu energie.*
Může být těžké porozumět programu, pokud jste na Seeeduinu dříve nepoužívali operační systém, následující článek to zjednoduší.
V metodě setup () jsme normálně inicializovali Serial, MP3 Grove a Servo Motor a vytvořili jsme proměnnou, kterou nazýváme semafor, můžete ji považovat za proměnnou příznaku, která indikovala, jestli někdo přijde nebo ne.
vSemaphoreCreateBinary (xPIRBinarySemaphore);
Poté jsme vytvořili 3 úkoly, které mohou běžet společně. Priority pak nemusí být stejné.
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);
Po kontrole správné inicializace semaforu a úloh spustí metoda vTaskSetartScheduler () celý FreeRTOS.
if (xPIRBinarySemaphore == NULL || s1! = pdPASS || s2! = pdPASS || s3! = pdPASS)
{ pro (;;); } vTaskStartScheduler ();
Nerver metody loop () používaný ve FreeRTOS. Nyní je zbytek jednoduchý, vFadingLEDsTask blednutí úkolu Variabilní barevná LED dioda a vScanPIRTask skenování úkolu PIR Motion Sensor 'neustále. Když snímač pohybu PIR detekuje, že někdo přichází, nastaví příznak a poté se spustí úloha vHandlePIRTask. Protože priorita úkolu vHandlePIRTask je 2, budou při spuštění pozastaveny další dva zbývající úkoly.
Následující hovory se používají k nastavení nebo resetování vlajky.
xSemaphoreGive (xPIRBinarySemaphore);
xSemaphoreTake (xPIRBinarySemaphore, portMAX_DELAY);
Krok 5: Provoz
Vložte reproduktor, Seeeduino a Groves do dýňové lucerny a zapněte jej. Nyní můžete čekat, až na to někdo přijde, Trick or Treat:-).
Podívejte se na video kliknutím na halloweenské dýňové světlo. (https://www.youtube.com/embed/CFjuWXOIUN4)