1. Trang chủ
  2. » Luận Văn - Báo Cáo

THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED

30 238 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 1,9 MB

Cấu trúc

  • 1. Giới thiệu đề tài (9)
  • 2. Thực hiện (9)
  • 4. Tài liệu tham khảo (26)
  • 5. Phụ lục (26)

Nội dung

File báo cáo đồ án thiết kế hệ thống kiểm soát mực nước sử dụng vi điều khiển esp32 và node-red để lập trình giao diện người dùng .Nguồn : Sinh viên KCN trường ĐH Cần Thơ . Hi vọng sẽ có ích cho các bạn sinh viên cần tham khảo

Giới thiệu đề tài

a Tên và mục tiêu của đề tài:

‒ Tên đề tài: Tìm hiểu cảm biến siêu âm thiết kế hệ thống kiểm soát mực nước

Mục tiêu của bài viết là tìm hiểu về cảm biến siêu âm, thiết kế hệ thống kiểm soát mực nước sử dụng cảm biến này, và kết nối cũng như điều khiển hệ thống thông qua máy tính Các tính năng cơ bản của hệ thống bao gồm khả năng đo lường chính xác mực nước, tự động điều chỉnh và thông báo tình trạng mực nước qua giao diện máy tính.

‒ Đo mực nước có trong bình chứa.

‒ Tự động bơm nước khi bình cạn nước.

‒ Cho phép quan sát mực nước thông qua máy tính.

‒ Cho phép bơm nước thông qua máy tính. c Phương pháp thực hiện:

Sử dụng phần mềm Arduino IDE giúp người dùng lập trình và thao tác trực tiếp trên hệ thống, trong khi phần mềm Node-RED cho phép lập trình và tương tác thông qua máy tính.

Thực hiện

a Mô hình hệ thống: i Mô tả sơ lược về hệ thống:

Sử dụng cảm biến HY-SRF05, bài viết mô tả cách đo và hiển thị mực nước trong thùng chứa Người dùng có thể dễ dàng cài đặt mực nước mong muốn thông qua nút ấn và màn hình LCD, kết hợp với phần mềm node-red để quản lý và giám sát hiệu quả.

Hệ thống bơm nước linh hoạt cho phép người dùng kiểm soát mức nước trong thùng chứa, hiển thị mực nước qua node-red và có khả năng bật tắt bơm ngay lập tức.

Hình 1: Sơ đồ tổng quan hệ thống b Thiết kế phần cứng mạch điện: i Mô tả sơ lược hoạt động của mạch điện:

Hệ thống điện được chia thành hai chức năng chính, chuyển đổi bằng công tắc gạt Chức năng 1 là giám sát và điều khiển tại hiện trường, với màn hình LCD cho phép người giám sát theo dõi % chất lỏng trong bồn Người giám sát có thể thiết lập mức % chất lỏng mong muốn; nếu % chất lỏng hiện tại thấp hơn mức mong muốn, hệ thống sẽ tự động kích hoạt bơm Khi % chất lỏng trong bồn vượt quá mức mong muốn, bơm sẽ tự động ngừng hoạt động.

Hệ thống được trang bị công tắc gạt cho phép người giám sát linh hoạt bật bơm bất kỳ lúc nào Chức năng giám sát và điều khiển trên máy tính cung cấp các tính năng tương tự như chức năng đầu tiên, nhưng cho phép người dùng theo dõi và điều khiển hệ thống từ xa thông qua giao diện dashboard của Node-red Ngoài ra, cần vẽ sơ đồ khối phần cứng mạch điện để minh họa cấu trúc hệ thống.

Hình 2: Sơ đồ khối phần cứng mạch điện iii Thiết kế chi tiết:

Khối cảm biến sử dụng module cảm biến siêu âm HY SRF-05, có chức năng đo khoảng cách bằng cách phát và thu sóng âm, sau đó truyền tín hiệu đến khối điều khiển Sơ đồ nguyên lý kết nối của module này rất quan trọng để hiểu cách hoạt động của nó.

Hình 3: Sơ đồ nguyên lý kết nối của module cảm biến

