Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 25

TRƯỜNG ĐẠI HỌC BÁCH KHOA

ĐẠI HỌC ĐÀ NẴNG


KHOA CƠ KHÍ

PBL 3: THIẾT KẾ VI ĐIỀU KHIỂN VÀ


CẢM BIẾN
ĐO CHẤT LƯỢNG NƯỚC TRONG THỜI
GIAN THỰC

Giảng viên hướng dẫn: T.S Đoàn Lê Anh


Sinh viên thực hiện: Võ Đức Thành
Trần Tuấn Anh
Lớp: 21CDT2
21CDT1
1
1. GIỚI THIỆU ĐỀ TÀI VÀ NGUYÊN LÝ MÔ HÌNH
Các thông số đo: độ dẫn điện, tổng chất rắn hòa tan, độ ẩm và nhiệt độ. Hệ thống đo chất lượng nước sử dụng nhiều
cảm biến, mô-đun thu thập thông tin và mô-đun truyền dữ liệu. Mô-đun thu thập thông tin bao gồm vi điều khiển
PIC16F877A. Mô-đun truyền dữ liệu bao gồm mô-đun GSM. Có rất nhiều cảm biến đo nhiệt độ, độ pH, độ dẫn điện và
tổng chất rắn hòa tan có trong nước. Các giá trị đo được sau đó được truyền đến trung tâm giám sát qua GSM; nó
cũng được hiển thị trên màn hình LCD bởi vi điều khiển. Hệ thống này có ưu điểm là độ chính xác cao và giá thành
thấp.

Hình 1. Hệ thống mô hình khảo sát chất lượng nước trong thời gian thực
2
CHỌN LINH KIỆN

1. DTH-22 Sensor
2. TDS Sensor
3. PIC16F877A
4. ESP8266 Module
5. LCD

Hình 2. Sơ đồ khối hệ thống

3
CHI PHÍ

4
2. MODULE ESP8266-ESP01

Module WiFi ESP8266 là một SOC (System on a chip) độc


lập với chồng giao thức TCP/IP tích hợp có thể cho bộ vi
điều khiển quyền truy cập vào mạng WiFi. ESP8266 có
khả năng lưu trữ một ứng dụng hoặc giảm tải tất cả các
chức năng kết nối mạng Wi-Fi từ bộ xử lý ứng dụng
khác. Mô-đun ESP8266 có giá rẻ với cộng đồng khổng lồ
và ngày càng phát triển. Mô-đun này có khả năng lưu trữ
và xử lý tích hợp đủ mạnh cho phép nó được tích hợp với
các cảm biến và các thiết bị ứng dụng cụ thể khác. Mức
độ tích hợp trên chip cao của nó cho phép sử dụng tối
thiểu mạch điện bên ngoài, bao gồm cả mô-đun mặt
trước, được thiết kế để chiếm diện tích PCB tối thiểu.

Hình 3. Module ESP8266-ESP01

5
MODULE ESP8266-ESP01

6
SƠ ĐỒ CHÂN CỦA ESP8266-01

Hình 4. Sơ đồ chân của ESP8266


KẾT NỐI ESP8266 VỚI PIC16F877A

8
CHUẨN GIAO TIẾP

USART (truyền nhận đồng bộ/bất đồng bộ đa dụng), chức năng chính
của nó là truyền nhận dữ liệu nối tiếp. Giao tiếp USART còn được gọi là
giao tiếp truyền thông nối tiếp
Chia làm hai nhóm chính:
• Giao tiếp đồng bộ nối tiếp: Sử dụng đường truyền dữ liệu và đường
truyền xung clock đồng bộ.
• Giao tiếp bất đồng bộ nối tiếp: Không truyền xung đồng bộ giữa thiết
bị truyền và nhận.
Chế độ UART là chế độ hoạt động bất đồng bộ. Ở chế độ này, các bit
truyền đi sẽ bao gồm 1 bit START (luôn ở mức 0), 8 hoặc 9 bit DATA và 1
bit STOP (luôn ở mức 1).

9
CHUẨN GIAO TIẾP

Hai chân dùng cho giao diện


USART là RC6/TX/CK và
RC7/RX/DT, trong đó
RC6/TX/CK dùng để truyền
xung clock và RC7/RX/DT dùng
để truyền dữ liệu.
PIC16F877A được tích hợp sẵn
bộ Baud Rate Generator 8 bit
cho chế độ USART.
Tốc độ Baud là số gói dữ liệu
truyền đi trong 1 giây.

Hình 5. Sơ đồ kết nối ESP8266 với PIC16F877A

10
CHUẨN GIAO TIẾP Ở CHẾ ĐỘ BẤT ĐỒNG BỘ

CSRC: Clock Source Select bit


Chế độ bất đồng bộ: không quan tâm.
TX9: 9-bit Transmit Enable Bit. Bit cho phép truyền dữ liệu 9 bit.
1 = Chọn truyền 9 bit 0= Chọn truyền 8 bit
TXEN: Transmit Enable bit. Bit cho phép truyền dữ liệu.
1 = Đã cho phép truyền 0 = Đã vô hiệu hóa truyền
SYNC: USART Mode Select bit. Lựa chọn chế độ USART.
1 = Synchronous mode 0 = Asynchronous mode
BRGH: High Baud Rate Select bit. Lựa chọn tốc độ baud (chỉ
dùng ở chế độ bất đồng bộ).
1 = High speed 0 = Low speed
TRMT: Transmit Shift Register Status bit. Trạng thái thanh ghi
dịch khi truyền dữ liệu.
1 = TSR empty 0 = TSR full
TX9D: 9th bit of Transmit Data. Bit chứa bit dữ liệu thứ 9 khi
truyền nhận dữ liệu 9 bit.

11
CHUẨN GIAO TIẾP Ở CHẾ ĐỘ BẤT ĐỒNG BỘ

SPEN: Serial Port Enable bit. Bit cho phép cổng nối tiếp hoạt động.
1 = cho phép cổng nối tiếp hoạt động 0 = không cho phép cổng nối tiếp hoạt động
RX9: 9-bit Receive Enable bit. Bit cho phép nhận dữ liệu 9 bit.
1 = nhận dữ liệu 9 bit 0= nhận dữ liệu 8 bit
TXEN: Transmit Enable bit. Bit cho phép truyền dữ liệu.
1 = Đã cho phép truyền 0 = Đã vô hiệu hóa truyền
SREN: Single Receive Enable bit. Bit cho phép nhận 1 byte dữ liệu. Không quan tâm ở chế độ bất đồng bộ
CREN: Continuous Receive Enable bit. Cho phép nhận một choỗi dữ liệu liên tục.
1 = Cho phép 0 = Không cho phép
ADDEN: Address Detect Enable bit. Cho phép xác nhận địa chỉ trong quá trình nhận.
1 = Cho phép 0 = Không cho phép
Bit báo xuất hiện lỗi framing” trong quá trình nhận dữ liệu (khối nhận không nhận được bit STOP đúng thời
điểm mong muốn.
1 = Phát hiện lỗi 0 = không có lỗi
OERR: Overrun Error bit. Bit báo lỗi tràn dữ liệu.
1 = Phát hiện lỗi 0 = không có lỗi
RX9D: 9th bit of Received Data. Bit chứa bit dữ liệu thứ 9 khi truyền nhận dữ liệu 9 bit.
12
TRUYỀN TRONG CHẾ ĐỘ BẤT ĐỒNG BỘ

Thành phần quan trọng nhất của quá


trình truyền dữ liệu trong chế độ bất
đồng bộ là thanh ghi dịch TSR
(Transmit Shift Register). Dữ liệu cần
truyền sẽ đứa trước vào thanh ghi
TXREG, sau đó thanh ghi TSR sẽ lấy
dữ liệu từ thanh ghi đệm TXREG. Do
đó TXREG bị rỗng và cờ ngắt TXIF set
lên 1.
Trạng thái của thanh ghi TSR sẽ thể
hiện thông qua cờ ngắt TRMT.
TSR không có trong bộ nhớ dữ liệu
mà chỉ được điều khiển bởi CPU.
Khối truyền dữ liệu được cho phép
hoạt động khi bit TXEN set lên 1. Quá
trình truyền khi có dữ liệu trong thanh
ghi TXREG và xung truyền baud được
tạo ra. Hình 6. Sơ đồ khối chế độ truyền

13
CÁC BƯỚC TRUYỀN

Các bước thực hiện khi truyền:


1. Tạo xung truyền tốc độ baud (đưa giá trị vào thanh ghi SPBRG).
2. Cho phép cổng giao tiếp nối tiếp bất đồng bộ hoạt động bằng cách xóa bit
SYNC và set bit SPEN.
3. Set bit TXIE nếu cần sử dụng ngắt.
4. Set bit TX9 nếu cần truyền 9 bit dữ liệu.
5. Set bit TXEN để cho phép truyền dữ liệu.
6. Đưa bit thứ 9 vào TX9D nếu truyền dữ liệu 9 bit.
7. Đưa 8 bit dữ liệu cần truyền vào thanh ghi TXREG.
8. Kiểm tra bit GIE và PEIE nếu sử dụng ngắt truyền

14
NHẬN TRONG CHẾ ĐỘ BẤT ĐỒNG BỘ

Dữ liệu sẽ được nhận từ RC7/RX/DT và đi


qua khối phục hồi dữ liệu.
Bit cho phép quá trình nhận dữ liệu là
CREN.
Thành phần quan trọng nhất của việc
nhận dữ liệu là thanh ghi dịch RSR
(Receive Shift Register).
Dữ liệu nhận được trong thanh ghi RSR sẽ
được đưa vào thanh ghi RCREG, sau đó cờ
ngắt nhận RCIF sẽ set lên 1 (bằng 0 khi
dữ liệu tại RCREG đã được đọc). RCREG là
thanh ghi có bộ đệm kép hoạt động theo
cơ chế FIFO.
Cần phải lấu hết dữ liệu của thanh RCREG
trước khi nhận dữ liệu tiếp theo, vì khi
thanh ghi này tràn thì cờ báo tràn OERR
được set, dữ liệu trong RSR sẽ bị mất và
quá trình đưa dữ liệu từ RSR đến RCREG Hình 7. Sơ đồ khối chế độ nhận
bị gián đoạn.

15
CÁC BƯỚC NHẬN

Các bước thực hiện khi nhận:


1. Tạo xung truyền tốc độ baud (đưa giá trị vào thanh ghi SPBRG).
2. Cho phép cổng giao tiếp nối tiếp bất đồng bộ hoạt động bằng cách xóa bit SYNC và set bit
SPEN.
3. Set bit RCIE nếu cần sử dụng ngắt.
4. Set bit RX9 nếu cần nhận 9 bit dữ liệu.
5. Set bit CREN để cho nhận dữ liệu.
6. Cờ RCIF được set sau khi nhận được dữ liệu.
7. Đọc thanh ghi RCSTA để đọc bit thứ 9 và kiểm tra xem quá trình nhận dữ liệu có bị lỗi không.
8. Đọc dữ liệu 8 bit từ thanh ghi RCREG.
9. Nếu quá trình nhận dữ liệu bị lỗi thì xóa lỗi đó bằng cách xóa bit CREN.
10. Kiểm tra bit GIE và PEIE nếu sử dụng ngắt nhận.

16
VÍ DỤ
Kiểm tra xem kết nối giữa ESP8266 và PIC16F877A có thành công hay không, sau đó tạo mạng WIFI
(SoftAP) với tên và mật khẩu ưa thích. Chương trình hoàn chỉnh và mô phỏng tương tự.
#define _XTAL_FREQ 20000000 //Đặt tần số thạch anh
#include < xc.h> delay_ms(1500);
#include "I2C.h" LCD_Clear();
#include "ESP8266.h" /*ESP đã kết nối*/
void main() /*Soft AP mode*/
{ esp8266_mode(2);
I2C_Init(); LCD_Set_Cursor(1,1);
LCD_Init(0x4E); LCD_Write_String("ESP set as AP");
Initialize_ESP8266() ; delay_ms(1500);
LCD_Set_Cursor(1,1); LCD_Clear();
LCD_Write_String(“Chat luong nuoc"); /*Module ở chế độ AP */
LCD_Set_Cursor(2,1); /*Thiết lập Access Point và Password*/
LCD_Write_String("ESP5266 with PIC"); esp8266_config_softAP(“voducthanh","123456789");
delay_ms(1500); LCD_Set_Cursor(1,1);
LCD_Clear(); LCD_Write_String("AP configured");
/*Kiểm tra nếu như ESP8266 đã kết nối*/ delay_ms(1500);
do /*AP thiết lập xong*/
{ while(1)
LCD_Set_Cursor(1,1); {
LCD_Write_String("ESP not found"); //do nothing
} while (!esp8266_isStarted()); //đợi đến khi ESP truyền lại"OK" }
LCD_Set_Cursor(1,1); }
LCD_Write_String("ESP is connected"); 17
3. TDS SENSOR

18
4. TDH22
Giới thiệu chung:
Cảm biến nhiệt độ và độ ẩm
DHT22 là cảm biến rất thông
dụng với sinh viên hiện nay
vì chi phí rẻ, dễ sử dụng và
kết nối với chip vi điều khiển
khá đơn giản (chỉ thông qua
một dây Dout) Hình 10. Hình ảnh thực tế DHT22
Thông số kỹ thuật
• Điện áp hoạt động: 3.3 – 6 VDC
• Đầu ra: Dữ liệu nối tiếp
• Phạm vi nhiệt độ: -40 ° C đến 80 ° C, sai số ± 0,5°C
• Phạm vi độ ẩm: 0% đến 100%, sai số ± 5RH
• Tần số lấy mẫu tối đa 0.5Hz (2 giây 1 lần)
• Nhiệt độ:
- Độ phân giải: 0,1°C
- Độ chính xác: ± 0,2°C
• Độ ẩm:
- Độ phân giải: 0,1 RH
- Độ chính xác: ± 1RH
Cảm biến DHT22 có bốn
chân, nhưng trong đó có
một chân không sử dụng.
Do đó, khi kết nối với bo
mạch thì nhà sản xuất đã
loại bỏ chân không sử
dụng này và chỉ đưa ra ba
chân cho người sử dụng
Hình 11. Các chân của cảm biến DHT22
Hình 12. Sơ đồ kết nối

Hình 13. Sơ đồ kết nối với PIC


Quá trình giao tiếp giữa DHT22 và PIC được
thực hiện chỉ bằng một đường tín hiệu( chân
Quá trình giao tiếp: Dout) và thường diễn ra trong khoảng 40 ms.
Dữ liệu truyền từ DHT22 đến PIC có độ dài
40 bit với bit MSB được truyền đi trước

8 bit 8 bit 8 bit 8 bit 8 bit


Độ ẩm Độ ẩm Nhiệt độ Nhiệt độ Check -
Phần nguyên Phần thập phân Phần nguyên Phần thâp phân sum
Quá trình chuyển nhận dữ liệu của cảm biến DHT22
• Đầu tiên PIC gửi tín hiệu “START” đến chân DOUT của DHT22: tín hiệu chuyển
từ mức “1” xuống mức “0” và phải duy trì trong một khoảng thời gian 18 ms. Sau
đó, vi điều khiển sẽ thiết lập chân này lên lại mức “1” trong khoảng 20 – 40 để
đợi đáp ứng từ DHT22

Hình 14. Quá trình chuyển nhận dữ liệu DHT22

You might also like