ชื่อโปรเจกต์: Génies en Herbe\
โรงเรียนมัธยมของลูกชายผมเข้าร่วมการแข่งขัน "Génies en Herbe" และทัวร์นาเมนต์ประจำปี เกมนี้เป็นเกมตอบคำถามยอดนิยมในจังหวัดที่ใช้ภาษาฝรั่งเศสของแคนาดา
เคยออกอากาศทางทีวี:

ตอนนี้เล่นกันในชั้นเรียน โดยทั่วไปจะมีผู้ปกครองทำหน้าที่เป็นผู้ตัดสิน:
มีเกมเวอร์ชันภาษาอังกฤษที่รู้จักกันในชื่อ "Reach for the top"
https://www.reachforthetop.com/
ในการเล่นเกมนี้ คุณต้องมีเครื่องที่จะระบุว่าทีมใดและผู้เล่นคนใดกด buzzer (pushbutton) ก่อน มีเครื่องสำหรับขาย แต่มีราคาหลายร้อยดอลลาร์
นี่คือตัวอย่างหนึ่งของเครื่องสำหรับขาย (500 ดอลลาร์สำหรับรุ่นนี้ ซึ่งค่อนข้างเป็นราคาปกติที่มีอยู่ในตลาด):

ด้วยความช่วยเหลือจากลูกชาย ผมจึงตัดสินใจสร้างเครื่องนี้โดยใช้บอร์ด Arduino โดยมีวัตถุประสงค์เพื่อให้ประกอบง่ายที่สุด และลดต้นทุนของส่วนประกอบให้เหลือน้อยที่สุดไปพร้อมกัน เราตั้งเป้าที่จะสร้างทั้งหมดให้ได้ในราคาไม่เกิน 100 ดอลลาร์
เครื่องตอบคำถามนี้ช่วยระบุว่าผู้เล่นคนใดและทีมใดตอบคำถามได้เร็วที่สุดโดยการกด buzzer (pushbutton) ผู้เล่นแต่ละคนมี buzzer ของตัวเอง วัตถุประสงค์ของเครื่องคือเพื่อระบุว่าผู้เล่นคนใดตอบก่อน โดยจะเปิดส่วนของหน้าจอ LCD ที่เชื่อมโยงกับ buzzer ที่ถูกกดก่อน และจะส่งเสียง เมื่อมีการกด buzzer หนึ่งตัว buzzer อื่นๆ จะถูกปิดใช้งาน Buzzer สามารถเปิดใช้งานใหม่ได้โดยปุ่ม reset ที่ดำเนินการโดยผู้ตัดสิน มีตัวจับเวลาที่จะเปิดใช้งาน buzzer ใหม่ หากผู้ตัดสินไม่กดปุ่ม reset สามารถกำหนดระยะเวลาของตัวจับเวลาได้โดยการกดปุ่ม reset ค้างไว้สองสามวินาที
หลังจากทดสอบแนวคิดหลายอย่าง เราได้ข้อสรุปในการออกแบบที่ใช้หน้าจอ LCD แทนที่จะเป็นไฟ LED เพื่อระบุผู้เล่นที่ตอบก่อน ซึ่งช่วยประหยัดค่าใช้จ่ายของไฟ LED ลดความต้องการพลังงาน ทำให้สามารถจ่ายไฟให้กับอุปกรณ์ได้โดยใช้พอร์ต USB ของ Arduino เท่านั้น นอกจากนี้ยังลดจำนวน PIN ที่จำเป็นบน Arduino ดังนั้น Arduino Nano จึงเพียงพอ สำหรับกล่องหุ้ม Arduino เราซื้อกล่องไม้ที่ร้าน Dollar store และใช้สว่านเจาะรูที่เราต้องการสำหรับสายไฟ ปุ่ม reset และลำโพง สำหรับหน้าจอ LCD เราใช้เครื่องมือ oscillating tool เพื่อตัดรูสี่เหลี่ยมผืนผ้าที่ด้านบนของกล่อง
เรายังออกแบบกล่องพลาสติกสำหรับ pushbutton แบบมือถือที่สามารถพิมพ์ได้ด้วยเครื่องพิมพ์ 3D วิธีแก้ปัญหาที่ถูกที่สุดในการเชื่อมต่ออุปกรณ์มือถือเข้ากับกล่องหุ้ม Arduino คือการใช้สายไฟ 2 conductor wire ขนาด 22-gauge
นี่คือรูปลักษณ์ของเวอร์ชันล่าสุดเมื่อปิดฝา:

... และเมื่อเปิดออก:

