ฝั่งตัวส่งสัญญาณ (Transmitter Section):
ระบบทดสอบสายตาที่เราจะมาทำกันนี้ ออกแบบมาเพื่อช่วยในการตรวจสายตาโดยใช้แผนภูมิสเนลเลน (Snellen chart) ที่ควบคุมด้วยฝั่งตัวส่งสัญญาณ (Transmitter) ที่ใช้ Arduino Uno เป็นหัวใจหลัก ตัวส่งสัญญาณนี้ประกอบด้วย Arduino Uno, ตัวส่งสัญญาณวิทยุ 433 MHz, คีย์แพด 4x4 และจอ LCD 16x2 ที่สื่อสารผ่าน I2C

ระบบทำงานโดยการกดปุ่ม * บนฝั่งตัวส่งสัญญาณ จากนั้นระบบจะเริ่มทดสอบโดยไล่เปิดไฟ LED สีขาวที่ติดอยู่ตรงแถวต่างๆ ของแผนภูมิสเนลเลนทีละแถว แถบไฟ LED นี้ใช้ไฟ 12V และจะสว่างทีละแถวเพื่อช่วยให้ผู้ป่วยโฟกัสไปที่ตัวอักษรในแถวนั้นๆ แผนภูมิมีทั้งหมด 7 แถว เรียงจากตัวใหญ่ไปตัวเล็ก เพื่อทดสอบระดับการมองเห็นที่ต่างกัน
เมื่อเริ่มทดสอบ ผู้ป่วยก็อ่านตัวอักษรที่ถูกไฟส่องสว่างขึ้นมา จากนั้นก็ป้อนคำตอบเข้าสู่ระบบผ่านคีย์แพด 4x4 ระบบจะนำคำตอบของผู้ป่วยมาเปรียบเทียบกับลำดับตัวอักษรที่กำหนดไว้ในแผนภูมิสเนลเลน
จากผลการเปรียบเทียบ Arduino Uno จะคำนวณผลการทดสอบสายตาออกมา ถ้าผู้ป่วยมองเห็นได้ในระดับมาตรฐาน 6/6 จอ LCD ก็จะแสดงข้อความชื่นชมและแนะนำให้รักษาสุขภาพตาดีๆ ต่อไป แต่ถ้าผลออกมาต่ำกว่ามาตรฐานที่ยอมรับได้ ระบบก็จะแนะนำให้ไปพบผู้เชี่ยวชาญด้านสายตาเพื่อตรวจหาสาเหตุเพิ่มเติม
ระบบนี้ให้วิธีการทดสอบสายตาขั้นพื้นฐานที่อัตโนมัติ มีประสิทธิภาพ และใช้ง่าย เหมาะมากสำหรับงานด้านสุขภาพ เอาไปจัดต่อได้เลยวัยรุ่น!
ฝั่งแผนภูมิสเนลเลนและตัวรับสัญญาณ (Snellen Chart Receiver Section)
โปรเจคนี้เกี่ยวกับระบบทดสอบสายตาที่ใช้แผนภูมิสเนลเลนผสานกับ Arduino Uno, ตัวรับสัญญาณวิทยุ 433 MHz และทรานซิสเตอร์ BC548 สำหรับขับแถบไฟ LED สีขาว ระบบจะไล่ส่องสว่างแถวต่างๆ ของแผนภูมิสเนลเลนทีละแถว ช่วยให้การทดสอบสายตาได้ผลดีขึ้น

การติดตั้งประกอบด้วยแผนภูมิสเนลเลน 7 แถว แต่ละแถวจะมีแถบไฟ LED สีขาวของตัวเอง ซึ่งใช้ไฟเลี้ยง 12V แถบไฟ LED เหล่านี้ถูกควบคุมโดย Arduino Uno ที่รับสัญญาณมาจากตัวส่งสัญญาณวิทยุ 433 MHz ฝั่งตัวส่งจะมีปุ่มกด เมื่อกดปุ่มก็จะส่งสัญญาณไปยังตัวรับวิทยุที่ต่อกับ Arduino

Arduino Uno จะประมวลผลสัญญาณนั้นและสั่งให้แถบไฟ LED ที่ตรงกันสว่างขึ้นผ่านทรานซิสเตอร์ BC548 ซึ่งทำหน้าที่เป็นสวิตช์เพื่อจ่ายกระแสที่สูงขึ้นที่แถบไฟ LED 12V ต้องการ พอกดปุ่ม ระบบก็จะเปิดไฟส่องสว่างแถบไฟ LED สำหรับแถวที่กำหนดบนแผนภูมิสเนลเลน ทำให้ตัวอักษรในแถวนั้นเด่นชัดขึ้น ผู้ป่วยก็โฟกัสและอ่านตัวอักษรได้แม่นยำขึ้น การไล่เปิดไฟทีละแถวแบบนี้ทำให้ทดสอบสายตาได้ครอบคลุม ทีละขั้น ทีละแถว ห้ามช็อตนะตัวนี้!