Khối vi điều khiển sử dụng kit ESP32 NodeMCU-32S có chức năng xử lý tín hiệu từ cảm biến, xuất tín hiệu ra khối hiển thị và điều khiển cơ cấu chấp hành Nó cũng kết nối wifi để tải dữ liệu lên server, cho phép người dùng quan sát thông tin trên máy tính Sơ đồ nguyên lý kết nối của vi điều khiển sẽ giúp hiểu rõ hơn về cách hoạt động của hệ thống.

Hình 4: Sơ đồ nguyên lý kết nối của vi điều khiển

‒ Khối hiển thị: Sử dụng module LCD I2C 16x2 Ç Chức năng: Hỗ trợ người dùng có thể giám sát và điều khiển ở hiện trường

Khối cơ cấu chấp hành sử dụng module relay 5V với opto cách ly, có chức năng nhận tín hiệu từ khối điều khiển để điều khiển máy bơm hoạt động bằng cách tắt hoặc mở relay Sơ đồ nguyên lý kết nối của module relay minh họa cách thức hoạt động này.

Hình 5: Sơ đồ nguyên lý kết nối của module relay

Khối nguồn sử dụng adapter 5V 2A để cung cấp năng lượng cho hệ thống điều khiển Sơ đồ nguyên lý tổng hợp của toàn mạch được thiết kế để đảm bảo hoạt động hiệu quả Phần mềm được mô tả với các chức năng chính nhằm tối ưu hóa hiệu suất của hệ thống.

‒ Cho người dùng nhập vào % mức chất lỏng mong muốn trong bồn chứa và điều khiển bật tắt bơm tự động ở hiện trường.

‒ Tải và nhận dữ liệu từ server cho phép người sử dụng giám sát và điều khiển từ xa thông qua máy tính.

‒ Người dùng có thể linh hoạt chủ động trong việc bật – tắt bơm khi cần thiết. ii Vẽ lưu đồ chương trình chính:

Hình 7: Lưu đồ chương trình chính iii Giải thích chương trình con chính yếu:

‒ Chương trình con tính khoảng cách cách từ giá trị của cảm biến siêu âm

Để tính khoảng cách từ giá trị cảm biến, đầu tiên chúng ta tạo một xung tín hiệu ngắn khoảng 10 microseconds ở chân TRIG của cảm biến Sau đó, sử dụng hàm pulseIn để đo thời gian (tính bằng milisec) từ khi hàm được gọi cho đến khi nhận được tín hiệu tại chân ECHO.

Âm thanh được truyền trong không khí với tốc độ 343m/s Khi một cảm biến phát ra sóng siêu âm và nhận lại sóng phản xạ, chúng ta có thể đo khoảng thời gian từ khi sóng phát ra đến khi thu về (t) Khoảng thời gian này bằng 2 lần thời gian sóng di chuyển đến chướng ngại vật (t/2).

Từ đó, chúng ta có thể tính được khoảng cách từ cảm biến tới chướng ngại vật:

//Khai báo chân của cảm biến siêu âm, đặt thời gian Time_Out là 5s

#define WLAN_SSID "Thu HA"

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883 // use 8883 for SSL

#define AIO_KEY "aio_ZoxU57JgyLYMfxtMg3IkAojLaytR"

//Khai báo các chương trình con void lcddis(); void lcddis1(); void MQTT_connect(); int GetDistance();

//Khai báo các biến của chương trình int Mode; int pumpsw1; int pump = 32; int level; int leveln; int levelpot9; int but1%; int but2&; int but33; int pumpst1; uint16_t levelsub1;

