กลับไปหน้ารวมไฟล์
sunglass-bot-an-automated-pair-of-sunglasses-a1c074.md

แว่นกันแดดสุดเจ๋งที่ตรวจจับความเข้มแสงได้เอง แล้วสั่งให้ม่านดำปิดหรือเปิดอัตโนมัติ!

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

หุ่นยนต์ตัวนี้สร้างด้วย Arduino และชิ้นส่วนพื้นฐานไม่กี่อย่าง ฟังดูเท่มั้ยล่ะ?

อัพเดทล่าสุด: โปรเจคนี้ถูกเลือกเป็น TOP PROJECT ในนิตยสาร HackSpace ด้วยนะ!

ภาพรวมโปรเจค

"Lumina-Shield SunGlass-BOT" คือตัวท็อปในวงการ หุ่นยนต์สวมใส่แบบตอบสนองอัตโนมัติ (Reactive Wearable Robotics) โปรเจคนี้เปลี่ยนแว่นกันแดดธรรมดาให้เป็นระบบป้องกันอัตโนมัติ ด้วยการใช้ Arduino Pro Mini ขนาดจิ๋วเพื่อตรวจวัดระดับความสว่าง (Lux) และสั่งให้ม่านบังแสงสีเข้มทำงานเมื่อแสงเกินกำหนด มันคือการผสมผสานระหว่าง กลไกไฟฟ้าขนาดเล็ก (miniaturized mechatronics), การวัดแสงแบบอนาล็อก (analog photometry) และ การออกแบบที่เน้นผู้ใช้เป็นศูนย์กลาง (Human-Centric Design) เรียกได้ว่าเจ๋งจริงจริ้ง!

ขั้นตอนที่ 1: เตรียมชิ้นส่วน

  • Arduino Pro Mini (5v 16 MHz) 1 ตัว
  • เซอร์โวมอเตอร์ขนาดเล็ก (รุ่นไหนก็ได้ แต่ต้องเล็กพอ) 1 ตัว
  • LDR (ตัวต้านทานปรับค่าได้ตามแสง) 1 ตัว
  • ตัวต้านทาน 10k ohm 1 ตัว
  • แว่นกันแดด 1 คู่ (เลือกแบบที่เท่ๆ หน่อยนะน้อง!)

สำหรับการอัพโหลดโค้ด น้องจะต้องใช้ USB to TTL converter หรือจะใช้ Arduino Uno เป็นโปรแกรมเมอร์ก็ได้ ตัวพี่จะใช้ Uno นะ สู้งานนะน้อง!

ขั้นตอนที่ 2: หลักการและเจาะลึกเทคนิค

เราจะสร้างวงจรแบ่งแรงดัน (Voltage Divider) แล้วเชื่อมต่อกับ Arduino รู้มั้ยว่า LDR มันคือตัวต้านทานที่ค่ากระเด้งกระดอนตามความสว่างของแสง พอเราใช้ตัวต้านทาน 10k ohm ค่าที่อ่านได้จาก Arduino จะอยู่ระหว่าง 0 ถึง 1023 แน่นอน

ถ้าแสงจ้าๆ หรือแดดแรงปานกลาง ค่าจะต่ำกว่า 100 ถ้าเป็นแสงในห้อง ค่าจะประมาณ 500-600 แต่ถ้ามืดสนิท ค่าจะพุ่งไปที่ 1023 เลย เข้าใจตรงกันนะ? งั้นไปลุยกันต่อ!

  • การทำงานของเซ็นเซอร์วัดแสง (LDR Physics):
    • วงจรแบ่งแรงดัน: เราเอา LDR กับตัวต้านทาน 10k ohm มาต่อแบบ Voltage Divider ค่าความต้านทานของ LDR จะตกลงมหาศาลเมื่อเจอแสงจ้า (จาก 1M-ohm เหลือต่ำกว่า 100-ohm) ทำให้แรงดันที่พิน A0 เปลี่ยนไป
    • การแปลงค่าความสว่างเป็นมุม: ฟิร์มแวร์ของเราจะใช้ลอจิกแบบง่ายแต่ได้ผล พอค่าจาก ADC ต่ำกว่า "ขีดจำกัดแสงแดด" ที่เราตั้งไว้ (ประมาณ 100) Arduino จะส่งสัญญาณ PWM ไปสั่งให้เซอร์โวหมุนม่านบังแสงลงมา งานนี้ห้ามช็อตนะตัวนี้!

Step 3: วงจรไฟฟ้า (The Circuit)

วงจรนี้เรียบง่ายมาก เอามือใหม่ก็ทำได้สบายๆ พี่ลองทำบนเบรดบอร์ดแล้ว และก็บัดกรีลงบน Arduino Pro Mini แล้ว อย่าลืมเว้นที่ให้ตัวตรวจจับแสง (LDR) นะ มันต้องไปดูดแสงอาทิตย์

Step 4: โปรแกรมมิ่งเจ้า Arduino Pro Mini

