โปรเจกต์ Eye-to-Speech Module
เราต้องการช่วยเหลือผู้ที่ไม่สามารถสื่อสารทางวาจาและไม่สามารถใช้ภาษามือได้ โดยการส่งมอบ Eye-to-Speech Solution แบบ Wearable
เราต้องการช่วยเหลือผู้ที่ไม่สามารถสื่อสารทางวาจาและไม่สามารถใช้ภาษามือได้ โดยการส่งมอบ Eye-to-Speech Solution แบบ Wearable
ในส่วนหนึ่งของโปรเจกต์นักศึกษาของเราที่ชื่อว่า Speak4Me เราต้องการช่วยเหลือผู้ที่ไม่สามารถสื่อสารด้วยคำพูดและประสบกับความทุพพลภาพทางร่างกายอย่างรุนแรง โดยการนำเสนอโซลูชัน “eye-to-speech” แบบสวมใส่ที่ช่วยให้สามารถสื่อสารขั้นพื้นฐานได้ ด้วยการใช้อุปกรณ์ของเรา ผู้ใช้สามารถแสดงออกผ่านวลีที่ปรับแต่งได้ โดยใช้ Profile ตามสถานการณ์และ Profile ที่กำหนดเอง ซึ่งช่วยให้พวกเขาสื่อสารกับสภาพแวดล้อมได้ถึง 128 วลี
ผ่านการเคลื่อนไหวดวงตาอย่างง่ายภายในช่วงเวลาและทิศทางที่กำหนด Speak4Me จะส่งสัญญาณเสียงเป็นวลีที่ตั้งค่าไว้ล่วงหน้าและช่วยให้สื่อสารขั้นพื้นฐานได้ Web-Interface ที่เรียบง่ายช่วยให้สามารถสร้าง Profile ได้โดยไม่มีข้อจำกัดด้านความซับซ้อนหรือความยาวของคำ
ด้วยการทำตามวิดีโอสอนแบบทีละขั้นตอน Speak4Me สามารถสร้างขึ้นได้ด้วยงบประมาณประมาณ 100$ ซึ่งต่ำกว่าโซลูชันที่มีอยู่ในปัจจุบันมาก ข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์ทั้งหมดเกี่ยวกับวัสดุที่จำเป็นและคู่มือการสร้างมีให้ผ่านทางโฮมเพจหลัก
หน้า GitHub ของโปรเจกต์ รวมถึงวิดีโอสอนแบบทีละขั้นตอนและเครื่องมือปรับแต่งแบบ no-code: https://speak4me.github.io/speak4me/
เราชนะรางวัล 2021 Hackaday Prize challenge 03: Reimagine Supportive Tech Finalist Award ซึ่งได้รับเงินรางวัล 500$ นอกจากนี้ทีม Arduino ยังได้เขียน โพสต์บล็อก เกี่ยวกับโปรเจกต์ของเราด้วย
UN ได้กำหนดเป้าหมายการพัฒนาที่ยั่งยืน 17 ประการ (SDGs) ที่สมาชิก UN ทั้งหมดได้ยอมรับในปี 2015 จุดมุ่งหมายหลักของ SDGs คือความปรารถนาที่จะสร้างแผนพิมพ์เขียวร่วมกันเพื่อความรุ่งเรืองที่มากขึ้นสำหรับผู้คนและสิ่งแวดล้อมภายในปี 2030 (อ้างอิง UN, 2015) Speak4Me ตอบรับ SDG ข้อที่ 10 ซึ่งมีเป้าหมายเพื่อลดความเหลื่อมล้ำภายในและระหว่างประเทศ โดยเฉพาะในภูมิภาคที่ยากจน ภายใต้ SDG นี้ โซลูชันของเราสามารถสร้างคุณค่าให้กับผู้ที่มีความบกพร่องทางการพูดโดยให้ช่องทางในการสื่อสารแก่พวกเขา ทั่วโลกมีผู้คนมากกว่า 30 ล้านคนที่เป็นใบ้และไม่สามารถสื่อสารโดยใช้เสียงได้ (อ้างอิง ASHA, 2018)
จุดมุ่งหมายหลักของเราคือผู้ป่วยที่มีความบกพร่องทางจิตและ/หรือทางร่างกายอย่างรุนแรง ซึ่งไม่เพียงแต่เป็นใบ้เท่านั้น แต่ยังไม่สามารถสื่อสารโดยใช้ท่าทางหรือวิธีอื่นได้ ซึ่งรวมถึงผู้ป่วยโรค ALS, Apraxia และโรคเสื่อมอื่นๆ ที่นำไปสู่การสูญเสียการควบคุมการทำงานของร่างกายอย่างช้าๆ รวมถึงผู้ป่วยที่ได้รับผลกระทบจากความเสียหายของไขสันหลังที่ทำให้ไม่สามารถสื่อสารผ่านภาษากายและวิธีอื่นๆ ได้ ความบกพร่องแต่กำเนิด ความเสียหายของเส้นเสียง และอุบัติเหตุที่ทำลายอวัยวะที่เกี่ยวข้อง และสภาวะอื่นๆ อีกมากมาย ก็สามารถนำไปสู่การเป็นใบ้ได้เช่นกัน
การเป็นใบ้ทางกายภาพไม่ค่อยเป็นสภาวะที่เกิดขึ้นอย่างโดดเดี่ยว ส่วนใหญ่เป็นผลมาจากสภาวะพื้นฐานอื่นๆ เช่น การเป็นหูหนวกและใบ้ ซึ่งเป็นสาเหตุที่พบบ่อยที่สุดที่ทำให้ผู้คนไม่สามารถสื่อสารด้วยเสียงได้ (อ้างอิง Destatis 2019)
Speak4Me ยังสามารถให้ความช่วยเหลือผู้ป่วยที่มีสภาวะชั่วคราวได้อีกด้วย เฉพาะในเยอรมนีมีผู้ป่วยโรคหลอดเลือดสมองมากกว่า 250,000 คนในแต่ละปี (อ้างอิง Destatis 2019) ในระหว่างการพักฟื้น โซลูชันของเราสามารถช่วยผู้ป่วยที่ได้รับผลกระทบอย่างรุนแรงให้สื่อสารกับสภาพแวดล้อมได้ ซึ่งมิฉะนั้นอาจเป็นไปไม่ได้เลย กรณีการพยาบาลอื่นๆ เช่น ผู้ป่วยที่ทุกข์ทรมานจาก Locked-In syndrome ก็อาจได้รับประโยชน์เช่นกัน เนื่องจากต้องใช้เพียงการควบคุมดวงตาเท่านั้น
Speak4Me ต้องการมอบอุปกรณ์ราคาประหยัด ปรับแต่งได้ สร้างและใช้งานง่าย เพื่อสนับสนุนผู้พิการในการสื่อสารกับสภาพแวดล้อม แม้ว่าจะมีเครื่องสังเคราะห์เสียงและคอมพิวเตอร์ช่วยพูดอยู่แล้ว แต่ก็มีราคาแพงมาก ซึ่งอาจทำให้เข้าถึงไม่ได้ขึ้นอยู่กับภูมิหลังทางเศรษฐกิจและสังคมรวมถึงประเทศที่อาศัยอยู่ เป้าหมายของเราคือการส่งมอบโซลูชันที่มีต้นทุนรวมต่ำกว่า 100$ เพื่อให้เข้าถึงผู้ที่ได้รับผลกระทบทั่วโลกให้ได้มากที่สุด ด้วยการจัดทำแผนพิมพ์เขียวและฐาน Code ของโซลูชันทั้งหมด เราต้องการส่งเสริมให้ผู้อื่นนำผลงานของเราไปต่อยอดและปรับปรุงหรือปรับเปลี่ยนให้เหมาะสม
โซลูชันทั้งหมดของเราอ้างอิงจากแพลตฟอร์ม Arduino ที่เป็น Open source ซึ่งสร้างขึ้นจาก Hardware มาตรฐานและภาษาการเขียนโปรแกรมพื้นฐาน โปรเจกต์ก่อนหน้านี้ที่ใช้แพลตฟอร์ม Arduino ได้แสดงให้เห็นผลลัพธ์ที่มีแนวโน้มดีในเรื่องการติดตามดวงตา (Eye tracking) (อ้างอิง Arduino, 2018) โดยการใช้ Infrared Sensor ติดตั้งกับแว่นตาธรรมดา ทีมโปรเจกต์สามารถแสดงผลการเคลื่อนไหวของดวงตาบน LED ที่จัดเรียงในลักษณะที่คล้ายกับดวงตามนุษย์ สิ่งนี้ช่วยให้พวกเขาสามารถแสดงทิศทางที่ผู้ใช้กำลังมองอยู่ (ซ้ายหรือขวา) ได้แบบ Real-time และยังสามารถติดตามการกะพริบตาได้อีกด้วย
เราได้พัฒนาต่อยอดความสามารถนี้และเปลี่ยนฟังก์ชันการติดตามดวงตาให้เป็น User interface ที่ควบคุมด้วยดวงตา ด้วยการใช้ Interface นี้ เราสามารถติดตามการเคลื่อนไหวของดวงตาไปทาง บน, ล่าง, ซ้าย และขวา และกำหนดวลีที่ตั้งไว้ล่วงหน้าไว้หลังการรวมกันของการเคลื่อนไหวบางอย่าง หากผู้ใช้มองขึ้นด้านบนและตามด้วยมองไปทางขวา Speak4Me สามารถตีความการเคลื่อนไหวนี้นี้ (“บน” ตามด้วย “ขวา”) และ Module text-to-speech ในตัวจะสังเคราะห์วลีที่ถูกวางไว้ในตำแหน่งนั้นใน Profile ออกมา
Speak4Me ถูกสร้างขึ้นจากการทดสอบหลายครั้ง ในรูปแบบเริ่มต้น Sensor ถูกติดเข้ากับแว่นตาโดยตรง ซึ่งไม่เพียงพอต่อความต้องการของเรา ระยะห่างระหว่างดวงตาและ Sensor นั้นไกลเกินไป ส่งผลให้กระแสข้อมูลไม่เสถียร แม้ว่าจะสามารถติดตามการเคลื่อนไหวได้ แต่การติดตามทิศทางนั้นคลุมเครือเกินกว่าจะบันทึกรูปแบบการเคลื่อนไหวได้อย่างเพียงพอ เพื่อเอาชนะความท้าทายนี้ เราจึงตัดสินใจติดวงแหวน Sensor ที่สร้างจากการพิมพ์ 3D เข้ากับแว่นตาโดยตรงเพื่อลดระยะห่างระหว่างดวงตาและ Sensor การเปลี่ยนแปลงนี้ช่วยเพิ่มคุณภาพของ Sensor ได้อย่างมากและให้ผลลัพธ์ที่ดียิ่งขึ้น
เนื่องจากโซลูชันของเราตั้งใจให้ทำงานใกล้ชิดกับดวงตามนุษย์ อันดับแรกเราต้องตรวจสอบความเป็นไปได้ในเรื่องผลกระทบต่อสุขภาพในระยะยาว เราต้องแน่ใจว่า Sensor ของเราจะไม่เป็นอันตรายต่อผู้สวมใส่ไม่ว่าในรูปแบบใดก็ตาม แม้ว่าจะสวมใส่เป็นเวลานาน จากต้นแบบแรกของเรา เราสามารถคาดการณ์ระยะห่างจาก Sensor ถึงดวงตาได้ที่ 7-10 มม. ด้วยความช่วยเหลือ เราจัดการประเมินพลังงานแสงของ Sensor ซึ่งอยู่ต่ำกว่าค่าขีดจำกัดการสัมผัสที่ระบุไว้ในแนวทางปฏิบัติที่เกี่ยวข้อง
ค่าขีดจำกัดการสัมผัสกรณีที่แย่ที่สุดคือ (2, 8*10^4)/(C(α))*W*m^-2*sr^-1 (Guideline BGI5006, 3.6.1) หากเราพิจารณาที่ช่องรับแสงหรือทิศทางของเลนส์ที่มุมรวมประมาณ 90° (±45° หลังจากนั้นจะลดลงอย่างมาก) ที่ระยะ 7 มม. เราจะได้วงกลมที่มีพื้นที่ (tan(30) × 7𝑚𝑚)^2 × 𝜋 = 51, 3𝑚𝑚^2 รอยต่อเซมิคอนดักเตอร์ของ QTR-1RC Reflectance Sensor ทำงานที่แรงดันไฟฟ้าปกติ 1.2V และ Forward current 20mA ดังนั้นคือ 24mW (Fairchild Semiconductor Corporation) หากคำนวณด้วยประสิทธิภาพ 20% พลังงานแสงควรอยู่ในช่วงประมาณ 5mW ที่ความยาวคลื่น 940nm การรวมการคำนวณเหล่านี้เข้าด้วยกันจะนำไปสู่ผลลัพธ์ที่ 5mW/51, 3mm^2 = 0, 0974*mW/mm^2 ซึ่งต่ำกว่าค่าขีดจำกัดการสัมผัส แม้จะมีพลังงานแสง 10mW ก็ยังคงเป็นไปตามเกณฑ์ เราไม่ขอรับผิดชอบใดๆ และขอแนะนำให้คุณทำความคุ้นเคยกับเนื้อหาก่อนใช้งานเพื่อหลีกเลี่ยงการบาดเจ็บ
เริ่มแรกเราใช้ Arduino Uno ซึ่งตอบโจทย์ความต้องการทั้งหมดของเราและสร้างต้นแบบแรกที่ใช้งานได้บนแพลตฟอร์มนี้ แม้จะเพียงพอในด้านฟีเจอร์และนโยบายราคาที่ตั้งไว้ แต่ภายหลังเราได้เปลี่ยนไปใช้อีกรุ่นหนึ่ง โดยการเปลี่ยนเป็น Arduino Nano เราจัดการให้ได้ชุดฟีเจอร์เดิมใน Form factor ที่เล็กกว่ามาก เนื่องจาก Speak4Me มีวัตถุประสงค์เพื่อใช้งานทั้งภายในและภายนอกอาคาร เราจึงต้องมั่นใจในคุณลักษณะการใช้งาน เช่น ขนาดและน้ำหนัก
ในรูปแบบสุดท้าย Hardware ที่จำเป็นทั้งหมดติดตั้งอยู่บน Circuit board ขนาด 64x55 มม. สำหรับโซลูชันของเรา เราตัดสินใจใช้ Circuit board ที่สั่งทำพิเศษซึ่งได้รับการปรับแต่งมาเพื่อความต้องการของเรา แต่การใช้ Board ขนาดมาตรฐานก็สามารถทำได้เช่นกัน เพื่อปกป้องอุปกรณ์เพิ่มเติม เราได้จำลองและสร้าง Case จากการพิมพ์ 3D ที่มีขนาดการวัดที่แม่นยำและมีช่องตัดที่จำเป็น
หนึ่งในการตัดสินใจด้าน Hardware ครั้งแรกของเราคือ Module text-to-speech ที่เราต้องการใช้ การวิจัยของเราพบโซลูชันหลายอย่างที่มีความสามารถในการเปลี่ยนข้อความเป็นเสียงซึ่งมีราคาเพียงประมาณ 10$ และตรงตามความต้องการผลิตภัณฑ์ทั้งหมดของเรา การวิจัยเพิ่มเติมพบว่าแม้จะเพียงพอ แต่คุณภาพเสียงที่ได้จาก Module ราคาถูกเหล่านั้นก็ทำได้แค่ระดับพอใช้เท่านั้น เราจึงตัดสินใจเลือก Parallax Emic 2 ที่ราคาแพงกว่าประมาณ 60$ แต่ให้คุณภาพการเล่นเสียงที่เหนือกว่ามาก การตัดสินใจนี้ทำให้ราคาของ Speak4Me สูงขึ้นและเป็นชิ้นส่วนที่แพงที่สุดในผลิตภัณฑ์ของเราอย่างมาก แม้จะแพง แต่เราเลือก Module นี้เนื่องจากความเป็นไปได้ทั้งหมดของ Speak4Me ขึ้นอยู่กับความสามารถในการสื่อสารให้ผู้อื่นเข้าใจได้เมื่อใช้งาน
ไฟล์การออกแบบที่เกี่ยวข้องทั้งหมด ไฟล์ .stl (Case สำหรับพิมพ์ 3D) รวมถึง Gerber files (Circuit board) ที่จำเป็นในการติดตั้งและสร้างโซลูชันของเรามีระบุไว้ที่ด้านล่างของโพสต์โปรเจกต์ภายใต้หัวข้อ Enclosures and custom parts
ภายในบทนี้ เราจะอธิบายแง่มุมด้าน Hardware และ Software ของโซลูชันของเราและวิธีการตั้งค่า นอกจากนี้เรายังมีรายการวัสดุที่จำเป็นพร้อมราคาและจำนวน และตัวเลือกในการซื้อที่เป็นไปได้
สถาปัตยกรรมสำหรับการออกแบบโซลูชันของเราประกอบด้วยสองส่วนประกอบที่สร้างขึ้นเองและแหล่งพลังงานที่เหมาะสม ทั้งหมดเชื่อมต่อกันด้วยสาย ส่วนประกอบแรกคืออุปกรณ์หลักของเราและบรรจุทุกสิ่งที่จำเป็นสำหรับการทำงานของอุปกรณ์ ยกเว้น Sensor และแหล่งจ่ายไฟ ส่วนประกอบที่สองคือแว่นตาที่เราติดตั้ง Infrared reflectance sensors เพื่อตรวจจับทิศทางการมองของผู้สวมใส่ เนื่องจากเราทำงานด้วยแรงดันไฟฟ้า 5 V และกระแสสูงสุดประมาณ 400 mA Power bank ทั่วไปที่มีพอร์ต USB จึงเพียงพอสำหรับอุปกรณ์ของเรา
วัสดุที่จำเป็นในการสร้างแว่นตา Speak4Me ของคุณเอง รวมถึงรายการเครื่องมือที่แนะนำสำหรับการประกอบ สามารถพบได้ที่ส่วนบนของโพสต์โปรเจกต์นี้ในส่วน COMPONENTS AND SUPPLIES และ NECESSARY TOOLS AND MACHINES
สถาปัตยกรรม Hardware ถูกอธิบายไว้ด้านล่าง ส่วนประกอบแต่ละชิ้นและการเชื่อมต่อจะอธิบายโดยละเอียดเพื่อให้เห็นภาพรวม
ในการเชื่อมต่อ Sensor ทั้งสี่เข้ากับอุปกรณ์หลัก เราต้องการสายส่งข้อมูลสี่สายและสองสายสำหรับแหล่งจ่ายไฟของ Sensor สายเคเบิลควรมีความยาวอย่างน้อย 1.5 เมตร เพื่อให้อุปกรณ์หลักสามารถติดตั้งเข้ากับรถเข็นวีลแชร์ได้และเป็นอิสระจากการวางตำแหน่งของแว่นตาและการเคลื่อนไหวของศีรษะที่อาจเกิดขึ้น เนื่องจากการแพร่หลาย คุณภาพที่มั่นใจได้ และราคาที่ต่ำ เราจึงใช้สาย USB 3.0 แบบธรรมดา อย่างไรก็ตาม เราไม่ได้ติดตั้งเป็นอุปกรณ์ USB จริงๆ เพื่อให้แน่ใจว่าผู้ใช้จะไม่ทำความเสียหายให้กับ Hardware อื่นๆ เราจึงปฏิบัติตามการใช้งาน Pin ของมาตรฐาน USB ด้วยเหตุนี้ เมื่อเชื่อมต่ออุปกรณ์กับคอมพิวเตอร์เป็นต้น Sensor จะทำงานตามปกติ แม้ว่าคอมพิวเตอร์จะไม่สามารถสื่อสารกับพวกมันได้ สาย USB 3.0 ประกอบด้วย 6 สายที่ตั้งใจไว้สำหรับการสื่อสารข้อมูล เราใช้สายคู่ที่มีชีลด์แยกกันสองคู่เพื่อเพิ่มความน่าเชื่อถือของการสื่อสารให้สูงสุด การกำหนด Pin ที่ได้สามารถดูได้ในตารางที่ 1 สายไฟที่เกี่ยวข้องของสาย USB ที่ถอดปลอกออกจะถูกบัดกรีเข้ากับ Sensor โดยตรง โดย Sensor ทั้งหมดใช้สายไฟเดียวกันสำหรับแหล่งจ่ายไฟและการเชื่อมต่อ Ground

