Mục lục:

Mạng cảm biến không dây chi phí thấp trên băng tần 433MHz: 5 bước (có hình ảnh)
Mạng cảm biến không dây chi phí thấp trên băng tần 433MHz: 5 bước (có hình ảnh)

Video: Mạng cảm biến không dây chi phí thấp trên băng tần 433MHz: 5 bước (có hình ảnh)

Video: Mạng cảm biến không dây chi phí thấp trên băng tần 433MHz: 5 bước (có hình ảnh)
Video: Hướng dẫn sử dụng mô đun Lora E32 433Mhz SX1278 2024, Tháng mười một
Anonim
Mạng cảm biến không dây chi phí thấp trên băng tần 433MHz
Mạng cảm biến không dây chi phí thấp trên băng tần 433MHz

Rất cám ơn Teresa Rajba đã vui lòng cho tôi chấp nhận sử dụng dữ liệu từ các ấn phẩm của họ trong bài viết này

* Trong hình trên - năm đơn vị bộ gửi cảm biến mà tôi đã sử dụng để thử nghiệm

Mạng cảm biến không dây là gì?

Một định nghĩa đơn giản sẽ là: mạng cảm biến không dây đề cập đến một nhóm các thiết bị điện tử được phân phối trên một khu vực nhất định để theo dõi và ghi lại dữ liệu môi trường, được truyền không dây đến một vị trí trung tâm để được xử lý và lưu trữ.

Ngày nay Mạng cảm biến không dây có thể được sử dụng theo một số cách, dưới đây chỉ là một vài ví dụ:

  • Các khu vực giám sát sinh thái rừng, sông, hồ, biển và đại dương;
  • Khả năng cảnh báo trong trường hợp o tấn công khủng bố, hóa học, sinh học, dịch bệnh;
  • Hệ thống giám sát trẻ em, người già, bệnh nhân hoặc những người có nhu cầu đặc biệt;
  • Hệ thống giám sát trong nông nghiệp và nhà kính;
  • Hệ thống giám sát thời tiết-Dự báo;
  • Giám sát giao thông thành phố, trường học, bãi đỗ xe;

Và nhiều, rất nhiều ứng dụng khác.

Trong bài báo này, tôi muốn trình bày kết quả của một thử nghiệm với mạng cảm biến không dây đã được sử dụng để theo dõi dữ liệu nhiệt độ và độ ẩm, với sự thay đổi chậm và tương đối có thể dự đoán được. Đối với thử nghiệm này, tôi đã chọn sử dụng bộ gửi cảm biến do tôi tự xây dựng bằng cách sử dụng các mô-đun giá cả phải chăng. Đầu thu cũng là loại DIY, giao tiếp là một chiều (trên băng tần 433 MHz), nghĩa là các cảm biến chỉ truyền dữ liệu và vị trí trung tâm chỉ nhận. Không có giao tiếp giữa các cảm biến và từ bộ thu đến bộ cảm biến.

Nhưng tại sao lại chọn sử dụng nhiều bộ phát và chỉ một bộ thu? Rõ ràng lý do đầu tiên sẽ là "làm cho nó đơn giản". Việc lắp ráp càng đơn giản thì càng ít khả năng hỏng hóc và chắc chắn việc sửa chữa và thay thế các bộ phận đơn lẻ trong trường hợp trục trặc sẽ dễ dàng hơn rất nhiều. Mức tiêu thụ điện năng cũng thấp hơn, pin dùng được lâu hơn (các cảm biến chỉ tiêu thụ trong khi theo dõi và nhận, thời gian còn lại thiết bị sẽ ở chế độ ngủ sâu). Thực tế là nó đơn giản làm cho thiết bị cũng rẻ. Một khía cạnh khác cần lưu ý là vùng phủ sóng. Tại sao? Việc chế tạo và sử dụng bộ thu nhạy sẽ dễ dàng hơn nhiều so với việc có bộ thu nhạy và bộ phát mạnh ở cả cảm biến và mô-đun trung tâm (điều này là cần thiết để giao tiếp hai chiều tốt). Với một bộ thu nhạy và chất lượng tốt, có thể nhận dữ liệu từ khoảng cách xa, nhưng việc phát dữ liệu cho cùng một khoảng cách đòi hỏi công suất phát cao và điều này đi kèm với chi phí cao, tiêu thụ điện và (đừng quên) khả năng vượt quá công suất máy phát tối đa hợp pháp trên băng tần 433 MHz. Bằng cách sử dụng bộ thu chất lượng trung bình, giá rẻ nhưng có ăng-ten chất lượng cao (thậm chí là tự làm) và bộ phát giá rẻ có ăng-ten chất lượng tốt, chúng tôi có thể đạt được kết quả xuất sắc với chi phí chỉ bằng một phần nhỏ của mạng cảm biến không dây hiện có.

Bước 1: Cân nhắc lý thuyết

Ý tưởng xây dựng một mạng cảm biến không dây để theo dõi nhiệt độ, độ ẩm của không khí và đất ở các khu vực khác nhau trong nhà kính đã nảy ra trong đầu tôi cách đây rất lâu, gần 10 năm. Tôi muốn xây dựng mạng 1 dây và sử dụng cảm biến nhiệt độ và độ ẩm 1 dây. Thật không may, 10 năm trước, cảm biến độ ẩm rất hiếm và đắt tiền (mặc dù cảm biến nhiệt độ đã phổ biến) và vì việc rải dây khắp nhà kính dường như không phải là một lựa chọn nên tôi đã từ bỏ ý định khá nhanh chóng.

Tuy nhiên, bây giờ tình hình đã thay đổi hoàn toàn. Chúng tôi có thể tìm thấy các cảm biến giá rẻ và chất lượng tốt (nhiệt độ và độ ẩm), đồng thời chúng tôi cũng có quyền truy cập vào các thiết bị phát và thu giá rẻ trên băng tần 433 MHz. Chỉ có một vấn đề: nếu chúng ta có nhiều cảm biến hơn (giả sử là 20) thì làm cách nào để giải quyết các vụ va chạm (xin lưu ý rằng đây là giao tiếp một chiều), nghĩa là chồng chéo phát xạ của 2 hoặc nhiều cảm biến? Trong khi tìm kiếm một giải pháp khả thi, tôi đã xem qua bài báo rất thú vị này:

Cảm biến không dây hội tụ đúc dựa trên quy trình hoạt động ngẫu nhiên - bởi RAJBA, T. và RAJBA, S.

Xác suất va chạm trong Mạng cảm biến không dây với việc gửi ngẫu nhiên - bởi RAJBA S. và RAJBA. NS

Về cơ bản, các tác giả cho chúng ta thấy rằng xác suất va chạm trong mạng cảm biến không dây có thể được tính toán nếu các gói được phát ra tại các thời điểm nhất định theo phân phối poissonian (hàm mũ).

Trích từ bài báo trên liệt kê các đặc điểm của mạng được nghiên cứu.

  • một số lượng khá lớn các đơn vị bộ gửi cảm biến N;
  • các đơn vị người gửi cảm biến vẫn hoàn toàn độc lập và việc bật hoặc tắt chúng không ảnh hưởng đến hoạt động của mạng;
  • tất cả các đơn vị cảm biến gửi (hoặc một phần của chúng) có thể di động với điều kiện là chúng nằm trong phạm vi vô tuyến của trạm nhận;
  • các thông số vật lý thay đổi chậm là đối tượng của các phép đo nghĩa là không cần truyền dữ liệu quá thường xuyên (ví dụ: vài phút một lần hoặc vài chục phút);
  • quá trình truyền thuộc loại một chiều, tức là từ bộ phận gửi cảm biến đến điểm nhận trong khoảng thời gian trung bình T. Thông tin được truyền trong giao thức tại tP khoảng thời gian;
  • bất kỳ cảm biến nào được chọn bắt đầu truyền ngẫu nhiên tại thời điểm Poisson. PASTA (Poisson Lượt đến Xem Trung bình Thời gian) sẽ được sử dụng để biện minh cho việc gửi các tàu thăm dò tại các kỷ nguyên Poisson;
  • tất cả các đơn vị người gửi cảm biến vẫn độc lập ngẫu nhiên và chúng sẽ truyền thông tin vào một thời điểm được chọn ngẫu nhiên của thời gian tP thời lượng và thời gian lặp lại trung bình của T;
  • nếu một hoặc nhiều cảm biến bắt đầu truyền trong khi giao thức của tP thời lượng đang được truyền từ một cảm biến khác, một tình huống như vậy được gọi là va chạm. Sự va chạm khiến trạm gốc trung tâm không thể tiếp nhận thông tin một cách chính xác.

Nó gần như hoàn toàn phù hợp với mạng cảm biến mà tôi muốn kiểm tra…

Gần như.

Tôi không nói rằng tôi hoàn toàn hiểu toán học trong bài báo, nhưng trên cơ sở dữ liệu được trình bày và kết luận, tôi đã có thể hiểu một chút về nó. Điều duy nhất là một giá trị được sử dụng trong giấy làm tôi lo lắng một chút:). Nó là biến tP - thời lượng truyền dữ liệu được giả định là 3,2x10-5 NS. Vì vậy, thời gian truyền dữ liệu thu thập được sẽ là 3,2 us! Điều này không thể được thực hiện trên băng tần 433 MHz. Tôi muốn sử dụng rcswitch hoặc radiohead để lập trình cảm biến máy phát. Nghiên cứu mã của hai thư viện, tôi đi đến kết luận rằng thời gian truyền nhỏ nhất sẽ là 20ms, cao hơn nhiều so với giá trị 3,2 us. Với máy phát 2,4 GHz, có thể tP thời gian quá nhỏ… nhưng đó là một câu chuyện khác.

Nếu chúng ta áp dụng công thức được đề xuất bởi các tác giả của bài báo này, kết quả sẽ là:

Dữ liệu ban đầu (một ví dụ):

  • Số cảm biến N = 20;
  • Thời lượng truyền dữ liệu tP= 20x10-3 s (0,020 giây)
  • Khoảng thời gian truyền trung bình T = 180s

Công thức:

Xác suất va chạm trên khoảng thời gian T là

Hình ảnh
Hình ảnh

nếu chúng ta tính đến dữ liệu ban đầu, xác suất va chạm trong khoảng thời gian T sẽ là 0,043519

Giá trị này, cho biết khả năng có 4,35 va chạm trên 100 phép đo, theo ý kiến của tôi, là khá tốt. Xác suất có thể cải thiện nếu chúng ta tăng thời gian truyền trung bình, vì vậy ở giá trị 300 giây, chúng ta sẽ có xác suất là 0,026332, tức là 2,6 va chạm trên 100 phép đo. Nếu chúng ta xem xét rằng chúng ta có thể mong đợi mất dữ liệu gói trong quá trình hoạt động của hệ thống (ví dụ tùy thuộc vào điều kiện thời tiết) thì con số này thực sự tuyệt vời.

Tôi muốn thực hiện một mô phỏng của loại mạng này nhưng cũng là một loại trợ lý thiết kế, vì vậy tôi đã tạo một chương trình nhỏ bằng C, bạn có thể tìm thấy mã nguồn trên github (cũng là một tệp nhị phân được biên dịch đang chạy trong dòng lệnh windows - phóng thích).

Dữ liệu đầu vào:

  • sensor_number - số lượng cảm biến trên mạng;
  • số đo_số - số phép đo cần mô phỏng;
  • thời gian trung bình giữa các lần truyền dữ liệu liên tiếp;
  • thời gian truyền - thời lượng truyền dữ liệu hiệu quả.

Đầu ra:

  • thời gian đo tối đa được tính toán;
  • danh sách các va chạm giữa hai cảm biến;
  • số lần va chạm;
  • xác suất lý thuyết của các vụ va chạm.

Kết quả khá thú vị:)

Lý thuyết là đủ rồi, mình không muốn nhấn mạnh thêm vào phần lý thuyết, các bài viết và mã nguồn khá hùng hồn nên tốt hơn hết mình nên đi thực tế, triển khai hiệu quả mạng cảm biến không dây và kết quả thử nghiệm.

Bước 2: Triển khai thực tế - Phần cứng

Đối với cảm biến máy phát, chúng ta sẽ cần các thành phần sau:

  • Vi điều khiển ATtiny85 1,11 $;
  • Ổ cắm mạch tích hợp 8DIP 0,046 $;
  • Cảm biến nhiệt độ / độ ẩm DHT11 0,74 $;
  • Mô-đun máy phát H34A 433MHz 0,73 $;
  • Giá đỡ pin 4xAA với công tắc 1 $;

Tổng 3,63 $;

Máy thu được sử dụng cho các thử nghiệm là Arduino UNO (chỉ để thử nghiệm) và mô-đun nhận H3V4F (0,66 $) với một ăng-ten hồ quang rẻ tiền (0,32 $).

Sơ đồ cảm biến-người gửi

Hình ảnh
Hình ảnh

Bộ cảm biến-máy phát được cấp nguồn bằng pin 3xAA, 1,5v (trong ngăn thứ tư của ngăn chứa pin có cụm điện tử). Như bạn có thể thấy nguồn điện của máy phát và cảm biến nhiệt độ-độ ẩm được nối với chân PB0 của bộ vi điều khiển (máy phát và cảm biến được cấp nguồn khi chân này được đặt ở mức CAO). Vì vậy, khi bộ vi điều khiển ở chế độ ngủ sâu, nó có thể đạt mức tiêu thụ dòng điện 4,7uA. Xem xét rằng thời gian đánh thức của cảm biến phát sẽ là khoảng 3 giây (đo, truyền, v.v.) và thời gian trung bình giữa các lần truyền là 180 giây (như ví dụ trong chương trước), pin sẽ chống lại khá nhiều. Với một số pin kiềm chất lượng tốt (tức là 2000 mAh), quyền tự chủ có thể hơn 10 tháng theo tính toán trên omnicalculator.com (trong đó tổng mức tiêu thụ hiện tại là: cảm biến - 1,5mA, mô-đun phát - 3,5mA và vi điều khiển ATtiny85 - 5mA, tổng 10mA).

