Chọn công nghệ không dây cho độ trễ thấp nhất có thể


10

Tôi đang phác thảo một dự án đố vui trong quán rượu, nơi Trọng tài đưa ra tín hiệu và nhiều người chơi nhấn nút. Người đầu tiên đẩy quyền thắng để đưa ra câu trả lời.

Tôi muốn tất cả các nút (trọng tài + cầu thủ X) không dây. Vì người chơi đố tốt nhất có thể nhấp vào một nút trong vòng 10ms của tín hiệu, điều rất quan trọng là có một sự khác biệt rất nhỏ trong ping giữa các nút khác nhau. Tôi không thể có người chơi hét lên "nút của tôi bị lag!" Mặt khác, tôi không muốn sử dụng công nghệ phức tạp / đắt tiền hơn mức cần thiết.

Vậy, công nghệ không dây tối ưu sẽ sử dụng là gì? Hãy chia sẻ kinh nghiệm của bạn từ các dự án tương tự (hoặc chỉ là kiến ​​thức lý thuyết :) Đây là những gì tôi đã nghiên cứu cho đến nay (sửa tôi nếu tôi sai):

  1. Bluetooth 4 LE (như trong RFduino) Ưu điểm: độ trễ 3-6ms (được quảng cáo), năng lượng thấp Nhược điểm: chi phí, không quá 7 nút cho thiết bị

  2. Ưu điểm của Wi-fi: Độ trễ 2ms (Tôi vừa ping bộ định tuyến wi-fi của mình), hàng tá nút nếu cần là Nhược điểm: chi phí, ngốn điện

  3. Bộ xử lý dữ liệu RF Ưu điểm: dunno, chi phí dường như nhỏ hơn một chút Nhược điểm: nhiều nút ở cùng tần số có thể sẽ tạo ra nhiều tiếng ồn

  4. Đơn giản nhất là "Radio remote" Ưu điểm: độ trễ bằng 0 vì tất cả đều là cơ điện, không có dữ liệu Nhược điểm: nhiều nút ở cùng tần số sẽ không hoạt động

Vì vậy, tôi đã bỏ lỡ bất cứ điều gì? Tôi đánh giá cao bất kỳ hướng dẫn.


Tổng cộng có bao nhiêu nút?
bigjosh

1
Yêu cầu nhỏ nhất có thể là 4, trường hợp bình thường là 8, mọi thứ sẽ được chào đón nhiều hơn - tôi muốn nó rất linh hoạt cho một số giải trí đám đông.
Serge Snegirev

Thời gian phản ứng của con người là hơn 200ms. Xem humanbenchmark.com/tests/reactiontime/statistic ,

@ user31481 Vậy là sao? Con người có thể nhận thấy độ trễ dưới 2ms. Xem các liên kết trong phần phụ lục: danluu.com/input-lag
Navin

Câu trả lời:


6