เพื่อให้ Sensor อยู่ในตำแหน่งที่มั่นคงตรงหน้าดวงตาของผู้ใช้ เราใช้แว่นตาธรรมดาซึ่งอาจมีราคาถูกมากเนื่องจากทำหน้าที่เป็นเพียงตัวยึดสำหรับ Sensor เท่านั้น Sensor จะถูกติดเข้ากับแว่นตาโดยใช้ฐานยึดพลาสติกที่สร้างขึ้นเองและพิมพ์จากเครื่องพิมพ์ 3D ขั้นแรก เราทากาวที่ Sensor บนฐานยึดโดยใช้แผ่นกาวคุณภาพสูง หลังจากนั้น เราติดส่วนประกอบเข้ากับเลนส์ขวาของแว่นตาโดยตรงโดยใช้แผ่นกาวชนิดเดียวกัน ซึ่งตัดออกมาให้พอดีกับด้านล่างของฐานยึดของเรา
อุปกรณ์หลักต้องการ Microprocessor ซึ่งทำหน้าที่เป็น "สมอง" ของอุปกรณ์ คอยจัดการ Input, การคำนวณ และ Output ที่ได้ ในขณะที่คอยติดตามงานตามลำดับ ฯลฯ โดยใช้ Arduino Nano สำหรับงานนี้ เพื่อแบ่งเบาภาระของ Arduino เราได้เพิ่ม Controller แบบ text-to-speech คุณภาพสูงเพื่อแยกฟังก์ชัน Output เสียงออกไปอย่างน่าเชื่อถือ เพื่อให้ Arduino ยังคงพร้อมสำหรับ Input เพิ่มเติม เช่น การควบคุม LED ฯลฯ หลังจากส่งข้อความ Output ไปยัง Controller ในการทำงานนี้ เราใช้ “Parallax Emic 2” จากนั้นเราเพิ่ม Socket เพื่อเชื่อมต่อแว่นตา, พอร์ต AUX 3.5 มม. สำหรับลำโพงภายนอก และเชื่อมต่อกับ Header 2 Pin เพิ่มเติมสำหรับการใช้งานเสริมกับลำโพงภายใน และยังเพิ่มสถานะ LED เพื่อให้ข้อมูลย้อนกลับแก่ผู้ใช้นอกเหนือจาก Output เสียง เนื่องจากอุปกรณ์ทั้งหมดใช้พลังงานต่ำมาก Power bank สมัยใหม่ส่วนใหญ่อาจปิดตัวลงได้เนื่องจากกระแสไฟฟ้าจะน้อยเกินกว่าที่ Power bank จะตรวจพบว่าเป็นอุปกรณ์ที่เกี่ยวข้อง เพื่อป้องกันพฤติกรรมนี้ เราจึงเพิ่มวงจรพิเศษซึ่งเราจะใช้เพื่อระบายพลังงานเล็กน้อยเป็นระยะโดยตั้งใจ ซึ่งนี่ยังคงเป็นพลังงานจำนวนน้อยมากที่ละเลยได้ และสามารถปิดการทำงานในภายหลังได้ที่ฝั่ง Software เมื่อไม่จำเป็นในการตั้งค่าเฉพาะ หลังจากเชื่อมต่อส่วนประกอบต่างๆ แล้ว วงจรไฟฟ้าที่ได้สามารถดูได้ในรูปที่ 1 (a)