อย่างที่เห็นเนอะ Pro Mini ตัวนี้มันไม่มีพอร์ต USB ให้อัพโหลดโค้ดเลย ต้องใช้ตัวแปลง USB to TTL หรือจะใช้เจ้า Arduino Uno ที่เรามีกันทุกคนนี่แหละช่วยก็ได้ อย่าไปเสียตังค์ซื้อของใหม่ให้เปลืองเลย จริงมะ?

  • สถาปัตยกรรมของ Pro Mini:
    • ตรรกะของการย่อส่วน: เราเลือก Arduino Pro Mini มาใช้ก็เพื่อลดน้ำหนักบนหน้าของผู้ใส่ไงล่ะ ด้วยการตัดฮาร์ดแวร์ USB-to-Serial อันบวมๆ ของ Uno ออกไป Pro Mini เลยมีขนาดจิ๋วแค่ 18x33mm พอดีจะเอาไปติดที่ขาแว่นตาได้สบาย
    • การทำ Prototype ผ่าน Uno: เนื่องจาก Pro Mini ไม่มี USB ในตัว โปรเจคนี้เลยแสดงวิธีแก้ปัญหาแบบช่างมืออาชีพให้ดู นั่นคือใช้ Arduino Uno แบบ "ไม่มีหัวเข็ม" (Headerless) เป็น สะพาน USB-to-TTL (Serial Passthrough) ในการอัพโหลดเฟิร์มแวร์

แค่ใช้ไขควงงัดไอซี ATmega328P ออกจากบอร์ด Arduino Uno ให้หลุดออกมา แล้วต่อขาตามนี้เลย:

  • UNO -------- Pro mini
  • 5v---------------vcc
  • Gnd------------Gnd
  • tx----------------tx
  • rx----------------rx
  • reset----------- rst

ถ้างงๆ ลองดูวิดีโอประกอบได้ (ภาษาอาจจะไม่ตรงนะ):

แค่นั้นแหละ! หลังจากนั้นก็เสียบสาย USB ของ Arduino Uno เข้าแล้วต่อกับ PC หรือ Android เพื่ออัพโหลดโค้ด ก่อนอัพโหลด อย่าลืมไปที่ Tools > Board type > เลือก Arduino Pro Mini (แล้วก็เลือกโปรเซสเซอร์ให้ถูกด้วย ของเราคือ 5V 16 MHz) ดูรูปประกอบได้

แล้วก็อัพโหลดโค้ดได้เลย จัดไปวัยรุ่น!

โค้ดตัวอย่างอยู่ด้านล่างนี้เลย:

//*SunGlass-Bot an automatic sunglass by ashraf minhaj.
//full tutorial on youtube: www.youtube.com/c/fusebatti
//Contact if necessary ashraf_minhaj@yahoo.com
#include<Servo.h>
Servo sglass; //servo name
int ldr= 0;   //connect LDR to A0
int value= 0; //define value 0
void setup()
{
 Serial.begin(9600); //this is not necessary-but to show value to pc
 sglass.attach(9);   //declare in which pin the servo you attach
}
void loop()
{
 value = analogRead(ldr);  //read value-analog from A0
 Serial.println(value);
 delay(100);
 if(value<100)  //change the value as you wish
 {
   sglass.write(155); //black glass down
   delay(100);     //a bit delay for the servo to move there
 }
 else
 {
   sglass.write(80);  //black glass up
   delay(100);
 }
}

อัพโหลดโค้ดแล้วไปดูผลงานกันเลย!

ขั้นตอนที่ 5: เตรียมแว่นกันแดด & ลงมือทำแบบช่างๆ

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

  • กลไกการขับเคลื่อน (Mechanical Actuation):
    • ระบบข้อต่อของโครงเลนส์เสริม: โปรเจคนี้เราต้อง "ควักไส้" เลนส์ดำออกจากแว่นตาธรรมดา แล้วมาติดตั้งบนแกนหมุนที่ทำจากลวด Micro-Servo (SG90) จะเป็นตัวให้แรงบิดสำหรับพลิกเลนส์ขึ้นลง
    • มุมจำกัด: เราตั้งค่าให้เซอร์โวหมุนระหว่าง 80° (เลนส์พับเก็บ) กับ 155° (เลนส์กางออก) เพื่อให้เลนส์แนบกับหน้าได้พอดี ไม่ชนคิ้วหรือเลนส์ใสหลัก
  • เทคนิคการประกอบ:
    • ใช้การดัดลวดเองเพื่อทำบานพับของเลนส์ การใช้กาวร้อนยึดเซอร์โวช่วยลดแรงกระแทก และปกป้องเฟืองเล็กๆ ภายในจากแรงสั่นสะเทือนเวลาเราเดิน
  • ระบบจ่ายไฟแบบพกพา:
    • กระแสไฟกระชาก: เซอร์โวตัวจิ๋วอาจกินกระแสสูงถึง 500mA ตอนขยับเร็วๆ เพื่อป้องกันไมโครคอนโทรลเลอร์รีเซ็ต ระบบนี้ใช้ Power Bank 5V 2A เป็นแหล่งจ่ายไฟหลัก จะได้มั่นใจว่าไฟเลี้ยงของ Pro Mini มันนิ่ง แม้เซอร์โวจะกำลังทำงาน
  • ความสะดวกสบายและการกระจายน้ำหนัก:
    • ตำแหน่งวางเซอร์โวและสายไฟจากแบตเตอรี่สำคัญมากสำหรับความสบาย เวลาสร้าง ต้องบาลานซ์น้ำหนักระหว่าง Pro Mini ที่ขาแว่นข้างหนึ่ง กับเซอร์โวที่อีกข้างหนึ่ง จะได้ใส่แล้วไม่เอียง
  • การป้องกันการสั่นไหว (Hysteresis & Debouncing):
    • ตรรกะเพื่อความเสถียร: เพื่อไม่ให้เลนส์ "สั่นกระพือ" ตอนเราเดินผ่านแสงเงาที่กะพริบ (เช่น ใต้ต้นไม้เป็นแถว) เราสามารถปรับปรุงโค้ดโดยเพิ่ม Software Hysteresis — คือตั้งค่าระดับการตรวจจับสำหรับ "เปิด" และ "ปิด" ให้ต่างกันเล็กน้อย

