50 Arduinos có thể bị xích?


7

Tôi có nhiều người dùng trên ghế (50), mỗi người có một bàn phím nhỏ để nhập liệu. Tôi cần thu thập đầu vào từ tất cả người dùng; Tôi muốn sử dụng Arduinos cho mỗi người dùng, điều này cũng sẽ hiển thị các phản hồi trên màn hình 7 đoạn. Tôi dự định kết nối tất cả Arduinos bằng I2C nhưng tôi sợ tín hiệu có thể giảm do khoảng cách xa và giới hạn quạt, vì vậy tôi đang xem xét việc xâu chuỗi chúng.

Đây có phải là một ý tưởng tốt, hoặc có một cách tiếp cận tốt hơn để làm điều này?



1
Bạn sẽ cung cấp năng lượng cho tất cả chúng trên cáp này?
ống

1
Một người nào đó ở giữa đang cắt cáp hoặc nói cách khác với dữ liệu. Nghĩa đen là một cuộc tấn công trung gian
Wayne Werner

2
Tại sao không xử lý nhiều chỗ ngồi với mỗi Arduino? Một Arduino duy nhất phải đủ nhanh để thăm dò nhiều bàn phím và điều khiển nhiều màn hình (đặc biệt là với bộ đệm chốt phù hợp ở mỗi ghế), sau đó thay vì 50 thiết bị trên xe buýt, bạn có thể chỉ có 5 hoặc 10.
Johnny

Đối với giá của một arduino, tại sao không sử dụng Raspberry Pi với một dongle wifi? Có lẽ bạn sẽ ra rẻ hơn vì không phải mua tất cả cáp đó! Nếu đây không phải là một ứng dụng quan trọng hoàn toàn theo thời gian thực thì có vẻ như đây là công cụ sai cho công việc.
J ...

Câu trả lời:


21

Như ghi chú ứng dụng được đăng bởi RedGrittyBrick nói:

Bởi vì các ứng dụng bus I 2 C ban đầu là nội bộ của một thiết bị, ví dụ như trong PC hoặc thiết bị radio / TV / âm thanh, I 2 C-bus hiếm khi được xem xét cho các hệ thống khi khoảng cách xa với số lượng lớn thả xuống điểm được yêu cầu.

Các giải pháp trong ghi chú ứng dụng là sử dụng các mạch trình điều khiển cụ thể để chuyển đổi tín hiệu thành thứ gì đó có thể được điều khiển trong khoảng cách xa hơn.

Vì dù sao bạn cũng sẽ yêu cầu các mạch điều khiển, thay vào đó, tôi đề nghị bạn nên xem RS-485 . Đây là một tiêu chuẩn đã được thử nghiệm và tin cậy để truyền hai chiều qua các dây cáp dài. Nó sử dụng một UART bình thường trên Arduino của bạn và các mạch trình điều khiển có thể được tìm thấy dưới nhiều hình dạng và hình thức. Nếu bạn không muốn tạo PCB của riêng mình, có sẵn các bảng bộ điều hợp có tín hiệu TTL RX / TX từ UART và chuyển đổi nó thành các mức RS-485.


3
RS485 về mặt khái niệm là một loại giải pháp tốt, mặc dù 50 nút có thể bắt đầu vượt quá khả năng ổ đĩa của một số triển khai RS485, ít nhất đó là một vấn đề cần phải kiểm tra.
Chris Stratton

Trường hợp xấu nhất (RS-485) là bộ chọn A / B chuyển đổi giữa hai nhóm 25 nút. Một pin từ Arduino sẽ thực hiện chuyển đổi để nó được đồng bộ hóa với điểm đánh dấu EOT cuối cùng. Vì mỗi nút có một ID duy nhất và phát hiện xung đột tích hợp nên nó sẽ hoạt động.
Sparky256

7

Nếu bạn không đặc biệt gắn liền với ý tưởng sử dụng Arduinos cho việc này, bạn có thể thử một số bảng vi điều khiển khác. Tôi khá thích các bo mạch khác nhau dựa trên chip ESP8266; những điều này sẽ có lợi thế là chúng có kết nối mạng không dây tích hợp để tất cả chúng có thể nói chuyện trực tiếp với hệ thống trung tâm của bạn lưu trữ đầu vào.


Nếu chi phí bổ sung (thực sự, khác) không phải là vấn đề, không dây sẽ rất thuận lợi. Đặc biệt, không cần hơn 50 kết nối cáp khác nhau và thiết kế hệ thống dây tín hiệu cho không gian.
dùng2943160