ระบบนี้เรียบง่าย ใช้งบไม่บานปลาย และมีประสิทธิภาพ ช่วยยกระดับวิธีการทดสอบสายตาแบบเดิมๆ ด้วยอินเทอร์เฟซที่ใช้งานง่ายและมีชีวิตชีวามากขึ้น สู้งานนะน้อง!
การทำงานของระบบ (Working of System)
Enhanced Technical Details: The Randomized Typography Engine (Adafruit GFX)
แผนภูมิ Snellen แบบโบราณมันวางตัว 'E' ตัวเบิ้มไว้บนสุด แล้วตัว 'T F Z P' เล็กจิ๋วไว้ล่างสุด วิธีป้องกันการจำแบบทื่อๆ คือการอัพเกรดระบบด้วย เครื่องสุ่มตัวอักษร (Randomized Typography Engine) เอาให้มันกวนๆ ไปเลย
- Arduino ของเราใช้ไลบรารี
<Adafruit_GFX.h>เพื่อจัดการเรื่องการขยายขนาดตัวอักษรแบบละเอียดยิบ - โค้ดจะเริ่มวาดหน้าจอด้วยตัวอักษรไซส์ยักษ์ที่
textSize(6)ก่อน - เจ้าเครื่องกำเนิดขวางโลก (The Anti-Cheating Generator): แทนที่จะพิมพ์ข้อความเดิมๆ ซ้ำไปซ้ำมา บอร์ด Uno ของเราจะพึ่งพาฟังก์ชัน
random()แทน
char randomLetter = random(65, 91); // สุ่มเลข ASCII ระหว่าง 'A' ถึง 'Z' มาให้เลยจ้า!
display.setCursor(xOffset, yOffset);
display.print(randomLetter);
- โค้ด C++ จะลด
textSizeลงเหลือ5, สุ่มตัวอักษรมา 2 ตัว, ลดเหลือ4, แล้วพิมพ์ 3 ตัว ผู้ป่วยถูกบังคับให้อ่านเมทริกซ์ที่เปลี่ยนไปเรื่อยๆ จริงๆ!
The HC-SR04 Focal Range Enforcer
ถ้าผู้ป่วยยื่นหน้าเข้ามาใกล้หน่อย การทดสอบ 20/40 vision ก็พังไม่เป็นท่า! เพื่อบังคับให้รักษาระยะทดสอบที่ถูกต้อง ระบบของเราต้องเพิ่ม เซ็นเซอร์อัลตราโซนิค HC-SR04 เข้าไป
- ตั้งเซ็นเซอร์เล็งไปที่หัวผู้ป่วยเพื่อวัดระยะ
- ฟังก์ชัน
loop()จะคอยประเมินระยะทางมาตรฐานทางการแพทย์ (เช่น 20 ฟุต / 6 เมตร) ตลอดเวลา - ถ้า
getSonarDistance() < 595cm: แปลว่าผู้ป่วยกำลังยื่นหน้าเข้ามา! - การลงทัณฑ์ (The Penalty Execution): บอร์ด Uno สามารถสั่ง
display.clearDisplay();ทันที แล้วแสดงข้อความ ERROR สีแดงตัวเบิ้มว่าSTEP BACK!พร้อมกับเปิดเสียงปี๊บจาก buzzer! การทดสอบจะไม่เริ่มจนกว่าผู้ป่วยจะถอยไปอยู่ที่ระยะ 6.0 เมตรพอดี!
Optical Medical Hardware
สำหรับการอิมพลีเมนต์แบบขั้นสูง ขอแนะนำชิ้นส่วนดังต่อไปนี้:
- Arduino Uno/Mega (แนะนำ Mega มากกว่าเพราะการอัพเดทอาร์เรย์ข้อความไซส์
6ยักษ์ๆ มันใช้ RAM เยอะมากกก) - จอสีขนาดใหญ่ 2.8" SPI ILI9341 Color TFT Display หรือไม่ก็ จอ LCD ขนาด 20x4 I2C LCD Display ตัวเบิ้ม
- โมดูลอัลตราโซนิค HC-SR04 (สำคัญมากสำหรับระบบล็อคระยะโฟกัส)
- ปุ่มอาร์เคดแบบถือได้ สำหรับให้ผู้ป่วยกด เพื่อสร้างแผนภูมิใหม่ทั้งหมดแบบไดนามิก! จัดไปวัยรุ่น!