Tôi muốn bắt đầu triển khai một hệ thống bao gồm N vi điều khiển (N> = 2 MCU), nhưng tôi muốn biết các khả năng để cho phép chúng giao tiếp với nhau.
Lý tưởng nhất là các bộ vi điều khiển (N-1) được đặt bên trong ngôi nhà đóng vai trò là khách hàng, trong khi bộ vi điều khiển cuối cùng ("máy chủ") được kết nối với PC thông qua USB. Vấn đề tôi gặp phải bây giờ là làm thế nào để kết nối các bộ vi điều khiển (N-1) này với "máy chủ". MCU khách hàng thực hiện các tác vụ rất đơn giản, do đó, có thể không phải là một giải pháp tốt để sử dụng ARM để thực hiện các công việc đơn giản như vậy chỉ vì chúng cung cấp CAN / PHY-MAC .
Giao tiếp sẽ không xảy ra nhiều hơn một lần trong hầu hết các thiết bị và theo yêu cầu cho người khác. Tốc độ không quá quan trọng (tin nhắn ngắn): 1 Mbit / s Tôi nghĩ là CÁCH quá mức cho mục đích của tôi.
MCU tôi dự định sử dụng là như sau.
- Atmel AVR Tiny / Mega
- TI MSP430
- ARM Cortex M3 / M4
- (Có thể là Atmel AVR UC3 - 32-bit)
Tôi muốn tránh PIC nếu có thể (lựa chọn cá nhân), đơn giản vì có ít khả năng lập trình chúng hơn (tất cả các công cụ trên có ít nhiều công cụ nguồn mở cũng như một số công cụ chính thức).
Tôi biết một số ARM cung cấp chức năng CAN và không chắc chắn về những cái khác.
Ngay bây giờ tôi đã đưa ra những khả năng này:
- GPIO đơn giản để gửi dữ liệu (giả sử> 16 bit ở mức CAO để biểu thị bắt đầu tin nhắn,> 16 bit ở mức THẤP để biểu thị kết thúc tin nhắn). Tuy nhiên, nó phải ở tần số chuẩn << (tần số_client, tần số máy chủ) để có thể phát hiện tất cả các bit. Chỉ cần một cáp cho mỗi MCU khách hàng.
- RS-232 : Tôi nghĩ rằng đây là giao thức truyền thông được sử dụng phổ biến nhất, nhưng tôi không biết nó có quy mô như thế nào. Tôi đang xem xét tới 64 MCU khách hàng ngay bây giờ (có thể muộn hơn)
- USB: AFAIK nó giống như RS-232, nhưng tôi không nghĩ nó có khả năng mở rộng rất tốt trong trường hợp này (mặc dù USB hỗ trợ rất nhiều thiết bị - 255 nếu tôi nhớ chính xác - nó có thể quá phức tạp cho ứng dụng này)
- RJ45 / Ethernet: đây là thứ tôi thực sự thích sử dụng, vì nó cho phép truyền qua khoảng cách xa mà không gặp vấn đề gì (ít nhất là với cáp được bảo vệ> cáp Cat 6 ). Vấn đề là chi phí (PHY, MAC, máy biến áp, ...). Tôi không biết nếu bạn thực sự có thể hàn nó tốt ở nhà mặc dù. Bằng cách này, tôi sẽ không cần MCU khách hàng
- Wireless / ZigBee : các mô-đun rất đắt tiền, mặc dù đó có thể là cách để tránh "spaghetti" phía sau bàn
- Các mô-đun / thu phát RF: Tôi đang nói về những người trong dải tần 300 MHz - 1 GHz, vì vậy chúng sẽ khó hàn ở nhà. Các mô-đun đều được tích hợp sẵn, nhưng chúng khá đắt như ZigBee (ít nhất là các mô-đun của RF tại Mouser, tại Sparkfun dường như có những cái rẻ hơn).
- CÓ THỂ? Nó có vẻ là rất mạnh mẽ. Mặc dù tôi không có kế hoạch sử dụng nó trong các ứng dụng ô tô, nó vẫn có thể là một lựa chọn tốt.
- I²C / SPI / UART ? Một lần nữa - tốt hơn nên tránh "spaghetti" với các dây cáp nếu có thể
- PLC không thực sự là một lựa chọn. Hiệu suất giảm khá nhanh khi chiều dài tăng và phụ thuộc vào tải điện dung của mạng điện. Tôi nghĩ rằng giá cả cũng giống như Ethernet.
Hơn nữa, giao thức nào sẽ "tốt hơn" trong trường hợp truyền đồng thời (giả sử trường hợp hiếm hoi là ngay lập tức hai thiết bị bắt đầu truyền: giao thức nào cung cấp "hệ thống quản lý xung đột" / "hệ thống quản lý xung đột" tốt nhất?
Tóm lại : Tôi muốn nghe điều gì có thể là giải pháp tốt nhất cho hệ thống máy khách phân tán thực hiện giao tiếp dữ liệu rất nhẹ, xem xét cả tính linh hoạt (số lượng thiết bị tối đa, hệ thống quản lý xung đột / xung đột, ...), giá cả , dễ dàng thực hiện tại nhà (hàn), ... Tôi muốn tránh chi 20 đô la cho chỉ mô-đun giao tiếp, nhưng đồng thời có 30 dây phía sau bàn sẽ hút.
Giải pháp tôi đang hình ảnh ngay bây giờ là thực hiện giao tiếp cơ bản giữa các MCU gần bằng GPIO hoặc RS-232 ( giá rẻ !) Và sử dụng Ethernet / ZigBee / Wi-Fi trên một MCU trên mỗi "vùng" để liên lạc với máy chủ ( đắt tiền , nhưng nó vẫn rẻ hơn rất nhiều so với một mô-đun Ethernet trên mỗi MCU của máy khách).
Thay vì cáp, nó cũng có thể sử dụng sợi quang / sợi quang. Mặc dù các chuyển đổi bổ sung là cần thiết và tôi không chắc liệu đó có phải là giải pháp tốt nhất trong trường hợp này hay không. Tôi muốn nghe thêm chi tiết về họ.