Trong ảnh bên dưới, bạn có thể thấy cụm máy gửi cảm biến gần như đã hoàn thiện.

Hình ảnh
Hình ảnh

Dưới đây là hình ảnh của bộ nhận thử nghiệm.

Hình ảnh
Hình ảnh

Bước 3: Triển khai thực tế - Phần mềm

Phần mềm được tải lên đang chạy lên bộ vi điều khiển attiny85, thành phần chính của bộ phận gửi cảm biến, có mục đích đọc dữ liệu được cung cấp bởi cảm biến, chuyển đổi dữ liệu đó để được truyền qua vô tuyến và truyền nó trong các khung thời gian Poisson (phân phối theo hàm mũ hoặc PASTA - Lượt đến Poisson Xem thời gian trung bình). Ngoài ra, bằng cách sử dụng một chức năng đơn giản, nó giám sát trạng thái của pin và đưa ra cảnh báo nếu điện áp cần thiết cho cảm biến không còn được cung cấp. Mã nguồn có sẵn trên github. Mã cho bộ nhận thử nghiệm rất đơn giản, tôi sẽ đăng nó dưới đây.

// thư viện rcswitch được sửa đổi từ https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// mã là phiên bản sửa đổi từ các ví dụ của thư viện rcswitch gốc #include RCSwitch mySwitch = RCSwitch (); dữ liệu dài không dấu = 0; void setup () {Serial.begin (9600); mySwitch.enableReceive (0); // Máy thu trên ngắt 0 => đó là pin # 2} void loop () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceiveValue (); // đầu ra (mySwitch.getReceiveValue (), mySwitch.getReceiveBitlength (), mySwitch.getReceiveDelay (), mySwitch.getReceiveRawdata (), mySwitch.getReceiveProtocol ()); int ẩm = bitExtracted (dữ liệu, 7, 1); // ít có ý nghĩa hơn 7bits từ vị trí 1 - bit đầu tiên ngoài cùng bên phải int nhiệt độ = bitExtracted (dữ liệu, 7, 8); // 7bits tiếp theo từ vị trí 8 sang phải và cứ tiếp tục như vậy int v_min = bitExtracted (data, 1, 15); int pack_id = bitExtracted (data, 3, 16); // 3bits - 8 id gói từ 0 đến 7 int sensor_id = bitExtracted (data, 6, 19); // 6 bit cho 64 ID cảm biến - tổng 24 bit Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (nhiệt độ); Serial.print (","); Serial.print (độ ẩm); Serial.println (); mySwitch.resetAvailable (); }} // mã từ https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (unsigned long number, int k, int p) {return (((1 (p - 1)));}

Tôi đã cố gắng đưa vào càng nhiều bình luận càng tốt để làm cho mọi thứ dễ hiểu hơn.

Để gỡ lỗi, tôi đã sử dụng thư viện phần mềm và bảng phát triển attiny85 với trình lập trình USBasp (xem thêm phần hướng dẫn của tôi về điều này). Liên kết nối tiếp đã được thực hiện với bộ chuyển đổi Serial sang TTL (với chip PL2303) được kết nối với các chân uốn cong (3 và 4) của bảng phát triển (xem hình bên dưới). Tất cả những điều này đã giúp ích vô giá để hoàn thành mã.

Hình ảnh
Hình ảnh

Bước 4: Kết quả kiểm tra

Kết quả kiểm tra
Kết quả kiểm tra
Kết quả kiểm tra
Kết quả kiểm tra