1
@ user2943160 Đúng - chi phí không thực sự là vấn đề trừ khi bạn đã có thiết bị. Một mô-đun như bảng ESP12 phổ biến (được bán bởi nhiều nhà cung cấp Trung Quốc) cộng với bảng đột phá (vì đó là mô-đun gắn trên bề mặt và bạn có thể muốn các chân kết nối với) chỉ tốn một lượng nhỏ hơn so với arduino clone Trung Quốc , và có phần ít hơn một arduino chính hãng. Và chắc chắn ít hơn một arduino + lá chắn ethernet hoặc phần cứng bên ngoài khác.
Jules

5

Bạn đã xem xét arduino Ethernet với PoE chưa? Giải quyết vấn đề cấp nguồn cho thiết bị và cho phép comms 2 chiều


1
Đây thực tế là những gì Power over Ethernet được phát minh ra. Đề nghị tuyệt vời. Bạn thậm chí có thể tự thực hiện nó với các điện áp khác nhau từ tiêu chuẩn, vì Ethernet không sử dụng tất cả các cặp trong cáp.
Dan

5
Arduino khá kém phù hợp với Ethernet, cả hai đều yêu cầu bộ điều hợp mạng bên ngoài có khả năng chi phí cao hơn bo mạch cơ sở và không có nhiều bộ nhớ để xử lý các gói (mặc dù trong trường hợp này chúng không cần dài). Đối với ứng dụng đang được đề cập, có một vấn đề nữa là hầu hết các bộ điều hợp Ethernet tương thích với Arduino là UTP điểm-điểm yêu cầu một cổng trung tâm được cung cấp cho mỗi nút, ở mức 50 nút sẽ tăng thêm một lượng dây vô lý. Để thực hiện điều này hoàn toàn thiết thực, bạn cần tìm bộ điều hợp 10Base2 nhúng.
Chris Stratton

2
@psmears nếu bạn có thể tìm cho tôi trường hợp sử dụng arduino cần gigabit tôi sẽ rất ấn tượng
hardillb

1
@hardillb: Haha, đúng - Tôi chỉ không muốn mọi người có ấn tượng rằng bạn có thể thoát khỏi hai trong bốn cặp cho bất kỳ thiết lập Ethernet nào :)
psmears

4
@jpaugh: Công suất và tín hiệu được gửi qua cùng một dây - nói đại khái là các tín hiệu được gửi bằng AC và nguồn được gửi dưới dạng bù DC và được lọc ra tại máy thu.
psmears

2

Nếu khoảng cách giữa các nút của bạn không lớn và bạn không cần phải có được giao tiếp đặc biệt nhanh chóng, chuỗi daisy nơi các thông điệp được truyền từ người này sang người khác qua UART nối tiếp có thể là một trong vài điều bạn có thể làm mà không cần thêm phần cứng . Không có giới hạn về độ dài của chuỗi bạn có thể đạt được nếu mỗi bảng tái tạo tín hiệu mà nó truyền đi, tuy nhiên mỗi nút sẽ thêm một số độ trễ trước khi truyền thông điệp - trong cách thực hiện đơn giản nhất, độ trễ trên mỗi nút có thể bằng thời gian truyền nội dung tin nhắn.

Tuy nhiên, có vẻ như bạn có thể cần truyền tin nhắn theo cả hai hướng dọc theo chuỗi. Thách thức trong đó sẽ là sự hiện diện của chỉ một UART phần cứng trên mỗi bảng. Bạn có thể tăng cường điều đó với một phần mềm uart, mặc dù để có được nhiều hơn một trong số đó bạn phải sử dụng một triển khai phức tạp hơn so với mặc định đi kèm với IDE. Hoặc nếu bạn có thể tránh mọi thứ nối tiếp USB trên bo mạch, bạn có thể sử dụng UART phần cứng để liên lạc theo một hướng và phần mềm theo hướng khác.


Hoặc tất nhiên bạn có thể sử dụng Mega 2560 , có 4 UART thay vì chỉ 1 như các Arduinos khác.
Jules

Có, nhưng chi phí cho 50 nút ATmega1284 / 2560 sẽ tăng lên nhanh chóng. Phần mềm nối tiếp thực sự nên hoạt động cho điều này, hoặc có các bộ phận UART mulitple có giá thấp hơn tại ATmega328p.
Chris Stratton

1

Bạn có thể khắc phục các hạn chế I2C bằng cách sử dụng cầu DS28E17 1-to to I2C.

Tất nhiên, giải pháp sẽ phụ thuộc vào ngân sách của bạn và băng thông cần thiết.

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.