สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
สวัสดีทุกคน! สุขสันต์วันฮาโลวีน!! เราสร้างตะเกียงฟักทองซึ่งจะเล่นดนตรีและพ่นขนมเมื่อมีคนขึ้นมา
ขั้นตอนที่ 1: สิ่งที่ใช้ในโครงการนี้
ส่วนประกอบฮาร์ดแวร์
- Arduino UNO / Seeeduino V4.2
- เกราะฐาน V2
- Grove - PIR Motion Sensor
- โกรฟ - MP3 v2.0
- Grove - WS2813 RGB LED Strip กันน้ำได้ - 60 LED/m - 1m
- EMax 12g ES08MD เซอร์โวที่มีความไวสูง
แอพซอฟต์แวร์และบริการออนไลน์
Arduino IDE
ขั้นตอนที่ 2: เรื่องราว
ฮัลโลวีนใกล้เข้ามาแล้ว โคมไฟฟักทองเป็นสิ่งจำเป็น เราใช้ Seeeduino และ PIR Motion Senser สร้างตะเกียงฟักทอง เมื่อมีคนขึ้นมา มันจะเปิดเพลงและพ่นลูกอม
โครงสร้างเครื่องกล
**ขั้นตอนที่ 1: **ซื้อลูกอมและฟักทอง ขุดหลุมด้านหลังฟักทองเพื่อที่เราจะใส่ Seeeduino ลงไปได้
**ขั้นตอนที่ 2: **ตัดกล่องแบบนี้แล้วติดตรงปากฟักทอง
**Setp 3: **ติดแขนเข้ากับเซอร์โวมอเตอร์ ในการซ่อมเซอร์โวมอเตอร์ภายในฟักทอง เราใช้กระป๋องเป็นตัวยึด
**ขั้นตอนที่ 4: ** ตรวจสอบให้แน่ใจว่าเมื่อแขนเซอร์โวมอเตอร์เปิดขึ้น ลูกอมในกล่องจะพ่นออกจากปากฟักทอง
ขั้นตอนที่ 3: การเชื่อมต่อฮาร์ดแวร์
**ขั้นตอนที่ 1: **สร้างโฟลเดอร์ชื่อ MP3 ในการ์ด SD คัดลอกไฟล์ mp3 ลงไป ตั้งชื่อเป็น 0001.mp3 เชื่อมต่อลำโพงกับ MP3 Grove ผ่านพอร์ต 3.5 มม. และเชื่อมต่อ MP3 Grove กับพอร์ต D2 บน Base Shield
**ขั้นตอนที่ 2: **เชื่อมต่อ PIR Motion Sensor Grove กับพอร์ต D4 ของ Base Shield และเชื่อมต่อแถบ NeoPixel กับพอร์ต D5 ของ Base Shield
**ขั้นตอนที่ 3: **เชื่อมต่อ Servo Grove กับพินดิจิทัล 9 ของ Base Shield ดังนั้นเราอาจต้องใช้สายของดูปองท์
**ขั้นตอนที่ 4: **เสียบ Base Shield กับ Seeeduino
**ขั้นตอนที่ 5: **ในการดาวน์โหลดโปรแกรมไปที่ Seeeduino เราใช้สาย USB เพื่อเชื่อมต่อกับคอมพิวเตอร์ หลังจากดาวน์โหลด เราสามารถใช้สายไฟภายในฟักทองเท่านั้น
ขั้นตอนที่ 4: การเขียนโปรแกรมซอฟต์แวร์
**ขั้นตอนที่ 1: **ติดตั้งไลบรารี
เพื่อให้ได้ผลดียิ่งขึ้น เราใช้ระบบปฏิบัติการที่เรียกว่า FreeRTOS ซึ่งสามารถดาวน์โหลดได้จากที่นี่
นอกจากนี้ โครงการนี้ต้องการไลบรารีต่อไปนี้ ดาวน์โหลดและติดตั้ง:
- โกรฟ - MP3 v2.0
- อดาฟรุต NeoPixel
- Adafruit TicoServo
หรือคุณสามารถรวม MP3.h ไว้ในโฟลเดอร์โครงการเพื่อใช้ MP3 Grove
**ขั้นตอนที่ 2: **สร้างและอัปโหลดโปรแกรม
*ประกาศ: Marco MAX_BRIGHTNESS ควบคุมความสว่างสูงสุดของ NeoPixel ลดความสว่างของหน้าจอเพื่อลดการใช้พลังงาน*
อาจเป็นเรื่องยากที่จะเข้าใจโปรแกรม หากคุณไม่เคยใช้ระบบปฏิบัติการบน Seeeduino มาก่อน บทความต่อไปนี้จะทำให้เข้าใจได้ง่าย
ในวิธี setup() เราเริ่มต้น Serial, MP3 Grove และ Servo Motor ตามปกติ และสร้างตัวแปรที่เราเรียกว่า semaphore คุณสามารถพิจารณาว่าเป็นตัวแปรแฟล็กที่ใช้ระบุว่ามีคนมาหรือไม่
vSemaphoreCreateBinary(xPIRBinarySemaphore);
จากนั้นเราสร้างงาน 3 งาน พวกเขาสามารถทำงานร่วมกันได้ แต่ลำดับความสำคัญในตอนนั้นอาจไม่เหมือนกัน
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);
หลังจากตรวจสอบสัญญาณและงานต่างๆ ได้รับการเตรียมใช้งานอย่างถูกต้องแล้ว เมธอด vTaskSetartScheduler() จะเริ่มต้น FreeRTOS ทั้งหมด
ถ้า (xPIRBinarySemaphore == NULL || s1 != pdPASS || s2 != pdPASS || s3 != pdPASS)
{ สำหรับ (;;); } vTaskStartScheduler();
เส้นประสาทเมธอด loop() ที่ใช้ใน FreeRTOS ตอนนี้ที่เหลือเป็นเรื่องง่าย งาน vFadingLEDsTask ซีดจาง Variable Color LED และ vScanPIRTask งานสแกนพินของ PIR Motion Sensor ตลอดเวลา เมื่อ PIR Motion Sensor ตรวจพบว่ามีคนกำลังมา มันจะตั้งค่าสถานะ จากนั้นงาน vHandlePIRTask จะเริ่มทำงาน เนื่องจากลำดับความสำคัญของงาน vHandlePIRTask คือ 2 เมื่อทำงาน งานที่เหลืออีกสองงานจะถูกระงับ
การโทรต่อไปนี้ใช้เพื่อตั้งค่าหรือรีเซ็ตแฟล็ก
xSemaphoreGive(xPIRBinarySemaphore);
xSemaphoreTake(xPIRBinarySemaphore, พอร์ตMAX_DELAY);
ขั้นตอนที่ 5: การทำงาน
ใส่ลำโพง Seeeduino และ Groves ไว้ในโคมไฟฟักทองแล้วเปิดเครื่อง ตอนนี้คุณสามารถรอใครสักคนมาเล่น Trick or Treat:-)
ตรวจสอบวิดีโอโดยคลิกไฟฟักทองฮาโลวีน (https://www.youtube.com/embed/CFjuWXOIUN4)