ไฟเลี้ยงใช้แหล่งจ่าย 5V 1A อะไรก็ได้ พี่ใช้พาวเวอร์แบงค์ทำเองแหละ ง่ายดี

ขั้นตอนที่ 6: เสร็จแล้ววว!

เปิดไฟเลี้ยงวงจร แล้วจะเห็นไฟบน Arduino ติด คราวนี้ก็ออกไปโชว์ของกับหุ่นยนต์แว่นตาหน้าตาประหลาดแต่เจ๋งๆ ตัวนี้ได้เลย! ไปจัดไปวัยรุ่น! สู้งานนะน้อง ห้ามช็อตนะตัวนี้

สรุป

ในฐานะโปรเจกต์ที่ได้รับการยอมรับว่าเป็น "Top Project" ในวงการเมกเกอร์ SunGlass-BOT แสดงให้เห็นแล้วว่าเราสามารถสร้างระบบอัตโนมัติแบบสวมใส่ (wearable automation) ที่ประสิทธิภาพสูงได้ ด้วยฮาร์ดแวร์ระดับเริ่มต้นและความคิดสร้างสรรค์ทางวิศวกรรมเครื่องกล ง่ายๆเลย ฮาร์ดแวร์ธรรมดา + ไอเดียเจ๋งๆ = งานเทพได้นะน้อง!


วิสัยทัศน์แห่งระบบอัตโนมัติ: ปกป้องดวงตาคุณด้วยแว่นกันแดดเมคคาทรอนิกส์ที่ตอบสนองได้เอง

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

apps:
  - "1x Arduino IDE"
author: "ashraf_minhaj"
category: "Gadgets, Games & Toys"
components:
  - "1x UTSOURCE Electronic Parts"
  - "1x Arduino UNO"
  - "1x Servos (Tower Pro MG996R)"
description: "วางใจได้เลยน้อง ไม่ต้องมานั่งกังวลเรื่องแดดจ้า! แว่นเทพๆ คู่นี้มันจะคอยเปิด-ปิดเลนส์ให้อัตโนมัติด้วยเซนเซอร์วัดแสง รับรองปกป้องดวงตาแบบจัดเต็ม ไร้กังวล!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://github.com/ashraf-minhaj/SunGlass-Bot-Automatic-SunGlass-Robot-"
  - "https://github.com/ashraf-minhaj/SunGlass-Bot-Automatic-SunGlass-Robot-"
encryptedPayload: "U2FsdGVkX1/q3ttggJKjwpD4VU6ldUCZW6VS+yDOhItg7nRu43GC9MeaVS0lXuBLiNRT/twve1+x6o+S9CiZM6j2WI6KaOq7gZ4qrifxUYY="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/sunglass-bot-an-automated-pair-of-sunglasses-a1c074_cover.jpg"
lang: "en"
likes: 7
passwordHash: "ad55d58cf9e0607f8c9b034034371b70ce831d7754bcfed7e89af8df248ca1b7"
price: 1499
seoDescription: "Build SunGlass-BOT, automated sunglasses using Arduino and Sensor to protect your eyes automatically from bright light."
tags:
  - "wearables"
  - "robots"
  - "gadget"
title: "SunGlass-BOT [แว่นกันแดดอัตโนมัติ งานง่ายแต่หล่อ]"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/v-4UzdxxQ5Y"
  - "https://www.youtube.com/embed/Add7UU6gI24"
  - "https://www.youtube.com/embed/v-4UzdxxQ5Y"
  - "https://www.youtube.com/embed/CdclcoZlOCw"
views: 17751