สารบัญ:
- ขั้นตอนที่ 1: BlueLamp PCB
- ขั้นตอนที่ 2: การประกอบหลอดไฟ
- ขั้นตอนที่ 3: Arduino Sketch
- ขั้นตอนที่ 4: บทสรุป
วีดีโอ: ไม่มีโคมไฟสีฟ้า: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ดังนั้น Lazy Old Geek (L. O. G.) นี้จึงทำงานในโครงการ Blue Light:
www.instructables.com/id/Blue-Light-Projec…
www.instructables.com/id/Blue-Light-Projec…
สำหรับขั้นตอนต่อไป ฉันต้องการโคมไฟที่สว่างในตอนกลางวันและไม่มีแสงสีฟ้าในตอนเย็น/กลางคืน
การออกแบบฮาร์ดแวร์:
ฉันตัดสินใจใช้ RTC (นาฬิกาเรียลไทม์) เพื่อควบคุมเวลาสำหรับการเปลี่ยนแปลงของแสง
ฉันเลือก DS3231 เนื่องจากมีการรักษาเวลาที่แม่นยำกว่า DS1307 DS3231 สามารถเป็น 5v หรือ 3.3v
สำหรับแสง ฉันจะใช้สตริง LED WS2812B มีอินเทอร์เฟซแบบสามสายที่เรียบง่ายและไฟ LED สีแดง สีเขียว และสีน้ำเงินที่ควบคุมได้ WS2812B เป็นอุปกรณ์ 5v
สำหรับไมโครคอนโทรลเลอร์ ฉันจะใช้ Pro Micro, 5v 16MHz
แม้ว่า WS2812B จะใช้งานได้กับ 3.3V แต่จะดีกว่าถ้าใช้ Arduino 5V
Pro Micro เป็น Arduino ราคาถูกโดยใช้ไมโครคอนโทรลเลอร์ Atmega32U4
หลอดไฟจะมีสวิตช์เปิด/ปิดเพื่อเปิดหรือปิดหลอดไฟ
จะมีโพเทนชิออมิเตอร์สำหรับควบคุมความสว่าง
ซอฟต์แวร์ออกแบบ:
DS3231 RTC จะควบคุมเวลา มีแบตเตอรี่สำรอง ดังนั้นควรรักษาเวลาไว้แม้ว่าไฟจะดับ
ในระหว่างวัน ไฟ LED RGB ทั้งหมดจะติดสว่าง สามารถควบคุมได้โดยหม้อจนถึงระดับความเข้มเต็มที่
ในช่วงเย็น ไฟ LED สีฟ้าจะดับลง สีแดงและสีเขียวอยู่ที่ระดับสูงสุด
ในช่วงเย็น ไฟ LED สีแดงและสีเขียวจะหรี่ลง โดยชอบสีแดงมากกว่าสีเขียว (การทดสอบของฉันในส่วนที่ 2 แนะนำว่าไฟ LED สีเขียวมีสีน้ำเงินอยู่บ้าง)
หลังเวลาประมาณ 22.00 น. ไฟ LED ทั้งหมดจะดับลง
ปัญหา:
กลับไปที่โมดูล DS3231 RTC ฉันซื้อของฉันจาก Aliexpress เหมือนที่ฉันทำกับส่วนประกอบอื่น ๆ
สิ่งเหล่านี้ควรจะใช้งานได้และชาร์จแบตเตอรี่แบบชาร์จได้ LIR2032 ฉันลองแล้ว หลังจากนั้นประมาณหนึ่งวัน แบตเตอรี่ก็หมด
หลังจากค้นหาบนอินเทอร์เน็ตฉันพบบทความนี้
www.onetransistor.eu/2019/07/zs042-ds3231-…
ฉันเห็นด้วยกับการวิเคราะห์นี้ แต่คิดว่า LIR2032 จะชาร์จอย่างเพียงพอ แต่ไม่มากเกินไป เห็นได้ชัดว่าฉันผิด DS3231 ของฉันแม้ว่าจะถูกทำเครื่องหมายเป็น ZS-042 ด้วยเนื่องจากในบทความมีความแตกต่างเล็กน้อยจากของเขา แต่เกือบจะเหมือนกัน ดังนั้นฉันจึงยกเลิกการขายไดโอดที่เห็นในภาพและติดตั้งแบตเตอรี่ CR2032 หากไม่มีไดโอดโมดูลจะไม่พยายามชาร์จแบตเตอรี่ ตอนนี้ DS3231 สามารถจับเวลาได้อย่างถูกต้องแม้จะไม่ได้เสียบปลั๊กไฟ และแบตเตอรี่น่าจะใช้งานได้นานหลายปี
ข้อกำหนดด้านพลังงาน:
WS2812B เป็นสตริงของไฟ LED RGB ที่บางครั้งเรียกว่า NeoPixels NeoPixel แต่ละตัวต้องการสูงสุด 60mA ฉันใช้ 12 Neo Pixels ดังนั้นต้องใช้ 0.72A ฉันใช้อะแดปเตอร์ USB 2A จึงมีกระแสไฟเพียงพอ
ขั้นตอนที่ 1: BlueLamp PCB
ตามปกติฉันใช้ซอฟต์แวร์ Eagle Cadsoft ฟรี (ตอนนี้คือ Autodesk) เพื่อจัดวางและสร้าง PCB ของฉัน
www.autodesk.com/products/eagle/free-downl…
ไฟล์แผนผังและบอร์ดของ Eagle แนบมากับแผนผังในรูปภาพ
ความคิดเห็นหนึ่งเกี่ยวกับแผนผัง ตัวต้านทาน 330 โอห์ม และตัวเก็บประจุ 10, 000uFd เป็นคำแนะนำโดยคู่มือนีโอพิกเซลของ Adafruit:
learn.adafruit.com/adafruit-neopixel-uberg…
ปุ่มสลับที่ฉันใช้ "สวิตช์ปุ่มกดไฟฉาย" มาจากที่นี่:
www.aliexpress.com/item/32904942704.html?s…
โพเทนชิออมิเตอร์ 10K (B103) จากที่นี่:
www.aliexpress.com/item/32672253655.html?s…
ขั้นตอนที่ 2: การประกอบหลอดไฟ
ฉันบังเอิญมีฐานหนักจากโคมไฟที่ฉันซื้อ มันมีหมุดกลมขนาดใหญ่อยู่ ฉันหยิบท่อพีวีซีชิ้นหนึ่งที่สวมทับมัน มันหลวมไปหน่อย เลยเอาโบลต์กับน็อตสองตัวมาขันให้แน่น (ดูภาพ)
WS2812B สามารถตัดเป็นจำนวน NeoPixels ที่คุณต้องการได้ แถบที่ฉันซื้อมีช่องว่างกว้างระหว่าง NeoPixels ฉันต้องการให้มันสว่างขึ้นเล็กน้อย ดังนั้นฉันจึงตัด 6 NeoPixel แถบสองแถบแล้ววิ่งขนานกันโดยชดเชยเล็กน้อย แถบ WS2812B สามารถตัดระหว่าง NeoPixels ได้ ในกรณีนี้ ฉันต้องการการเปลี่ยนแปลง 180 องศา ดังนั้นฉันจึงตัดแถบและเดินสายจัมเปอร์ระหว่าง หากคุณเคยทำเช่นนี้ ตรวจสอบให้แน่ใจว่าสัญญาณและลูกศรบอกทิศทางถูกต้อง (ดูรูป)
WS2812B นี้ยังมีสายไฟและขั้วต่อ (ขั้วต่อนี้เป็นขั้วต่อ 3 พิน JST-SM หากคุณต้องการใช้ที่อื่น) เนื่องจากตัวเชื่อมต่อนี้มีอยู่แล้ว ฉันจึงบัดกรีสายไฟเข้ากับ PCB ของฉัน สำหรับ WS2812B นี้ สายสีแดงคือ 5v สีเขียวคือสัญญาณ และสีขาวคือสายกราวด์
เมื่อฉันสร้าง PCB ฉันก็ติดเทปที่ด้านล่างแล้วติดเข้ากับฐาน จากนั้นฉันก็เสียบ Pro Micro และ DS3231
ขั้นตอนที่ 3: Arduino Sketch
แม้ว่าฉันจะซื้อ Pro Micro จาก Aliexpress.com แต่ฉันใช้ข้อมูลต่อไปนี้เพื่อให้ Arduino ทำงานได้:
learn.sparkfun.com/tutorials/pro-micro--fi…
ในการติดตั้งไลบรารี่สำหรับ DS3231 ฉันใช้อันนี้:
github.com/PaulStoffregen/DS1307RTC
ดาวน์โหลดไฟล์ Zip
เปิด Arduino เลือก 'Sketch' 'รวมไลบรารี' 'เพิ่ม.zip ไลบรารี'
ติดตั้งต่อไปนี้ใช้วิธีเดียวกัน
ห้องสมุดเวลา PaulStoffregen
github.com/PaulStoffregen/Time
ห้องสมุดเขตเวลา
github.com/JChristensen/Timezone
เมื่อเสร็จแล้วให้เริ่ม Arduino
ใต้ Tools Boards เลือก “Sparkfun Pro Micro”
คลิกที่ Tools อีกครั้งจะมีตัวเลือกสำหรับ processor
คุณอาจต้องเปลี่ยน "Atmega32U4 (5V 16Mhz)"
คำเตือน: หากคุณประมาทเหมือนฉัน ฉันเลือก "Atmega32U4 (3.3V 8Mhz)" โดยไม่ได้ตั้งใจ สิ่งนี้ 'ปิดกั้น' เพื่อให้ Arduino ไม่สามารถมองเห็นได้ ฉันมักจะพยายามอ่านสิ่งใหม่ๆ ก่อนที่ฉันจะได้มันมา และจำบางอย่างเกี่ยวกับสิ่งที่เกิดขึ้นได้:
learn.sparkfun.com/tutorials/pro-micro--fi…
ในคู่มือนี้มีส่วนที่เรียกว่า "วิธีการชุบชีวิต 'Bricked' Pro Micro" ตามที่กล่าวไว้ มันเป็นขั้นตอนที่ยุ่งยาก แต่ฉันจัดการเพื่อกู้คืนของฉันได้
FYI: หากคุณสงสัยว่าเหตุใดจึงมีสองเวอร์ชันที่มีแรงดันไฟฟ้าและความเร็วต่างกัน Atmega32U4 (เหมือนกับ Atmega328) จะทำงานได้ดีที่ 5V ด้วยนาฬิกา 16MHz แต่ที่ 3.3V สเปกการออกแบบบอกว่านาฬิกา 16MHz จะไม่ทำงาน นั่นเป็นสาเหตุที่นาฬิกาเหล่านั้นมีนาฬิกาที่ 8MHz โดยทั่วไป การพูดซอฟต์แวร์ Arduino จะดูแลปัญหาเรื่องเวลา
เคล็ดลับ RTC: ซอฟต์แวร์ส่วนใหญ่ที่เขียนขึ้นสำหรับ DS1307 จะทำงานร่วมกับ DS3231 ได้เนื่องจากมีซอฟต์แวร์ที่คล้ายคลึงกันมาก
เวลาออมแสง
ฉันต้องการใช้ DST ดังนั้นฉันจึงไม่ต้องตั้งโปรแกรมหลอดไฟใหม่ปีละสองครั้ง ฉันทำงานเกี่ยวกับเรื่องนี้เป็นเวลาหลายวัน ฉันไม่พบคำอธิบายง่ายๆ ที่ดีเกี่ยวกับวิธีการทำงานของ Time, TimeLib และ RTClib
ฉันเขียนโค้ด DST สำหรับ IPClock ของฉัน:
www.instructables.com/id/NO-MORE-SPRING-FO…
ที่ใช้งานได้ตามเวลาอินเทอร์เน็ต แต่ฉันไม่สามารถใช้งานได้ตามเวลา RTC
ในที่สุดฉันก็วิ่งข้ามสิ่งต่อไปนี้โดย JChristensen:
forum.arduino.cc/index.php?topic=96891.0
github.com/JChristensen/Timezone
ในการใช้สิ่งนี้ คุณต้องตั้งค่า RTC เป็น UTC (เวลาสากลเชิงพิกัด) ก่อน นี่คือเวลาในกรีนิช ประเทศอังกฤษ ไม่รู้จะทำอย่างไร แต่พบบทความนี้:
www.justavapor.com/archives/2482
เขียนซ้ำสำหรับเวลาภูเขา (แนบ) UTCtoRTC.ino
จากนั้นฉันก็รวมเขตเวลาไว้ใน Sketch พูดตามตรงฉันยังไม่ได้ทดสอบเลยแค่คิดว่ามันใช้ได้ผล
แนบร่างของฉัน MTS_BlueLamp.ino
ขั้นตอนที่ 4: บทสรุป
ฉันทำตะขอเล็กน้อยที่ด้านบนสำหรับหน้ากาก CPAP ของฉัน ฉันเคยแขวนไว้บนโคมไฟเตียงเก่าของฉัน
โดยทั่วไปมีความสุขมากกับโคมไฟนี้ สว่างเต็มที่ในตอนกลางวันและไม่มีสีฟ้าในตอนเย็นและกลางคืน
สิ่งหนึ่งที่ฉันไม่ชอบคือฉันไม่สามารถใช้งานได้หลัง 22.00 น. และก่อนตี 5
ฉันยังพบว่าฉันไม่ได้ใช้สวิตช์เปิด/ปิด เนื่องจากฉันมักจะใช้สวิตช์หรี่ไฟเท่านั้น
ในอนาคต ฉันอาจเขียนภาพร่างใหม่และเปลี่ยนปุ่มเป็นสวิตช์ตามกำหนดเวลาหรือไม่ได้กำหนดเวลาไว้ (เปิดเต็ม) แต่ด้วยทักษะการเขียนโค้ดที่แย่ของฉัน ฉันอาจรอสักครู่
แนะนำ:
การออกแบบเกมในการสะบัดใน 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 ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง