Tải bản đầy đủ (.docx) (67 trang)

Báo cáo Đồ án hệ thống nhúng Đề tài : Thiết kế hệ thống giám sát nhiệt độ, độ ẩm, thời gian thực qua sms

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 (3.15 MB, 67 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG


________________________

Báo cáo
Môn : Đồ án hệ thống nhúng
Đề tài : Thiết kế hệ thống giám sát nhiệt độ, độ ẩm,
thời gian thực qua sms
Giảng viên hướng dẫn: Nguyễn Ngọc Minh
Sinh viên thực hiện: Dương Quang Hà

B17DCDT059

Nguyễn Thị Thương

B17DCDT177

Đào Duy Anh

B17DCDT005

Nguyễn Anh Quân

B17DCDT145

Hà Nội, tháng 5/2021

MỤC LỤC
LỜI MỞ ĐẦU


1

Chương 1. TỔNG QUAN VỀ ĐỀ TÀI

2

1.1 ĐẶT VẤN ĐỀ

2


1.2 MỤC TIÊU ĐỀ TÀI

2

1.3 NỘI DUNG NGHIÊN CỨU

2

1.4 GIỚI HẠN

3

1.5 BỐ CỤC ĐỒ ÁN

3

Chương 2. CƠ SỞ LÝ THUYẾT

4


2.1 GIỚI THIỆU PHẦN CỨNG

4

2.1.1 Tổng quan về vi điều khiển STM32F103C8T6.

4

2.1.2 Tổng quan về DHT11

6

2.1.3 Tổng quan về Module SIM800L

9

2.1.4 Tổng quan về LCD

12

2.1.5 Tổng quan về module I2C

16

2.2 GIỚI THIỆU VỀ TRÌNH BIÊN DỊCH KEILC VÀ STM32CUBEMX

18

2.2.1. Lý do lựa chọn


18

2.2.2. Tổng quan về CubeMX

18

2.2.3. Tổng quan về KeilC

20

2.2.4. Tổng quan về ST-Link

24

2.3. GIỚI THIỆU VỀ CHUẨN GIAO TIẾP I2C

26

2.3.1.Tổng quan về chuẩn giao tiếp I2C

26

2.3.2 Cách thức hoạt động

29

2.4. GIỚI THIỆU CHUẨN GIAO TIẾP UART.

33


2.4.1. Tổng quan về chuẩn giao tiếp UART

33

2.4.2. Cách thức hoạt động

35

2.5. GIỚI THIỆU VỀ CHỨC NĂNG RTC CỦA STM32F103C8T6
Chương 3. TÍNH TỐN VÀ THIẾT KẾ

41
42

3.1. TỔNG QUÁT VỀ ĐỀ TÀI

42

3.2. THIẾT KẾ HỆ THỐNG

42

3.2.1. Thiết kế sơ đồ khối hệ thống

42

3.2.2. Tính tốn và thiết kế

43


3.2.3. Sơ đồ nguyên lý

46


3.2.4. Sơ đồ PCB

47

3.2.5 Code

47

Chương 4. KẾT QUẢ, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN.

59

4.1 KẾT QUẢ

59

4.2 ĐÁNH GIÁ

61

4.3 HƯỚNG PHÁT TRIỂN

61


TÀI LIỆU THAM KHẢO

61


LỜI MỞ ĐẦU
Trong ứng dụng hàng ngày, nhu cầu theo dõi nhiệt độ, độ ẩm, thời gian ngày
tháng càng trở lên phổ biến và thiết thực và sử dụng trong: Sản xuất chế biến nông
nghiệp, hiển thị và thực thi điều khiển (quạt gió, máy sấy, điều hịa hay báo động).
Khái niệm đo nhiệt độ, độ ẩm, hiển thị kèm theo thời gian đã có từ rất lâu, trong tất cả
các đại lượng vật lý thì nhiệt độ, độ ẩm được quan tâm nhiều nhất. Nhiệt độ và độ ẩm
là yếu tố ảnh hưởng trực tiếp đến tính chất của vật chất và mơi trường sống, cịn thời
gian giúp ta có thể xem xét q trình của vật sống tồn tại và phát triển. Trong công
nghiệp sản xuất và trong lĩnh vực đo lường điều khiển, quá trình đo và xử lý nhiệt độ,
độ ẩm giữ 1 vài trò quan trọng. Trong các thiết bị đó có các thiết bị đòi hỏi về cảm
biến đo và điều chỉnh nhiệt độ, độ ẩm của khơng khí, hiện thị thời gian thực như điều
hịa, lị vi sóng, chng báo cháy,…. Do đó ta có thể thấy được tầm quan trong và tính
thực tế của việc đo và điều chỉnh nhiết độ và độ ẩm trong các thiết bị tự động hóa cũng
như trong cuộc sống hằng ngày. Vì vậy chúng em quyết định làm về đề tài: “THIẾT
KẾ HỆ THỐNG GIÁM SÁT NHIỆT ĐỘ, ĐỘ ẨM, THỜI GIAN THỰC QUA
SMS”. Đây là một đề tài rất sát với thực tế, mang tính ứng dụng thực tiễn cao.
Trong đồ án chắc hẳn còn nhiều sai sót, chúng em rất mong được sự chỉ bảo,
hướng dẫn của thầy để đồ án hoàn thiện hơn. Chúng em chân thành cảm ơn thầy!.

Chương 1. TỔNG QUAN VỀ ĐỀ TÀI
1.1

ĐẶT VẤN ĐỀ
Cuộc sống ngày càng phát triển nhanh chóng và hiện đại hơn, những cơng nghệ
mới ngày càng được phát minh và phát triển để đưa vào phục vụ cuộc sống hằng ngày

của con người. Những ứng dụng của IoTs được sử dụng ngày càng rộng rãi và trong
rất nhiều lĩnh vực: nông nghiệp, y tế, giáo dục, ... nhằm mang lại sự tiện nghi, an toàn
hơn cho người sử dụng. Trong đó khơng thể khơng kể đến những dự án, nghiên cứu về
lĩnh vực điều khiển và giám sát thông minh với sự tiên tiến vượt trội.
Điều khiển và giám sát thơng minh, là tích hợp các hệ thống như hệ thống điều
khiển và giám sát nhiệt độ, độ ẩm, ánh sáng, cường độ gió, … thành một hệ thống
nhất. Mỗi chức năng của điều khiển và giám sát thơng minh đều có khả năng tự vận
hành hoặc dưới sự điều khiển của người dùng, thông qua tin nhắn cung cấp nhiều chế
độ sử dụng. Người dùng có thể truy cập từ xa để kiểm tra báo và tắt hệ thống khi cần
thiết, tự động gửi theo thời gian cài đặt sẵn.
Vì thế hiện nay điều khiển và giám sát thông minh là một trong những đề tài
công nghệ ứng dụng được áp dụng trong rất nhiều dự án. Khơng chỉ hạn chế với
những tính năng nêu trên, ngày càng có nhiều nghiên cứu đề xuất phát triển hệ thống
điều khiển và giám sát để bám kịp theo sự phát triển của công nghệ, tối ưu hóa hiệu
năng sử dụng cũng như giá cả hợp lý.
Việc cung cấp các thông số qua SMS cho phép người dùng dễ dàng kiểm soát
được cũng như nhận biết được những cảnh báo một cách kịp thời nhất. Do đó, chúng

1


em quyết định thực hiện đề tài: “THIẾT KẾ HỆ THỐNG GIÁM SÁT NHIỆT ĐỘ,
ĐỘ ẨM, THỜI GIAN THỰC QUA SMS”. Đề tài ứng dụng công nghệ SMS phổ
biến trên nhiều thiết bị để điều khiển và giám sát. Với đề tài sử dụng thiết bị như vậy
sẽ hạ thấp được giá thành sản phẩm.
1.2

MỤC TIÊU ĐỀ TÀI

Đồ án được nhóm nghiên cứu, khảo sát và thực hiện với mục đích áp dụng các

kiến thức đã được học ở trường giúp cho những nhu cầu điều khiển và giám sát trở nên
tiện lợi hơn. Vì vậy nhóm thiết kế “THIẾT KẾ HỆ THỐNG GIÁM SÁT NHIỆT ĐỘ,
ĐỘ ẨM QUA SMS” với mong muốn đem những kỹ thuật và công nghệ mới để làm
đơn giản hóa việc giám sát, có thể giám sát dù ở bất cứ nơi đâu. Thiết bị được tích hợp
module sim 800L, nhiệt độ và độ ẩm DHT11, STM32F103C8T6. Thiết bị được giám
sát trực tiếp qua màn hình LCD hoặc giám sát từ xa qua qua điện thoại nhờ tin nhắn
SMS.

1.3

NỘI DUNG NGHIÊN CỨU

∙ Nội dung 1: Tìm hiểu về STM32F103C8T6, module sim 800L, nhiệt độ và
độ ẩm DHT11.
∙ Nội dung 2: Tìm hiểu RTC, cấu hình trên STM32 CubeMx.
∙ Nội dung 3: Thiết kế và tính toán thiết kế mạch phần cứng.
∙ Nội dung 4: Thi công phần cứng, thử nghiệm và hiệu chỉnh phần
cứng.
∙ Nội dung 5: Đánh giá kết quả thực hiện của mô hình.
∙ Nội dung 6: Viết báo cáo thực hiện.
1.4

GIỚI HẠN
∙ Hệ thống trung tâm: sử dụng STM32F103C8T6.
∙ Hệ thống cảm biến: gồm có cảm biến nhiệt độ và độ ẩm.
∙ Dùng tin nhắn SMS để giám sát gián tiếp hoặc trực tiếp qua màn hình LCD.

1.5

BỐ CỤC ĐỒ ÁN

❖ Chương 1: Tổng Quan. Chương này trình bày tổng quan, lý do chọn đề tài, mục
tiêu, nội dung nghiên cứu, các giới hạn và bố cục đồ án.
❖ Chương 2: Cơ Sở Lý Thuyết. Giới thiệu các linh kiện, thiết bị sử dụng thiết kế
hệ thống.
❖ Chương 3: Tính Tốn Và Thiết Kế Hệ Thống. Tính tốn thiết kế, đưa ra sơ đồ
nguyên lí của hệ thống.

2


❖ Chương 4: Kết Quả, Nhận Xét, Đánh Giá. Đưa ra kết quả đạt được sau một thời
gian nghiên cứu, một số hình ảnh của hệ thống, đưa ra những nhận xét, đánh giá
toàn bộ hệ thống.
❖ Chương 5: Kết Luận và Hướng Phát Triển. Trình bày những kết luận về hệ
thống những phần làm rồi và chưa làm, đồng thời nếu ra hướng phát triển cho
hệ thống.

Chương 2. CƠ SỞ LÝ THUYẾT
2.1 GIỚI THIỆU PHẦN CỨNG
2.1.1 Tổng quan về vi điều khiển STM32F103C8T6.
❖ Giới thiệu sơ lược về vi điều khiển STM32F103C8T6
STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụng
như F0,F1,F2,F3,F4….. Stm32f103 thuộc họ F1 với lõi là ARM COTEX M3.
STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz. Giá thành cũng khá rẻ so
với các loại vi điều khiển có chức năng tương tự. Mạch nạp cũng như cơng cụ lập trình
khá đa dạng và dễ sử dụng.
Một số ứng dụng chính: dùng cho driver để điều khiển ứng dụng, điều khiển ứng
dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vi chơi game,
GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần, máy in,
máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ…

Phần mềm lập trình: có khá nhiều trình biên dịch cho STM32 như IAR
Embedded Workbench, Keil C… Ở đây mình sử dụng Keil C nên các bài viết sau
mình chỉ đề cập đến Keil C.
Thư viện lập trình: có nhiều loại thư viện lập trình cho STM32 như:
STM32snippets, STM32Cube LL, STM32Cube HAL, Standard Peripheral Libraries,
Mbed core. Mỗi thư viện đều có ưu và khuyết điểm riêng, ở đây mình xin phép sử
dụng Standard Peripheral Libraries vì nó ra đời khá lâu và khá thông dụng, hỗ trợ
nhiều ngoại vi và cũng dễ hiểu rõ bản chất của lập trình.

3


Hình 2.1 STM32F103C8T6
Mạch nạp: có khá nhiều loại mạch nạp như : ULINK, J-LINK , CMSIS-DAP,
STLINK… ở đây mình sử dụng Stlink vì giá thành khá rả và debug lỗi cũng tốt.
Board để lập trình: các bạn có thể mua sẵn 1 số kit ra chân đã có sẵn trên thị
trường hoặc thiết kế 1 cái board dành riêng cho bản thân mình. Ở đây mình đã thiết kế
1 board đã tích hợp sẵn mạch nạp, mình cũng đã test và chạy khá ổn, debug bằng Keil
C khá giống với phiên bản STlink V2 trên thị trường. Nói chung là sử dụng đồ tự làm
khá thú vị.
❖ Thông số kỹ thuật
- Vi điều khiển: STM32F103C8T6.
- Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành 3.3VDC qua IC
nguồn và cấp cho Vi điều khiển chính.
- Tích hợp sẵn thạch anh 8Mhz.
- Tích hợp sẵn thạnh anh 32Khz cho các ứng dụng RTC.
- Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART, USB,…
- Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset.
- Kích thước: 53.34 x 15.24mm
- Sử dụng với các mạch nạp:

o ST-Link Mini
o J-link
o USB TO COM

4


- Kết nối chân khi nạp bằng ST-Link Mini
- Nạp theo chuẩn SWD
o TCK — SWCLK
o TMS — SWDIO
o GND — GND
o 3.3V — 3.3V

❖ Sơ lược về Board trên:

Hình 2.2 Board STM32F103C8T6

- 1 cổng Mini USB dùng để cấp nguồn, nạp cũng như debug.
- 2 MCU bao gồm 1 MCU nạp và 1 MCU dùng để lập trình.
- Có chân Output riêng cho các chân mạch nạp trên MCU1.
- Có chân Output đầy đủ cho các chân MCU2.
- Chân cấp nguồn ngồi riêng cho MCU2 nếu khơng sử dụng nguồn từ USB.
- Thạch anh 32,768khz dùng cho RTC và Backup.
- Chân nạp dùng cho chế độ nạp boot loader.
- Nút Reset ngoài và 1 led hiển thị trên chân PB9, 1 led báo nguồn cho MCU2.

2.1.2 Tổng quan về DHT11

5



❖ Giới thiệu sơ lược về DHT11
Cảm biến số nhiệt độ, độ ẩm DHT11 là cảm biến rất thông dụng hiện nay vì chi
phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1-wire (giao tiếp digital 1-wire truyền
dữ liệu duy nhất). Cảm biến được tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận về
được chính xác mà khơng cần phải qua bất kỳ tính tốn nào.
❖ Thơng số kỹ thuật
-

Điện áp hoạt động : 3V - 5V (DC)
Dải độ ẩm hoạt động : 20% - 90% RH, sai số ±5%RH
Dải nhiệt độ hoạt động : 0°C ~ 50°C, sai số ±2°C
Tần số lấy mẫu tối đa: 1 Hz
Khoảng cách truyển tối đa: 20m

❖ Chức năng các chân của DHT 11
● Chân VCC: cực dương.
● Chân GND: cực âm.
● Chân DATA: chân tín hiệu.

❖ 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 tín hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
● Khi đã giao tiếp 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

6



Hình 2.3: Cách thức hoạt động

- Cách thức hoạt động
● 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. 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.
● Sau khoảng thời gian là 20 - 40 µs, DHT11 sẽ kéo chân DATA xuống thấp. Nếu >
40 µs mà chân DATA khơng được kéo xuống thấp nghĩa là không giao tiếp được
với DHT11.
● Chân DATA sẽ ở mức thấp 80 µs sau đó nó được DHT11 kéo lên cao trong 80 µs.
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 khơng. 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 DHT11.

Bước 2: Đọc giá trị trên DHT11
- 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 độ (°C).
● Byte 4: giá trị phần thập phân của nhiệt độ (°C).
● Byte 5: kiểm tra tổng
- Nếu Byte 5 = (Byte 1 + Byte 2 + Byte 3 + Byte 4) 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.
- Ví dụ như ta nhận được 40 bit (5 Byte) dữ liệu như sau:
0011 0101 0000 0000 0001 1000 0000 0000 0100 1101
Tính tốn:
8 Bit Checksum (Byte 5) = 0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 =
0100 1101


7


Độ ẩm: 0011 0101 = 35H = 53% RH (ở đây phần thập phân có giá trị 0000 0000,
nên ta bỏ qua khơng tính phần thập phân)
Nhiệt độ: 0001 1000 = 18H = 24°C (ở đây phần thập phân có giá trị 0000 0000,
nên ta bỏ qua khơng tính phần thập phân)
- Đọ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:

Hình 2.4: Bit 0

● Bit 1:

Hình 2.5: Bit 1

8


- Sau khi tiến hiệu được đưa về 0, ta đợi chân DATA của DHT11 được MCU kéo
lên 1. Nếu chân DATA là 1 trong khoảng 26 – 28 µs thì là bit 0, cịn nếu tồn tại 70
µs là bit 1. Do đó trong lập trình ta bắt sườn của chân DATA, sau đó delay 50 µs.
Nếu giá trị đo được là 0 thì ta đọc được bit 0, nếu giá trị đo được là 1 thì ta đọc
được là bit 1. Cứ như thế ta đọc các Bit tiếp theo.
2.1.3 Tổng quan về Module SIM800L
❖ Giới thiệu sơ lược về module SIM800L

- Module SIM800L có khả năng nhắn tin SMS, nghe, gọi, GPRS, … như một điện
thoại nhưng có kích thước nhỏ nhất trong các loại module SIM (25 mm x 22 mm).
Điều khiển module sử dụng bộ tập lệnh AT dễ dàng, chân kết nối dùng rào đực thông
dụng (male hearder) chuẩn 100 mil.

❖ Thông số kỹ thuật
● Nguồn cấp: 3.7V đến 4.2V, có thể sử dụng với nguồn dòng thấp từ 500 mAh trở
lên (như cổng USB, nguồn từ board Arduino).
● Khe cắm sim: MICROSIM. - Dòng khi ở chế độ chờ: 10 mA.
● Dòng khi hoạt động: 100 mA đến 1 A.
● Hỗ trợ

4 băng tần: GSM850MHz,

EGSM900MHz, DSC1800MHz,

PCS1900MHz.

9


Hình 2.6: Sơ đồ chân module SIM800L
❖ Chức năng các chân của module SIM800L:
● Chân NET: lắp anten, có thể dùng anten đi kèm hoặc anten mở rộng.
● Chân VCC: chân nguồn dương 4.2V.
● Chân GND: chân nguồn âm 0V.
● Chân RST: chân reset sử dụng khi khởi động lại module sim.
● Chân TXD: chân truyền UART TX.
● Chân RXD: chân nhận UART RX.
● Chân DTR: chân UART DTR. - Chân RING: báo có cuộc gọi đến

● Chân SPKP, SPKN: ngõ ra âm thanh, kết nối với loa để phát âm thanh.
● Chân MICP, MICN: ngõ vào âm thanh, gắn thêm mirco để thu âm thanh.
❖ Tập lệnh AT điều khiển cuộc gọi

Bảng 2.1 Tập lệnh AT điều khiển cuộc gọi
Tập lệnh

Mô tả

AT+CLIP=1<CR><LF>

Hiển thị thông tin cuộc gọi đến.

ATD[số_điện_thoại];<CR><LF>

Lệnh thực hiện cuộc gọi.
Lệnh thực hiện kết thúc cuộc gọi

ATH<CR><LF>

hoặc cúp
máy khi có cuộc gọi đến.
Lệnh thực hiện chấp nhận khi có

ATA<CR><LF>

cuộc gọi
đến.

10



❖ Tập lệnh AT điểu khiển tin nhắn

Bảng 2.2 Tập lệnh AT điều khiển tin nhắn
Tập lệnh

Mô tả
Lệnh đưa SMS về chế độ Text,

AT+CMGF=1<CR><LF>

phải có lệnh này mới gửi tin nhắn
dạng Text.

AT+CMGS=“Số_Điện_Thoại”<
CR><LF>

Đợi đến khi có kí tự ‘>’ được gửi
về thì đánh nội dung tin nhắn.
Lệnh gửi tin nhắn.
x là địa chỉ tin nhắn cần đọc.

AT+CMGR=x<CR><LF>

Đọc một tin nhắn vừa gửi đến, lệnh
được trả về nội dung tin nhắn,
thông tin người gửi, thời gian gửi.

AT+CMGDA=“DEL


Xóa tồn bộ tin nhắn trong các hộp

ALL”<CR><LF>

thư.

AT+CNMI=2,2<CR><LF>

Hiển thị nội dung tin nhắn ngay khi
có tin nhắn đến.

- Sau mỗi tập lệnh AT thường thấy <CR><LF> thực chất nó là hai mã điều khiển
<CR>tương ứng 0x0D (hexa), <LF> tương ứng 0x0A (hexa)

2.1.4 Tổng quan về LCD
❖ Giới thiệu sơ lược về LCD
Màn hình LCD 1602 xanh lá 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, nhiều code mẫu và
dễ dàng sử dụng hơn nếu đi kèm mạch chuyển tiếp I2C.

11


❖ Thơng số kỹ thuật LCD 16×2
● LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển
(RS, RW, EN).
● 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.
● Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ
dữ liệu.

● Chúng cịn giúp ta cấu hình ở chế độ đọc hoặc ghi.
LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm.
Bảng 2.3: Chức năng các chân của LCD
Châ



n

hiệu

1

Vss

Mô tả

Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
GND của mạch điều khiển

2

VDD

Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VCC=5V của mạch điều khiển

3

VEE


4

RS

Điều chỉnh độ tương phản của LCD.
Chân chọn thanh ghi (Register select). Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi.

12


+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD
(ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở
chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên
trong LCD.
5

R/W

Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để
LCD ở chế độ đọc.

6

E

Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus

DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép
của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp
nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low
transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát
hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ
ở bus đến khi nào chân E xuống mức thấp.

7-

DB0 - Tám đường của bus dữ liệu dùng để trao đổi thơng tin với MPU.

14

DB7

Có 2 chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB
là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới
DB7, bit MSB là DB7

15

-

Nguồn dương cho đèn nền

16


-

GND cho đèn nền

❖ Ghi chú :

13


● Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thơng tin từ LCD thơng qua các chân
DBx.
● Cịn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD thông
qua các chân DBx.

❖ Các thanh ghi
- Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR (Instructor
Register) và thanh ghi dữ liệu DR (Data Register)

● Thanh ghi IR : Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám
đường bus DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng.
Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR. Nghĩa
là, khi ta nạp vào thanh ghi IR một chuỗi 8 bit, chíp HD44780 sẽ tra bảng mã lệnh
tại địa chỉ mà IR cung cấp và thực hiện lệnh đó.
VD : Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7…DB0)
Lệnh “hiển thị màn hình và con trỏ” có mã lệnh là 00001110
● Thanh ghi DR : Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng RAM
DDRAM hoặc CGRAM
(ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này gởi ra cho MPU
(ở chế độ đọc). Nghĩa là, khi MPU ghi thơng tin vào DR, mạch nội bên trong

chíp sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM. Hoặc khi thông
tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng RAM nội
của HD44780 sẽ được chuyển ra DR để truyền cho MPU.
=> Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ 2
thanh ghi này khi giao tiếp với MPU. Bảng sau đây tóm tắt lại các thiết lập đối
với hai chân RS và R/W theo mục đích giao tiếp.

RS

R/W

Chức năng

0

0

Ghi vào thanh ghi IR để ra lệnh cho LCD

14


0

1

Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6

1


0

Ghi vào thanh ghi DR

1

1

Đọc dữ liệu từ DR

Bảng 2.4 : Chức năng chân RS và R/W theo mục đích sử dụng

2.1.5 Tổng quan về module I2C
❖ Tổng quan về module I2C

Hình 2.11: Module I2C
- LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng
nhiều chân trên vi điều khiển. Module I2C LCD ra đời và giải quyết vấn để này cho
bạn. Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16x2 (RS, EN, D7, D6,
D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối. Module I2C
hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16x2, LCD 20x4, ...) và tương
thích với hầu hết các vi điều khiển hiện nay.
❖ Ưu điểm
● Tiết kiệm chân cho vi điều khiển.
● Dễ dàng kết nối với LCD.

15


❖ Thông số kĩ thuật

● Trọng lượng: 5g
● Điện áp hoạt động: 2.5-6V DC.
● Jump chốt: Cung cấp đèn cho LCD hoặc ngắt
● Biến trở xoay độ tương phản cho LCD
● Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).
● Giao tiếp: I2C.
● Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2).
● Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.
● Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.
● Kích thước: 41.5mm(L)X19mm(W)X15.3MM(H)

Hình 2.12: Hàn nối module I2C với màn hình LCD

2.2 GIỚI THIỆU VỀ TRÌNH BIÊN DỊCH KEILC VÀ STM32CUBEMX
2.2.1. Lý do lựa chọn
❖ Về KeilC

16


● Trình biên dịch keilC khá nhanh, mạnh, được nhiều người sử dụng, hỗ trợ
simulation, hỗ trợ nhiều loại debugger, tối ưu hóa cao cho các ứng dụng có bộ
xử lý lõi ARM.
● Hỗ trợ cho nhiều loại kiến trúc MCU.
● Hỗ trợ chúng ta cách quản lý source code bằng cách add source vào project
explorer, cấu hình target device, define parameter rất tiện lợi....

❖ Về STM32CubeMX
● STM32Cube mang tất cả các công cụ và các phần mềm nhúng tới cho người
dùng STM32 một cách tích hợp và đơn giản. Hãng ST đưa ra một giải pháp

thân thiện hơn: Miễn phí bản quyền, tăng tốc độ develope, giảm giá thành
R&D, tối ưu được lợi nhuận.
● Giúp cấu hình ngoại vi dễ dàng: Chọn các pin trên chip và chọn các tính năng
mong muốn gắn với nó. Cấu hình Middlewares (FATS, FREERTOS), các ngoại
vi như CRC, IWDG, TIMERS…, cấu hình Clock và tính tốn mức độ tiêu hao
năng lượng.
● STM32CubeMX tự động download các driver mới nhất của ST dành cho các
dịng chip của mình.
● Tự động tạo project dựa trên cấu hình ở trên. STM32CubeMX đầu tiên sẽ
download driver của dịng chip cần cấu hình, sau đó tạo code và copy các driver
cần thiết vào projects, và tạo project trên các cơng cụ lập trình phổ biến như
Keil hay IAR. Sau khi tạo xong, chúng ta có thể bắt tay ngay vào việc viết code.

2.2.2. Tổng quan về CubeMX
- Khi bước đầu chuyển sang làm quen với dòng vi điều khiển ARM từ các dòng vi điều
khiển truyền thống như AVR, PIC… chúng ta sẽ dễ cảm thấy bị choáng ngợp vì sự
phức tạp và khổng lồ của nó. Do vậy các nhà sản xuất đã phát triển các thư viện/driver
chuẩn cho các con chip của họ. Chúng ta sẽ không làm việc trực tiếp ở mức register
nữa, mà làm quen với các hàm API đã được nhà sản xuất cung cấp sẵn, giúp cho việc
viết chương trình trở nên dễ dàng hơn nhiều.

17


- Hãng ST trước đây cũng cung cấp thư viện ngoại vi chuẩn (Standard Peripheral
Libraries) để cho chúng ta sử dụng. Tuy nhiên sử dụng nó cũng cịn q nhiều điều
phức tạp, và những ai mới bước vào thế giới ARM sẽ rất dễ nản lịng. Ví dụ đơn giản
nhất là việc khởi tạo phần cứng ( Cài đặt RCC cho hệ thống, cài đặt ngoại vi…) cũng
khá phức tạp.
- Sau đó ST ra mắt cơng cụ STM32 MicroExplorer để giúp cấu hình ngoại vi, cũng

như tạo project dựa trên các cấu hình đó, việc cịn lại của chúng ta chỉ là viết code của
mình. Trải qua nhiều version, STM32 MicroExplorer đã phát triển thành
STM32CubeMX, một chương trình hồn thiện hơn rất nhiều và giúp cho việc lập trình
trên STM32 dễ dàng hơn bao giờ hết

Hình 2.15: Cấu hình bằng STM32CUBE

2.2.3. Tổng quan về KeilC

18


❖ Giới thiệu
KeilC uvision 5 là một phần mềm hỗ trợ cho người dùng trong việc lập trình cho vi
điều khiển các dòng khác nhau (Atmel, AVR,..). KeilC giúp người dùng soạn thảo và
biên dịch chương trình C hay cả ASM thành ngôn ngữ máy để nạp vào vi điều khiển
giúp chúng ta thương tác giữa vi điều khiển và người lập trình.
❖ Cách cài đặt
Bước 1:
● Đầu tiên các bạn truy cập trang chủ keil để tải phần mềm
● Sau đó kích chọn MDK-Arm để tải. (Phiên bản hiện tại là 5.27.1.0)

Hình 2.16: Cách cài đặt KeilC
● Tiếp theo kích chọn MDK527.EXE

19


Hình 2.17: Cách cài đặt KeilC
● Chọn đường dẫn để lưu file và nhấn Save để download.

Bước 2:
● Sau khi download xong, các bạn mở file setup vừa tải lên:

Hình 2.18: Cách cài đặt KeilC
● Chọn I agree to all terms of the preceding License Agreement -> Next

20


Hình 2.19: Cách cài đặt KeilC
● Điền thơng tin và chọn đường dẫn lưu phần mềm:

Hình 2.20: Cách cài đặt KeilC

21


×