ว่าไงน้อง! มาดูโปรเจคอัพเกรดจากรุ่นพี่กัน
โปรเจคนี้คือเวอร์ชันอัพเกรดจากโปรเจคแรกของพี่เองนะ เรื่อง ม่านหน้าต่างอัตโนมัติพลังงานแสงอาทิตย์ ตอนแรกที่ออกแบบก็ใช้ได้ดีอยู่หรอก แต่มันรันมาได้สัก 4 เดือนก็เริ่มเห็นจุดบอดแล้วว่ะ
สรุปให้ฟังอีกที เป้าหมายของม่านหน้าต่างอัตโนมัตินี้คือ มันจะเปิด-ปิดเองตามระดับแสง อยากได้แสงก็เปิด อยากความเป็นส่วนตัวก็ปิด และที่สำคัญ มันต้องปิดเองได้ถ้าร้อนเกิน (คำว่า "ร้อนเกิน" นี่พี่ตั้งเองเลยนะ 555+)
พี่เอาโปรเจคนี้มาจากที่อื่นอะ รายการอุปกรณ์กับเครื่องมือมันจัดฟอร์แมตไม่สวยเหมือนใน Hackster.io เลยต้องยอมรับสภาพแบบนี้แหละน้อง
ดีไซน์ใหม่ของพี่ทำได้แบบนี้:
- เปิด (หมุนไป 85 องศา) ตอนเช้าเพื่อรับแสง
- ปิด (หมุนกลับมา 0 องศา - ม่านชี้ลง) ตอนเย็นเพื่อความเป็นส่วนตัว
- ปิดแบบพิเศษ (หมุนไป 165 องศา - ม่านชี้ขึ้น ปิดกั้นแดด) ถ้าอุณหภูมิเกิน 30°C (~86°F) – ค่านี้พี่ตั้งเองนะ น้องอาจจะชอบร้อนกว่านี้ก็ได้ ฮ่าๆ
- ทำทุกอย่างได้โดยไม่ต้องเดินสายไฟเพิ่ม ไม่มีกล่องแปลกๆ เกะกะ คือต้องผ่านมาตรฐาน "เมียยอมรับ" ได้นั่นแหละ
- ต้องประหยัดพลังงานพอที่จะไม่ต้องคอยเปลี่ยนแบตเตอรี่บ่อยจนพี่ทิ้งโปรเจคไปเฉยๆ
- ต้องไม่แพงเกินไป พี่คิดว่าทำเสร็จแล้วน่าจะอยู่ที่ประมาณ $50 US (ไม่รวมค่าอุปกรณ์ใหม่ที่ซื้อเพิ่ม และเวลาที่เสียไปกับการเขียนโค้ด ทดลอง บัดกรี กับมโนนะ)
เหตุผลที่ออกแบบแบบนี้เพราะหน้าต่างที่พี่ติดตั้งอยู่ที่ชั้นสอง เหนือประตูหน้าบ้าน หันไปทางทิศใต้ (จริงๆคือ SSE) แปลว่าฤดูหนาวจะได้รับแสงแดดเต็มๆถ้าเปิดม่าน แต่ฤดูร้อนก็อาจจะร้อนตับแตกได้เหมือนกัน
อย่างที่บอก ตอนแรกมันก็ใช้ได้ดีอยู่ 4 เดือน (ติดตั้งมกราคม เอาลงประมาณมิถุนายน) แต่ปัญหาที่เจอคือ:
- บ้านพี่ไม่ได้หันใต้เป๊ะๆ... ฤดูหนาวแดดจะส่องมาที่หน้าต่างเกือบทั้งวัน เลยชาร์จแบตจากโซลาร์เซลล์ได้ตลอด แต่พอฤดูร้อน ดวงอาทิตย์จะลับหลังบ้านไปตั้งแต่เที่ยง แปลว่าแดดไม่พอให้ชาร์จแบตหลายชั่วโมง แถมตำแหน่งวางแผงโซลาร์เดิมยังโดนบังแสงช่วงเช้าอีกตะหาก วิธีแก้: หาตำแหน่งวางแผงโซลาร์เซลล์ให้ดีขึ้น
- เซอร์โวมอเตอร์ที่ใช้ควบคุมม่านมันกินกระแสต่อเนื่อง 13 mA! พี่ตกใจมาก เพราะตอนทดลองรอบแรก พี่ไม่ได้วัดกระแสตอนที่ติดเซอร์โวไว้ เพราะมัลติมิเตอร์พี่รับโหลดสูงๆ ของเซอร์โวไม่ไหว เวลาวัดตอนโหมด "สลีป" เลยไม่เห็นค่าที่แท้จริง วิธีแก้: ใช้ High-Side Switch ด้วยทรานซิสเตอร์แบบ PNP
- แผงโซลาร์ 6V ที่พี่ใช้ในดีไซน์แรก มันขัดกับโมดูลชาร์จ LiPo ซะนี่ โมดูลชาร์จมันรับอินพุตแค่ 4.5V ถึง 5.5V พอแผงโซลาร์ได้รับแดดเต็มที่และผลิตไฟออกมา 6V ขึ้นไป โมดูลชาร์จก็ตัดการทำงาน! พี่มาเจอปัญหานี้หลังจากติดตั้งม่านไปแล้ว วิธีแก้: ใช้แผงโซลาร์เซลล์ที่มีขนาดแรงดันถูกต้อง
- ไม่มีระบบบันทึกหรือเก็บข้อมูล (logging/telemetry) เลย พอของเริ่มพังก็หาสาเหตุกะไรกันแทบตาย วิธีแก้: ใช้ฟังก์ชันบันทึกข้อมูลลง EEPROM.
- ไม่มีทางตัดต่อเพื่อเช็คหรือซ่อมได้เลย ทั้งแผงโซลาร์เซลล์และแบตเตอรี่ วิธีแก้: ใส่คอนเนคเตอร์ JST ระหว่างแบตเตอรี่กับวงจร และระหว่างแผงโซลาร์เซลล์กับวงจร.
- การวัดค่า (ทั้งอุณหภูมิและแสง) ต้องอ้างอิงกับแรงดันอ้างอิง 5V ที่เสถียร (VCC จาก Arduino) ห้ามใช้ 5V จาก DC-DC Booster นะตัวนี้! แรงดันจาก Booster มันแกว่งได้ ซึ่งจะส่งผลต่อการแปลงค่า Analog-to-Digital โดยตรง ในดีไซน์แรกของพี่ ใช้สาย "5V" นั่นแหละ แต่ดันเป็นสายจาก Booster ที่ยังไม่ได้เรกูเลต วิธีแก้: ฟังดูชัดเจนใช่ปะ? ใช้เอาต์พุต 5V ที่ผ่านการเรกูเลตแล้วจาก Arduino Pro Mini สิ.
โอเค งั้นมาเริ่มกันเลยดีกว่า!
ขั้นตอนที่ 1: รายการอุปกรณ์
พี่เลือกใช้ Arduino สำหรับโปรเจคนี้ เพราะพี่ถนัดนี่แหละ น้องจะใช้ไมโครคอนโทรลเลอร์ตัวอื่นก็ได้ เลือกตามสะดวกเลย จะเห็นว่าพี่ชอบซื้อของจากร้านออนไลน์หลายเจ้า บางร้านอยู่ใกล้บ้าน สั่งตอนเช้า บ่ายไปรับได้เลย สะดวกดี
ส่วนร้านอื่นๆ ก็มีทั้งแบบที่ขายของถูกมากๆ มีอะไหล่ให้เลือกเยอะแยะ ถ้าน้องใจเย็น รอของได้เป็นเดือน ก็จะได้ของในราคาถูกมากๆ บางร้านถ้าสั่งทีละหลายชิ้น ราคาก็ดีมาก ค่าส่งก็สมเหตุสมผล ดังนั้นในรายการของพี่ บางชิ้นพี่สั่งมา 5, 10 หรือ 20 ชิ้นเพื่อให้ครบยอดขั้นต่ำ ใครจะรู้ บางทีพี่อาจจะทำโปรเจคนี้หลายอันก็ได้
- Arduino Pro Mini
- Arduino Uno (เอาไว้โปรแกรม Mini) - จะใช้สายพิเศษก็ได้ แต่พี่ถนัดเซ็ตอัพแบบนี้
- เซ็นเซอร์วัดอุณหภูมิ LM35DZ
- ทรานซิสเตอร์ PNP PN2907A
- ตัวต้านทานไวแสง (LDR) (ซื้อเป็นแพ็ค 10 ชิ้น)
- ตัวต้านทาน (Resistor) 10K-Ohm 1 ตัว (ราคาต่อตัวถูกมาก) - แต่ว่าพี่ซื้อเป็นชุดตัวต้านทานมาเลย
- ตัวต้านทาน (Resistor) 1K-Ohm 1 ตัว
- แผงโซลาร์เซลล์ 5V 1.5W
- DC-DC Booster 5V
- โมดูลชาร์จแบตเตอรี่ลิเธียม (ซื้อเป็นแพ็ค 3 ชิ้น)
- JST Connectors (ราคาประมาณ $3.33 สำหรับ 60 ชิ้น) ตัวเล็กจิ๋วแต่แจ๋ว ไว้ต่อสายไฟ LED หรือเซ็นเซอร์ต่างๆ งานนี้ขาดไม่ได้นะ
- แบตเตอรี่ลิเธียม 3.6V แบบชาร์จไฟได้ (ราคาประมาณ $15.39 สำหรับ 4 ก้อน พร้อมที่ชาร์จ) เลือกแบบชาร์จซ้ำได้สิ้นเปลืองน้อยกว่า อย่าลืมดูโวลเตจให้ตรงนะน้อง
- ตัวถือแบตเตอรี่ 18650 (ราคาประมาณ $1) เอาไว้ใส่แบตเตอรี่ให้เป็นที่เป็นทาง กันมันโยกเยก
- มอเตอร์เซอร์โว (ผมใช้รุ่น Hitec HS-325HB ที่หามาจากร้านขายของเล่นเครื่องบินบังคับใกล้บ้าน) ต้องเดาแรงบิด (Torque) เอาเพราะไม่มีคีมวัดแรงบิดราคาเป็นมิตรให้วัด เอาแบบแรงๆ หน่อยก็ดี
- ตัวเชื่อมต่อสำหรับมอเตอร์เซอร์โว (ราคาประมาณ $5) เพราะใช้เซอร์โวยี่ห้อ Hitec เลยต้องมีตัวนี้มาช่วยจับ
- ตัวเก็บประจุ (Capacitor) 100 uF (ราคาประมาณ $0.03) ตัวเล็กๆ ไว้ช่วยกรองไฟให้เรียบ สบายใจเวลามอเตอร์ทำงาน
- สายไฟแบบต่างๆ (ผมซื้อเป็นชุด ราคาประมาณ $17.79) เอาไว้ต่อวงจร ควรมีหลายสีจะได้เดินสายไม่สับสน
- แผ่น PCB (ราคาประมาณ $2.74 สำหรับ 10 แผ่น) เอาไว้บัดกรีชิ้นส่วนให้แน่นหนา เป็นงานจริงจัง
ขั้นตอนที่ 2: อุปกรณ์เครื่องมือ
- สว่าน – ไว้เจาะรู
- หัวแร้งบัดกรี – อาวุธคู่กายวิศวะ
- ตะกั่วบัดกรี – อาหารของหัวแร้ง
- คีมตัดสายไฟ – ไว้ตัดสายให้ขาด
- คีมปลอกสายไฟ – ไว้ปลอกสายให้เห็นเนื้อใน
- มัลติมิเตอร์ – ไว้วัดไฟวัดต่อ ตัวช่วยเช็คสุขภาพวงจร
- เครื่องเจียรหรือเครื่องตัดเล็กๆ – ไว้ตัด แกะ แต่ง ชิ้นงาน
- แผ่นทดลองวงจรหรือ Breadboard – ไว้ลงทุนก่อนทำจริง
- หดรัดสายความร้อน (Heat-shrink) – ไว้หุ้มรอยต่อให้สวยและปลอดภัย
ขั้นตอนที่ 3: ลงมือทำต้นแบบ (Prototype)
ในโปรเจคแรกที่ทำ สิ่งแรกที่ทดสอบคือต่อแบตเตอรี่ AA สองก้อนเข้ากับ วงจรเพิ่มแรงดัน 5V DC-DC Booster เพื่อดูว่าได้ไฟออกมาจริงๆ 5V หรือเปล่า คราวนี้ก็ทำเหมือนกัน แต่เปลี่ยนมาใช้แบตเตอรี่ลิเธียม 3.6V แบบชาร์จไฟได้แทน ตอนชาร์จเต็มจะได้ประมาณ 4.1-4.2V พอดันเข้า Booster แล้ววัดด้วยมัลติมิเตอร์ ได้ออกมา 5.04V ใช้ได้เลยจ้า!
ขั้นต่อไปคือเอาเจ้าชิ้นส่วนทั้งหมดมาวางเรียงบน Breadboard (แบบไม่ต้องบัดกรี) ซะก่อน เพื่อที่จะได้เขียนโค้ดควบคุม และวัดค่ากระแส/แรงดันต่างๆ ได้ง่ายๆ
- ต่อโมดูลชาร์จแบตเตอรี่ลิเธียมเข้ากับแบตเตอรี่และแผงโซลาร์เซลล์ ให้ถูกขั้วนะ! (บวกต่อบวก, ลบต่อลบ) ผิดขั้วเมื่อไหร่เตรียมซื้อของใหม่ได้เลย
- ต่อสายจากขั้วบวกของแผงโซลาร์เซลล์ไปที่พิน Analog A0 ของ Arduino – ไว้สำหรับอ่านค่าแรงดันจากแผง
- แบตเตอรี่ก็ต้องต่อเข้ากับ วงจรเพิ่มแรงดัน 5V DC-DC Booster ด้วยเช่นกัน
- ต่อสายจากขั้วบวกของแบตเตอรี่ไปยังขา A1 แบบ Analog - อันนี้เอาไว้จับค่าแรงดันแบตเตอรี่ (Battery Voltage) ไว้ดูกราฟเล่นๆ
- เอาขา 5V จาก Booster ต่อเข้าไปที่ขา RAW บน Arduino ตัวรางวัล
- Ground จาก Booster 5V ตัวนี้แหละ ใช้ร่วมกันทั้งวงจรเลย
- ต่อขา VCC ของ Arduino ไปเลี้ยงทุกส่วนที่ต้องการไฟ 5V ตรงๆ
- เซอร์โวจะต่อกับไฟ 5V จาก DC-DC Booster ก็ได้ แต่ต้องผ่านทรานซิสเตอร์ PNP ก่อนนะตัวนี้
- จาก LDR ต่อตัวต้านทาน (Resistor) 10K-Ohm ลง Ground แล้วต่อสายระหว่าง LDR กับตัวต้านทานไปที่ขา A3 - อันนี้คือวงจรตรวจจับแสง (Light Detection) ของเรา
- ต่อไฟ 5V เข้าไปที่ขา 5V ของ LM35DZ (หรือเซ็นเซอร์วัดอุณหภูมิของน้องนั่นแหละ)
- ต่อ Ground ของ LM35DZ ลง Ground
- ต่อสายจากขากลาง (หรือขา Output) ของ LM35DZ ไปที่ A2 - อันนี้คือวงจรวัดอุณหภูมิ (Temperature Sensing) จัดไปวัยรุ่น
- ต่อไฟ 5V จาก DC-DC Booster เข้าไปที่ขา E (Emitter) ของ PN2907A
- ต่อตัวต้านทาน (Resistor) 1K-Ohm ระหว่างขา B (Base) ของทรานซิสเตอร์กับขา 11 - อันนี้คือสัญญาณควบคุมให้กระแสไหลไปเลี้ยงมอเตอร์เซอร์โวได้
- ต่อขา C (Collector) ของทรานซิสเตอร์ไปที่ขาไฟเลี้ยง