วงจรไฟฟ้านี้สามารถใช้เป็นพื้นฐานในการออกแบบ Layout ของแผ่นวงจรพิมพ์ที่เหมาะสม PCB Layout ที่ได้สามารถดูได้ในรูปที่ 1 (b) ไฟล์ Gerber ที่เกี่ยวข้องสามารถส่งไปยังผู้ผลิตอย่างเช่น “jlcpcb.com” เพื่อทำการผลิตได้ จากนั้นชิ้นส่วนต่างๆ จะถูกบัดกรีลงบน Board และอุปกรณ์หลักก็พร้อมใช้งานในทางฟังก์ชัน
เพื่อให้แน่ใจว่าอุปกรณ์พกพาได้ จึงจำเป็นต้องมี Case ที่เหมาะสม เพื่อให้สามารถใช้ Case ที่เล็กที่สุดเท่าที่จะเป็นไปได้ในขณะที่มีช่องสำหรับขั้วต่อที่ถูกต้องและตะแกรงลำโพงสำหรับลำโพงภายใน เราจึงสร้างโมเดล 3D ของ Case ขึ้นมา จากนั้นเราพิมพ์โมเดลโดยใช้เครื่องพิมพ์ 3D โดยใช้ PLA เป็นวัสดุที่เหมาะสมเนื่องจากราคาต่ำและมีคุณภาพเพียงพอในด้านความเสถียรและอายุการใช้งาน
ส่วนต่อไปนี้จะอธิบายตรรกะของการวัดทิศทาง โครงสร้างของ User interface และการนำตรรกะเหล่านี้ไปใช้ใน Code ของ Arduino
Sensor ทั้งสี่ที่ติดอยู่กับแว่นตาจะวัดความสว่างของพื้นที่เฉพาะของดวงตาทุกๆ 100 มิลลิวินาที การวัดความสว่างจะแสดงเป็นตัวเลขตั้งแต่ 0 ถึง 5000 ซึ่งแสดงถึงเวลาที่ลำแสง LED อินฟราเรดสะท้อนจากพื้นผิวและกลับไปยัง Sensor ยิ่งเร็ว (นั่นคือค่ายิ่งต่ำ) พื้นผิวก็จะยิ่งสว่างขึ้น เนื่องจากพื้นผิวที่สว่างกว่าจะสะท้อนแสงได้มากกว่า

