สกอตต์ ลูกชายของเรา ตอนนี้อายุ 17 ปีแล้ว เขาเป็นออทิสติกที่ไม่พูด การหาอะไรให้เขาทำเพื่อให้เขามีความสุขกลายเป็นเรื่องยากมาก เขาชอบแสงไฟกระพริบและเสียงต่างๆ แต่ของเล่นทุกชิ้นที่อยู่ในมือเขามักอยู่ได้ไม่เกินสองนาที
ในฐานะพ่อแม่ เราอยากรู้ว่าเขาสามารถรับรู้สีสันและเข้าใจความสัมพันธ์ระหว่างการกระทำกับผลลัพธ์ได้ไหม เลยสร้างเกม LED ง่ายๆ นี้ขึ้นมาให้เขา หรือที่ผมเรียกมันว่า: Scott's Arcade
แม้ว่าผมจะพัฒนาแพลตฟอร์มเกมนี้ขึ้นมาสำหรับลูกชาย แต่หลังจากนั้นผมก็ตระหนักว่ามันสามารถทำได้มากกว่านี้และสามารถนำไปใช้ในด้านต่างๆ ได้ ไม่ว่าจะเป็นสำหรับผู้ที่มีข้อจำกัดทางการเคลื่อนไหว ไม่ว่าจะแต่กำเนิดหรือเกิดจากอุบัติเหตุ มันสามารถใช้ในกระบวนการฟื้นฟูสมรรถภาพได้ เพราะปุ่มกดไม่ต้องใช้แรงมากและเกมก็ไม่กดดันเรื่องเวลา แพลตฟอร์มนี้ยังมีประโยชน์ในบ้านพักคนชราหรือสถานที่ที่มีผู้ที่มีความบกพร่องทางสติปัญญาอีกด้วย
มันมีโหมดเกมง่ายๆ หลากหลาย และในทางทฤษฎีแล้วมันคงทนกว่าของที่ขายตามร้านค้า (หวังว่านะ) เกมนี้ค่อนข้างเหมาะสำหรับเด็ก วัยรุ่น หรือผู้ใหญ่ที่มีข้อจำกัดทางการเคลื่อนไหวหรือมีความบกพร่องทางจิตใจ
ผมค่อนข้างมั่นใจว่ามีพื้นที่การประยุกต์ใช้เยอะมาก และน่าเสียดายที่ผมไม่รู้ปัญหาทุกอย่างในด้านนี้
แค่ปุ่มเซ็นเซอร์ในโปรเจกต์นี้อย่างเดียว ก็สามารถนำไปใช้ได้หลายวิธีแล้ว
นี่คือวิดีโอสั้นๆ ที่แสดงวิธีการทำงานของแพลตฟอร์มเกม หวังว่าคุณจะชอบ ผมใช้ text2speech สำหรับวิดีโอนี้ ภาษาอังกฤษไม่ใช่ภาษาพ่อของผม และคุณคงไม่อยากได้ยินสำเนียงห่วยๆ ของผมแน่ๆ :)
ผมมีความคิดนี้ในหัวมานานมาก และใช้เวลาว่างเกือบ 3 เดือนเพื่อทำให้โปรเจกต์นี้เป็นจริง
ผมพยายามบันทึกความคืบหน้าให้เร็วที่สุด แต่ลำดับเวลาว่าทำอะไรเมื่อไหร่มันออกจะสลับกันไปมาเล็กน้อย แต่สุดท้ายทุกอย่างก็มาประกอบกัน และผมคิดว่าคุณสามารถมองเห็นสิ่งนี้เป็นไอเดียพื้นฐานสำหรับเกมอื่นๆ ได้ เช่น ตัวเคสที่ใหญ่ขึ้นหรือสวยขึ้น หรือความละเอียดที่สูงขึ้นด้วย LED มากขึ้น สำหรับทุกคนที่มีความต้องการพิเศษ และชื่อก็บอกอยู่แล้ว คุณต้องสร้างบางสิ่งบางอย่างที่ปรับแต่งเฉพาะบุคคล ผมหวังว่าโปรโตไทป์นี้จะสร้างแรงบันดาลใจให้ชุมชน Maker ลงมือทำอะไรสักอย่าง ไม่มีใครจะทำมันให้เราหรอก
ทำไมต้องเป็นจอ LED? การแสดงผลของเกมควรจะเรียบง่าย แล้วทำไมไม่ใช้ LCD Panel? อย่างแรก มันพังเร็วเกินไปเพราะการสั่นสะเทือน และมันก็เวอร์เกินไปสำหรับเกมง่ายๆ นอกจากนี้ การสร้างเกมแบบนี้หรือเกมที่คล้ายกันยังมีต้นทุนต่ำมาก อีกทั้งวัสดุเหล่านี้หาง่ายและสามารถนำไอเดียของคุณเองใส่ลงไปได้ง่าย องค์กรส่วนใหญ่ที่ทำงานกับผู้ที่มีความบกพร่องทางการเคลื่อนไหวหรือความบกพร่องทางสติปัญญามักไม่ได้มีฐานะการเงินที่ดีเสมอไป และอุปกรณ์พิเศษทั้งหมดก็มีราคาแพงมาก นั่นคือเหตุผลที่ผมพยายามช่วยเหลือผู้คนด้วยไอเดียเหล่านี้ โดยเฉพาะลูกชายของเรา
Inclusive Tech: เกม LED สำหรับทุกคน
จอยเกมแบบเดิมๆ ที่มีปุ่มจิ๋วๆ กับแอนะล็อกสติ๊กเนี่ย สำหรับคนที่มีข้อจำกัดทางการเคลื่อนไหว มันใช้ไม่ได้เลยจ้า! โปรเจกต์ Accessible LED Game นี้เลยเป็นการออกแบบปฏิสัมพันธ์ระหว่างมนุษย์กับคอมพิวเตอร์ (Human-Computer Interaction - HCI) อย่างแท้จริง คือการสร้างของเล่นดิจิทัลชิ้นใหญ่ โคตรเห็นชัด เพื่อให้เล่นได้แบบบำบัดไปในตัว
ความคมชัดและการตอบสนอง
เป้าหมายคือต้องได้ผลตอบรับที่เห็นชัดทันที! ฮาร์ดแวร์เลยใช้ปุ่มสัมผัสแบบ capacitive ขนาดใหญ่ กดง่าย คู่กับ LED WS2812B ที่สว่างจ้า เกมแนว "Simon Says" ถูกออกแบบให้เข้าใจง่าย: ระบบจะให้สัญญาณภาพที่ชัดเจน (เช่น ให้วง LED กะพริบ) แล้วพอผู้ใช้กดถูกต้อง ก็จะได้การตอบสนองทันที ทั้งเสียงและแสง สร้างความเข้าใจในหลักการ "ทำ-ตอบ" อย่างชัดเจน
วิศวกรรมเพื่อความทนทาน
ต่างจากโปรเจกต์บนเบรดบอร์ดทั่วไป อุปกรณ์นี้ต้องทนการใช้งานหนักๆ ได้เลย ตัวเรือนทำจากไม้อัดหนา ขอบมน เพื่อความมั่นคงและปลอดภัย ปุ่มสัมผัสแบบ capacitive ที่ออกแบบเองนั้นปิดผนึกและทำความสะอาดง่าย หลีกเลี่ยงปัญหาของปุ่มกดแบบกลไกที่อาจมีฝุ่นเข้าไปติด หรือชิ้นส่วนสึกหรอจากการกดซ้ำๆ วงจรอิเล็กทรอนิกส์ด้านในก็ถูกยึดติดและป้องกันอย่างดี
ส่วนอิเล็กทรอนิกส์
เกมนี้ใช้ Arduino Nano และ LED แบบ WS2812b เป็นหลัก เสียงมาจากโมดูลเสียง DF Mini ที่ควบคุมผ่าน Serial ส่วนปุ่มกดคือปุ่มเซ็นเซอร์สัมผัสแบบ TTP223 จะใช้ปุ่มกดแบบกลไกก็ได้นะ แต่ไม่แนะนำ โดยเฉพาะอย่างยิ่งเพราะปุ่มเซ็นเซอร์สัมผัสเนี่ย กดแทบไม่ต้องออกแรงเลย ซึ่งเป็นข้อได้เปรียบมหาศาลสำหรับผู้ที่มีข้อจำกัดทางร่างกาย
ผมยังวาดแผนผังลำดับการติด LED และการจัดกลุ่มไว้ด้วย เพื่อจะได้เขียนโปรแกรมได้ถูกต้อง


