Tải bản đầy đủ (.pdf) (24 trang)

Báo cáo đồ án hệ thống nhúng: Máy sấy thông minh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.18 MB, 24 trang )

Học Viện Cơng Nghệ Bưu Chính Viễn Thơng
-----🙞🙜🕮🙞🙜-----

Báo Cáo
Mơn Học :Thiết kế đồ án hệ thống nhúng
MÁY SẤY THÔNG MINH
Giảng viên hướng dẫn : Nguyễn Ngọc Minh
Nhóm bài tập : 18
Nhóm lớp : 02

Sinh viên thực hiện :

Lê Ngọc Sơn – B18DCDT204
Phan Đình Đáng – B18DCDT040
Trần Hải Linh – B18DCDT124


Lời mở đầu
Trong quá trình phát triển của con người, những cuộc cách mạng về cơng nghệ
đóng một vai trị rất quan trọng, chúng làm thay đổi từng ngày từng giờ cuộc
sống của con người, theo hướng hiện đại hơn. Đi đơi với q trình phát triển của
con người, những thay đổi do chính tác động của con người trong tự nhiên,
trong môi trường sống cũng đang diễn ra, tác động trở lại chúng ta, như ơ nhiễm
mơi trường, khí hậu thay đổi, v.v... Dân số càng tăng, nhu cầu cũng tăng theo,
các dịch vụ, các tiện ích từ đó cũng được hình thành và phát triển theo. Đặc biệt
là áp dụng các công nghệ của các ngành điện tử, công nghệ thông tin và truyền
thông vào trong thực tiễn cuộc sống con người. Cơng nghệ Internet of Things
(IoT) nói chung và công nghệ cảm biến không dây (Wireless Sensor) nói riêng
được tích hợp từ các kỹ thuật điện tử, tin học và viễn thơng tiên tiến vào trong
mục đích nghiên cứu, giải trí, sản xuất, kinh doanh, v.v..., phạm vi này ngày
càng được mở rộng, để tạo ra các ứng dụng đáp ứng cho các nhu cầu trên các


lĩnh vực khác nhau.
Hiện nay, mặc dù khái niệm IoT và công nghệ cảm biến không dây đã trở nên
khá quen thuộc và được ứng dụng khá nhiều trong các lĩnh vực của đời sống con
người, đặc biệt ở các nước phát triển có nền khoa học cơng nghệ tiên tiến. Tuy
nhiên, những công nghệ này chưa được áp dụng một cách rộng rãi ở nước ta, do
những điều kiện về kỹ thuật, kinh tế, nhu cầu sử dụng. Song nó vẫn hứa hẹn là
một đích đến tiêu biểu cho các nhà nghiên cứu, cho những mục đích phát triển
đầy tiềm năng.
Được sự giúp đỡ của thầy Nguyễn Ngọc Minh nhóm em đã chọn đề tài làm về
một chiếc máy sấy thông minh đề ứng dụng vào cuộc sống Trên cơ sở tìm hiểu
về IoT nói chung và mạng cảm biến khơng dây nói riêng, luận văn cịn thực hiện
một thực nghiệm cho mạng cảm biến để giám sát các thông số môi trường tiêu
biểu (nhiệt độ, độ ẩm, ánh sáng).

2


Mục lục
Nợi dung
I. Hệ điều hành RTos.

4

1. RTos là gì ?

4

2. RTos hoạt động như thế nào ?

5


3. RTos có tác dụng gì trong mạch ?

8

4. Cách hoạt động của Rtos

8

II. sản phẩm iot sử dụng cho sản phẩm
1. Các linh kiện cần sử dụng :

11
11

1.1 Esp 8266

11

1.2 : Datasheet DHT11

12

1.3 LED

15

1.4 Quạt 12v

15


1.5 Quận dây MAYSO

16

2. Sơ đồ Cơ bản của hệ thống máy sấy đơn giản đo và theo dõ nhiệt độ, độ ẩm
bằng webserver:
17
III.

Hoạt động

18

1. Cơ sở dữ liệu và biểu đồ

18

2. Điều khiển máy sấy.

21

3. Hiển thị nhiệt độ, độ ẩm.

23

3


I.


Hệ điều hành RTos.

1. RTos là gì ?
RTOS là viết tắt của cụm từ Real-time operating system hay hệ điều hành thời
gian thực thường được nhúng trong các dòng vi điều khiển dùng để điều khiển
thiết bị một cách nhanh chóng và đa nhiệm (multi tasking).
Để hiểu rõ ràng nó là gì trước hết hãy làm rõ khái niệm về hệ điều hành đã.
Hệ điều hành (tiếng Anh: Operating System – viết tắt: OS) là một phần mềm
dùng để điều hành, quản lý toàn bộ tất cả thành phần (bao gồm cả phần cứng và
phần mềm) của thiết bị điện tử.
Nói đơn giản, hệ điều hành giống như hội đồng quản trị vậy. Họ có quyền quyết
định ai làm gì và thời gian như thế nào. Các nhân viên cũng như các ứng dụng,
nhận lệnh của cấp trên và thực thi các công việc theo đúng chức năng của mình.
Vậy hệ điều hành thời gian thực với hệ điều hành bình thường khác gì nhau?
● Hệ điều hành thơng thường (non-realtime): như Window, linux,
android, ios… chính là thứ mà chúng ta sử dụng hằng ngày. Khi mở
một phần mềm trên đó, có thể bạn phải chờ nó tải rất lâu, việc chờ
đợi này cũng khơng ảnh hưởng gì cả. Bởi vì đa số phần mềm đó
tương tác với con người chứ ít tương tác với các phần mềm hoặc
thiết bị khác
● Hệ điều hành thời gian thực (realtime): sinh ra cho các tác vụ cần
sự phản hồi nhanh của hệ thống, thường được nhúng trong các loại
vi điều khiển và khơng có giao diện (GUI) tương tác với người dùng.
Chúng cần phản hồi nhanh bởi vì đa số các tác vụ tương tác với thiết
bị, máy móc khác chứ khơng phải con người. Các tài ngun bên
trong rất hữu hạn nên chỉ một sự chậm trễ cũng có thể làm hệ thống
làm việc hồn tồn sai lệch.
Bạn cứ thử tưởng tượng một hệ điều hành đang chạy các tác vụ điều khiển tên
lửa mà độ trễ chỉ 2s.

Với tốc độ của tên lửa cũng có thể bắn lệch từ Hà Nội thành TP Hồ Chí Minh
rồi.
Thực tế hệ điều hành thời gian thực còn chia thành 2 loại:
● Soft-realtime: Sử dụng cho các ứng dụng cruise control (điều khiển
hành trình) trong ơ tơ và các ứng dụng viễn thông
● Hard-realtime: Sử dụng trong các ứng dụng điều khiển máy bay,
động cơ điện
4


2. RTos hoạt động như thế nào ?
RTOS thường sẽ là một phân đoạn của chương trình. Tại đây nó có nhiệm vụ
giải quyết và điều phối các tác vụ (task), lập lịch và phân mức ưu tiên cho
chúng. Việc này có thể thực hiện bằng cơ chế Hướng sự kiện (Event-driven) và
Chia sẻ thời gian (Time-sharing).

Cơ chế Hướng sự kiện sẽ điều hướng các tác vụ dựa trên mức độ ưu tiên và Chia
sẻ thời gian sẽ làm nhiệm vụ chuyển đổi tác vụ. RTOS đều kèm theo thuật
Pre-emptive scheduling (Đặt lịch trước).
Các chức năng cơ bản của RTOS:
● Bộ lập lịch (Scheduler)
● Dịch vụ thời gian thực (Real Time Services)
● Đồng bộ và thông điệp (Synchronization and Messaging)
Trong Scheduler sẽ có 3 trạng thái mặc định:
● Ready to run: Trạng thái chuẩn bị của tác vụ
● Running: Trạng thái tác vụ đang thực thi
● Blocked: Các tác vụ không đủ tài nguyên xử lý sẽ được về trạng thái khóa
Dịch vụ thời gian thực
● Dịch vụ xử lý ngắt (Interrupt handling services)
5



● Dịch vụ thời gian (Time services)
● Dịch vụ quản lý thiết bị (Device management services).
● Dịch vụ quản lý bộ nhớ (Memory management services)
● Dịch vụ quản lý kết nối (IO services)

Thông điệp 
Các thông điệp này sẽ dùng để trao đổi thông tin giữa các tác vụ với nhau, nó
bao gồm các thơng điệp sau:
● Semaphores: Đồng bộ hóa quyền truy cập các tài nguyên dùng chung
● Event flags: Đồng bộ hóa hoạt động các tác vụ cần sự phối hợp
● Mailboxes, Pipes, Message queues: Quản lý các thông điệp đã được gửi
Ưu điểm cảu hệ điều hành
Ưu điểm lớn của RTOS là xử lý nhanh chóng vì thế nó sẽ dành cho các thiết bị
đòi hỏi khả năng xử lý có độ trễ thấp nhất có thể. Lợi ích nó đem lại bao gồm đa
nhiệm tốt, ưu tiên các nhiệm vụ và quản lý chia sẻ các tài nguyên. Ngồi ra nó
cũng khơng địi hỏi nhiều về tài ngun hay bộ nhớ RAM quá lớn.
Hệ điều hành RTOS được sử dụng phổ biến trong nhiều ngành cơng nghiệp,
thiết bị chăm sóc sức khỏe IoT hay ngành hàng khơng.

3. RTos có tác dụng gì trong mạch ?
6


Chia sẻ tài nguyên một cách đơn giản: cung cấp cơ chế để phân chia các yêu cầu
về bộ nhớ và ngoại vi của MCU
Dễ debug và phát triển: Mọi người trong nhóm có thể làm việc một cách độc
lập, các lập trình viên thì có thể tránh được các tương tác với ngắt, timer, với
phần cứng (cái này mình khơng khuyến khích lắm vì hiểu được phần cứng vẫn

sẽ tốt hơn nhiều)
Tăng tính linh động và dễ dàng bảo trì: thơng qua API của RTOS,…

4. Cách hoạt động của Rtos
RTOS là một phân đoạn hoặc một phần của chương trình, trong đó nó giải quyết
việc điều phối các task, lập lịch và phân mức ưu tiên cho task, nắm bắt các thông
điệp gửi đi từ task.
RTOS khá phức tạp, nói một cách dễ hiểu hơn là nó thực hiện việc xử lý các
trạng thái máy (State Machine).
Các bạn có thể tìm hiểu tại bài viết States Machine và lập trình nhúng
Để giải quyết một bài tốn nhiều trạng thái máy, thông thường chúng ta sử dụng
code sau:
while(1)
{
switch(state)
{
case 1: //Code for Task 1;
state= 2;
case 2: //Code for Task 2;
state= 3;
case 3: //Code for Task 3;
7


state= 4;
case 4: //Code for Task 4;
state=1;
}
}
Bạn có thể thấy, chương trình sẽ thực thi từ states 1 tới states 4 sau đó quay vịng

lại.
Bất kì khi nào states thay đổi, chương trình sẽ nhảy qua phục vụ task đó.
Ví dụ: nếu trong task 1 có lệnh states = 4, thì ngay sau khi Task 1 được thực thi
xong chương trình sẽ nhảy qua Task 4 mà bỏ qua Task 2 và 3.
Nhược điểm của phương pháp này đó là tài nguyên sử dụng chung, tốc độ
chuyển chậm khi thay đổi states bởi nó phải hồn thành mỗi Task trước khi
chuyển sang Task khác, khó kiểm sốt khi nhiều tác vụ (Task)
Vậy nên RTOS ra đời giải quyết các nhược điểm trên.

Cách hoạt động của RTOS
Nhân Kernel sẽ điều phối sự hoạt động của các tác vụ (Task), mỗi task sẽ có một
mức ưu tiên (prioritize) và thực thi theo chu kì cố định.
8


Nếu có sự tác động như ngắt, tín hiệu hoặc tin nhắn giữa các Task, Kernel sẽ
điều phối chuyển tới Task tương ứng với Code đó.
Sự chuyển dịch giữa các Task rất linh động, độ trễ thấp mang lại độ tin cậy cao
cho chương trình.

9


II. sản phẩm iot sử dụng cho sản phẩm
1. Các linh kiện cần sử dụng :
1.1 Esp 8266

hình ảnh 1: kit ESP 8266

- Kit RF thu phát 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.
- Kit RF thu phát 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.
- Kit RF thu phát Wifi ESP8266 NodeMCU Lua tại Hshop.vn sử dụng chip nạp
và giao tiếp UART mới và ổn định nhất là CP2102 có khả năng tự nhận Driver
trên tất cả các hệ điều hành Window và Linux, đây là phiên bản nâng cấp từ các
phiên bản sử dụng IC nạp giá rẻ CH340.
Thơng số kỹ thuật:
● IC chính: ESP8266 Wifi SoC.
● Phiên bản firmware: NodeMCU Lua
● Chip nạp và giao tiếp UART: CP2102.
10








GPIO tương thích hồn tồn với firmware Node MCU.
Cấp nguồn: 5VDC MicroUSB hoặc Vin.
GIPO giao tiếp mức 3.3VDC
Tích hợp Led báo trạng thái, nút Reset, Flash.
Tương thích hồn tồn với trình biên dịch Arduino.
Kích thước: 25 x 50 mm
1.2 : Datasheet DHT11

- DHT11 là cảm biến nhiệt độ và độ ẩm. Nó ra đời sau và được sử dụng thay thế
cho dịng SHT1 những nơi khơng cần độ chính xác cao về nhiệt độ và độ ẩm.

hình ảnh 2 : DHT 11
- DHT11 có cấu tạo 4 chân như hình. Nó sử dụng giao tiếp số theo chuẩn 1 dây.
- Thông số kỹ thuật:
o Do độ ẩm: 20%-95%
o Nhiệt độ: 0-50ºC
o Sai số độ ẩm ±5%
o Sai số nhiệt độ: ±2ºC
2. Nguyên lý hoạt động:
- Sơ đồ kết nối vi xử lý:

11


hình ảnh 3 : Sơ đồ kết nối DHT 11
- Nguyên lý hoạt động:
Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo 2
bước:
- Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
-Khi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu và nhiệt
độ đo được.
- Bước 1: gửi tín hiệu Start

hình ảnh 4 : Tín hiệu của DHT 11
-MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trong khoảng
thời gian >18ms.
Trong Code mình để 25ms. Khi đó DHT11 sẽ hiểu MCU muốn đo giá trị nhiệt
độ và độ ẩm.

- MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào.
12


-Sau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp. Nếu >40us mà
chân DATA ko được
kéo xuống thấp nghĩa là ko giao tiếp được với DHT11.
- Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên cao trong
80us. Bằng việc giám sát
chân DATA, MCU có thể biết được có giao tiếp được với DHT11 ko. Nếu tín
hiệu đo được DHT11
lên cao, khi đó hồn thiện q trình giao tiếp của MCU với DHT.
- Bước 2: đọc giá trị trên DHT11
o DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte. Trong đó:
-Byte 1: giá trị phần nguyên của độ ẩm (RH%)
-Byte 2: giá trị phần thập phân của độ ẩm (RH%)
- Byte 3: giá trị phần nguyên của nhiệt độ (TC)
- Byte 4 : giá trị phần thập phân của nhiệt độ (TC)
- Byte 5 : kiểm tra tổng.
- Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm và nhiệt
độ là chính xác, nếu
sai thì kết quả đo khơng có nghĩa.
- Đọc dữ liệu:
Sau khi giao tiếp được với DHT11, DHT11 sẽ gửi liên tiếp 40 bit 0 hoặc 1 về
MCU, tương ứng chia
thành 5 byte kết quả của Nhiệt độ và độ ẩm.
- Bit 0:
- Bit 1:
Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11 kéo
lên 1. Nếu chân DATA

là 1 trong khoảng 26-28 us thì là 0, còn nếu tồn tại 70us là 1. Do đó trong lập
13


trình ta bắt sườn lên của
chân DATA, sau đó delay 50us. Nếu giá trị đo được là 0 thì ta đọc được bit 0,
nếu giá trị đo được là 1
thì giá trị đo được là 1. Cứ như thế ta đọc các bit tiếp theo
1.3 LED

hình ảnh 5 : LED

LED là từ viết tắt của Light Emitting Diode hay điốt phát quang là một linh kiện
điện tử dựa trên chuyển tiếp p-n. LED có cấu trúc cơ bản của một điốt. Cấu trúc
cơ bản của LED gồm hai lớp bán dẫn p, n ghép với nhau qua lớp tiếp xúc công
nghệ. Hoạt động của LED dựa trên hoạt động của chuyển tiếp p-n.
1.4 Quạt 12v

14


Quạt tản nhiệt 12V 12x12 hay cịn gọi là Quạt thơng gió hiện nay trên thị
trường có rất nhiều loại các quạt thơng gió được thiết kế riêng cho từng lĩnh vực,
quạt thơng gió trong nhà, hệ thống ống khí nén, quạt hút bụi trong nhà xưởng, quạt
hút khói, quạt làm mát, quạt cpu...

● Điện áp: 12VDC
● Kích thước: 12x12x2.5cm
● Chất liệu: Nhựa
● Màu sắc: Đen

● Khối lượng: 125g
● Điện áp: 12VDC
● Công suất:  3W
Trong những thời tiết oi bức, quạt tản nhiệt là dụng cụ không thể thiếu của nhiều
thiết bị điện, với tác dụng làm dịu, làm mát các loại máy móc đồng thời với việc
kéo dài tuổi thọ của các máy móc.
1.5 Quận dây MAYSO

15


Dây mayso có rất nhiều ứng dụng mà bạn có thể dễ dàng tìm thấy trong cuộc
sống đời thường cũng như trong các hệ thống máy móc cơng nghiệp.
Trong cuộc sống đời thường, chúng ta dễ dàng bắt gặp dây mayso trong ấm đun
nước, đèn sưởi, quạt sưởi, máy sấy quần áo…
Trong công nghiệp, dây mayso được ứng dụng trong các buồng sấy, lò sấy, máy
cắt các loại vật liệu mềm…
Các loại máy móc thơng thường sử dụng dây mayso với nguyên lý hoạt động rất
đơn giản. Dây mayso thường được thiết kế dạng lị xo nhằm tăng diện tích tiếp
xúc, hạn chế hao phí nhiệt năng tỏa ra. Chỉ cần truyền điện vào dây điện trở này,
điện năng sẽ được chuyển tại thành nhiệt năng phục vụ các mục đích sử dụng
khác nhau.
Các loại thiết bị điện trong gia đình sử dụng cơng nghệ dây mayso thường được
bao bọc bên ngoài bằng một lớp vật liệu chống cháy và cách nhiệt. Tuy nhiên,
sức nóng tỏa ra từ các thiết bị này là rất lớn. Do đó, nên cẩn thận tuyệt đối khi sử
dụng các thiết bị ứng dụng của dây mayso, đặc biệt tránh xa tầm tay trẻ em.

16



2. Sơ đồ Cơ bản của hệ thống máy sấy đơn giản đo và theo dõ
nhiệt độ, độ ẩm bằng webserver:

Giao thức MQTT

17


III. Hoạt động
1. Cơ sở dữ liệu và biểu đồ
File install.php:Tạo cơ sở dữ liệu có tên là espdemo,và tạo bảng có tên là logs
Câu lệnh Mở một kết nối mới đến máy chủ MySQL
$conn = new mysqli($servername, $username, $password);
Trong đó:new mysqli():là hàm cho phép php kết nối với CSDL
$conn : là biến sử dụng để kết nối với cơ sở dữ liệu
$servername : là tên hoặc địa chỉ IP của hosting MySQL Server
$username :là giá trị user name trong MySQL server
$password:là mật khẩu.
Kiểm tra kết nối:
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
  }
Tạo cơ sở dữ liệu có tên là espdemo
    $sql = "CREATE DATABASE espdemo";
    if ($conn->query($sql) === TRUE) {
        echo "Database created successfully";
    } else {
        echo "Error creating database: " . $conn->error;
  }
    $conn->close();

Tạo bảng có tên là logs có 7 cột lần lượt là id, nhietdo, doam, remark.Date,
Time, TimeStamp
$sql = "CREATE TABLE logs (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nhietdo VARCHAR(30),
    doam VARCHAR(30),
    remark VARCHAR(50),
    `Date` DATE NULL,
    `Time` TIME NULL,
    `TimeStamp` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON
UPDATE CURRENT_TIMESTAMP
    )";
Kết quả:
18


hình ảnh 7 : cơ sở dữ liệu

File connect.php: dùng để kết nối với cơ sở dữ liệu
$server = "localhost";
    $user = "root";
    $password = "";
    $database = 'espdemo';
  
    $conn = new mysqli($server,$user,$password, $database);
  
    if($conn){
        mysqli_query($conn,"SET NAMES 'utf8'");
        echo ' Da ket noi thanh cong';
  }

    else{
        echo 'Ket noi that bai';
  }
Nếu kiểm trả có kết nối thành cơng với SQL thì hiển thị “Da ket noi thanh cong”
còn kết nối lỗi hiển thị “Ket noi that bai”

File BieuDo.php:Để vẽ biểu đồ
require('connect.php');
$sql = "SELECT * FROM logs ORDER BY id DESC limit 1";
$result = mysqli_query($conn,$sql);
$dataPoints = array();
$dataPoints2 = array();

19


Đầu tiên gọi file connect.php file để kết nối với SQL
Câu truy vấn “SELECT * FROM logs ORDER BY id DESC limit 1” Sắp xếp
dữ liệu theo truyền giảm dần theo cột id là lấy 1 hàng đầu tiên (hay lấy hàng mới
nhất) trong bảng logs của espdemo được gọi kết nối.
Hàm mysqli_query() sẽ thực hiện truy vấn đối với cơ sở dữ liệu.Trong đó
$conn là kết nối MySQL , $sql là câu truy vấn.
Tạo 2 mảng có tên là dataPoints và dataPoints2
if ($result=mysqli_query($conn,$sql
)){
        while ($row = $result->fetch_assoc()) {    
            $y = $row["nhietdo"];
            $z = $row["doam"];
            // $datetime = $row['Time'];
  

            // $time= strtotime($row['Time'])*1000; // chuyển sang dạng format unix
 *1000
            // $data[] = "[$time,$row_value1]";
    }
        mysqli_free_result($result);
  }
    array_push($dataPoints, array("x" => $i, "y" => $y));
    array_push($dataPoints2, array("x" => $i, "y" => $z));
$result=mysqli_query($conn,$sql)Dữ
liệu
được
trả
về
bởi
hàm mysqli_query() được lưu trữ trong biến $result.
Câu lệnh điều kiện if kiểm tra nếu có dữ liệu được trả về thì chạy vịng lặp
While($row = $result->fetch_assoc()) trong đó $result->fetch_assoc() sẽ tìm và
trả về một dịng kết quả của một truy vấn MySQL là result dưới dạng một mảng
kết hợp và lưu vào biến row
Biến y = giá trị của cột [nhietdo], Biến x = giá trị của cột [doam]
Hàm mysqli_free_result($result) giải phóng bộ nhớ của biến đã lưu kết quả truy
vấn trước đó. $result là kết quả của truy vấn
Hàm array_push($dataPoints, array("x" => $i, "y" => $y)) :dùng để thêm một
phần tử mới vào cuối mảng.Trong đó dataPoints là mảng cần thêm ,x và y là giá
trị muốn thêm vào mảng
Sau đó khi lấy dữ liệu thực hiện việc vẽ biểu đồ bằng Canvas trong JS
File view.php: Hiển thị lịch sử do

20



 $sql = "SELECT * FROM logs ORDER BY id DESC LIMIT 100";
    if ($result=mysqli_query($conn,$sql))
  {
       echo "<TR> <TH>Nhietdo</TH> <TH>Doam</TH> <TH>Date</TH>
<TH>Time</TH> </TR>";
        while ($row=mysqli_fetch_row($result))
    {
            echo "<TR>";
            echo "<TD>".$row[1]."</TD>";
            echo "<TD>".$row[2]."</TD>";
            echo "<TD>".$row[4]."</TD>";
            echo "<TD>".$row[5]."</TD>";
            echo "</TR>";
    }
        echo "</TABLE>";
        mysqli_free_result($result);
  }
    mysqli_close($conn);
Câu truy vấn với CSDL : $sql = "SELECT * FROM logs ORDER BY id DESC
LIMIT 100"; sắp xếp theo truyền giảm dần theo cột id và lấy số lượng 100 hàng
của bảng logs.
Tạo bảng các ô tiêu đề là Nhietdo ,Doam , Data , Time
While(): Đẩy dữ liệu từ SQL vào bảng.
mysqli_free_result($result) giải phóng bộ nhớ của biến đã lưu kết quả truy vấn
trước đó. $result là kết quả của truy vấn
mysqli_close($conn);Đóng kết nối với SQL

2. Điều khiển máy sấy.


void led_on(){
  digitalWrite(D4,LOW);
21


  server.send(200,"text/plain" , "ON");  
}
void led_off(){
  digitalWrite(D4,HIGH);
  server.send(200,"text/plain","OFF");  

            //Dieu Khien Led;
            var i=0;
            function ledon(){
                var xhttp = new XMLHttpRequest();
                xhttp.onreadystatechange = function(){
                    if(this.readyState ==4 && this.status ==200){
                        document.getElementById("led").innerHTML =
this.responseText;
          }
                };
                xhttp.open("GET","ledon",true);
                xhttp.send();
  
      }
  
            function ledoff(){
                var xhttp = new XMLHttpRequest();
                xhttp.onreadystatechange = function(){
                    if(this.readyState == 4 && this.status == 200){

                        document.getElementById("led").innerHTML =
this.responseText;
          }
                };
                xhttp.open("GET","ledoff",true);
                xhttp.send();
  
      }
  
            function statusled(){
                i=i+1;
                if(i%2 ==1){
                    ledon();
        }
                else{
                    ledoff();
        }
      }
22


3. Hiển thị nhiệt độ, độ ẩm.

Đọc dữ liệu nhiệt dộ, độ ẩm
//DHT11
void docdulieunhietdo(){
  nhietdo = dht.readTemperature();
  String snhietdo = String(nhietdo);
    server.send(200,"text/plane",snhietdo);
}

void docdulieudoam(){
  doam = dht.readHumidity();
  String sdoam = String(doam);
  server.send(200,"text/plane",sdoam);
}
Hiển thị nhiệt độ, độ ẩm lên giao diện
  setInterval(function() {
            // Call a function repetatively with 2 Second interval
            getnhietdo();
            getdoam();
            }, 1000); //1000mSeconds update rate
      
            function getnhietdo() {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                document.getElementById("nhietdos").innerHTML =
this.responseText;
        }
            };
            xhttp.open("GET", "docnhietdo", true);
            xhttp.send();
      }
      
            function getdoam() {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
23



                document.getElementById("doams").innerHTML = this.responseText;
        }
            };
            xhttp.open("GET", "docdoam", true);
            xhttp.send();
      }

24



×