ดังที่เห็นในรูปที่ 2 ในการตรวจสอบว่าดวงตามองไปทางซ้าย ขวา บน หรือล่าง ความสว่างของจุดทั้งสี่จะต้องถูกวัดในตำแหน่งดวงตาปกติ (neutral) ก่อน ในการทำเช่นนี้ ผู้ใช้ต้องมองตรงไปข้างหน้าเป็นเวลา 3 วินาทีเมื่อเริ่มเปิดเครื่อง ค่าเหล่านี้แสดงถึงค่าเริ่มต้นที่เราใช้เปรียบเทียบกับการวัดใหม่ จะตรวจพบทิศทางทันทีที่ค่าที่ด้านตรงข้ามต่ำกว่าค่าปกติเป็นเวลา 500 มิลลิวินาที เหตุผลก็คือเมื่อดวงตามองไปทางขวา ตัวอย่างเช่น จุดด้านซ้ายในดวงตาจะเป็นสีขาว ค่าจะต้องอยู่เหนือปัจจัยหนึ่งเพื่อที่จะไม่รับรู้การเคลื่อนไหวเพียงเล็กน้อยเป็นทิศทาง วิธีนี้ให้ผลลัพธ์ที่เสถียรที่สุดในการทดสอบของเรา หลังจากตรวจพบทิศทางแล้ว การตรวจจับทิศทางจะหยุดชั่วคราวเป็นเวลา 500 มิลลิวินาทีเพื่อป้องกันการตรวจจับซ้ำซ้อน LED บนอุปกรณ์ซึ่งจะกะพริบทันทีที่ตรวจพบทิศทาง ทำหน้าที่เป็นตัวช่วยกำหนดทิศทาง หากสามารถวัดทิศทางที่ต่อเนื่องกันสองทิศทางได้ภายใน 5 วินาที เราจะเรียกว่าเป็นการรวมกลุ่ม (combination) เราอนุญาตให้รวมเพียงสองทิศทางเท่านั้น ซึ่งจะนำไปสู่การส่ง Output ของวลี
Profile คือบทสรุปของการรวมกันที่เป็นไปได้ทั้งหมดของ 4 ทิศทาง ซึ่งส่งผลให้เกิดการรวมกัน 16 แบบที่เป็นไปได้ ด้วยโซลูชันของเรา เป็นไปได้ที่จะใช้ 8 Profile เราได้สร้าง Profile สำเร็จรูปไว้ห้าแบบตามธีม (บ้าน, ผู้ดูแล, การพบแพทย์, เพื่อน, เกมหมัดรุก) อีกสาม Profile ที่เหลือผู้ใช้ต้องสร้างขึ้นเอง

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