แผงวงจรพิมพ์ (PCB)
ผมเลยออกแบบแผงวงจรขึ้นมาด้วย DipTrace พอร์ต USB ที่ด้านล่างนี่จริงๆ ก็ไม่จำเป็นมาก แต่ทำให้อัพโหลดไฟล์ MP3 ไปยังโมดูลเสียงง่ายขึ้นเยอะ




โครงสร้างกล่องด้านใน
ทำจากไม้อัด MDF หนา 3mm ชิ้นส่วนนี้ตัดด้วยเลเซอร์คัตเตอร์ แต่ใช้เลื่อยกับสว่านก็ทำได้นะ แค่ขั้นตอนงานจะยาวขึ้นหน่อย ชิ้นส่วนด้านข้างก็แค่เสียบเข้าไปในช่องที่เตรียมไว้แล้วติดกาวไม้ ส่วนอื่นๆ ก็ประกอบเข้าด้วยกันเป็นรูปวงกลมหลังจากติด LED แล้ว เสร็จแล้วก็แค่ใส่โครงสร้างกล่องเข้าไป แล้วขันฝาที่มีสัญลักษณ์ปิดทับหลังประกอบเสร็จ





ติดตั้ง LED WS2812b
สาย LED ที่พี่ซื้อมาเป็นแบบยาว 5 เมตร มี LED 150 ดวง แต่ละดวงห่างกัน 33mm ซึ่งพี่ก็เอามาคิดเป็นขนาดของเกมเลย
เอาเทปกาวสองหน้าติดบนส่วนแนวตั้ง แล้วก็บัดกรีต่อสายกันนะ ตัว LED ดวงแรกอยู่มุมขวาล่าง ส่วนดวงที่สอง...ไม่ต้องใช้! ในแต่ละส่วนเราใช้แค่ 5 ดวงเอง


โครงหลัก (Main Enclosure)
โครงด้านนอกต้องแข็งแรงหน่อยนะน้อง เพราะวัยรุ่นเนี่ยพลังเหลือล้น เดี๋ยวจะทำร้ายตัวเองหรือพังเกมซะก่อน ตัวแผ่นหลักทำจากไม้อัด (multiplex) ขนาด 400x400x15mm ส่วนแผ่นข้างก็มีสองขนาดนะ 400x50mm สองอัน กับ 385x50mm สองอัน หนา 15mm เหมือนกัน
มุมทั้งหมดพี่ก็เอาไปลบเหลี่ยมให้มน แล้วก็อุดรูสกรูด้วย wood filler ให้เรียบร้อย
ส่วนเรื่องแบบและขนาดทั้งหมด พี่เก็บไว้ในที่ส่วนตัวแล้ว (Github) ไว้มีโอกาสค่อยว่ากันอีกที
พี่ทำกรอบจากไม้อัด 4mm แล้วยึดไว้ด้านหน้าเพื่อยึดแผ่นพลาสติกใส (plexiglass) ให้อยู่กับที่









ปุ่มสัมผัส (Touch Buttons)
ทำไมต้องเป็นปุ่มแบบนี้? จากประสบการณ์ตรงกับลูกชายพี่เลยน้อง รู้เลยว่าต้องใช้พื้นผิวที่ทำความสะอาดง่าย ปุ่มกดแบบกลไก (mechanical) มันมีช่องว่าง "ของแปลกๆ" เข้าไปติดง่ายมาก แล้วก็ต้องเปลี่ยนปุ่มบ่อยทุกที แถมการกดปุ่มซ้ำๆ แรงๆ แบบสุดโต่งเนี่ย ต่อให้เป็นชิ้นส่วนกลไกคุณภาพดีแค่ไหน ก็คงยอมแพ้หลังจากผ่านไปแค่ไม่กี่สัปดาห์แหละ
มีปุ่มเซนเซอร์แบบสำเร็จรูปที่ห่อหุ้มมาให้แล้ว (industrially encapsulated) แต่มันไม่ชัดเจนพอสำหรับเด็กหรือวัยรุ่นที่มีความต้องการพิเศษ
พี่เคยลองใช้บอร์ด ttp223 สำเร็จรูปมาทำปุ่มนะ แต่มันเล็กเกินไปในแง่ของพื้นที่สัมผัส พอจะขยายพื้นที่ด้วยฟอยล์ทองแดง มันก็ดันส่งสัญญาณตุบๆ ตุบๆ เองไม่หยุดเลย (trigger uncontrollably) สุดท้ายพี่เลยต้องออกแบบ PCB เป็นของตัวเองซะเลย และมันก็เวิร์คสุดๆ! วงจรก็ยังใช้พื้นฐานจากชิป ttp223 อยู่
ด้านที่มีชิ้นส่วนส่วนใหญ่เป็น GND พอจับคู่กับด้านหน้าที่มีแค่ลายเส้นเป็นพื้นผิว มันก็กลายเป็นตัวเก็บประจุ (capacitor) ที่ช่วยลดความไวลง เจ้าของเกมต้องมาจิ้มๆ จับๆ จริงๆ ถึงจะ触发ได้ พี่ก็ไม่มีปัญหาเรื่องการส่งสัญญาณผิดพลาดอีกแล้ว เรียบร้อย! สู้งานนะน้อง
และอย่างที่บอกไปแล้วน้าา ตัวปุ่มเซ็นเซอร์เนี่ย ไม่ต้องออกแรงกดเลยแม้แต่นิดเดียว ซึ่งข้อดีโคตรๆ สำหรับคนที่มีข้อจำกัดทางร่างกายแบบต่างๆ





ฝั่งซอฟต์แวร์ (The Software)
เริ่มจากข่าวดีก่อนเลยนะน้อง! โปรเจคนี้ไม่ต้องไปหาไลบรารีข้างนอกมาใช้เลย (No external libraries) หมดปัญหาหาไม่เจอ ลงไม่ติด ง่ายๆ จัดไปวัยรุ่น! เงื่อนไขสำคัญมีแค่อย่างเดียว คือต้องใช้บอร์ด Arduino ที่ความเร็ว 16MHz นะ ไม่งั้นจังหวะเวลา (timing) สำหรับควบคุม LED WS2812b จะเพี้ยนหมด
ถ้าน้องสงสัยว่าทำไมในแต่ละโฟลเดอร์มีไฟล์ .INO เยอะจัง นั่นเพราะพี่ใช้ฟีเจอร์ TABS ใน Arduino IDE ครับ จะได้แยกส่วนโค้ดให้ดูเป็นระเบียบ ทำงานง่ายขึ้น แค่เปิดไฟล์ใดไฟล์หนึ่งในโฟลเดอร์นั้น IDE ก็จะเปิดแท็บทั้งหมดให้อัตโนมัติเลย

อธิบายโปรแกรมทีละบรรทัดคงไม่ไหวแล้วตอนนี้ โค้ดมันเริ่มยาวแล้ววว แต่น้องวางใจได้ พี่เขียนคำอธิบาย (comments) ไว้ในโค้ดเองแล้วทุกจุดเลย ส่วนเกมแต่ละเกมก็แยกไว้ในแท็บของมัน ทำให้เพิ่มเกมใหม่ได้ง่ายมาก ไม่หลงทางในโค้ดแน่นอน ส่วนแท็บที่ชื่อ LedControl นั่นคือส่วนที่ควบคุมสาย LED โดยตรง เลยไม่ต้องพึ่งไลบรารีข้างนอก (no external lib) ไงล่ะ
รายละเอียดเทคนิคเพิ่มเติม: โครงสร้างซอฟต์แวร์ออกแบบมาเพื่อความชัดเจนและขยายได้ง่าย โดยแยก Logic ของเกมแต่ละเกมไว้ในแท็บต่างกันของ Arduino IDE สิ่งสำคัญในโค้ดคือการทำ Debouncing ให้กับอินพุตจากเซ็นเซอร์สัมผัส เพราะเซ็นเซอร์แบบ capacitive มันค่อนข้างไว โค้ดเลยต้องมีส่วนที่ตรวจสอบว่าการสัมผัสนั้นเป็นจงใจและต่อเนื่องจริงๆ ป้องกันการทำงานผิดพลาด (false trigger) ส่วนการควบคุม LED นั้นเขียนขึ้นมาเพื่อโปรโตคอล WS2812B โดยตรง ไม่ใช้ไลบรารีภายนอก เพื่อให้มั่นใจในความแม่นยำของจังหวะเวลา (timing) และความเสถียรบน Arduino Nano 16MHz
ฝั่งเสียง (The Sounds)
ไฟล์เสียงทั้งหมดอยู่บนการ์ด micro SD นะน้อง จะเอาไฟล์ลงการ์ดโดยตรงหรือผ่านพอร์ต USB (ที่เป็นตัวเลือกเสริม) ก็ได้
สำคัญมาก! DF mini player จะเล่นไฟล์เสียงได้ก็ต่อเมื่อตัดการเชื่อมต่อ USB กับโมดูลเสียงออกแล้วเท่านั้น! ห้ามช็อตนะตัวนี้
น้องต้องสร้างโฟลเดอร์ชื่อ "01" ที่ root ของการ์ด micro SD ก่อน แล้วค่อยคัดลอกไฟล์ MP3 ทั้งหมดเข้าไปในโฟลเดอร์นี้ ไฟล์เสียงต้องตั้งชื่อเป็นตัวเลข 001 ถึง 254 นะ
ข้อมูล Frontmatter ดั้งเดิม
apps: - "1x Arduino IDE 2.0 (beta)" - "1x Audacity" author: "alainsprojects" category: "Gadgets, Games & Toys" components: - "1x DFPlayer - A Mini MP3 Player" - "1x Arduino Nano" - "1x laser sheet cutting machine" description: "งานนี้ผมทำขึ้นมาเพื่อเพื่อนๆ ที่อาจจะเคลื่อนไหวลำบากหรือต้องการการดูแลเป็นพิเศษ ให้ได้เล่นเกมสนุกๆ กัน ใช้เซนเซอร์ง่ายๆ กับ Arduino ควบคุมมอเตอร์และไฟ LED สุดเทพ งานง่ายแต่หล่อ มาลองทำกัน!" difficulty: "Intermediate" documentationLinks: [] downloadableFiles: - "https://github.com/awall9999/Robust-LED-game/tree/main/Software" encryptedPayload: "U2FsdGVkX18rNEcZjgteGYQPmyPPQQVLWGWwW/ihzhkhX7HvuuC8qe6V0/LkZHzv+alMAJPzmbBRY7teKIsAutVctk9grCoOO8VzrnGK4l3rKGGhUuSTrPKw+G+ejcEV" heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/a-led-gaming-platform-for-people-with-special-needs-d39122_cover.jpg" lang: "en" likes: 5 passwordHash: "34d57b08d7328bf1389fc32f0b0923a528bb03573923a8256357496914e103c7" price: 700 seoDescription: "Custom LED Gaming Platform for special needs, supporting mobility and mental impairments with Arduino technology." tags: - "Disability Reduction" title: "แพลตฟอร์มเกมไฟกระพริบสุดตึง! เอาใจวัยรุ่นสายช่างและเพื่อนๆ ทุกคน" tools: [] videoLinks: - "https://youtu.be/p7KceTKOyhQ" views: 5974