เราออกแบบมาสำหรับสองทีม ทีมละสี่ผู้เล่น (ซึ่งเป็นมาตรฐานสำหรับเกม Génies en Herbe) แต่ code สามารถแก้ไขได้ง่ายเพื่อรองรับผู้เล่นมากหรือน้อยกว่าต่อทีม
การเชื่อมต่อ Arduino Nano เข้ากับส่วนประกอบนั้นค่อนข้างตรงไปตรงมา:
- ลำโพงเชื่อมต่อกับ PIN 9 และ 10 เนื่องจากเราใช้ library toneAC
- pushbutton แต่ละตัวที่ใช้โดยผู้เล่น 8 คน จะเชื่อมต่อกับ ground และ PIN ดิจิทัล ตั้งแต่ PIN 2 ถึง PIN 11 (ข้าม PIN 9 และ 10 เนื่องจากใช้สำหรับลำโพง)
- pushbutton ที่ใช้สำหรับ reset buzzer จะเชื่อมต่อกับ PIN 12 และ ground
- หน้าจอ LCD เชื่อมต่อกับ ground, +5V, SDA (A4 บน Nano) และ SCL (A5 บน Nano)
Code มีให้ใช้งานบน GitHub ที่ https://github.com/vinfort/buzzer_geh .
ตอนนี้ มีสองปัญหาที่พบใน prototype นี้:
- ปุ่มใช้เวลา "warm up" (สูงสุด 30 วินาที) มีการเพิ่ม delay ในช่วงเริ่มต้นเพื่อจัดการกับปัญหานี้
- การทำ Software button debouncing ใช้เวลานาน (100 มิลลิวินาที)
หากคุณสามารถช่วยผมแก้ปัญหาทั้งสองนี้ได้ โปรดแจ้งให้ทราบ!
แล้วเวอร์ชันนี้มีค่าใช้จ่ายทั้งหมดเท่าไหร่?
- 20 ดอลลาร์ สำหรับ Nano V3.0 Module ที่บัดกรีพร้อม Expansion Board และสาย USB ยาว 1.5 เมตร
- 11 ดอลลาร์ สำหรับ 12mm Prewired Momentary Push Button จำนวน 9 ชิ้น
- 17 ดอลลาร์ สำหรับ LCD Display Screen สีน้ำเงินพร้อม IIC Module Interface
- 26 ดอลลาร์ สำหรับสาย 22 Gauge 2 Conductor Wire ยาว 50 ฟุต เพื่อให้มีสายประมาณ 6 ฟุตสำหรับผู้เล่นแต่ละคน
- 32 ดอลลาร์ สำหรับการพิมพ์ PLA handheld enclosures สำหรับ pushbutton ที่ห้องสมุดท้องถิ่นของเรา
- 1 ดอลลาร์ สำหรับ piezo buzzer
- 4 ดอลลาร์ สำหรับกล่องไม้จากร้าน Dollar Store ในท้องถิ่น
รวม: 111 ดอลลาร์ เกินงบ 100 ดอลลาร์ของเราเล็กน้อย แต่เราสามารถคุมให้อยู่ในงบ 100 ดอลลาร์ได้ง่ายๆ เพียงลดความยาวของสายเคเบิลจาก 6 ฟุตเหลือ 3 ฟุต
รายละเอียดทางเทคนิคเพิ่มเติม
ตรรกะ Buzzer สำหรับเกมตอบคำถามเชิงวิชาการ
เครื่องนี้ออกแบบมาสำหรับการแข่งขันทางวิชาการ โดยระบุได้อย่างแม่นยำว่าผู้เข้าแข่งขันคนใดกดปุ่มของตนก่อนด้วยความแม่นยำระดับมิลลิวินาที
- Interrupt-Driven Race Detection: ใช้ external interrupts บน Arduino เพื่อตรวจจับการกดปุ่ม ซึ่งช่วยให้แน่ใจว่าแม้ผู้เล่นสองคนจะกดภายใน 1 มิลลิวินาที "First-In" จะถูกล็อคทันที
- Contestant Locking: เมื่อระบุผู้ชนะได้แล้ว การรับอินพุตจากปุ่มอื่นๆ ทั้งหมดจะถูก software-locked ไฟที่แท่นของผู้ชนะจะสว่างขึ้น และ buzzer จะดังขึ้นเพื่อส่งสัญญาณให้ผู้ดำเนินรายการ
การควบคุมโดยผู้ดำเนินรายการ
- I2C System Status: แดชบอร์ดส่วนกลางสำหรับผู้ดำเนินรายการจะแสดงชื่อทีมและเวลาตอบสนองบนจอ LCD ปุ่ม "Reset" หลักจะล้างสถานะสำหรับคำถามถัดไป