การเลือกเทคโนโลยีไร้สายเพื่อให้เกิดความล่าช้าน้อยที่สุด


10

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

ฉันต้องการปุ่มทั้งหมด (ผู้เล่นผู้ตัดสิน + X) เป็นไร้สาย เนื่องจากผู้เล่นคำถามที่ดีที่สุดสามารถคลิกปุ่มภายในระยะ 10 มิลลิวินาทีของสัญญาณมันเป็นสิ่งสำคัญมากที่มีความแปรปรวนน้อยมากในการ ping ระหว่างปุ่มที่แตกต่างกัน ฉันไม่สามารถให้ผู้เล่นตะโกนว่า "ปุ่มของฉันล้าหลัง!" ในทางกลับกันฉันไม่ต้องการใช้เทคโนโลยีราคาแพง / ซับซ้อนกว่าที่ต้องการ

ดังนั้นเทคโนโลยีไร้สายที่เหมาะสมที่สุดที่จะใช้คืออะไร กรุณาแบ่งปันประสบการณ์ของคุณจากโครงการที่คล้ายกัน (หรือเพียงแค่ความรู้เชิงทฤษฎี :) นี่คือสิ่งที่ฉันค้นคว้ามาแล้ว (แก้ไขฉันถ้าฉันผิด):

  1. บลูทู ธ 4 LE (เหมือนใน RFduino) ข้อดี: เวลาแฝง 3-6ms (โฆษณา), พลังงานต่ำข้อเสีย: ค่าใช้จ่าย, ไม่เกิน 7 ปุ่มไปยังอุปกรณ์

  2. ข้อดีของ Wi-Fi: เวลาในการตอบสนอง 2 มิลลิวินาที (ฉันเพิ่งส่ง Ping ไปที่เราเตอร์ Wi-Fi ของฉัน) ปุ่มหลายสิบปุ่มหากจำเป็นต้องมีข้อเสีย: ค่าใช้จ่ายหิวพลังงาน

  3. ผู้ส่งข้อมูล RF ข้อดี: ไม่น่าเชื่อ, ค่าใช้จ่ายดูเหมือนจะเล็กกว่านิดหน่อยจุดด้อย: ปุ่มหลายปุ่มที่ความถี่เดียวกันอาจสร้างเสียงรบกวนได้มาก

  4. ง่ายที่สุด "วิทยุระยะไกล" ข้อดี: ศูนย์ล่าช้าเนื่องจากเป็นระบบไฟฟ้าทั้งหมดไม่มีข้อมูลจุดด้อย: ปุ่มหลายปุ่มที่ความถี่เดียวกันจะไม่ทำงาน

ดังนั้นฉันจะพลาดอะไร ฉันขอขอบคุณคำแนะนำใด ๆ


มีปุ่มทั้งหมดกี่ปุ่ม?
bigjosh

1
ความต้องการที่เล็กที่สุดที่เป็นไปได้คือ 4 กรณีปกติคือ 8 จะได้รับการต้อนรับมากกว่านี้อีก - ฉันต้องการให้ยืดหยุ่นมากสำหรับความบันเทิงของผู้คน
Sergey Snegirev

เวลาตอบสนองของมนุษย์มากกว่า 200ms ดูhumanbenchmark.com/tests/reactiontime/statistics ,

@ user31481 ดังนั้นอะไร มนุษย์สามารถรับรู้เวลาแฝงภายใน 2ms ดูลิงค์ในภาคผนวก: danluu.com/input-lag
Navin

คำตอบ:


6