Tôi đã tạo 5 đơn vị gửi cảm biến thu thập và gửi các giá trị được đo bằng cảm biến DHT11. Tôi đã ghi lại và lưu các phép đo, với sự trợ giúp của máy thu thử nghiệm và chương trình mô phỏng thiết bị đầu cuối (foxterm), trong ba ngày. Tôi đã chọn khoảng thời gian 48 giờ để học. Tôi không nhất thiết phải quan tâm đến các giá trị đo được (ví dụ như cảm biến 2, nó hiển thị cho tôi các giá trị sai) nhưng về số lần va chạm. Ngoài ra, các cảm biến đã được đặt rất gần (ở độ cao 4-5 m) bởi máy thu để loại bỏ các nguyên nhân khác gây mất gói. Kết quả kiểm tra đã được lưu trong tệp cvs và được tải lên (xem tệp bên dưới). Tôi cũng đã tải lên một tệp excel dựa trên tệp csv này. Tôi đã chụp một số ảnh chụp màn hình để cho bạn thấy một vụ va chạm trông như thế nào (tất nhiên là trong các bài kiểm tra của tôi), tôi cũng đã thêm nhận xét vào mỗi ảnh chụp màn hình.

Bạn có thể thắc mắc tại sao tôi không sử dụng dịch vụ trình tải dữ liệu, ví dụ như ThingSpeak. Thực tế là tôi có nhiều bản ghi, nhiều cảm biến và dữ liệu đến thường xuyên với khoảng thời gian không đều và các dịch vụ IoT trực tuyến chỉ cho phép dữ liệu ở một số lượng cảm biến nhất định và chỉ ở những khoảng thời gian khá lớn. Tôi đang nghĩ trong tương lai sẽ cài đặt và định cấu hình máy chủ IoT của riêng mình.

Cuối cùng, 4598 phép đo trên 5 đơn vị gửi cảm biến (khoảng 920 / cảm biến) dẫn đến tổng cộng 5 lần va chạm trong khoảng thời gian 48 giờ (0,5435 lần va chạm / 100 lần đo). Làm một số phép toán (sử dụng chương trình wsn_test với dữ liệu ban đầu: 5 cảm biến, thời gian trung bình 180 giây, thời gian truyền 110 ms) xác suất va chạm sẽ là 0,015185 (1,52 va chạm / 100 phép đo). Kết quả thực tế còn tốt hơn kết quả lý thuyết phải không?:)

Hình ảnh
Hình ảnh

Dù sao cũng có 18 gói tin bị mất trong giai đoạn này, vì vậy các va chạm không thực sự quá quan trọng trong vấn đề này. Tất nhiên việc thử nghiệm nên diễn ra trong một thời gian dài hơn để có kết quả chính xác nhất nhưng theo tôi đó là một thành công ngay cả trong điều kiện này và hoàn toàn xác nhận các giả thiết lý thuyết.

Bước 5: Kết luận

Ứng dụng ngay lập tức

Trong một nhà kính lớn, một số loại cây trồng được trồng. Nếu việc tưới tiêu được thực hiện thủ công mà không theo dõi khí hậu, không có bất kỳ sự tự động hóa nào, không có hồ sơ dữ liệu thì sẽ có nguy cơ tưới quá mức hoặc thiếu nước và lượng nước tiêu thụ cao, không có bằng chứng cho việc tối ưu hóa tiêu thụ nước, thì sẽ có rủi ro cho cây trồng trong Tổng quan. Để tránh điều này, chúng ta có thể sử dụng mạng cảm biến không dây:)

Cảm biến nhiệt độ, cảm biến độ ẩm không khí, cảm biến độ ẩm đất có thể được đặt xung quanh trong nhà kính và với sự trợ giúp của dữ liệu được truyền, một số hành động có thể được thực hiện: van điện khởi động để cho nước chảy khi cần thiết, khởi động quạt điện để giảm nhiệt độ ở các khu vực khác nhau, khởi động máy sưởi khi cần thiết và tất cả dữ liệu có thể được lưu trữ để phân tích trong tương lai. Ngoài ra, hệ thống có thể cung cấp giao diện web có thể truy cập ở mọi nơi và cảnh báo qua email hoặc SMS trong trường hợp điều kiện bất thường.

Cái gì tiếp theo?

  • Thử nghiệm với số lượng lớn hơn các cảm biến;
  • Kiểm tra thời gian thực với cảm biến từ xa trong vùng phủ sóng;
  • Cài đặt và cấu hình máy chủ IoT cục bộ (trên Raspberry Pi chẳng hạn);
  • Thử nghiệm cũng với máy phát (thu phát) -cảm biến trên 2.4Ghz.

vì vậy… sẽ được tiếp tục…:)

KHUYẾN CÁO: Việc sử dụng dải tần 433MHz trong khu vực của bạn có thể phải tuân theo các quy định về tần số vô tuyến. Vui lòng kiểm tra tính hợp pháp của bạn trước khi thử dự án này

Cuộc thi cảm biến
Cuộc thi cảm biến
Cuộc thi cảm biến
Cuộc thi cảm biến

Về nhì trong cuộc thi Cảm biến

Đề xuất: