โปรเจกต์ การหรี่ไฟ LED Strips ที่ควบคุมด้วย PIR Sensors และ RTC!
โปรเจกต์นี้จะช่วยให้คุณมี LED Strips หนึ่งคู่ในตำแหน่งที่คุณต้องการ ซึ่งจะทำการหรี่ไฟเปิดและปิดโดยอ้างอิงจาก PIR Sensors หนึ่งคู่
โปรเจกต์นี้จะช่วยให้คุณมี LED Strips หนึ่งคู่ในตำแหน่งที่คุณต้องการ ซึ่งจะทำการหรี่ไฟเปิดและปิดโดยอ้างอิงจาก PIR Sensors หนึ่งคู่
ในบ้านของผม ทางเดินหลักจากห้องนั่งเล่นไปยังห้องนอนนั้นมืดอยู่เสมอ ไฟที่มีอยู่เดิมในโถงทางเดินถูกควบคุมโดยสวิตช์ที่อยู่กึ่งกลางระหว่างห้องนั่งเล่นและห้องนอน โดยตัวหลอดไฟจะอยู่เหนือจุดตัดของห้องพอดี ซึ่งมันแทบจะไม่ช่วยให้แสงสว่างกับทางเดินเลย และรูปถ่ายครอบครัวบนผนังก็มองเห็นได้ยาก แถมยังมีลูกวัย 8 ขวบที่กลัวความมืดด้วย ผมเลยอยากแก้ปัญหาเล็กๆ นี้ด้วยการจัดเต็ม (overkill) สักหน่อย!
นั่นจึงเป็นที่มาของโปรเจกต์นี้! ผมรู้ตั้งแต่แรกว่าต้องการวิธีที่จะให้ไฟเปิดเองโดยไม่ต้องกดสวิตช์ ผมรู้จัก Passive Infrared Sensors (PIR) และวิธีอื่นๆ ในการกระตุ้นการทำงานของไฟมาบ้าง แต่มีประสบการณ์เกี่ยวกับโปรเจกต์ Arduino น้อยมาก ผมเคยดู LED strips ที่มี Motion Sensor แต่เท่าที่เห็นคือไม่เหมาะกับทางเดินของผม หรือไม่ก็ต้องพึ่งพาเต้ารับไฟฟ้าที่ผมไม่มีในบริเวณใกล้เคียง
ผมเคยลองเล่น Raspberry Pi 3 มาก่อน และเคยเรียนเขียน Code มาบ้าง ดังนั้นพอได้ยินเรื่อง Arduino ผมจึงรู้สึกสนใจ ผมเห็นโปรเจกต์มากมายบนโลกออนไลน์ และวิดีโอสอนที่ผมดูก็ทำให้รู้สึกว่า Arduino น่าจะเป็นทางเลือกที่ใช่ ไม่นานนักผมก็ซื้อชุด 101 Sensor Basics จาก OSEPP หลังจากลองทำโปรเจกต์เล็กๆ น้อยๆ เพื่อให้คุ้นเคยกับการอัปโหลด Sketch ลงใน Arduino R4 ของผมแล้ว ผมก็เริ่มรวบรวมอุปกรณ์!
เมื่อผมเริ่มคุ้นเคยกับการใช้ Breadboard และการอัปโหลด Sketch ลงใน Arduino แล้ว ผมก็เริ่มหาวิธีผสมผสานสิ่งที่รู้เพื่อให้ได้สิ่งที่ต้องการ PIR Sensor ที่มาพร้อมกับชุด 101 Sensor Basics จาก OSEPP ให้ Code และการฝึกฝนเพื่อให้ผมนำ Sensor สองสามตัวมาใส่ในโปรเจกต์ของผมได้
หลังจากรวบรวมส่วนประกอบต่างๆ เข้าด้วยกัน ผมเริ่มจากการศึกษา The Ultimate Guide To Connecting LED Strips to Arduino บทความนี้เป็นสิ่งที่ผมต้องการเป๊ะๆ ในการต่อไฟโดยใช้ n-channel MOSFETs ก่อนที่จะเจอเว็บไซต์นี้ ผมไม่รู้วิธีเชื่อมต่อชิ้นส่วนทั้งหมดเข้าด้วยกันจริงๆ สิ่งสำคัญที่สุดที่ผมได้รับจากไซต์นั้นคือแผนภาพด้านล่างนี้:
หลังจากเชื่อมต่ออุปกรณ์ตามที่ระบุ (เพื่อการทดสอบ) ผมก็ไปที่คอมพิวเตอร์และเปิดซอฟต์แวร์ Arduino ขึ้นมาเพื่อเขียนโปรแกรม Code ที่เสร็จสมบูรณ์ของผมอยู่ในส่วน "Code"
ผมใช้ Code ของ Ian เพื่อให้ทุกอย่างทำงานได้ จากนั้นใช้ Code จากชุด OSEPP Starter kit เพื่อรวม PIR Sensor เข้าไป เมื่อทำให้ Sensor ทำงานได้แล้ว ผมก็ลองเล่นกับการตั้งค่าการหรี่ไฟ (Dimmer)
ช่วงเวลานี้เองที่ภรรยาของผมเริ่มชี้ให้เห็นถึงจุดที่เธอไม่ชอบในโปรเจกต์นี้ และให้คำแนะนำที่มีค่ามาก! เพราะคำวิจารณ์เชิงสร้างสรรค์ของเธอ ผมจึงมองหาการเพิ่มสวิตช์เพื่อปิดพลังงานของ LED strip และการใช้ Real-Time Clock เพื่อติดตามชั่วโมงในแต่ละวัน
ด้วย คู่มือการใช้ RTC กับ Arduino นี้ ผมสามารถรู้วิธีการ Import Library ต่างๆ ในซอฟต์แวร์ Arduino คุณจะต้อง Import Library RTClib โดย Adafruit, Library Time และ Library DS1307RTC โดย Michael Margolis
เมื่อเชื่อมต่อบอร์ด RTC เข้ากับ Arduino ผมใช้การเชื่อมต่อดังนี้:
(เพื่อวัตถุประสงค์ในการทดสอบและเพราะมันง่ายกว่า ผมได้เสียบบอร์ด RTC ลงใน Breadboard แล้วใช้สาย Jumper ในการเชื่อมต่อ)
หลังจากรวมโปรแกรมต่างๆ เข้าด้วยกัน และปรับแต่ง Function กับ Variable ในจุดต่างๆ ผมสามารถทำให้ PIR Sensor แต่ละตัวกระตุ้นการทำงานของ Strip แต่ละเส้น โดยจะหรี่ไฟขึ้นตามระดับที่กำหนดขึ้นอยู่กับชั่วโมงปัจจุบันของวัน ผมตั้งค่าของผมให้เปลี่ยนเป็น "Night Mode" ตอน 3 ทุ่ม และกลับเป็น "Day Mode" ตอน 9 โมงเช้า เมื่อผมพอใจกับ Code แล้ว ผมก็อัปโหลดเป็นครั้งสุดท้ายและเชื่อมต่อ Arduino เข้ากับแหล่งจ่ายไฟ USB แล้วเฝ้าดูผลงานของผมทำงาน!
เมื่อทุกอย่างทำงานได้แล้ว ผมต้องการฝึกทักษะการบัดกรีและทำให้มันไม่ดูเหมือนรังนกของสาย Jumper บน Breadboard ผมขอแนะนำอย่างยิ่งให้ใช้สายไฟสีและ/หรือติดป้ายบนสายไฟที่ออกมาจากกล่องโปรเจกต์ เพื่อช่วยให้คุณติดตามได้ว่าสายไหนไปที่ไหน...
ขั้นตอนแรก ผมวาง Arduino, บอร์ด Perma-Proto และ RTC ลงในกล่องโปรเจกต์เพื่อมาร์กจุดที่จะเจาะรูสำหรับเสารอง (Standoff) ด้วยปากกา Sharpie หัวเล็ก เพื่อให้ได้ขนาดรูที่ถูกต้อง ให้ใช้สกรูตัวหนึ่งในชุดเสารองเป็นแนวทางและเลือกดอกสว่านที่ใหญ่กว่าเกลียวสกรูเล็กน้อย แต่ไม่ใหญ่เท่าหัวสกรู หลังจากเจาะรูและทดสอบการติดตั้งแล้ว ผมมาร์กจุดที่ต้องการวางสวิตช์และจุดที่จะเสียบ DC Connector เสริมที่ด้านข้างของกล่อง จากนั้นผมเจาะรูสำหรับเดินสายไฟของ PIR Sensor และพลังงานของ LED strip สุดท้าย ผมมาร์กและตัดรูสำหรับสาย MicroUSB ที่จะจ่ายไฟให้กับบอร์ด
เมื่อเจาะรูเรียบร้อยแล้ว ผมหาขนาดของเสารองและสกรูที่เหมาะสมสำหรับ Arduino และ Sensor Shield แล้วติดตั้งพวกมัน จากนั้นใช้การตั้งค่าบน Breadboard เป็นแนวทาง ผมบัดกรีสายไฟที่ไม่ใช่ของ RTC เข้ากับบอร์ด Perma-Proto โดยเหลือสายไฟยาวพอที่จะจัดเส้นทางและเชื่อมต่อกับ Pin ของ Sensor Shield
ต่อไป ผมใช้หัวแร้งถอด Header Pin ออกจากบอร์ด RTC และบัดกรีสายไฟยาวๆ เข้ากับ Pin ตามที่ระบุไว้ก่อนหน้านี้ แต่ไม่ต้องใช้ Breadboard หลังจากเชื่อมต่อเข้ากับ Pin ที่เหมาะสมแล้ว ผมบัดกรีสวิตช์ไฟเข้ากับราง "-" บนบอร์ด Perma-Proto และเข้ากับขั้วต่อของ DC Jack ที่ผมใช้ ผมบัดกรีขั้ว DC Jack อีกด้านเข้ากับราง "+" บนบอร์ด Perma-Proto เป็นอันเสร็จสิ้นส่วนหลักของโปรเจกต์!

เมื่อรอยบัดกรีเย็นลง ผมต้องการให้แน่ใจว่าผมไม่ได้ทำอะไรพังหรือลืมเชื่อมต่อจุดไหน ดังนั้นผมจึงเปิดเครื่องใหม่เพื่อดูว่ามันยังทำงานได้หรือไม่ และที่น่าประหลาดใจคือมันยังทำงานได้! ผมประกอบทุกอย่างเข้าที่และนำอุปกรณ์ไปติดตั้งในตู้เก็บของทางเดิน พุกยึดผนังยิปซั่มช่วยได้มากสำหรับกล่องโปรเจกต์นี้...

หลังจากกำหนดตำแหน่งของไฟแล้ว ผมวัดเพดานเพื่อหาจุดกึ่งกลางและหาความยาวที่ต้องใช้สำหรับทางเดิน จากนั้นผมทำเส้นกึ่งกลางเพื่อเดินตามในขณะที่ขันสกรูยึดคลิปสำหรับระบบราง ผมนำการวัดความยาวมาตัดรางอันหนึ่งให้ได้ขนาดด้วยเลื่อยตัดเหล็กและกล่องตัดมุม รวมถึงแผ่นฝาครอบพลาสติกฟุ้งกระจายแสง (Diffuser) ด้วย ผมใช้คลิปเชื่อมต่อเพื่อยึดส่วนต่างๆ เข้าด้วยกันในขณะที่ลอกและติด LED strip เข้ากับด้านในของราง ผมตัด LED strip ส่วนเกินออกเพื่อให้แน่ใจว่าไม่มีส่วนใดยื่นออกมานอกราง และติดพลาสติกครอบ ผมสลับตำแหน่งของแผ่นพลาสติกเพื่อเพิ่มความแข็งแรงให้กับจุดต่อ
เมื่อราง LED ทางเดินเสร็จเรียบร้อย ผมก็ทำขั้นตอนเดียวกันกับราง LED ในตู้เก็บของ และตั้งใจจะใช้ L-connectors ที่ซื้อมา แต่ผมเริ่มรู้สึกอยากเห็นโปรเจกต์เสร็จเร็วๆ และผมก็ได้ตัดรางด้านบนเพื่อให้พอดีกับกรอบประตูตู้กว้างเกินไปนิดหน่อย จากจุดนี้ ถึงเวลาติดตั้งรางแล้ว!
ผมติดตั้งคลิปยึดราง จากนั้นคลิปราง LED เข้าที่ทางเดิน ผมเจาะรูบนเพดานให้ใหญ่พอที่สายไฟจะรอดผ่านได้ และทิ้งไว้อย่างนั้นในขณะที่ทำแบบเดียวกันกับ LED ในตู้เก็บของ ผมมีที่เหมาะๆ สำหรับติดตั้งกล่องโปรเจกต์ในตู้เก็บของทางเดิน ดังนั้นผมจึงเจาะรูสองรูบนเพดานที่นั่นเพื่อให้สายเชื่อมต่อทั้งหมดผ่านไปได้ (รูหนึ่งสำหรับสาย Micro USB และอีกรูสำหรับแหล่งจ่ายไฟ 12VDC) จากนั้นผมใช้ตลับเมตรวัดความยาวสายไฟที่ต้องใช้สำหรับอุปกรณ์แต่ละตัวและตัดสายไฟตามความยาว
สำหรับ PIR Sensor ผมใช้แค่สาย Jumper แบบสาม Pin ที่มาพร้อมกับชุด 101 Sensor Basics ไม่มีการบัดกรีที่นั่น แค่ใช้ท่อหดเพื่อให้มันอยู่ด้วยกัน ผมติดตั้ง Sensor ตัวละหนึ่งตำแหน่งในทางเดินและตู้เก็บของ ผมลงเอยด้วยการใช้เคเบิลไทล์แบบมีรูยึดสกรูเพื่อรักษาความเรียบร้อยของสายไฟ

