สารบัญ:

ไม่มีโคมไฟสีฟ้า: 4 ขั้นตอน
ไม่มีโคมไฟสีฟ้า: 4 ขั้นตอน

วีดีโอ: ไม่มีโคมไฟสีฟ้า: 4 ขั้นตอน

วีดีโอ: ไม่มีโคมไฟสีฟ้า: 4 ขั้นตอน
วีดีโอ: หลอดLED ฟลูออเรสเซนต์ มีอยู่2แบบ มีวิธีการต่อแบบไหน ต่างกันอย่างไร 2024, พฤศจิกายน
Anonim
ไม่มีโคมไฟสีฟ้า
ไม่มีโคมไฟสีฟ้า
ไม่มีโคมไฟสีฟ้า
ไม่มีโคมไฟสีฟ้า
ไม่มีโคมไฟสีฟ้า
ไม่มีโคมไฟสีฟ้า
ไม่มีโคมไฟสีฟ้า
ไม่มีโคมไฟสีฟ้า

ดังนั้น 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

บลูแลมป์ PCB
บลูแลมป์ PCB
บลูแลมป์ PCB
บลูแลมป์ 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

Arduino Sketch
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

ฉันยังพบว่าฉันไม่ได้ใช้สวิตช์เปิด/ปิด เนื่องจากฉันมักจะใช้สวิตช์หรี่ไฟเท่านั้น

ในอนาคต ฉันอาจเขียนภาพร่างใหม่และเปลี่ยนปุ่มเป็นสวิตช์ตามกำหนดเวลาหรือไม่ได้กำหนดเวลาไว้ (เปิดเต็ม) แต่ด้วยทักษะการเขียนโค้ดที่แย่ของฉัน ฉันอาจรอสักครู่

แนะนำ: