สารบัญ:
- ขั้นตอนที่ 1: อาร์เรย์หลอดไฟ
- ขั้นตอนที่ 2: ทฤษฎีการหรี่แสง
- ขั้นตอนที่ 3: การฝึกลดแสง
- ขั้นตอนที่ 4: ตัวควบคุมหลอดไฟ (ESP32)
- ขั้นตอนที่ 5: แผงควบคุม
- ขั้นตอนที่ 6: สนุก
วีดีโอ: โคมไฟพระอาทิตย์ขึ้นที่ควบคุมได้สว่าง: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
คุณเคยตื่นนอนตอน 7 โมง ซึ่งเป็นเวลาปกติที่คุณต้องตื่นไปทำงานและพบว่าตัวเองอยู่ในความมืดหรือไม่? ฤดูหนาวเป็นช่วงเวลาที่เลวร้ายใช่มั้ย? คุณต้องตื่นกลางดึก (ไม่อย่างนั้นทำไมมันมืดจัง) ดึงตัวเองออกจากเตียงและส่งร่างกายกึ่งสำนึกของคุณไปอาบน้ำ
โครงการนี้มีจุดมุ่งหมายเพื่อแก้ปัญหาอย่างใดอย่างหนึ่ง - ความมืดในตอนเช้า
มีโคมไฟพระอาทิตย์ขึ้นราคาถูกจำนวนมากอยู่รอบๆ แต่ทั้งหมดนั้นใช้พลังงานต่ำและสีซีด พวกเขาเป็นเหมือนโคมไฟกลางคืนซึ่งจะช่วยให้คุณนอนหลับได้ดีขึ้น ไม่ใช่สิ่งที่ฉันต้องการเลย
ในเวลาเดียวกัน แค่เปิดไฟสว่างก็ปลุกคุณขึ้นมาทันที แต่ไม่เบาพอ สิ่งที่ฉันต้องการคือการรวมกันของทั้งสองวิธี - สว่างขึ้นด้วยความสว่างต่ำ ค่อยๆ เร่งความเร็วเต็มที่ จากนั้นเสียงปลุกจริงๆ จะดับลง และคุณก็ไม่ง่วงอีกต่อไป มาเพิ่มเพลงนกสักหน่อยแล้วคุณจะตื่นขึ้นมาบนสวรรค์ทุกเช้า!
ขั้นตอนที่ 1: อาร์เรย์หลอดไฟ
ก่อนอื่นเราต้องมีหลอดไฟ ฉันมีห้องขนาดใหญ่ที่มีผนังและเพดานสีขาว ฉันจึงเลือกหลอดไฟ LED GU10 จำนวน 7 ดวง ประมาณ 6 วัตต์ กำลังไฟบริสุทธิ์มากกว่า 40 วัตต์! ก็เพียงพอที่จะทำให้คุณรู้สึกเหมือนเป็นเวลากลางวันแล้ว นอกจากนี้ยังสามารถใช้เป็นไฟส่องสว่างในห้องปกติในระหว่างวันได้อีกด้วย
ไม่สำคัญหรอกว่าคุณจะประกอบมันอย่างไร คุณใช้โคมไฟแบบไหนกับซ็อกเก็ตไหน ทุกสิ่งที่สำคัญ - สิ่งเหล่านี้จะต้องเป็นโคมไฟหรี่แสงได้!
ในกรณีของฉัน ฉันมีแผ่นไม้ที่มีซ็อกเก็ต GU10 7 อันติดอยู่ ทั้งหมดเชื่อมต่อเข้าด้วยกัน ฉันจะใส่มันลงในกล่องพลาสติกในภายหลัง
ขั้นตอนที่ 2: ทฤษฎีการหรี่แสง
ในทางทฤษฎีไม่มีความแตกต่างระหว่างทฤษฎีและการปฏิบัติ ในทางปฏิบัติก็มี
การควบคุมสวิตช์หรี่ไฟจาก ESP32/Arduino ดูเหมือนจะไม่ง่ายอย่างที่คิด ฉันมีโมดูล RobotDyn AC Light Dimmer ตัวใดตัวหนึ่ง ผู้ผลิตแนะนำห้องสมุดสำหรับสิ่งนั้น มันใช้งานไม่ได้กับ ESP32 (และมันยากมากที่จะปรับตัว เนื่องจากมันใช้การเข้าถึงรีจิสทรีเฉพาะของ ATMega ในระดับต่ำจำนวนมาก) การทำงานบน Arduino Nano ทำให้เกิดแสงวูบวาบอย่างรุนแรงในความสว่างระดับกลางต่ำ นั่นเป็นเหตุผลที่ฉันใช้เวลาศึกษาว่ามันทำงานอย่างไรและหาวิธีของตัวเอง
ทฤษฎีเล็กน้อย
โมดูลหรี่ที่เลือกใช้ TRIAC ยอดนิยม: BTA16 มีบทความมากมายเกี่ยวกับเรื่องนี้ ฉันจะพยายามสรุปที่นี่
TRIAC เป็นโมดูลที่สามารถส่งแรงดันไฟฟ้าบวกหรือลบอินพุตไปยังเอาต์พุตหรือสามารถบล็อกได้ โดยค่าเริ่มต้นจะบล็อกทุกอย่าง ในการเปิด เราควรให้สัญญาณเข้าเกตสูง 100 us จากนั้นจะเปิดค้างไว้จนกว่ากระแสไฟจะลดลงเป็นศูนย์ ซึ่งเกิดขึ้นเมื่อแรงดันไฟขาเข้าเปลี่ยนเครื่องหมาย ข้ามแรงดันไฟเป็นศูนย์ จากนั้นในรอบต่อไปนี้เราควรทำอีก 100 เราชีพจรเป็นต้น โดยการเลือกเวลาที่จะให้ชีพจร เราควบคุมความสว่าง โดยเริ่มจากจุดเริ่มต้น และจะส่งกำลังได้เกือบ 100% ทำทีหลังก็จะจาง ตรวจสอบไดอะแกรมด้านบนพร้อมคำอธิบาย
ในการสร้างพัลส์ในจุดเดียวกันของวัฏจักร เราต้องรู้ว่ามันเริ่มต้นเมื่อใด นั่นเป็นสาเหตุที่โมดูลหรี่ไฟมีตัวตรวจจับ Zero-Cross ในตัว โดยจะส่งสัญญาณ (ซึ่งเราจะจับได้เมื่อฮาร์ดแวร์ขัดจังหวะใน Arduino) ทุกครั้งที่แรงดันไฟฟ้าตัดผ่านศูนย์
ขั้นตอนที่ 3: การฝึกลดแสง
ใช่ นั่นเป็นวิธีที่คุณจะตื่นขึ้น ถ้าโคมไฟของคุณไม่มีแสงสลัวและนำพลังงาน 40W ทั้งหมดมาสู่ดวงตาที่ง่วงนอนของคุณ
ปัญหาทั่วไป
มีหลายประเด็นที่เราต้องแก้ไข
ริบหรี่
เวลาของไมโครคอนโทรลเลอร์ต้องแม่นยำมากในการเปิดและปิดเอาต์พุตเกต RobotDyn แนะนำห้องสมุดให้มีการขัดจังหวะตัวจับเวลาทุกๆ 100us และเปลี่ยนระดับเกตบนตัวจับเวลาเท่านั้น หมายความว่าสามารถ +/- 50 ไมโครวินาทีจากค่าที่เหมาะสมที่สุด มันให้ผลลัพธ์ที่ดีกับความสว่างสูง แต่จะกะพริบมากเมื่อความสว่างต่ำ นอกจากนี้ หากไมโครคอนโทรลเลอร์ทำสิ่งต่างๆ มากมาย ก็จะลดความแม่นยำของเวลาลง ดังนั้นจึงควรใช้ไมโครคอนโทรลเลอร์เฉพาะสำหรับสวิตช์หรี่ไฟ
ความสว่างน้อยที่สุดไฟ LED มีตัวแปลงไฟในตัวซึ่งจะปฏิเสธที่จะทำงานเมื่อมีพลังงานไม่เพียงพอ โคมไฟของฉันดูเหมือนจะทำงานได้ดีตั้งแต่ 10-11%
แม้จะมีค่านี้ แต่หลอดไฟบางดวงของฉันก็ไม่ยอมติดเมื่อสตาร์ท แม้จะเพิ่มความสว่างในภายหลัง แต่ก็ยังมืดอยู่ เมื่อเราเปลี่ยนจากสถานะ OFF เป็นความสว่างในเชิงบวก เราเริ่มต้นด้วยช่วงเวลาอุ่นเครื่อง 5 รอบ เมื่อเราให้พลังงานเต็มที่กับหลอดไฟ จากนั้นเราก็ต่อด้วยความสว่างที่ต้องการ แทบจะสังเกตไม่เห็น แต่ช่วยได้จริงๆ
ความถี่ไฟหลัก 50/60 Hz คุณจำเป็นต้องรู้ว่าต้องรอนานแค่ไหนก่อนที่จะถึงศูนย์ถัดไป มันค่อนข้างง่าย - เราแค่ดูความแตกต่างของเวลาระหว่างการขัดจังหวะสองครั้งสุดท้าย
การเปลี่ยนแปลงความสว่างทีละน้อย ESP32 ค่อนข้างช้า ใช้เวลา 0.5 วินาทีในการประมวลผล HTTP เล็กน้อยหรือแม้แต่คำขอ WebSocket ดังนั้นอย่าคาดหวังว่าการเปลี่ยนความสว่างจะราบรื่น จำเป็นต้องดำเนินการในระดับหรี่แสง นั่นเป็นเหตุผลที่ เมื่อได้รับความสว่างใหม่จากพอร์ตอนุกรม มันก็แค่กำหนดเป้าหมาย แล้วค่อยๆ เข้าใกล้มันเมื่อเวลาผ่านไป
การแก้ไขปัญหา
นี่คือรหัส Arduino ง่าย ๆ ของฉันสำหรับเครื่องหรี่ มันรอคำสั่ง (หนึ่งไบต์ที่มีความสว่างใหม่) จากอินพุตแบบอนุกรม จัดการการขัดจังหวะแบบ Zero-Cross ควบคุม TRIAC จัดการปัญหาทั้งหมดข้างต้น
ขั้นตอนที่ 4: ตัวควบคุมหลอดไฟ (ESP32)
นี่คือสคีมาการเชื่อมต่อของส่วนประกอบทั้งหมดที่ฉันมี บอร์ด ESP32 แตกต่างจากที่ฉันใช้ (Heltec) มาก ดังนั้นหมุดที่เลือกจึงดูแปลกไปหน่อย แต่ก็ยังใช้งานได้ดี อย่าลังเลที่จะใช้หมุดต่างๆ ในโครงการของคุณ
นี่คือรหัสควบคุมทั้งหมด มันค่อนข้างตรงไปตรงมา
คุณสมบัติหลัก
ควบคุมได้ หลอดไฟเชื่อมต่อกับ WiFi เริ่มเซิร์ฟเวอร์ WebSocket บนพอร์ต 81 รอคำสั่ง รูปแบบคำสั่งคือ
ขณะนี้รองรับเพียงสองคำสั่ง: "set_brightness" และ "update_settings" ซึ่ง… ค่อนข้างอธิบายตัวเอง
รับเวลาจาก NTP ฉันไม่ต้องการทำให้สิ่งต่าง ๆ ซับซ้อนเกินไปและเพิ่มนาฬิกาตามเวลาจริงในสคีมา เรามีการเข้าถึงอินเทอร์เน็ต ซึ่งหมายความว่าเราสามารถรับเวลาจริงจากเซิร์ฟเวอร์ NTP บางตัว จากนั้นติดตามเวลาปัจจุบันโดยใช้ตัวจับเวลาของระบบ
นาฬิกาปลุกพระอาทิตย์ขึ้น คุณสามารถตั้งปลุกได้หนึ่งครั้ง ให้ประโยชน์อะไร: เริ่มต้นด้วยความสว่างน้อยที่สุดและค่อยๆ เปลี่ยนเป็นความสว่างเต็มที่เป็นเวลา 10 นาที จากนั้นจะอยู่บนสองสามชั่วโมง จากนั้นจะค่อยๆดับลงภายใน 60 วินาที
พารามิเตอร์ทั้งหมดข้างต้นสามารถกำหนดค่าได้
นกร้อง. DFPlayer mini ใช้เล่นเพลง. มีคำแนะนำมากมาย แต่โดยพื้นฐานแล้ว คุณเพียงแค่เสียบการ์ด MicroSD ที่ฟอร์แมตเป็น FAT32 ด้วยไฟล์เดียวชื่อ 0001.mp3 ไฟล์นี้สามารถมีอะไรก็ได้ที่คุณชอบ ในกรณีของฉันคือเสียงนกร้อง 15 นาที (จะวนซ้ำ) และทำให้เช้าของฉันตื่นตาตื่นใจ โปรดทราบว่ามีตัวเก็บประจุขนาดใหญ่อยู่บนพลังงาน และตัวต้านทาน 1 kOhm บนสายอนุกรมระหว่าง ESP32 และ DFplayer - เป็นทางเลือก แต่ช่วยลดเสียงรบกวน
การจัดเก็บการตั้งค่าใน EEPROM การตั้งค่าทั้งหมดจะถูกเขียนลงใน EEPROM และโหลดเมื่อเริ่มต้น ทำให้สามารถใช้หลอดไฟที่มีคุณลักษณะการเตือนเป็นอย่างน้อยโดยไม่ต้องเชื่อมต่อตัวควบคุม
กำลังแสดงข้อมูลบางส่วนไปยังหน้าจอ OLED Heltec ESP32 ของฉันมีหน้าจอ SSD1306 128X64 I2C ในตัว ข้อมูลสำคัญทั้งหมดแสดงอยู่บนนั้น ฉันรู้ กล่องดูน่าเกลียด ฉันเพิ่งพิมพ์ 3 มิติ และเจาะหน้าต่างด้วยสว่าน เร็ว สกปรก แต่ได้ผล!
ขั้นตอนที่ 5: แผงควบคุม
นั่นคือหัวใจของโครงการ Raspberry Pi ที่มีจอแสดงผลขนาด 7 นิ้วแบบออริจินัล ใช้ Kivy front-end
นี่คือซอร์สโค้ดแบบเต็ม
คุณสมบัติ
เขียนด้วยภาษา Python ฉันชอบ Kivy มันคือกรอบงาน Python สำหรับส่วนต่อประสานกับผู้ใช้ ง่ายมาก แต่ยืดหยุ่นและมีประสิทธิภาพ (ใช้โค้ด C จำนวนมากภายในเพื่อประสิทธิภาพสูงและการเร่งฮาร์ดแวร์)
สภาพอากาศ แสดงอุณหภูมิปัจจุบันและความดันภายนอก หากคุณเชื่อมต่อเซ็นเซอร์ระยะไกล - อุณหภูมิภายในด้วย นอกจากนี้ยังขอและวิเคราะห์พยากรณ์อากาศสำหรับ 12 ชั่วโมงถัดไปและให้คำแนะนำเกี่ยวกับความน่าจะเป็นของฝน
ตัวควบคุม SunriseLamp แผงอื่นจะแสดงข้อมูลพื้นฐานเกี่ยวกับการเตือนและช่วยให้คุณปรับความสว่างได้ หากคุณไปที่การตั้งค่า คุณสามารถกำหนดค่าพารามิเตอร์ใดๆ ของหลอดไฟได้ รวมถึงกำหนดการปลุก ระดับเสียงสูงสุด และอื่นๆ
Screensaver. Renders Game of Life บนหน้าจอหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง
เคยมีมากกว่านั้น แต่สิ่งอื่น ๆ ดูเหมือนจะไร้ประโยชน์
การติดตั้ง
ฉันติดตั้งทุกอย่างด้วยตนเองบน Raspbian และตอนนี้สามารถพูดได้ว่า: อย่าทำผิดพลาดซ้ำ ใช้ KivyPie มีทุกอย่างติดตั้งไว้ล่วงหน้า
นอกจากนั้น เพียงทำตามคำแนะนำการติดตั้งในที่เก็บโค้ด
ขั้นตอนที่ 6: สนุก
โดยส่วนตัวแล้วฉันมีความสุขกับอุปกรณ์ ฉันใช้เป็นไฟหลักที่บ้านในระหว่างวัน และช่วยให้ฉันตื่นนอนตอนเช้าได้ น่าทึ่งมาก
ฉันรู้ว่าคำแนะนำนั้นไม่ละเอียดและสื่อความหมายมากนัก หากใครทำแบบเดียวกันและมีปัญหา เรายินดีที่จะช่วย!
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง