กลับไปหน้ารวมไฟล์
smart-blinds-03e28a.md

ว่าไงน้อง! มาดูโปรเจคอัพเกรดจากรุ่นพี่กัน

โปรเจคนี้คือเวอร์ชันอัพเกรดจากโปรเจคแรกของพี่เองนะ เรื่อง ม่านหน้าต่างอัตโนมัติพลังงานแสงอาทิตย์ ตอนแรกที่ออกแบบก็ใช้ได้ดีอยู่หรอก แต่มันรันมาได้สัก 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) ของทรานซิสเตอร์ไปที่ขาไฟเลี้ยง

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "Froz3nArcher"
category: "Home & Automation"
components:
  - "1x Capacitor 100 nF"
  - "1x Heat-shrink wrap"
  - "1x Temperature Sensor"
  - "1x solar panel"
  - "1x Dremel"
  - "1x Arduino UNO"
  - "1x Multimeter"
  - "1x PN2907A PNP transistor"
  - "1x JST Connectors"
  - "1x Servo motor coupling"
  - "1x Dc-Dc booster"
  - "1x Arduino Pro Mini 328 - 5V/16MHz"
  - "1x LDR"
  - "1x  Wire clippers"
  - "1x Soldering iron (generic)"
  - "1x Rechargeable 3.6V Lithium battery"
  - "1x SolderWire"
  - "1x Resistor 1k ohm"
  - "1x 4xAA battery holder"
  - "1x Wire stripper"
  - "1x Circuit board/Solder breadboard"
  - "1x Custom fabricated PCB"
  - "1x Resistor 10k ohm"
  - "1x Assorted hook-up wire"
  - "1x Servos (Tower Pro MG996R)"
  - "1x Drill"
description: "มู่สวยตัวนี้มันเทพๆ ใช้เซนเซอร์วัดแสง เปิดปิดเองอัตโนมัติตามสภาพแสงข้างนอก แถมยังมีเซนเซอร์วัดความร้อนด้วยนะ ถ้าร้อนจัดๆ มันจะปิดมู่ให้เองเลย! ควบคุมด้วย Arduino ง่ายๆ ใช้ Interrupt จัดการการทำงาน ตึงๆ ไปเลยวัยรุ่น"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1+TUTJxO69S/rt1tPPDd6HXJt2cfyYSvqIiz0OVX0EsBOJAlrkdTfMvxXeSjjHFcoffsTElBxC24C9eOf5T60lkDI2JfR746R4="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/smart-blinds-03e28a_cover.jpg"
lang: "en"
likes: 34
passwordHash: "cdc9da1399fb9e7027f9125dbfbf8b111f74a48b9e0e13bbe329caa8757208fa"
price: 699
seoDescription: "DIY Smart Blinds with Arduino: Automatically control blinds based on ambient light and heat levels."
tags:
  - "solar"
  - "home automation"
title: "มู่สวยอัจฉริยะ เปิดปิดอัตโนมัติ งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/a7T-kdT92bQ"
views: 63046