หากคุณหลับตาเป็นเวลา 2 วินาที คุณจะสลับกลับไปที่เมนูหลักซึ่งสามารถเห็นได้ในรูปที่ 4 ระยะเวลานี้สามารถปรับแต่งได้ในการตั้งค่าของเครื่องมือปรับแต่ง ตัวเมนูเองทำงานเหมือนกับ Profile โดยใช้การผสมผสานของการเคลื่อนไหวของดวงตา ระดับเสียงยังสามารถตั้งค่าและปิดเสียงอุปกรณ์ได้ที่นี่ เพื่อให้ผู้ใช้งานทำงานได้ง่ายขึ้น เราได้ใช้สัญญาณเสียงและภาพเพิ่มเติม ตัวอย่างเช่น LED จะกะพริบเสมอเมื่อตรวจพบทิศทาง สิ่งนี้ช่วยให้ผู้ใช้ได้รับความช่วยเหลือที่ดี โดยเฉพาะในช่วงการเรียนรู้ เพื่อให้สามารถใช้เครื่องมือได้อย่างปลอดภัยและมีประสิทธิภาพ นอกจากนี้ รายการเมนูที่เลือกจะมีการระบุด้วยเสียงในเมนู เช่น เมื่อผู้ใช้เพิ่มระดับเสียง จะมีการเล่นเสียง "Volume Up"
ในส่วนต่อไปนี้ จะมีการอธิบายจุดสำคัญที่สำคัญที่สุดและแง่มุมพิเศษของการนำไปใช้งานใน Code ของ Arduino
Libraries Arduino-library สำหรับ Sensor เรียกว่า QTRSensors ช่วยให้สื่อสารระหว่าง Arduino และ Infrared Sensor ได้ง่าย จำเป็นสำหรับการอ่านและตั้งค่า Sensor เราใช้ SoftwareSerial เพื่อสื่อสารกับ EMIC ตัว EMIC มี Library ของตัวเอง แต่เราไม่ได้ใช้เพราะเราจะใช้เพียงฟังก์ชันเดียว (ส่ง Output เป็น string) เนื่องจาก Library ใช้หน่วยความจำมาก เราจึงตัดสินใจเข้าถึง EMIC ด้วยตนเองผ่าน Library นี้ Library ที่สำคัญอีกตัวสำหรับอุปกรณ์ของเราคือ Arduino-Timer เราใช้ฟังก์ชันการจับเวลาเพื่อ Loop ผ่านกระบวนการของเราและประสานตรรกะของคำสั่งต่างๆ โดยใช้ Protothreading ส่วน Avr/pgmspace เป็น Library ที่เราใช้เพื่อเก็บตัวแปรที่บรรจุวลีไว้ในหน่วยความจำของโปรแกรมเพื่อประหยัด Random Access Memory (RAM) สิ่งนี้สำคัญเนื่องจาก String ของวลีนั้นยาวและจะเกินความจุ RAM ของ Arduino
การจัดเก็บวลี วลีที่เราส่ง Output ด้วย EMIC จะถูกเก็บไว้ในตัวแปร char ซึ่งตามที่อธิบายไว้ จะไม่ได้บันทึกใน RAM แต่บันทึกในหน่วยความจำของโปรแกรม สิ่งนี้ทำผ่านฟังก์ชัน PROGMEM
const char textdata_16[] PROGMEM = "I want to wash myself";
เพื่อให้สามารถเข้าถึงตัวแปร 144 ตัวที่ได้ เราต้องการตารางเพิ่มเติมซึ่งบรรจุ Pointer ไปยังตัวแปรเหล่านั้น ตารางนี้ถูกเก็บไว้ในหน่วยความจำของโปรแกรมเช่นกัน
const char *const data_table[] PROGMEM = {textdata_0, textdata_1, …
การประมวลผล Input
ในการตรวจจับ Input ของผู้ใช้อย่างแม่นยำ จำเป็นต้องมีกระบวนการประมวลผล Input ที่เชื่อถือได้ ดังที่เห็นในรูปที่ 5 ทุกๆ 100ms ฟังก์ชัน readSensors จะถูกเรียก สิ่งนี้จะกระตุ้นการวัดของ Sensor ทั้งสี่ที่รายงานระยะเวลาระหว่าง 0 ถึง 5000ns ซึ่งสามารถตีความได้ว่าเป็นการวัดความสว่างของพื้นผิว (ในกรณีของเรา: ส่วนของดวงตาและบริเวณโดยรอบ) ที่อยู่หน้า Sensor เมื่อใช้ค่า Threshold ที่ได้จากการ Calibration เริ่มต้นระหว่างการเปิดเครื่อง เราสามารถประเมินการวัดและตรวจพบได้ว่าผู้ใช้มองขึ้น, ลง, ซ้าย หรือขวา, หลับตา หรือไม่ได้ทำสิ่งเหล่านี้เลย
ทิศทางที่ตรวจพบสามารถนำไปใช้เป็น Input สำหรับตรรกะการประมวลผล ตรรกะการประมวลผลจะทำให้แน่ใจว่าได้ตรวจพบทิศทางเดิมในช่วงเวลาที่กำหนดเพื่อหลีกเลี่ยง Input ที่ไม่ตั้งใจ หลังจากตรวจพบทิศทางแรกแล้ว มันจะถูกยกเลิกหากผู้ใช้ไม่ป้อนทิศทางที่สองในช่วงเวลาที่เหมาะสม เมื่อตรรกะได้รับคู่ทิศทางที่ตรวจพบว่าถูกต้องหรือการตรวจพบการหลับตาที่ถูกต้อง มันจะเรียกใช้วิธีการที่เกี่ยวข้องเพื่อดำเนินการคำสั่งที่เกี่ยวข้อง
แผนภาพของตรรกะที่ได้สามารถดูได้ในรูปที่ 5

การเลือกวลี เราเลือกวลีที่เก็บไว้ในตารางด้วยตรรกะดังต่อไปนี้ การรวมกันจะถูกเรียงลำดับจาก 1 ถึง 16 จุดเริ่มต้นคือ ซ้าย + ซ้าย ด้วยเลข 1 และส่วนต่างๆ จะถูกนับตามเข็มนาฬิกา ดังนั้น ล่าง + ล่าง คือ 16 ทีนี้เพื่อให้ได้วลีสำหรับการรวมกันสำหรับ Profile ที่เกี่ยวข้อง เราจะคูณลำดับของ Profile ด้วย 16 แล้วบวกด้วยลำดับของการรวมกันที่เกี่ยวข้อง สำหรับการรวมกัน บน + ขวา ใน Profile 3 วลีจะถูกเลือกที่ตำแหน่งที่ 55 (3 x 16 + 7) ของตาราง
โฮมเพจ Speak4Me (https://speak4me.github.io/speak4me/) เป็นจุดติดต่อเดียวสำหรับโซลูชันทั้งหมด Playlist วิดีโอแบบทีละขั้นตอนจะอธิบายคุณสมบัติที่เกี่ยวข้องทั้งหมดแก่ลูกค้า ซึ่งรวมถึงพิมพ์เขียวการสร้างโดยละเอียดและคำแนะนำ รวมถึงความสามารถของผลิตภัณฑ์ วัสดุที่จำเป็นและเครื่องมือที่แนะนำก็มีระบุไว้ที่นี่เช่นกัน
หน้าเว็บถูกออกแบบมาเป็นหลายหน้าแทนที่จะเป็น Layout แบบ Blog ต่อเนื่องหน้าเดียวเพื่อหลีกเลี่ยงการรับข้อมูลที่มากเกินไป เนื่องจากผลิตภัณฑ์ของเราต้องการการประกอบเองโดยผู้ใช้ จึงสมเหตุสมผลที่จะค่อยๆ นำเสนอข้อมูลใหม่เมื่อจำเป็นเท่านั้น ดังนั้น กระบวนการตั้งค่าทั้งหมดจึงถูกนำเสนอในรูปแบบของวิดีโอ Vimeo ที่มีรหัสเวลา ซึ่งสามารถรับชมและเล่นซ้ำได้ตามความเร็วของผู้ใช้เอง
เมื่อเยี่ยมชมโฮมเพจ จะแสดงเฉพาะ Teaser ของเราในช่วงเริ่มต้น ในขณะที่วิดีโอเพิ่มเติมแต่ละรายการจะมีหน้าย่อยของตัวเองพร้อมข้อมูลเพิ่มเติมที่เกี่ยวข้องกับหัวข้อปัจจุบัน
ในเวลาเดียวกัน โฮมเพจยังมีฟังก์ชันพื้นฐานของการสร้างและแก้ไข Profile เพื่อให้ผู้ใช้ไม่จำเป็นต้องมีประสบการณ์การเขียน Code ไฟล์ Config ที่สร้างขึ้นจะไม่เพียงแต่รวม Profile ที่สร้างขึ้นเท่านั้น แต่ยังรวมถึงฐาน Code ทั้งหมดที่จำเป็นสำหรับ Arduino สิ่งนี้ช่วยให้กระบวนการถ่ายโอนข้อมูลง่ายขึ้นสำหรับทุกคนโดยไม่ต้องมีความรู้เชิงลึก
ผ่านโฮมเพจ ผู้ใช้สามารถปรับแต่งวลีและการตั้งค่าโดยใช้ไฟล์ Output ไฟล์เดียว การตั้งค่ารวมถึง Timeouts เพื่อให้ระบบตอบสนองเร็วขึ้นหรือช้าลงขึ้นอยู่กับความต้องการและความชอบ โดยเฉพาะผู้ใช้ใหม่สามารถทดสอบการตั้งค่าและค้นหาช่วงเวลาของตนเองได้ เมื่อสร้าง Profile สามารถสร้างเอกสาร PDF ที่แสดงการตั้งค่าวลีปัจจุบัน เพื่อให้ผู้ใช้สามารถอ้างอิงการตั้งค่าปัจจุบันได้โดยไม่ต้องใช้คอมพิวเตอร์
เพื่อปรับปรุงคำแนะนำเพิ่มเติม ส่วนต่างๆ ของคำอธิบายจะถูกนำเสนอในรูปแบบวิดีโอ ข้อมูลภาพและเสียงสามารถประมวลผลได้เร็วกว่ามากจากสมอง (อ้างอิง Sibley 2012) และง่ายกว่าสำหรับผู้ชมที่จะเลียนแบบขั้นตอนของกระบวนการ ด้วยเหตุนี้ แนวทางนี้จึงดูเหนือกว่าคำแนะนำที่เป็นข้อความ องค์ประกอบที่ใช้ในการสร้างวิดีโอ ได้แก่ การบันทึกหน้าจอ, การถ่ายทำ, รูปภาพ และเสียงบรรยาย
ตามมาตรฐานการออกแบบทั่วไป วิดีโอมีวัตถุประสงค์เพื่อสร้างแรงจูงใจ ส่วนเฉพาะของเรื่องนี้คือการสื่อสารให้เพียงพอเพื่อให้คนที่มีความรู้ทางเทคนิคน้อยสามารถรับมือกับความท้าทายที่กำหนดทั้งหมดได้ นอกจากนี้ มีการใช้แนวทางการออกแบบที่ชัดเจนและเรียบง่ายเพื่อปรับปรุงการเรียนรู้โดยการป้องกันการรับข้อมูลมากเกินไป วิดีโอถูกแบ่งออกเป็นเจ็ดส่วน:
สุดท้ายนี้ เราขอนำเสนอข้อเสนอแนะ ข้อจำกัด และการอัปเกรดที่เป็นไปได้ในอนาคตสำหรับผลิตภัณฑ์ทั้งหมด
ต้นแบบสุดท้ายรองรับฟีเจอร์ทั้งหมดที่กำหนดไว้ตั้งแต่เริ่มต้น อย่างไรก็ตาม เพื่อปรับปรุงความสะดวกในการใช้งาน ควรพิจารณาปัจจัยหลายประการขณะใช้อุปกรณ์
ภายในการตั้งค่าปัจจุบัน การมองเห็นด้านข้าง (Peripheral sight) อาจลดลงเนื่องจากการมีอยู่ของวงแหวน Sensor ในขณะที่มองตรงไปข้างหน้า วงแหวน Sensor จะขวางกั้นเพียงเล็กน้อย แต่ทัศนวิสัยในแนวนอนอาจถูกจำกัดเนื่องจากการมีอยู่ของมัน ในระหว่างการประกอบ วงแหวน Sensor ควรอยู่ในตำแหน่งกึ่งกลางเพื่อเพิ่มประสิทธิภาพการทำงานและลดการสูญเสียการมองเห็น ขึ้นอยู่กับการตั้งค่า วงแหวน Sensor อาจอยู่ใกล้ดวงตามากเกินกว่าจะสวมใส่ได้อย่างสบาย ก่อนพิมพ์วงแหวน Sensor ควรตรวจสอบให้แน่ใจอีกครั้งว่ามีพื้นที่ว่างระหว่าง Sensor และดวงตามากน้อยเพียงใด เนื่องจากผู้สวมใส่แต่ละคนแตกต่างกัน ควรปรับเปลี่ยนตามความเหมาะสม เนื่องจากการออกแบบ Sensor ตำแหน่งการวางจึงมีความสำคัญและควรพิจารณาหากการทดลองครั้งแรกไม่ได้ผลลัพธ์ที่คาดหวัง
ในการออกแบบปัจจุบัน แว่นตาต้องการการเชื่อมต่อสายเคเบิลโดยตรงกับอุปกรณ์ น้ำหนักของสายเคเบิลบนกรอบอาจทำให้แว่นตาเคลื่อนที่หรือทำให้สวมใส่ไม่สบายกว่าปกติ เพื่อปรับปรุงการอ่านค่า แว่นตาควรอยู่ในตำแหน่งเดิมเสมอ
อุปกรณ์ของเรามีลำโพงในตัวที่แสดงให้เห็นว่าให้คุณภาพเสียงที่ดีแม้ในระยะไกล เนื่องจากขนาดของมัน ระดับเสียงและระยะของลำโพงอาจถูกจำกัดในบางกรณี เพื่อให้เกิดความยืดหยุ่น เราจึงได้เพิ่มช่องเสียบ AUX เพื่อรองรับโซลูชันเสียงภายนอกหากลำโพงในตัวไม่เพียงพอ
โซลูชันของเราได้รับการออกแบบมาเป็นแพ็กเกจที่สมบูรณ์ ดังนั้นผู้ใช้จึงไม่จำเป็นต้องมีประสบการณ์การเขียน Code เพื่อใช้งานและปรับแต่งอุปกรณ์ อย่างไรก็ตาม ในการย้ายไฟล์ Config ที่สร้างขึ้นทางออนไลน์นั้น จำเป็นต้องมี Arduino IDE เพื่อย้ายไฟล์ไปยังอุปกรณ์จริงๆ ซึ่งคำสั่ง Copy แบบผ่าน Explorer ธรรมดานั้นยังไม่สามารถทำได้ในขณะนี้ สำหรับการติดตั้งและตั้งค่า โปรดอ้างอิงโฮมเพจอย่างเป็นทางการของ Arduino (ดู Arduino, 2020)
เนื่องจากโซลูชันทั้งหมดของเราได้รับการออกแบบโดยมี Arduino เป็นพื้นฐาน เราจึงสามารถพัฒนาโซลูชันที่ง่ายและราคาไม่แพงโดยใช้เทคโนโลยีและ Framework มาตรฐาน เราได้แสดงให้เห็นว่าโซลูชันที่สร้างได้ง่ายสามารถให้ความช่วยเหลืออย่างมากแก่ผู้ที่ต้องการความช่วยเหลือ การตั้งค่า eye-to-speech ของเราโดยใช้ Sensor เพื่อติดตามการเคลื่อนไหวของดวงตาสามารถช่วยสื่อสารขั้นพื้นฐานกับสภาพแวดล้อมได้ในต้นทุนที่ต่ำมาก Speak4Me สามารถสร้างคุณค่าให้กับผู้ที่ต้องการ และอาจมีการประยุกต์ใช้ในสาขาอื่นที่เรายังไม่ได้พิจารณาในขณะนี้
เพื่อให้ผู้พัฒนาคนอื่นๆ มีพื้นฐานสำหรับการเปลี่ยนแปลงในอนาคต โซลูชันและฐาน Code ทั้งหมดจะถูกปล่อยออกมาเป็น Open source ภายใต้ General Public License v3 (GPL) บน GitHub (https://github.com/speak4me/speak4me)
ในอนาคต Speak4Me รุ่นต่อๆ ไปอาจมี API เพิ่มเติม เช่น WIFI/Bluetooth เพื่อให้สามารถสื่อสารกับอุปกรณ์อื่นๆ ได้อย่างอิสระ App บนสมาร์ทโฟนที่เชื่อมต่อกันจะช่วยให้ผู้ใช้สามารถเปลี่ยนและสร้าง Profile ได้ทันทีและถ่ายโอนไปยังอุปกรณ์ได้โดยตรง โดยไม่ต้องเชื่อมต่อกับอุปกรณ์ภายนอกเช่นแล็ปท็อปหรือ PC ในเวลาเดียวกัน การตั้งค่าเหล่านั้นอาจช่วยให้ปรับแต่ง UI ได้ เช่น การเคลื่อนไหวเฉพาะที่ใช้ควบคุม Timeouts, การ Reset หรือฟังก์ชันปิดเสียงตามความต้องการและความสามารถของผู้ใช้ ความสะดวกในการใช้งานยังสามารถปรับปรุงได้โดยการทำให้ Speak4Me สามารถติดตั้งและถอดออกได้เพื่อหลีกเลี่ยงการเปลี่ยนแปลงแว่นตาและกรอบอย่างถาวร อาจใช้การออกแบบคลิปหนีบง่ายๆ เพื่อยึดอุปกรณ์ให้อยู่กับที่ขณะใช้งาน ในขณะที่อนุญาตให้ถอดออกได้ตามต้องการ สิ่งนี้จะช่วยให้สลับระหว่างแว่นตาต่างๆ ได้ง่าย เช่น แว่นกันแดดหรือแว่นสายตา โดยไม่ต้องใช้เวลาในการประกอบมากนัก เพื่อเพิ่มความสะดวกในการใช้งาน Speak4Me อาจถูกนำไปติดกับอุปกรณ์สวมใส่ใบหน้าประเภทอื่นได้ในอนาคต หน่วยความจำเพิ่มเติมจะช่วยให้มี Profile และการรวมทิศทางที่ใช้งานอยู่ได้มากกว่าการออกแบบ 4x4x8 ในปัจจุบัน
ตามอุดมคติแล้ว จำนวน Profile ที่ใช้งานได้ควรอยู่ในหลักร้อยเพื่อให้ครอบคลุมการสื่อสารได้มากที่สุด หน่วยความจำภายนอก เช่น SD-Cards มาตรฐาน อาจช่วยเพิ่มหน่วยความจำที่มีให้เพื่อรองรับการปรับแต่งและ Profile ที่จะจัดเก็บไว้อย่างถาวรบนอุปกรณ์ได้มากขึ้น โดยการใช้ API ออนไลน์ เช่น Google Speak หรือ Amazon Polly ผลิตภัณฑ์ในอนาคตอาจสามารถพิมพ์คำตามต้องการได้แทนที่จะใช้ Profile และวลีที่กำหนดไว้ล่วงหน้า
ในรูปแบบปัจจุบัน Module เสียงรองรับเฉพาะภาษาอังกฤษและภาษาสเปนเป็น Output ในรุ่นต่อๆ ไปควรให้การรองรับอย่างน้อย 10 ภาษาที่มีคนพูดมากที่สุดเพื่อให้ครอบคลุมการใช้งานได้ดีที่สุด
ในด้านการจัดจำหน่าย Speak4Me อาจเสนอเป็นแพ็กเกจ Do-it-Yourself เพื่อลดต้นทุนของผลิตภัณฑ์ขั้นสุดท้ายลงไปอีก ผู้ใช้อาจมีทางเลือกว่าจะสั่งซื้อผลิตภัณฑ์ที่สร้างเสร็จสมบูรณ์ หรือแพ็กเกจราคาถูกกว่าสำหรับการประกอบเอง
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้