/************ Global State (you don't need to change this!)

// Create an ESP8266 WiFiClient class to connect to the MQTT server.

// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.

Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);

// Setup a feed called 'photocell' for publishing.

// Notice MQTT paths for AIO follow the form: /feeds/ Adafruit_MQTT_Publish levelpub = Adafruit_MQTT_Publish(&mqtt,

AIO_USERNAME "/feeds/levelsystem.distance");

Adafruit_MQTT_Publish pumpst = Adafruit_MQTT_Publish(&mqtt,

AIO_USERNAME "/feeds/levelsystem.realpumpstate");

Adafruit_MQTT_Subscribe pumpsw = Adafruit_MQTT_Subscribe(&mqtt,

AIO_USERNAME "/feeds/levelsystem.pumpswitch");

Adafruit_MQTT_Subscribe levelsub = Adafruit_MQTT_Subscribe(&mqtt,

AIO_USERNAME "/feeds/levelsystem.valueneed"); void setup() { lcd.init(); lcd.backlight();

Serial.println(F("Adafruit MQTT demo"));

// Connect to WiFi access point.

Serial.println("IP address: "); Serial.println(WiFi.localIP());

// Setup MQTT subscription mqtt.subscribe(&pumpsw); mqtt.subscribe(&levelsub);

Để cài đặt trạng thái hoạt động cho các chân, sử dụng lệnh pinMode với các tham số như sau: pinMode(pump, OUTPUT) để thiết lập chân bơm, pinMode(TRIG_PIN, OUTPUT) cho chân kích hoạt, và pinMode(ECHO_PIN, INPUT) cho chân nhận tín hiệu Ngoài ra, cài đặt pinMode cho các nút bấm với INPUT_PULLUP, bao gồm but1, but2 và but3.

Mode=digitalRead(but1); pumpsw1=digitalRead(but2); pumpst1=digitalRead(but3); leveln=analogRead(levelpot);

//Calib lại giá trị biến trở từ giá trị analog sang % leveln = map(leveln,0,4095,0,99); level = GetDistance();

//Calib lại giá trị cảm biến từ giá trị cm sang % level = map(level,2,18,94,1); int i=0; switch(Mode){

//Chế độ điều khiển ở hiện trường case 0:{ lcddis(); if (pumpsw1==0){ //Nếu công tắc bơm bật digitalWrite(pump,HIGH); if (level>0) digitalWrite(pump,LOW);

} else { if (level=leveln) digitalWrite(pump,LOW);

//Chế độ điều khiển trên máy tính case 1:{

//Đọc các giá trị từ server while ((subscription = mqtt.readSubscription(500))) { if (subscription == &pumpsw) {

Serial.println((char *)pumpsw.lastread);

Serial.println((char *)levelsub.lastread); levelsub1 = atoi((char *)levelsub.lastread);

//Nếu công tắc bơm tên dashboard bật if (strcmp((char *)pumpsw.lastread, "true") == 0){ digitalWrite(pump,HIGH);

If (level>0) digitalWrite(pump,LOW); else digitalWrite(pump,LOW);

// Publish dữ liệu lên server để quan sát qua dashboard levelpub.publish(level); delay(1500); pumpst.publish(pumpst1); delay(1500); break;

} void lcddis(){ lcd.setCursor(4,0); lcd.print("MODE:"); lcd.print("MAN"); lcd.setCursor(0,1); lcd.print("LEV:"); lcd.print(level); lcd.print(" LEVN:"); lcd.print(leveln);

} void lcddis1(){ lcd.setCursor(4,0); lcd.print("MODE:"); lcd.print("COM"); lcd.setCursor(0,1); lcd.print("LEV:"); lcd.print(level); lcd.print("% "); lcd.print("LEVN:"); lcd.print(levelsub1); lcd.print("% ");

} void MQTT_connect() { int8_t ret;

// Stop if already connected. if (mqtt.connected()) { return;

Serial.print("Connecting to MQTT "); uint8_t retries = 3; while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected Serial.println(mqtt.connectErrorString(ret));

Serial.println("Retrying MQTT connection in 5 seconds "); mqtt.disconnect(); delay(5000); // wait 5 seconds retries ; if (retries == 0) {

// basically die and wait for WDT to reset me while (1);

{ int duration, distanceCm; digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); duration = pulseIn(ECHO_PIN, HIGH, TIME_OUT); i Mô tả chức năng chính:

‒ Truyền dữ liệu từ xa lên server thông qua wifi

‒ Quan sát mức chất lỏng và điều khiển hệ thống thông qua giao diện dashboard của công cụ Node-red

‒ Quan sát được trạng thái bật – tắt của bơm ii Giao diện chương trình:

Hình 9: Giao diện dashboard điều khiển của Node-red iii Đoạn code các chức năng chính:

‒ Code chương trình của Node-red:

The Adafruit dashboard interface allows users to publish data from a slider to the server, enabling the ESP32 to subscribe to this topic for retrieving the user-defined percentage level input from the computer This information is then displayed on an LCD and used to control a pump Additionally, the system subscribes to this topic to facilitate interaction between the server dashboard and the Node-RED dashboard It also publishes the pump switch status and subscribes to the ultrasonic sensor readings, which are displayed on a gauge and line graph.

3 Kết quả thực hiện: a Mô hình thực tế, phần cứng mạch điện (hình ảnh có chú thích, nhận xét):

Hệ thống đã thể hiện kết quả thực hiện các tính năng đặt ra một cách rõ ràng Đối với tính năng điều khiển ở hiện trường, hệ thống hoạt động ổn định với tốc độ phản hồi nhanh, cho phép người giám sát dễ dàng thao tác Trong khi đó, tính năng điều khiển qua máy tính cũng cho thấy sự ổn định, mặc dù tốc độ đáp ứng của hệ thống cần cải thiện.

Công tắc gạt chuyển chế độ và công tắc bật bơm

Biến trở điều chỉnh mực chất lỏng mong muốn

Hệ thống điều khiển bơm được trang bị relay bật – tắt, cùng với màn hình LCD quan sát tại hiện trường Cảm biến siêu âm giúp thu thập dữ liệu chính xác, trong khi khả năng kết nối đơn giản cho phép tải dữ liệu từ xa lên server qua wifi Giao diện giám sát trực quan giúp người dùng dễ dàng vận hành và quản lý hệ thống hiệu quả.

Hệ thống hiện tại chỉ dừng lại ở mức mô hình demo và chưa kết nối với động cơ bơm AC thực tế, điều này hạn chế khả năng áp dụng trong thực tiễn Thêm vào đó, do giới hạn của server, tốc độ xuất bản và đăng ký dữ liệu từ server vẫn bị trễ hơn so với thực tế Để cải thiện, cần nghiên cứu và phát triển các giải pháp tối ưu hơn cho kết nối và xử lý dữ liệu.

‒ Sử dụng module relay chịu dòng lớn hơn để có thể điều khiển được máy bơm công suất lớn (0.5 – 1hp).

‒ Sử dụng server có đáp ứng truyền tải dữ liệu tốt hơn để tối ưu hệ thống giám sát và điều khiển trên máy tính.

‒ Phát triển thêm việc giám sát và điều khiển thông qua ứng dụng Blynk trên smartphone.

Ngày đăng: 05/01/2022, 14:55

HÌNH ẢNH LIÊN QUAN

Hình 1: Sơ đồ tổng quan hệ thống - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
Hình 1 Sơ đồ tổng quan hệ thống (Trang 10)
Hình  2: Sơ đồ khối phần cứng mạch điện - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
nh 2: Sơ đồ khối phần cứng mạch điện (Trang 11)
Hình  3: Sơ đồ nguyên lý kết nối của module cảm biến - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
nh 3: Sơ đồ nguyên lý kết nối của module cảm biến (Trang 12)
Hình  4: Sơ đồ nguyên lý kết nối của vi điều khiển - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
nh 4: Sơ đồ nguyên lý kết nối của vi điều khiển (Trang 12)
Hình  7: Lưu đồ chương trình chính - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
nh 7: Lưu đồ chương trình chính (Trang 14)
Hình  8: Code chương trình con tính khoảng cách từ giá trị cảm biến - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
nh 8: Code chương trình con tính khoảng cách từ giá trị cảm biến (Trang 15)
Hình  9: Giao diện dashboard điều khiển của Node-red - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
nh 9: Giao diện dashboard điều khiển của Node-red (Trang 22)
Hình  10: Code Node-red - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
nh 10: Code Node-red (Trang 23)
Hình  11: Giao diện điều khiển trên adafruit - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
nh 11: Giao diện điều khiển trên adafruit (Trang 23)
Hình  12: Mô hình thực tế - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
nh 12: Mô hình thực tế (Trang 25)
Bảng 1: Kế hoạch và thời gian thực hiện - THIẾT KẾ HỆ THỐNG KIỂM SOÁT MỰC NƯỚC SỬ DỤNG CẢM BIẾN SIÊU ÂM VÀ NODE-RED
Bảng 1 Kế hoạch và thời gian thực hiện (Trang 26)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w