ฉันเคยใช้NRF24L01+ชิปเซ็ตโมดูลไร้สาย 2.4GHz กับ Arduino มาก่อนและพบว่ามันยอดเยี่ยมมากและราคาถูกสุด ๆ (~ $ 10 ต่อ 10 รายการใน eBay!) พวกเขามี 3 โหมดการส่ง: 250kbps, 1Mbps และ 2Mbps ช่วงจะลดลงตามอัตราบิตที่สูงขึ้น แต่เวลาที่ใช้ในการส่งข้อความก็ทำได้เช่นกัน มีหลายไลบรารี Arduino (เช่น RF24, Mirf, RadioHead) และแบบฝึกหัดสำหรับการใช้โมดูล (ดูhttp://playground.arduino.cc/InterfacingWithHardware/Nrf24L01 ) พวกเขายังมีโหมดเครือข่ายตาข่ายในตัวซึ่งอาจหรือไม่อาจใช้งาน

รุ่นที่มีตัวเชื่อมต่อเสาอากาศ RP-SMA และช่วงโฆษณาที่สูงถึง 1,000m นั้นยังมีราคาอยู่ที่ประมาณ $ 5 ฉันขอแนะนำให้ใช้ปุ่มใดปุ่มหนึ่งต่อไปนี้กับปุ่มของผู้ตัดสินอย่างน้อยขึ้นอยู่กับช่วงที่คุณต้องการ

ตามที่ Charles Hallard of hallard.meชิปที่ไม่ได้ขยายสามารถรับช่วง30 เมตรของการมองเห็นในโหมด 250kbpsและฉันได้ตรวจสอบสิ่งนี้ในการทดสอบของฉันเอง

ตามที่ผู้ใช้เป็นระยะ ๆ ใน diychristmas.org , ส่งบรรจุ 32 ไบต์ในโหมด 250kbps ใช้เวลา1432μsจากจุดเริ่มต้นของโหมด Tx บนเครื่องส่งสัญญาณที่จะได้รับข้อความเต็มรูปแบบบนเครื่องรับ นี่คือการลดการ444μsกับโหมด 1Mbpsและ283μsกับโหมด 2Mbps

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


ขอบคุณ! จะเกิดอะไรขึ้นถ้ากดปุ่มหลายปุ่มพร้อมกัน พวกเขาจะชนกันและเช่นกันบล็อกออก?
Sergey Snegirev

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

1
คำถาม EE.SE นี้มีรายละเอียดว่าคุณสามารถมีหลายโหนดที่ส่งไปยังที่อยู่รับเดียวกันในสถานการณ์ของคุณได้อย่างไร จากนั้นเป็นเรื่องของการจดที่อยู่ของผู้ส่งเพื่อตัดสินว่าใคร 'ชนะ'
cortices

1
ตัวอย่างที่เป็นประโยชน์เพิ่มเติม: arduino-info.wikispaces.com/nRF24L01-RF24-
cortices

1
เพียงแค่หัวค่ำเล็กน้อยชิป NRF24L01 + ที่มีเสาอากาศนั้นไม่ใช่ของแท้มันอาจทำให้เกิดปัญหาเมื่อคุณพยายามสื่อสารระหว่างโคลนและของดั้งเดิมและถ้าคุณพยายามที่จะใช้ payloads แบบไดนามิกหรือช็อต นอกจากนี้บทความ wikispace นั้นล้าสมัยแล้ว หนึ่งควรใช้ไลบรารี TMRh20 แทน
Avamander

3

คุณได้พิจารณาการใช้นาฬิกาเรียลไทม์หรือไม่? คุณสามารถซิงโครไนซ์พวกเขาทั้งหมดล่วงหน้าและใช้โปรโตคอลไร้สายใด ๆ เมื่อกดปุ่มคุณจะมองหาหน่วยที่รายงานการประทับเวลาเร็วที่สุดจากนั้นเมื่อหน้าต่างผ่านไปสองสามวินาทีได้ผ่านไปแล้วก็จะรู้ว่าได้รับรางวัล ฉันจะลองใช้ WIFI (802.11) กับ ESP8266s, RTCs และใช้จุดเชื่อมต่อไร้สาย

นี่ไม่ใช่คำตอบสำหรับความล่าช้าต่ำไร้สาย แต่ไม่จำเป็นต้องใช้มัน


2
เป็นความคิดที่ดี แต่คุณไม่ต้องการ RTC คุณสามารถซิงค์ Arduinos เมื่อเริ่มต้นได้ดังนั้นmillis() - offsetจะให้ผลลัพธ์เหมือนกัน (+/- ดริฟท์บางอย่าง) สำหรับ Arduinos ทั้งหมดที่เกี่ยวข้อง ค่าoffsetนี้เป็นค่าท้องถิ่นmillis()เมื่อ Arduino ได้รับสัญญาณซิงค์จากต้นแบบ Arduino สำหรับเกมที่ผ่านมาหนึ่งหรือสองชั่วโมงก็เพียงพอแล้ว

การใช้มิลลิวินาที () สำหรับสิ่งนี้อาจทำให้อุปกรณ์สูญเสียการซิงค์เนื่องจากมิลลิวินาที () จะไม่เพิ่มขึ้นเมื่อปิดการใช้งานอินเตอร์รัปต์
bobsburner

1

ในความคิดที่ถ่อมตนของฉันมันอาจจะถูกกว่าถ้าคุณใช้ IR หรือแสงประเภทอื่น ๆ โดยสมมติว่าคุณสามารถมองเห็นได้อย่างชัดเจน คุณสามารถใช้ความยาวคลื่นที่แตกต่างกันเพื่อให้แน่ใจว่าการแยกสัญญาณ


1
ฉันกลัวว่า "แนวสายตา" และ "แบบทดสอบผับ" ไม่เข้ากันได้ดี แต่ขอบคุณสำหรับการแนะนำฉันจะดูเป็นเทคโนโลยี IR สำหรับโครงการอื่น ๆ
Sergey Snegirev

0

โซลูชันเทคโนโลยีต่ำต่ำ

  1. เครื่องส่งสัญญาณส่งสัญญาณนาฬิกาตามคำสั่ง

  2. ผู้รับเพียงแค่ต้องการตรวจจับการตรวจสอบ prrsence ของสัญญาณนั้น

สิ่งทั้งหมดสามารถเป็น rf หรือใช้แสงตัวอย่างเช่นหนึ่งในไฟ led สามารถกำหนดค่าเป็นเครื่องส่งสัญญาณ

ทุกอย่างควรจะดีภายใน 1ms

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.