ในที่สุด! เวลาก็มาถึง! เสียบปลั๊ก Arduino! เสียบแหล่งจ่ายไฟ DC สำหรับ LED! ในกรณีของผม ไฟไม่สว่าง (ผมลืมเปิดสวิตช์สำหรับ LED strips...) หลังจากแก้ไขปัญหาและปรับแต่ง Code อีกเล็กน้อย โปรเจกต์ของผมก็เสร็จสมบูรณ์ในที่สุด! มาดูภาพก่อนและหลังกัน...


หลังจากคลุกคลีกับโปรเจกต์นี้มาหลายวันหรือหลายสัปดาห์ มีบางอย่างที่ผมอาจจะทำแตกต่างออกไป
อย่างแรก ผมอาจจะทบทวนเรื่องการใช้ Passive Infrared Sensors ใหม่ ตอนแรกผมอยากใช้ลำแสง (เหมือนที่เปิดประตูโรงรถ) สำหรับทางเดิน และสวิตช์แม่เหล็กที่ประตูตู้ สิ่งเหล่านี้ดูมีเหตุผลมากกว่าสำหรับการใช้งานจริง แต่ผมไม่มีของเหล่านั้นให้ลองเล่น และผมก็ชอบไอเดียของ PIR Sensor
ต่อไป ผมจะหาวิธีติดตั้งปุ่มหรี่ไฟ (Dimmer Knob) ไว้ในที่ที่เข้าถึงได้ง่าย ซึ่งจะข้ามการควบคุมของ Arduino เมื่อเปิดใช้งาน วิธีนี้ถ้าเราต้องการแสงสว่างมากขึ้นทันที เราก็สามารถทำได้
นอกจากนี้ การตั้งค่าความสว่างต่ำสุดที่ LED strips ทำได้ก็ยังอาจจะสว่างไปนิดสำหรับการเดินไปห้องครัวกลางดึก ผมคงจะเปลี่ยนไปใช้ Addressable LED strips ในอนาคต การกำหนดค่าและควบคุมโซนต่างๆ คงจะดีไม่น้อย!
สุดท้าย ผมจะมองหาคอนเนคเตอร์สายไฟประเภทอื่นๆ ผมอยากใช้ Molex connectors แต่ผมก็อยากฝึกทักษะการบัดกรีด้วย (ถ้าคุณดูบอร์ด Perma-Proto และ RTC ใกล้ๆ คุณจะเห็นว่าผมต้องการการฝึกฝนจริงๆ!)
โดยรวมแล้ว นี่เป็นโปรเจกต์ที่ยอดเยี่ยมที่ใช้เวลาทำไม่กี่วัน มันทำให้ผมได้ใช้ความรู้ที่ได้จากโรงเรียนมานิดหน่อย ได้รู้จักกับ Fritzing.org และช่วยให้ลูกวัย 8 ขวบของผมไม่ลืมปิดไฟทางเดิน!
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้