Tôi đang có ý định xây dựng một số chip giám sát nhà dựa trên Atmega. Tôi muốn theo dõi nhiệt độ, độ ẩm và mức độ hiện tại. Giám sát mức hiện tại sẽ được thực hiện với một bộ thu quy nạp trên các dòng AC. Ngoài ra, tôi muốn có một số chân trên mỗi màn hình có thể được sử dụng như GPIO được điều khiển từ xa.
Kế hoạch của tôi là sử dụng chip Attiny84 để thực hiện điều này. Mỗi bảng sẽ được cho ăn với +15 VDC và +7 VDC. Tôi có thể điều chỉnh điều này với bộ điều chỉnh sê-ri 780x đến +5 VDC và +12 VDC để cấp nguồn cho chip và bất kỳ cảm biến hoặc rơle nào khác tôi muốn.
Cung cấp năng lượng sẽ sử dụng hai cặp trong cáp Cat5e. Các thiết bị sẽ được xích lại với nhau. Điều này để lại hai cặp trong cáp còn lại. Từ những gì tôi đã đọc, RS-485 có vẻ như là một giải pháp hấp dẫn cho dữ liệu và kiểm soát. Thiết bị cuối cùng cần một điện trở kết thúc được kết nối với nó, nhưng điều đó sẽ dễ dàng.
Nếu tôi hiểu chính xác, việc thêm chip vào mạch của tôi như MAX485 chỉ thêm khả năng vật lý cho tín hiệu RS-485. Tôi vẫn cần triển khai phần mềm để giao tiếp và hơn nữa và giao thức thực tế cho nhiều thiết bị để trao đổi dữ liệu. Tôi sẽ có tối đa 12 thiết bị được xâu chuỗi cùng với một chủ. Trong hệ thống RS-485 song công, xe buýt về cơ bản hoạt động giống như một nhóm bên.
Thiết bị chính sẽ thực hiện các chức năng sau theo thứ tự trong mỗi vòng giao tiếp.
Gửi tín hiệu đồng bộ. Đây sẽ là một mẫu byte đã biết, theo sau là mã định danh và tổng kiểm tra. Mã định danh sẽ là một định danh duy nhất cho "vòng" giao tiếp này. Ngoài ra, chuỗi dữ liệu này sẽ bao gồm định danh của một thiết bị nô lệ được phép trong vòng này để gửi dữ liệu.
Chờ đợi một thời gian ân sủng. Thời gian gia hạn này được sử dụng để cho phép bất kỳ thiết bị không xác định nào truyền đến chủ yêu cầu tham gia mạng.
Nhận dữ liệu từ thiết bị nô lệ được chỉ định trong dữ liệu đồng bộ được gửi ở bước 1.
Gửi lệnh điều khiển đến bất kỳ số lượng thiết bị nô lệ. Điều này bao gồm các lệnh GPIO và tham gia xác nhận mạng. Tất cả các lệnh điều khiển phải được thừa nhận sau đó bởi nô lệ trong quá trình truyền trở lại bản gốc.
Các thiết bị nô lệ sẽ ở một trong hai trạng thái
Không được chấp nhận bởi chủ. Nó đồng bộ hóa trên tín hiệu đồng bộ và truyền trong thời gian ân hạn. Trong một tình huống lý tưởng, chủ sẽ truyền lại một xác nhận trong bước 4 của vòng giao tiếp tiếp theo. Nếu thiết bị không nhận được điều này, nó sẽ đợi một số vòng ngẫu nhiên trước khi thử lại. Điều này cho phép va chạm trong thời gian gia hạn do nhiều thiết bị cố gắng truyền tải để cuối cùng được giải quyết.
Được chủ nhân thừa nhận. Thiết bị truyền dữ liệu cảm biến khi được chỉ báo bằng tín hiệu đồng bộ được gửi bởi chủ. Thiết bị cũng gửi lại xác nhận các lệnh điều khiển trong khoảng thời gian này. Nó bỏ qua các liên lạc đến và từ các nô lệ khác với chủ.
Ý tưởng đằng sau điều này là việc triển khai RS-485 trong bộ điều khiển Atmega sẽ chỉ là phần mềm. Thiết bị rõ ràng không thể truyền và nhận dữ liệu mọi lúc hoặc nó sẽ không hữu ích như một thiết bị cảm biến. Độ dài của một vòng trong thế giới thực cần đủ lớn để sai số trong các chip được tạo trong bộ tạo dao động là không đáng kể. Theo cách này, đồng bộ hóa dựa trên tín hiệu từ tổng thể có thể được giữ trong nhiều vòng mà không thực sự cần phải nhận hoặc truyền dữ liệu.
Trong giai đoạn tham gia, điều này cho phép đồng bộ hóa cho phép nô lệ xác định chính xác khoảng thời gian để truyền yêu cầu tham gia.
Khi nô lệ ở trên mạng, nó cho phép thiết bị biết khi nào cần nghe sự cho phép để truyền và nhận dữ liệu. Điều đó cũng có nghĩa là thiết bị có tùy chọn "bỏ qua" một vòng hoặc vòng liên lạc để thực hiện các phép đo cảm biến, ra lệnh GPIO hoặc bất cứ điều gì tôi cần. Lý thuyết là nếu thiết bị chỉ được phép gửi dữ liệu cảm biến thì nó sẽ không được yêu cầu cho phép lại ngay lập tức, và nó thực sự không có bất kỳ dữ liệu mới nào.
Vấn đề với điều này là do một nô lệ thực sự rơi ra khỏi lớp truyền thông trong ít nhất một vòng, tất cả các lệnh cho nô lệ phải được thừa nhận với một thông điệp gửi lại cho chủ. Điều này cho phép chủ chỉ đơn giản là truyền lại các lệnh cho đến khi được thừa nhận. Điều này cũng có nghĩa là các lệnh nên được mô tả về trạng thái, không phải thay đổi trạng thái. Có một cơ hội rất thực tế một nô lệ sẽ thực thi một lệnh nhiều lần. Tôi không biết chính xác các xác nhận sẽ hoạt động như thế nào, nhưng có lẽ nó sẽ chỉ là một tin nhắn bao gồm một số nhận dạng và tổng kiểm tra.
Bất cứ tổng kiểm tra nào tôi sử dụng trong hệ thống này đều phải rẻ để tính toán vì tôi sẽ thực hiện trên các chip chỉ có tốc độ xung nhịp 8 Mhz hoặc hơn và là máy tính 8 bit.
Hạn chế lớn nhất đối với hệ thống này mà tôi có thể thấy là nếu các nô lệ đều có sức mạnh đạp xe vì một lý do nào đó thì tất cả sẽ va chạm khi cố gắng tham gia mạng lưới trong thời gian ân hạn. Điều này có nghĩa là có thể mất một thời gian rất dài cho đến khi tất cả họ tham gia lại mạng.
Tôi có thiếu điều gì đáng kể với điều này không? Có bất kỳ quyết định lớn nào tôi cần phải thực hiện mà tôi đã hoàn toàn bỏ qua? Sự hiểu biết của tôi về RS-485 là dòng đảng lớn có chính xác không?