Thiết kế hệ thống giám sát và điều khiển qua web

Một phần của tài liệu HD1 lê văn nghĩa nghiên cứu, thiết kế mô hình vườn thông minh giám sát và điều khiển qua web (Trang 60)

3.3.1. Giới thiệu ứng dụng Web.

3.3.1.1. Khái niệm ứng dụng Web.

Mang tính kỹ thuật nhiều hơn có thể giải thích các ứng dụng Web truy vấn máy chủ chứa nội dung (chủ yếu trên cơ sở dữ liệu lưu trữ nội dung) và tạo tài liệu Web động để phục vụ yêu cầu của máy khách (chính là người dùng website). Tài liệu được tạo trong kiểu định dạng tiêu chuẩn hỗ trợ trên tất cả mọi trình duyệt (như HTML, XHTML). JavaScript là một dạng script client-side cho phép yếu tố động có ở trên từng trang như thay đổi ảnh mỗi lần người dùng di chuột tới). Trình duyệt web chính là chìa khóa. Nó dịch và chạy tất cả script, lệnh khi hiển thị trang web và nội dung được yêu cầu.

Dưới góc độ kỹ thuật, Web được định nghĩa là môi trường có khả năng thực thi chương trình cao, cho phép tạo vô số tùy biến trên triển khai trực tiếp của một lượng lớn các ứng dụng tới hàng triệu người dùng trên thế giới. Hai thành phần quan trọng nhất của website hiện là trình duyệt Web linh hoạt và các ứng dụng Web. Tất cả mọi người đều có thể sử dụng hai thành phần mà không phải trả bất cứ khoản phí nào.

Dưới góc độ chức năng, ứng dụng Web là các chương trình máy tính cho phép người dùng website đăng nhập, truy vấn vào ra dữ liệu qua mạng Internet trên trình duyệt Web yêu thích của họ. Dữ liệu sẽ được gửi tới người dùng trong trình duyệt theo kiểu thông tin động trong một định dạng cụ thể, như với HTML thì dùng CSS) từ ứng dụng Web qua một Web Server.

3.1.1.2. Các ngôn ngữ lập trình Web thông dụng.

Ngôn ngữ lập trình web có vai trò không thể thiếu đối với tất cả mọi thiết kế web. Mỗi ngôn ngữ đều có những đặc điểm và chức năng riêng. Phù hợp cho sự lựa chọn của từng website khác nhau.

Một số ngôn ngữ cơ bản: - Ngôn ngữ thiết kế Web Java. - Ngôn ngữ lập trình Web HTML. - Ngôn ngữ lập trình Web C.

3.3.2. Tổng quan về Web Server. 3.3.2.1. Định nghĩa về Web Server. 3.3.2.1. Định nghĩa về Web Server.

Web server hay còn gọi là máy chủ web, trong đó được kết nối và liên kết mạng máy tính mở rộng. Máy chủ web được cài đặt các chương trình để phục vụ ứng dụng

58

web, chứa toàn bộ dữ liệu và nắm quyền quản lý. Web server có thể lấy thông tin requess từ phía trình duyệt web và gửi phần hồi tới máy khách thông qua HTTP hoặc giao thức khác.

- Về phần cứng thì Web Server được hiểu là:

+ Web server là một máy tính lưu trữ các file thành phần tạo nên một website (ví dụ: HTML, images, CSS, và file javacript...) và truyền chúng tới người dùng cuối.

+ Web server được kết nối đến internet và truy cập thông qua một domain giống như mozilla.org.

- Về phần mềm thì Web Server được hiểu là:

+ Web server bao gồm một số phần kiểm soát người dùng web truy cập đến file host tại tối thiểu một HTTP server. Một HTTP server là một phần của phần mềm nó hiểu là URLs(web address) và HTTP (là phương thức để trình duyệt của bạn hiển thị trang web) Ở mức cơ bản nhất, bất cứ một trình duyệt nào cần một file host trên một web server, trình duyệt đó sẽ request file đó thông qua HTTP. Khi một yêu cầu được gửi đến địa chỉ web server đúng thì HTTP server gửi trở lại một yêu cầu thông qua HTTP.

3.3.2.2. Nguyên lý hoạt động của Server.

Như ở phần định nghĩa trên thì chúng ta có thể thấy một mô hình hoạt động cơ bản nhất của Web server sẽ gồm có ba thành phần chính: Web Server; Trình duyệt web và Giao thức HTTP.

59  Bước 1: Người dùng gửi yêu cầu.

Người dùng Internet sẽ truy cập một website bất kỳ thông qua một trình duyệt web được cài trên máy tính hoặc thiết bị di động.

Bước 2: Gửi yêu cầu qua HTTP đến máy chủ web.

Lúc này, trình duyệt web mà bạn đang sử dụng (Chorme, Cốc Cốc, Firefox…) sẽ nhận yêu cầu đó và chuyển đổi đị chỉ từ tên miền sang địa chỉ IP kèm theo tên miền đó. Việc truy xuất thông tin IP này sẽ thông qua máy chủ DNS. Sau đó trình duyệt sẽ thông qua giao thức HTTP gửi yêu cầu đến Web Server báo là có một người dùng đang cần truy xuất thông tin tại địa chỉ này. Và nó yêu cầu máy chủ hãy trả về kết quả cho người dùng.

Bước 3: Kiểm tra và trả lại kết quả để hiển thị cho người dùng

Khi nhận được yêu cầu từ trình duyệt, máy chủ web sẽ kiểm tra lại trong hệ thống xem có tài nguyên nào liên quan đến địa chỉ mà người dùng cần tìm hay không. Trường hợp có nó sẽ trả lại thông tin qua giao thức HTTP đến trình duyệt Web để hiển thị cho người dùng. Còn nếu không thì nó sẽ xuất hiện các thông báo lỗi hoặc nội dung không tìm thấy. Cứ như vậy quy trình này được lặp đi lặp lại.

3.3.3. Giới thiệu HTML 3.3.3.1. Khái niệm 3.3.3.1. Khái niệm

HTML là ngôn ngữ dùng để mô tả một trang web, viết tắt của từ Hyper Text Markup Language. HTML không phải là ngôn ngữ lập trình, html là ngôn ngữ đánh dấu (markup language), ngôn ngữ đánh dấu là một nhóm các thẻ đánh dấu (các tag), HTML sử dụng các thẻ này để mô tả trang web.

3.3.3.2.Cấu trúc của một tài liệu HTML

Mọi tài liệu HTML đều có khung cấu trúc như sau: <html>

<head><title></title></head> <body>

</body> </html>

Phần html: Mọi tài liệu html phải bắt đầu bằng thẻ mở <html> và kết thúc bằng thẻ đóng </html>

60

Phần tiêu đề: Phần tiêu đề bắt đầu bằng thẻ <head> và kết thúc bởi thẻ </head>. Phần này chứa tiêu đề mà đƣợc hiển thị trên thanh điều hướng của trang Web. Tiêu đề nằm trong thẻ title, bắt đầu bằng thẻ <title> và kết thúc là thẻ </title>.

Tiêu đề là phần khá quan trọng. Khi người dùng tìm kiếm thông tin, tiêu đề của trang Web cung cấp từ khóa chính yếu cho việc tìm kiếm.

Phần thân: phần này nằm sau phần tiêu đề. Phầ n thân bao gồm văn bản, hình ảnh và các liên kết mà bạn muốn hiển thị trên trang web của mình. Phần thân bắt đầu bằng thẻ <body> và kết thúc bằng thẻ </body>

3.3.3.3. Các thẻ

-Thẻ P

<P>Nội dung đoạn văn bản</P>

-Thẻ dạng đề mục H1/H2/H3/H4/H5/H6 <H1>…….</H1>: cấp độ chữ to nhất <H6>…….</H6>: cấp độ chữ nhỏ nhất -Xuống dòng <BR> -In đậm, in nghiêng In đậm: <B>…..</B> Hoặc <STRONG>…..</STRONG> In nghiêng: <I>…..</I> hoặc<EM>…..</EM>

-Tạo bảng

<TR> : Tạo dòng <TD> : Tạo cột

<TH> : Tạo dòng tiều đề

3.3.3.4.Thuộc tính thẻ

Là những đặc tính, tính chất mang theo để trình duyệt định dạng và hiển thị thẻ đó. Mỗi thẻ có thể có 1 hoặc nhiều thuộc tính và mỗi thuộc tính có tên thuộc tính và giá trị của thuộc tính, giá trị được đặt trong dấu ""

61

3.3.4. Thiết kế giao diện các thành phần trên web

Hình 3.35. Giao diện trang web giám sát và điều khiển

Các chức năng chính của giao diện Home:

- Giám sát nhiệt độ môi trường, độ ẩm không khí, độ ẩm vườn 1, độ ẩm vườn 2, ánh sáng và mưa

- Chọn được 2 chế độ điều khiển Thủ Công hoặc Tự Động

- Điều khiển được các thiết bị quạt mát, rèm che, đèn sáng, bơm vườn 1, bơm vườn 2 khi ở chế độ Thủ Công

- Hiển thị trạng thía của các thiết bị điện của hệ thống vườn thông minh

3.3.5. Lập trình hệ thống

Do nội dung lập trình và chương trình quá nhiều nên không giới thiệu ở đồ án này mà nhóm đồ án đưa vào phần phụ lục.

62

3.4. Chế tạo, lắp ráp mô hình hệ thống

Mô hình thực tế sau khi hoàn thiện

Hình 3.36. Ảnh chụp mô hình thực tế

63

CHƯƠNG 4: KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 4.1. Kết quả đạt được

Các kết quả đạt được sau khi thực hiện đề tài: - Xây dựng được mô hình hệ thống

- Phân tích được ứng dụng thực tế của hệ thống - Tìm hiểu và đưa ra giải pháp cho hệ thống

- Thiết lập được hệ thống điều khiển và giám sát hệ thống qua Web - Hệ thống hoạt động đáp ứng đúng theo yêu cầu thiết kế

- Mô hình nhỏ gọn, có tính thẩm mĩ cao, an toàn, dễ dàng sử dụng

4.2. Những khó khăn gặp phải

Trong quá trình thực hiện đồ án ngoài những thuận lợi, nhóm cũng gặp phải rất nhiều khó khăn:

- Do lần đầu sử dụng Arduino, module thu phát wifi Esp8266 để lập trình hệ thống nên còn nhiều khó khăn trong việc xử lí vòng lặp và bộ nhớ, truyền nhận chuỗi dữ liệu.

- Không chuyên về cơ khí nên khó khăn phần thiết kế

- Vốn tiếng anh còn hạn chế, mà tài liệu chủ yếu là tiếng anh.

4.3. Những hạn chế của đề tài

- Thiết kế mô hình nên các thiết bị vẫn chỉ là mô hình nên chưa được thật sự thực tế hóa đề tài.

- Chưa lưu trữ dữ liệu đo được của các cảm biến - Chưa tự bón phân và diệt được sâu bệnh

4.4. Hướng phát triển của đề tài

- Xây dựng nguồn dự phòng cho vườn phòng tránh mất điện - Thiết kế thông báo sms cho chủ khu vườn khi có sự cố - Ứng dụng thiết kế điều khiển và giám sát kết hợp qua App - Hệ thống bón phân và phun thuốc trừ sâu tự động

64

TÀI LIỆU THAM KHẢO

[1] Ths Hoàng Minh Công, Giáo trình cảm biến công nghiệp, NXB Xây

Dựng, 2007

[2] Khoa Cơ Khí – Bộ môn Cơ điện tử, Cảm biến và hệ thống đo, Trường Đại Học Công Nghiệp Hà Nội, 2013

[3] PGS.TS Trịnh Chất - TS Lê Văn Uyển, Tính toán thiết kế hệ thống dẫn động cơ khí, NXB Giáo Dục, 1998

[4] Chu Văn Hoành, Giáo trình Thiết kế Web, Nhà Xuất Bản Giáo Dục Việt Nam, 2005 [5] Phạm Quang Huy - Lê Cảnh Trung, Lập trình điều khiển với Arduino, Nhà Xuất Bản Khoa Học Kỹ Thuật, 2014

65

PHỤ LỤC

Danh sách thiết bị, linh kiện đã sử dụng

STT Tên thiết bị Hình ảnh Số lượng

1 Sắt V 3x3x40cm 8 2 Sắt V 3x3x30cm 4 3 Tấm mica 3x300x300mm 2 4 Tấm mica 3x300x400mm 3 5 Arduino uno r3 1

6 Esp8266 nodemcu 1 7 Màn hình LCD 20x04 1 8 Cảm biến nhiệt độ, độ ẩm DHT11 1 9 Cảm biến vật cản hồng ngoại V1 2 10 Cảm biến mưa 1 11 Cảm biến độ ẩm đất 2

12 Cảm biến ánh sáng photodiode 1 13 Động cơ giảm tốc LS220 1 14 Pulley dẫn dộng GT2 1 15 Pulley dẫn hướng GT2 1 16 Dây đai dẫn động GT2 760mm 17 Bơm nước R385 2 18 Ống dẫn nước 1m

19 Đầu phun sương 2 20 Quạt làm mát 1 21 Bóng đèn LED 3 bóng cầu nồi 12V 120cm 22 Module Relay 2- Channel 5V 3 23 Nguồn Adapter 12V 2A 1 23 Nguồn sạc dự phòng 5V-2.1A 1

Bản vẽ các chi tiết của hệ thống

Tấm Mica mặt đế 296x400x5

Tấm Mica 320x304x2 (tấm số 1)

Tấm Mica 320x408x2 (tấm số 1)

 Ke chữ L 40x40x16

Sắt V 3x3x30cm

❖ Code lập trình hệ thống điều khiển giám sát vườn thông minh -Code lập trình cho Arduino Uno R3 trên Arduino IDE

#include <ArduinoJson.h> #include <Wire.h> #include "DHT.h" #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); #include <SoftwareSerial.h> const byte RX= 2; const byte TX= 3;

SoftwareSerial mySerial = SoftwareSerial(RX, TX); String SendEsp =""; float h=0; float t=0; int percent1=0; int percent2=0; int percent3=0; int value=1; int cbdr=1; int cbmr=1;

const int DHTPIN = 6; //Đọc dữ liệu từ DHT11 ở chân D6

const int DHTTYPE = DHT11; //Khai báo loại cảm biến, có 2 loại là DHT11 và DHT22 DHT dht(DHTPIN, DHTTYPE);

int SSdoam1 = A0; //Chân tín hiệu cảm biến độ ẩm vườn 1 ở chân A0 int SSdoam2 = A1; //Chân tín hiệu cảm biến độ ẩm vườn 2 ở chân A1 int SSanhsang = A2; // Chân tín hiệu cảm biến ánh sáng ở chân A2 int SSmua = 4; // Chân tín hiệu cảm biến mưa ở chân D8

int SSdr = 8; // Chân tín hiệu cảm biến đóng rèm ở chân D4 int SSmr = 10; // Chân tín hiệu cảm biến mở rèm ở chân D5 void setup()

{

Serial.begin(9600);// Khởi động Serial ở baudrate 96 mySerial.begin(9600); //myserial baudrate 9600 lcd.init () ; // khởi tạo lcd

lcd.backlight () ; // màn hình sáng

pinMode(SSdoam1, INPUT); //Cảm biến nhận tín hiệu pinMode(SSdoam2, INPUT); //Cảm biến nhận tín hiệu pinMode(SSanhsang, INPUT); //Cảm biến nhận tín hiệu pinMode(SSmua,INPUT);// Đặt chân cảm biến mưa là INPUT

lcd.setCursor(6,1); lcd.print ( "Xin Chao" ); delay(3000);

}

void loop() {

//CB Mưa

value = digitalRead(SSmua);// Đọc tín hiệu cảm biến if (value == HIGH)

{

lcd.clear();

lcd.setCursor ( 6 , 0 ) ; lcd.print ( "Khong Mua" ) ; }

else {

lcd.clear();

lcd.setCursor ( 6 , 0 ) ; lcd.print ( "Dang Mua" ) ; }

//CB Độ Ẩm Vườn 1

int giatri1 = analogRead(SSdoam1); //Đọc giá trị cảm biến percent1 = map(giatri1, 0, 1023, 100, 0); // Tính ra phần trăm lcd.setCursor(0,2);

lcd.print("DAV1:"); lcd.print(percent1); lcd.print("%"); //CB Độ Ẩm Vườn 2

int giatri2 = analogRead(SSdoam2); //Đọc giá trị cảm biến percent2 = map(giatri2, 0, 1023, 100, 0); // Tính ra phần trăm lcd.setCursor(10,2);

lcd.print("DAV2:"); lcd.print(percent2); lcd.print("%"); //CB Ánh Sáng

int giatri3 = analogRead(SSanhsang); //Đọc giá trị cảm biến percent3 = map(giatri3, 0, 1023, 100, 0); // Tính ra phần trăm lcd.setCursor(5,1);

lcd.print("Anh Sang:"); lcd.print(percent3);

lcd.print("%"); //CB Nhiệt Độ, Độ Ẩm Không Khí(DHT11) h = dht.readHumidity(); //Đọc độ ẩm t = dht.readTemperature(); //Đọc nhiệt độ lcd.setCursor ( 0 , 3 ) ; lcd.print ( "DA:" ) ; lcd.print (h) ; lcd.print ( "%" ) ; lcd.setCursor ( 10 , 3 ) ; lcd.print ( "ND:" ) ; lcd.print (t) ; lcd.write(0xdf) ; lcd.print ("C") ; // CB phát hiện đóng rèm

cbdr = digitalRead(SSdr);// Đọc tín hiệu cảm biến // CB phát hiện mở rèm

cbmr = digitalRead(SSmr);// Đọc tín hiệu cảm biến Send_Data(); // hàm gửi dữ liệu myserial

delay(1000); }

void Send_Data() {

SendEsp="";

SendEsp= "A" + String(t) + "B" + String(h) + "C" + String(percent1) + "D" + String(percent2) + "E" + String(percent3) + "F" + String(value) + "G" + String(cbdr) + "H" + String(cbmr) + "K" ; // tạo chuỗi gửi đi Serial.print("SendEsp: ");

Serial.println(SendEsp); mySerial.print(SendEsp); mySerial.flush();

}

- Code lập trình cho Esp 8266 trên Arduino IDE

#include <Wire.h> #include <ArduinoJson.h> #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> ESP8266WebServer server(80); #include <SoftwareSerial.h> const byte RX= D6;

const byte TX= D5;

SoftwareSerial mySerial = SoftwareSerial(RX, TX);

String inputString = "";

bool stringComplete = false;

int RELAY1=D0; //điều khiển đèn sáng int RELAY2=D1; // điều khiển quạt int RELAY3=D2; //điều khiển bơm1 int RELAY4=D4; //điều khiển bơm2 int RELAY5=D7; //điều khiển đóng rèm int RELAY6=D8; //điều khiển mở rèm long TTDEN=0; long TTQUAT=0; long TTBOM1=0; long TTBOM2=0; long TTREM=0; long TTCHEDO=0; String ChuoiSendWebJson=""; long last=0; float nhietdomt=0; float doamkk=0; int doamv1=0; int doamv2=0; int anhsang=0; int mua=1; int cbmorem=1; int cbdongrem=1;

#include "web.h" // gọi chương trình giao diện HTML void ConnectWiFi(); // chương trình kết nối wifi void SendWebPage (); // chương trình liệu Webpage void OnclickCheDo();

void OnclickQuat();

void OnclickBom1();

void OnclickBom2();

void OnclickRem();

void DataJson(String NDMT, String DAKK,String DAV1,String DAV2,String AS,String MUA, String TTD, String TTQ, String TTB1, String TTB2, String TTR, String TTC );

void SendData();

void Tudong();

void setup()

{

Serial.begin(9600); // Khởi động Serial ở baudrate 9600

mySerial.begin(9600); //myserial baudrate 9600

pinMode(RELAY1,OUTPUT); pinMode(RELAY2,OUTPUT); pinMode(RELAY3,OUTPUT); pinMode(RELAY4,OUTPUT); pinMode(RELAY5,OUTPUT); pinMode(RELAY6,OUTPUT); digitalWrite(RELAY1,HIGH); digitalWrite(RELAY2,HIGH); digitalWrite(RELAY3,HIGH); digitalWrite(RELAY4,HIGH); digitalWrite(RELAY5,HIGH); digitalWrite(RELAY6,HIGH); ConnectWiFi(); server.on("/", []{ SendWebPage (); }); server.on("/Chedo", []{ OnclickCheDo (); }); server.on("/Den", []{ OnclickDen ();});

server.on("/Quat", []{ OnclickQuat ();}); server.on("/Bom1", []{ OnclickBom1 () }); server.on("/Bom2", []{ OnclickBom2 (); }); server.on("/Rem", []{ OnclickRem (); }); server.on("/LoadData", []{ SendData (); }); server.begin(); Serial.println("Server start"); last=millis(); } void loop() {

server.handleClient(); //duy tri server

Read_UART(); if(TTCHEDO ==0) { if(cbmorem == 1) { digitalWrite(RELAY6, HIGH); } if(cbdongrem == 0) { digitalWrite(RELAY5, HIGH); } } if(TTCHEDO == 1) {

Tudong();

}

if(millis() - last>=1000)

{

DataJson(String (nhietdomt), String (doamkk),String (doamv1),String (doamv2),String (anhsang),String (mua), String (TTDEN),String (TTQUAT),String (TTBOM1),String (TTBOM2),String (TTREM),String (TTCHEDO) );

last=millis();

}

}

void DataJson(String NDMT, String DAKK,String DAV1,String DAV2,String AS,String MUA, String TTD,

Một phần của tài liệu HD1 lê văn nghĩa nghiên cứu, thiết kế mô hình vườn thông minh giám sát và điều khiển qua web (Trang 60)

Tải bản đầy đủ (PDF)

(105 trang)