Tôi đã sử dụng NRF24L01+các mô-đun không dây chipset 2.4GHz với Arduino trước đây và thấy chúng rất tuyệt và siêu rẻ (~ 10 đô la cho 10 trong số chúng trên ebay!). Chúng có 3 chế độ truyền: 250kbps, 1Mbps và 2Mbps. Phạm vi giảm tương ứng với tốc độ bit cao hơn, nhưng thời gian gửi tin nhắn cũng vậy. Có nhiều thư viện Arduino (ví dụ RF24, Mirf, RadioHead) và hướng dẫn sử dụng các mô-đun (xem http://playground.arduino.cc/InterfacesWithHardware/Nrf24L01 ). Chúng cũng có các chế độ mạng lưới tích hợp có thể có hoặc không sử dụng.

Các phiên bản có đầu nối ăng ten RP-SMA và phạm vi được quảng cáo lên tới 1000m cũng có sẵn với giá khoảng 5 đô la mỗi cái. Tôi sẽ khuyên bạn nên sử dụng một trong số này cho nút của trọng tài ít nhất, tùy thuộc vào phạm vi bạn cần.

Theo Charles Hallard của hallard.me , các chip không được khuếch đại có thể có phạm vi tầm nhìn 30m ở chế độ 250kbps và tôi đã xác minh điều này trong thử nghiệm của riêng tôi.

Theo người dùng lẻ tẻ trên diychristmas.org , việc gửi tải trọng 32 byte ở chế độ 250kbps mất 1432 chuyển từ khi bắt đầu chế độ Tx trên máy phát để nhận thông báo đầy đủ trên máy thu. Điều này giảm xuống còn 444 điều trên chế độ 1Mb / giây283 điều trên chế độ 2Mb / giây .

Dựa trên những thống kê này, chúng có độ trễ trong vòng 2ms để kích hoạt, phù hợp với ứng dụng của bạn và chúng sử dụng rất ít năng lượng. Tùy thuộc vào bạn để tìm ra sự cân bằng tốt nhất về độ trễ, phạm vi và chi phí.


Cảm ơn bạn! Điều gì nếu nhiều nút được nhấn cùng một lúc? Họ sẽ va chạm và ví dụ như chặn nhau?
Serge Snegirev

Không, mạng của các chip này rất tinh vi về giá của chúng, chúng có thể đàm phán mạng lưới và nhiều ống Rx cùng một lúc một cách vui vẻ và tự động gửi lại nếu người nhận không xác nhận đã nhận được tin nhắn.
vỏ não

1
Câu hỏi EE.SE này chi tiết làm thế nào bạn có thể có nhiều nút truyền đến cùng một địa chỉ nhận, như trong tình huống của bạn. Sau đó, đơn giản chỉ là vấn đề lấy địa chỉ của người gửi để quyết định ai 'thắng'.
vỏ não


1
Chỉ cần chú ý một chút, những con chip NRF24L01 + có ăng-ten này không phải là bản gốc, nó có thể gây ra vấn đề khi bạn cố gắng giao tiếp giữa bản sao và bản gốc và nếu bạn cố gắng sử dụng tải trọng động hoặc sốc. Ngoài ra, bài viết wikispace đã lỗi thời. Thay vào đó, nên sử dụng thư viện TMRh20.
Avamander

3

Bạn đã xem xét sử dụng đồng hồ thời gian thực? Bạn có thể đồng bộ hóa tất cả chúng trước thời hạn và sau đó sử dụng bất kỳ giao thức không dây nào. Khi nhấn nút, bạn sẽ tìm đơn vị báo cáo dấu thời gian sớm nhất và sau đó một khi cửa sổ vài giây trôi qua cho nó biết rằng nó đã thắng. Tôi sẽ xem xét sử dụng WIFI (802.11) với ESP8266, RTC và mang theo điểm truy cập không dây.

Đây không phải là một câu trả lời cho độ trễ thấp không dây nhưng loại bỏ sự cần thiết cho nó.


2
Ý tưởng tốt, nhưng bạn không cần RTC. Bạn có thể đồng bộ hóa Arduinos khi bắt đầu, do đó millis() - offsetsẽ cho kết quả tương tự (+/- một số độ trôi) cho tất cả các Arduinos có liên quan. Các offsetlà giá trị của địa phương millis()khi một Arduino nhận được tín hiệu đồng bộ từ chủ Arduino. Đối với một trò chơi kéo dài một hoặc hai giờ là đủ.

Sử dụng millis () cho việc này có thể khiến các thiết bị mất đồng bộ hóa, vì millis () không tăng khi ngắt được tắt.
bobsburner

1

Theo ý kiến ​​khiêm tốn của tôi, nó có thể còn rẻ hơn nếu bạn sử dụng IR hoặc một số loại ánh sáng khác, giả sử bạn có thể đảm bảo tầm nhìn. Bạn có thể sử dụng các bước sóng khác nhau để đảm bảo tách các tín hiệu.


1
Tôi sợ rằng "đường ngắm" và "câu đố quán rượu" không hợp nhau. Nhưng cảm ơn vì đã gợi ý nó, tôi sẽ xem xét công nghệ IR cho các dự án khác.
Serge Snegirev

0

Giải pháp công nghệ thấp.

  1. Các máy phát gửi tín hiệu đồng hồ của nó trên lệnh.

  2. Người nhận chỉ cần phát hiện sự phát hiện của tín hiệu đó.

Toàn bộ điều có thể là rf, hoặc dựa trên ánh sáng - ví dụ một trong những đèn led có thể được cấu hình là máy phát.

Mọi thứ sẽ tốt trong vòng 1ms.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.