48 Thơng số kỹ thuật - STM32F103 RBT6 có 64pin. - Vdd-Vss=3.3V - Vin=5Vdc - VSSX –VSS=50mV - ∆VDDx=50mV
Khối nguồn cung cấp cho STM32F
Hình 4.4: Khối nguồn cấp STM32F Khối nạp cho STM32F
49 Khối RF
50 Khối Nguồn chính
51
Hình 4.8: Khối Sim
Khối hiển thị
Màn hình text LCD 16x02 xanh dương sử dụng driver HD44780, có khả năng hiển thị 2 dòng với mỗi dịng 16 ký tự, màn hình có độ bền cao, rất phổ biến trên thị trường, có ưu điểm là phẳng, cho hình ảnh sáng, chân thật và tiết kiệm năng lượng.
52
Thông số kỹ thuật
- Điện áp hoạt động là 5 V. - Kích thước: 80 x 36 x 12.5 mm
- Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với
- Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện.
- Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện năng hơn.
53
54
4.2.3. Sơ đồ đi dây Board Master STM32F103 RBT6
Hình 4.11 Sơ đồ đi dây Board Xử lý trung tâm
Khối cảm biến
Module cảm biến độ ẩm đất:
Cảm biến phát hiện độ ẩm đất, bình thường đầu ra mức thấp, khi đất thiếu nước đầu ra sẽ mức cao. Module có thể sử dụng để tưới nước tự động.
Độ nhạy của cảm biến độ ẩm đất có thể điều chỉnh được (Bằng cách điều chỉnh biến trở màu xanh trên board mạch).
Phần đầu dò được cắm vào đất để phát hiện độ ẩm, khi độ ầm của đất đạt ngưỡng thiết lập, đầu ra DO sẽ chuyển trạng thái từ mức thấp lên mức cao.
Thông số kỹ thuật
- Điện áp làm việc 3.3V ~ 5V - Có lỗ cố định để lắp đặt thuận tiện - PCB có kích thước nhỏ 3.2 x 1.4 cm
- Sử dung chip LM393 để so sánh, ổn định làm việc Đầu kết nối sừ dung 3 dây
VCC 3.3V ~ 5V
GND GND của nguồn ngoài
DO Đầu ra tín hiệu số (mức cao hoặc mức thấp) AO Đầu ra tín hiệu tương tự (Analog)
55 Module cảm biến nhiệt độ độ ẩm DHT21
Điện năng tiêu thụ cực thấp, khoảng cách truyền dẫn, hiệu chuẩn hoàn toàn tự động, sử dụng các cảm biến độ ẩm điện dung, hồn tồn hốn đổi cho nhau, tiêu chuẩn kỹ thuật số đầu ra duy nhất- một bust, ổn định lâu dài tuyệt vời, thiết bị đo nhiệt độ chính xác cao. Thơng số kỹ thuật - Áp nguồn: 3.3 - 5V - Dòng tiêu thụ: 300 uA - Kích thước: 58.8 x 26.7 x 13.8 (mm) - Model: AM2301 - Độ phân giải chính xác: 0.1 - Khoảng đo: 0100% RH
- Khoảng đo nhiệt độ: -40 ℃ ~ 80 ℃ - Đo lường chính xác độ ẩm: ± 3% RH - Đo lường chính xác nhiệt độ: ± 0.5 ℃
Khối tải
Trong đề tài “Thiết kế hệ thống điều khiển và giám sát nhà nấm sử dụng Web Server và SMS “ nhóm sử dụng tải như: đèn, quạt, bơm nước.
56
57
CHƯƠNG 5
THI CÔNG HỆ THỐNG
5.1. GIỚI THIỆU
Trong chương này là q trình thi cơng PCB, lập trình, lắp ráp phần cứng và test mạch. Bên cạnh đó là hình vẽ được chụp từ mơ hình thực tế của hệ thống, hình chụp các kết quả chạy của hệ thống.
Tồn bộ mạch trong hệ thống được nhóm em thực hiện bằng phần mềm vẽ mạch in Altium.
5.2. THI CÔNG BOARD MẠCH
5.2.1. Mạch điều khiển trung tâm (chính)
58
Hình 5.2: Hình ảnh thực tế mạch điều khiển trung tâm (chính)
Mạch điều khiển trung tâm (chính) : bao gồm các mạch khác gắn trên nó như: Module SIM800C, Mạch RF, Mạch nguồn cấp và Chip trung tâm STM32F103 RBT6.
59
5.2.2. Mạch RF:
Hình 5.3: Mơ phỏng bằng Altium.
5.2.3. Module SIM 800C
60
5.2.4. Mạch chip trung tâm STM32F103 RBT6
Hình 5.5 Hình ảnh thực tế STM 32F103
5.2.5. Mạch nguồn
61
Trong quá trình test vận hành gặp xự cố, thời gian không đủ nhiều để đặt lại linh kiện từ nước ngoài về nên chuyển sang dùng mạng wifi bằng module MSP8266 thay cho mạng RFID dùng module C1310. Vận hành được việc giám sát và điều khiển web server nhưng mất tính năng SMS.
Module Wifi ESP8266 NodeMCU
Module Wifi ESP8266 NodeMCU Lua là kit phát triển dựa trên nền chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử dụng và lập trình các ứng dụng trên ESP8266 trở nên rất đơn giản.
Module Wifi ESP8266 NodeMCU Lua được dùng cho các ứng dụng cần kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt là các ứng dụng liên quan đến IoT.
62
Sơ đồ đi dây tồn hệ thống
Tín hiệu từ cảm biến nhiệt độ DTH21 và cảm biến độ ẩm đất được truyền về chân D3 và A0 của MSP8266 sẽ được xử lý so sánh với các giá trị đã đặt trước để điều khiển ngõ ra đóng cắt Role thơng qua chân D7. Qúa trình xử lý sẽ được đưa lên và hiển thị trên Web server với ID HTTP://192.168.43.17/
63
5.3. ĐĨNG GĨI VÀ THI CƠNG MƠ HÌNH
64
65
5.4. LƯU ĐỒ GIẢI THUẬT CỦA HỆ THỐNG
5.5. LẬP TRÌNH VÀ TEST HỆ THỐNG 5.5.1. Tổng quan về phần mềm lập trình 5.5.1. Tổng quan về phần mềm lập trình
Giới thiệu phần mềm lập trình Arduino IDE
Mơi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng đa nền tảng được viết bằng Java, và từ IDE này sẽ được sử dụng cho ngơn ngữ lập trình xử lý và Wiring. Nó được thiết kế để dành cho những người mới tập làm quen với lĩnh vực phát triển phần mềm.
Arduino IDE bao gồm một chương trình code editor với các chức năng như đánh dấu cú pháp, và tự động canh lề, cũng như biên dịch và upload chương trình lên board chỉ với 1 cú nhấp chuột.
Một chương trình hoặc code viết cho Arduino được gọi là một sketch. Arduino IDE có thể tải về miễn phí tại trang chủ của Arduino với phiên bản mới nhất là 1.8.9 hoặc người dùng có thể dùng trực tiếp phần mềm Arduino IDE trên giao diện web với tên gọi Arduino Web Editor.
66
Hướng dẫn cài đặt phần mềm Arduino IDE
Truy cập địa chỉ: https://www.arduino.cc/en/Main/Software .
Hình 5.9 Các vùng giao diện cơ bản
Vùng lệnh: bao gồm các nút lệnh menu (File, Edit, Sketch, Tools, Help). Phía dưới là các icon cho phép sử dụng nhanh các chức năng thường dùng của IDE.
Vùng soạn thảo chương trình: vùng soạn thảo chương trình được mặc định bằng 2 chương trình là hàm setup() và hàm loop():
• setup (): hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt và chỉ chạy 1 lần trong suốt chương trình.
• loop (): hàm này được chạy sau hàm setup() và được lặp đi lặp lại cho đến khi tắt nguồn hệ thống.
Vùng thông báo: là vùng thông báo cho người dung biết những lỗi trong chương trình. Nếu chương trình khơng có lỗi và được biên dịch thành cơng thì sẽ thơng báo cho người dùng biết thơng tin dung lượng file chương trình và bộ nhớ ram đã sử dụng.
67
5.5.2. CODE SỬ DỤNG TRONG ĐỀ TÀI
#include <DHT.h>
#include <ESP8266WiFi.h>
// #include "DHT.h" // DHT11 temperature and humidity sensor Predefined library
#define DHTTYPE DHT22 // DHT 11
//#define dht_dpin 0 //GPIO-0 D3 pin of nodemcu #define DHTPIN 4
int Raw = A0; //Analog channel A0 as used to measure temperature int threshold = 16; //Nodemcu digital pin water sensor read-GPIO16---D0 of NodeMCU
int Solenoid = 13; // GPIO13---D7 of NodeMCU--Motor connection
const char* ssid = "KLTN IUH"; // ten WIFI const char* password = "iuh12345"; // mat khau WIFI
//DHT dht(dht_dpin, DHTTYPE); DHT dht(DHTPIN, DHTTYPE); WiFiServer server(80); void setup(void) { dht.begin(); Serial.begin(9600); delay(10);
68
pinMode(threshold,INPUT_PULLUP); //Pin#13 as output-Activate pullup at pin 13
pinMode(Solenoid, OUTPUT); //D7 as output digitalWrite(Solenoid, LOW); //Deactivate Solenoid // Connect to WiFi network
Serial.println();
Serial.print("Connecting to "); Serial.println(ssid);
WiFi.begin(ssid, password); //Begin WiFi
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected");
// Start the server server.begin();
Serial.println("Server started");
// Print the IP address on serial monitor Serial.print("Use this URL to connect: ");
Serial.print("http://"); //URL IP to be typed in mobile/desktop browser Serial.print(WiFi.localIP());
Serial.println("/"); }
69 void loop() {
// Check if a client has connected WiFiClient client = server.available(); if (!client) {
return; }
// Wait until the client sends some data Serial.println("new client");
while(!client.available()){ delay(1);
}
// Read the first line of the request
String request = client.readStringUntil('\r'); Serial.println(request);
client.flush();
float h =0.0; //Humidity level
float t =0.0; //Temperature in celcius float f =0.0; //Temperature in fahrenheit
float percentage = 0.0; // Calculating percentage of moisture float reading = 0.0; //Analog channel moisture read
// Match the request int value = LOW;
if (request.indexOf("/Up=ON") != -1) {
h = dht.readHumidity(); //Read humidity level
t = dht.readTemperature(); //Read temperature in celcius f = (h * 1.8) + 32; //Temperature converted to Fahrenheit
reading = analogRead(Raw); //Analog pin reading output voltage by water moisture rain sensor
70
if (reading<=110){ // If less mositure in soil start the motor otherwise stop digitalWrite(Solenoid, HIGH); value = HIGH; } else { digitalWrite(Solenoid, LOW); value = LOW; } if(t > 38) { digitalWrite(Solenoid, HIGH); } if(t < 35) { digitalWrite(Solenoid, LOW); } } if (request.indexOf("/Solenoid=ON") != -1) { //Motor ON digitalWrite(Solenoid, HIGH); value = HIGH; }
if (request.indexOf("/Solenoid=OFF") != -1) { //Motor OFF digitalWrite(Solenoid, LOW);
value = LOW; }
// Return the response
client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html");
71 client.println(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>");
client.println("<h1 align=center>Smart Garden - Weather Station</h1><br>"); client.println("<h3 align=center>GVHD: Th.S NGUYENDUCTOAN</h3>"); client.println("<h3 align=center>SVTH: CANH-KHANH </h3>");
client.print("Temperature in Celsius ="); client.println(t); //client.println(15); client.println("<br>"); client.print("Temperature in Fahrenheit ="); client.println(f); client.println("<br>"); client.print("Humidity ="); client.println(h); client.print(" %"); client.println("<br>"); client.println();
client.print("Moisture Level Percentage ="); client.print(percentage);
client.print("%");
if(digitalRead(threshold)==HIGH){ // Read digital output of soil sensor
client.println("Threshold Reached = Rain detected / Moisture exceeded / Water detected"); } client.println("<br><br>"); if(value == HIGH) client.println("Motor/Pump Operational");
72 else
client.print("Motor/Pump at Halt");
client.println("<br><br>");
client.println("<a href=\"/Up=ON\"\"><button>Update = Temperature Humidity Moisture Values</button></a><br />");
client.println("<a href=\"/Solenoid=ON\"\"><button>Motor Pump On </button></a>");
client.println("<a href=\"/Solenoid=OFF\"\"><button>Motor Pump Off </button></a><br />"); client.println("</html>"); delay(1); Serial.println("Client disonnected"); Serial.println(""); }
73
5.5.3. Tiến hành test hệ thống Địa chỉ kết nối Địa chỉ kết nối
Hình 5.10: Các trạng thái kết nối
Các bạn dùng trình duyệt web trên máy tính hay trên smartphone để tiến hành kết nối tới giao diện điều khiển hệ thống.
HTTP://192.168.43.17/ truy cập bằng đường dẫn này để lien kết tới hệ thống
điều kiển không dây.
Giao diện khi kết nối:
74 Các tham số có trong giao diện:
Temperrature in Celsius: Nhiệt độ hiện thời giá trị độ C Temperrature in Fahrenheit: : Nhiệt độ hiện thời giá trị độ F Humidity: Độ ẩm
Moisture Level Percentage: Tỷ lệ % độ ẩm
Update= Temperrature Humidity Moisture Values: cập nhật tự động các giá trị tham số mà cảm biến đo được lên hệ thống hiện thời.
Motor Pump On: Bơm động cơ Motor Pumo Off: Tắt động cơ
75
CHƯƠNG 6
KẾT QUẢ-NHẬN XÉT –ĐÁNH GIÁ
6.1. KẾT QUẢ:
Sau thời gian nghiên cứu và thực hiện thi công đề tài: “Thiết kế hệ thống điều khiển và giám sát nhà nấm sử dụng Web Server và SMS”.
Qua quá trình nghiên cứu và thực hiện đề tài, nhóm nhận thấy được đề tài có khả năng ứng dụng vào thực tiễn cao, đáp ứng được nhu cầu cải tiến khoa học kỹ thuật vào sản xuất nông nghiệp.
Đồng thời đề tài này cũng là một nguồn tài liệu có giá trị cho các bạn sinh viên những khóa tiếp theo có thể tham khảo khi nghiên cứu những đề tài có liên quan. Bên cạnh đó, nhóm cũng bổ sung cho mình những kiến thức hay và bổ ích.
Nội dung
Nghiên cứu về mạch điều khiển trung tâm
Nghiên cứu về cách truyền nhận dữ liệu trên UART Nghiên cứu về module wifi ESP8266 Node MCU Nghiên cứu về Module SIM800C
Nghiên cứu về mạch RF C1310 Nghiên cứu về cảm biến độ ẩm đất
Nghiên cứu về module cảm biến nhiệt độ DHT21 Nghiên cứu thiết kế mạch nguồn
6.1.1. Kết quả nghiên cứu
Biết xử lý tín hiệu các cảm biến
Các cảm biến được sử dụng trong đề tài này (DHT21, độ ẩm đất) là những cảm biến cần thiết trong cuộc sống. Có thể nói, các cảm biến ngày nay được sản xuất ngày một đơn giản và nhỏ gọn hơn, nhằm đáp ứng nhu cầu của người tiêu dùng. Quá trình nghiên cứu đề tài này đã giúp nhóm thực hiện nâng cao kỹ năng đọc – hiểu cảm biến, trau dồi thêm kiến thức về các loại cảm biến. Đặc biệt là, tăng khả năng vận dụng lý
76
thuyết vào thực tế, có khả năng lựa chọn được loại cảm biến phù hợp với từng yêu cầu của thực tiễn đời sống.
Biết sử dụng Module Wifi ESP8266
ESP8266 đang được sử dụng rất phổ biến trong các thiết bị giao tiếp với smartphone hay webserver thông qua Wifi nhờ giá thành rẻ, module nhỏ gọn và đặc biệt dễ sử dụng. Đây là cơng cụ cải tiến q trình giám sát từ khơng dây sang có dây, giúp ta hội nhập vào cuộc sống hiện đại ngày nay. Qua q trình nghiên cứu, nhóm đã biết cách sử dụng module này để giao tiếp truyền nhận dữ liệu với webserver, app android và WPF.
Biết sử dụng MCU STM32F103 RBT6
STM32F103 là vi điều khiển được sử dụng rộng rãi hiện nay, nó có rất nhiều chức năng. Tuy nhiên, để hiểu về các chức năng của nó và lập trình thành thạo trên board STM32F103 là điều khơng dễ dàng. Và qua q trình tìm hiểu và nghiên cứu đề tài thì nhóm đã biết được cách lập trình cho vi điều khiển này, nó có khả năng đọc các cảm biến cụ thể trong đề tài này, nhóm thực hiện có khả năng hiển thị thơng tin theo yêu cầu lên LCD 16x2, truyền – nhận dữ liệu qua uart để điều khiển qua sim.
Từ đó làm nền tảng để nhóm có thể phát triển ý tưởng điều khiển được mọi thứ xung quanh, biến chúng trở nên thông minh hơn.
6.2. NHẬN XÉT
Trong quá trình thiết kế và thi cơng đề tài, nhóm gặp nhiều khó khăn và phát sinh trong việc lựa chọn linh kiện, hướng thiết kế, nhưng sau khi tìm hiểu thì những vấn đề trên đã được giải quyết.
Khó khăn lớn nhất của đề tài là hệ thống phụ thuộc vào tốc độ của Wifi/4G. Sau thơi gian nghiên cứu, thi cơng thì dự án đã hoàn thành kịp tiến độ. Hệ thống hoạt động tương đối ổn định. Nhưng những yêu cầu đặt ra đối với hệ thống chỉ đạt trên 85%, vẫn còn điểm hạn chế là chưa áp dụng được vào qui mô lớn.
77
6.3. ĐÁNH GIÁ
Qua những số liệu bảng trên, nhóm đánh giá hệ thống đạt yêu cầu với những mục tiêu đã đề ra.
Mơ hình có tính thẩm mỹ, chắc chắn và dễ sử dụng. Sau thời gian test thử, mạch cho thấy sự ổn định.
Thơng số đo được tương đối chính xác.
Hệ thống có khả năng giúp ngươi dùng giám sát được đối tượng canh tác.
Hệ thống hoạt động ổn định trong thời gian dài, đảm bảo được việc thu thập thông tin từ đối tượng canh tác cũng như truyền nhận dữ liệu lên web.