Professional Documents
Culture Documents
ĐỒ ÁN MÔN HỌC
Em xin gửi lời cảm ơn chân thành đến thầy PGS.TS. Nguyễn Thanh Bình đã
tận tình hướng dẫn, chỉ dạy trong suốt quá trình thực hiện đề tại của khóa học này.
Tuy nhiên trong quá trình nghiên cứu thực hiện đề tài, do kiến thức chuyên
ngành còn hạn chế nên em vẫn còn nhiều thiếu sót khi tìm hiểu, trình bày sản phẩm
đề tài. Rất mong nhận được sự quan tâm, góp ý của thầy để đề tài của em được đầy
đủ và hoàn chỉnh hơn.
Lê Thành Đạt
1
LỜI NÓI ĐẦU
Công nghệ vi điều khiển là một trong những thành tựu khoa học đánh dấu
bước ngoặt trong lịch sử về sự phát triển của ngành khoa học – công nghệ. Nó đã
đóng góp hàng loạt các ứng dụng và sản phẩm vào đời sống thực tiễn của con
người, trên hầu hết tất cả các lĩnh vực. Đặc biệt trong nền công nghiệp hóa và hiện
đại hóa của nước ta. Sở dĩ vi điều khiển có thể giúp con người tự động hóa trong
quá trình sản xuất, phục vụ cuộc sống vì chúng có khả năng sau: Nhận lệnh thao tác
từ người dùng thông qua bàn phím, nút nhấn, cảm biến đo lường, nhận dữ liệu từ
những vi điều khiển khác, xử lý tính toán, giải mã dữ liệu, đưa kết quả đầu ra để
hiển thị dữ liệu qua màn hình, đưa kết quả đầu ra bằng tín hiệu điện để điều khiển
còi báo, động cơ, bóng đèn, sợi đốt, màn hình…
Chính nhờ những khả năng đó mà con người đã sử dụng những bộ vi điều
khiển chuyên dụng để tích hợp trên các thiết bị điện tử thông minh có khả năng tự
động hóa hoàn toàn.
Tìm hiểu về vi điều khiển là ứng dụng vi điều khiển vào việc THIẾT KẾ
MẠCH ĐÈN LED VÀ MẠCH ĐO NHIỆT ĐỘ, ĐỘ ẨM HIỂN THỊ QUA
LCD, DI ĐỘNG là đề tài mà chúng em chọn để tìm hiểu trong bộ môn Lập Trình
Nhúng.
Chương 2: Cơ sở lý thuyết.
Kết Luận
2
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
3
MỤC LỤC
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT..........................................................................8
2.1. Arduino...........................................................................................................8
3.2. Thực hiện mạch đo nhiệt độ, độ ẩm hiển thị lên LED và di động.................25
5
MỤC LỤC HÌNH ẢNH
6
1. GIỚI THIỆU
Cùng hòa nhịp với sự phát triển của thế giới, Việt Nam ta tiến dần trên con
đường công nghiệp hóa, hiện đại hóa nền sản xuất công nghiệp cũng như đời sống
của người dân. Với sự phát triển của công nghệ khoa học thì công cuộc này đang có
những bước tiến vược bậc. Ứng dụng việc đo nhiệt độ, độ ẩm đang được sử dụng
rộng rãi ở nhiều lĩnh vực và nhiều loại sản phẩm khác nhau.
Cùng hòa nhịp với sự phát triển của thế giới, Việt Nam ta tiến dần trên con
đường công nghiệp hóa, hiện đại hóa nền sản xuất công nghiệp cũng như đời sống
của người dân. Với sự phát triển của công nghệ khoa học thì công cuộc này đang có
những bước tiến vược bậc.
Chính vì vậy, thấy được tầm quan trọng và sự cần thiết phải có của việc đo
nhiệt độ, độ ẩm, em đã thực hiện đồ án mô hình “THIẾT KẾ MẠCH ĐÈN VÀ
MẠCH ĐO NHIỆT ĐỘ, ĐỘ ẨM HIỂN THỊ LCD VÀ DI ĐỘNG” nhằm đáp
ứng nhu cầu của mọi người.
7
2. CƠ SỞ LÝ THUYẾT
2.1. Arduino
Arduino được xem là nền tảng của “mã nguồn mở” được dùng để tạo nên các
loại ứng dụng trong lĩnh vực điện tử, khả năng tương tác với các thiết bị tương ứng
nhau hoặc tương tác với môi trường để thuận lợi hơn.
Arduino được ví như chiếc máy tính mini để người sử dụng dùng để lập trình,
xây dựng và thực hiện các loại dự án về điện tử một cách hữu ích nhất mà không
cần đến sự xuất hiện của các loại công cụ chuyên biệt dùng riêng cho quá trình phục
vụ nạp code.
o Phần cứng: Vi điều khiển (hay còn được gọi với cái tên khác là board
mạch mã nguồn mở).
o Arduino Uno: là một loại board mạch đơn giản nhất phù hợp với đối
tượng mới bắt đầu. Dữ liệu số bao gồm 14 chân, đầu vào gồm 6 chân
5V, khả năng phân giải là 1024 mức. Chạy với tốc độ 16MHz, điện áp
từ 7V đến 12V. Kích thước của Board này là 5,5x7cm. Giá 200.000
đồng.
o Phần mềm: Các phần mềm dành riêng hỗ trợ cho sự tích hợp IDE với
tác dụng soạn thảo, nạp chương cho board và biên dịch code.
8
2.1.2 Sơ đồ và thông số kỹ thuật
10
RESET: việc nhấn nút Reset trên board để reset vi điều khiển
tương đương với việc chân RESET được nối với GND qua 1
điện trở 10KΩ.
- Các cổng vào / ra:
o Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu.
Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên
mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up từ được
cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện
trở này không được kết nối).
o Một số chân digital có các chức năng đặc biệt như sau:
o Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín
hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V.
11
Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu
khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào
chân này thì bạn có thể dùng các chân analog để đo điện áp trong
khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.
- Để lập trình được cho các board Arduino, các bạn cần phải có một công cụ
gọi là Integrated Development Environment (IDE). Công cụ này được đội
ngũ kĩ sư của Arduino phát triển và có thể chạy trên Windows , MAC OS X
và Linux.
- Ưu điểm:
o Có thể sử dụng ngay:
Ưu điểm lớn nhất của Arduino là có thể sử dụng ngay. Vì
Arduino là một bộ hoàn chỉnh gồm bộ nguồn 5V, một ổ ghi,
một bộ dao động, một vi điều khiển, truyền thông nối tiếp,
LED và các jack cắm. Bạn không cần phải suy nghĩ về các kết
nối lập trình hoặc bất kỳ giao diện nào khác. Chỉ cần cắm nó
vào cổng USB của máy tính.
12
o Các mẫu có sẵn:
Một ưu điểm lớn khác của Arduino là thư viện các mẫu có sẵn
trong phần mềm Arduino. Để nói rõ hơn về ưu điểm này có thể
lấy ví dụ về đo lường điện áp. Ví dụ nếu bạn muốn đo điện áp
bằng cách sử dụng vi điều khiển ATmega8 và muốn hiển thị
đầu ra trên màn hình máy tính thì bạn phải trải qua toàn bộ quá
trình. Quá trình này sẽ bắt đầu từ việc học về bộ vi điều khiển
của ADC để đo lường, sau đó học giao tiếp nối tiếp để hiển thị
và cuối cùng là về bộ chuyển truyền cổng USB.
Sau khi bạn đưa vào một số điện trở và diode zener là project
có thể sẵn sàng. Bạn có thể dễ dàng thấy điện áp trên arduino.
o Các chức năng giúp đơn giản hóa công việc:
Trong quá trình mã hóa Arduino, bạn sẽ nhận thấy một số chức
năng giúp đơn giản hóa công việc. Một ưu điểm khác của
Arduino là khả năng chuyển đổi đơn vị tự động của nó. Trong
quá trình gỡ lỗi (debug), bạn không phải lo lắng về chuyển đổi
đơn vị. Chỉ cần chú ý vào các phần chính của project mà không
phải lo lắng về các vấn đề phụ.
o Cộng đồng lớn:
Có rất nhiều diễn đàn trên internet nói về Arduino. Kỹ sư và
các chuyên gia đang thực hiện dự án của họ thông qua
Arduino. Bạn có thể dễ dàng tìm thấy mọi thông tin về arduino.
Vì vậy, có thể kết luận lợi thế của Arduino là trong khi làm
việc trên các project khác nhau, bạn chỉ cần lo về ý tưởng sáng
tạo. Phần còn lại Arduino sẽ lo hết.
13
- Cảm biến nhiệt độ, độ ẩm DHT11 ra chân được tích hợp sẵn điện trở 5,1K
giúp người dùng dễ dàng kết nối và sử dụng hơn so với cảm biển DHT11
chưa ra chân, module lấy dữ liệu thông qua giao tiếp 1 wire( giao tiếp 1 dây).
Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính
xác mà không cần phải qua bất kỳ tính toán nào. Module được thiết kế hoạt
động ở mức điện áp 5VDC.
- Thông số kỹ thuật
14
o Điện áp hoạt động: 3V – 5V (DC)
o Dãi độ ẩm hoạt động: 20% - 90% RH, sai số ±5%RH
o Dãi nhiệt độ hoạt động: 0°C ~ 50°C, sai số ±2°C
o Khoảng cách truyền tối đa: 20m
- Kết nối chân với Arduino
Arduino DHT-11
5V VCC
GND GND
PIN 2 DATA
- Ngày nay, thiết bị hiển thị LCD 1602 (Liquid Crystal Display) được sử dụng
trong rất nhiều các ứng dụng của vi điều khiển. LCD 1602 có rất nhiều ưu
điểm so với các dạng hiển thị khác như: khả năng hiển thị kí tự đa dạng (chữ,
số, kí tự đồ họa); dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao
tiếp khác nhau, tiêu tốn rất ít tài nguyên hệ thống, giá thành rẻ,…
- LCD 1602 một sản phẩm quen thuộc với những người mới học và muốn thực
hiện các dự án về điện tử, lập trình. Với khả hiển thị 2 dòng với mỗi dòng 16
ký tự, đồng thời có rất nhiều ví dụ mẫu được cộng đồng Arduino xây dựng
sẵn sẽ giúp người mới sử dụng làm quen nhanh hơn cũng như tiết kiệm được
thời gian trong việc phát triển ứng dụng của mình.
15
Hình 2.5 Màn hình LCD 1602
16
2.3.2 Chức năng các chân và thông số kỹ thuật LCD 1602
o Chân số 1 - VSS : chân nối đất cho LCD được nối với GND của mạch
điều khiển.
o Chân số 2 - VDD : chân cấp nguồn cho LCD, được nối với VCC = 5V
của mạch điều khiển.
o Chân số 3 - VE : điều chỉnh độ tương phản của LCD.
o Chân số 4 - RS : chân chọn thanh ghi, được nối với logic "0" hoặc
logic "1":
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.
o Chân số 5 - R/W : chân chọn chế độ đọc/ghi (Read/Write), được nối
với logic “0” để ghi hoặc nối với logic “1” đọc.
o Chân số 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 này như sau:
17
Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào thanh
ghi bên trong 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.
o Chân số 7 đến 14 - D0 đến D7: 8 đường của bus dữ liệu dùng để trao
đổi thông tin với MPU. Có 2 chế độ sử dụng 8 đường bus này là:
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).
o Chân số 15 - A : nguồn dương cho đèn nền.
o Chân số 16 - K : nguồn âm cho đèn nền.
- Thông số kỹ thuật
o Điện áp MAX : 7V.
o Điện áp MIN : - 0,3V.
o Hoạt động ổn định : 2.7-5.5V.
o Điện áp ra mức cao : > 2.4.
o Điện áp ra mức thấp : < 0.4V.
o Dòng điện cấp nguồn : 350uA - 600uA.
o Nhiệt độ hoạt động : - 30 - 75 độ C.
o Kích thước: 80 x 36 x 12.5 mm.
o Chữ trắng, nền xanh.
o 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 Breadboard.
o Đèn LED nền có thể dùng biến trở hoặc PWM điều chình độ sáng
thích hợp.
o Có thể được điều khiển với 6 dây tín hiệu.
18
2.4. Cảm biến độ ẩm đất
- Cảm biến độ ẩm đất, trạng thái đầu ra mức thấp (0V), khi đất thiếu nước đầu
ra sẽ là mức cao (5V), độ nhạy cao chúng ta có thể điều chỉnh được bằng
biến trở. Phần đầu đo được cắm vào đất để phát hiện độ ẩm của đất, 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. Nhờ thế, các bạn có thể sử dụng Analog hoặc Digital của
Arduino để đọc giá trị từ cảm biến.
- Cảm biến độ ẩm đất có 4 chân : Vcc, GND, 2 ngõ ra là D0 ( cho giá trị trả về
mức logic 0 1) và A0 (giúp bạn có thể đọc được chính xác hơn độ ẩm của
đất). Bạn có thể dùng 1 trong 2 chân này...Ở đây đọc giá trị của cả 2 chân.
19
2.5. Module I2C Arduino
- LCD có quá 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
- Thông số kỹ thuật
o Điện áp hoạt động: 2.5-6V DC.
o Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780).
o Giao tiếp: I2C.
o Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân
A0/A1/A2).
o Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt.
o Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.
- Các lỗi thường gặp
o Hiển thị một dãy ô vuông.
o Màn hình chỉ in ra một ký tự đầu.
o Màn hình nhấp nháy.
20
o Các lỗi này chủ yếu là do sai địa chỉ bus, để sửa lỗi thay địa chỉ mặc
định là "0x27" thành "0x3F.
- Module NRF24L01 là một module truyền nhận dữ liệu nâng cao với khả
năng kết nối point-to-point (2 node mạng), hoặc network (mạng lưới nhiều
node mạng), sử dụng sóng radio 2.4GHz.
21
2.6.2 Giao tiếp Module NRF24L01 với Arduino
- Mỗi khi dùng một con LED chúng ta phải khai báo pinMode OUTPUT
chân digital mà ta sử dụng cho con đèn LED.
- Để bật một con đèn LED, phài dùng digiatalWrite HIGH cho chân được kết
nối với con LED.
- Để tắt một con đèn LED, phài dùng digiatalWrite LOW cho chân được kết
nối với con LED.
- Để thấy được trạng thái bật tắt của bòng đèn chúng ta phải đặt nó ở trong
vòng loop và phải dừng chương trình trong một khoảng thời gian đủ lâu để
mắt cảm nhận được. Vì vậy chúng ta phải sữ dụng hàm delay để dừng hẳn
chương trình trong một khoảng thời gian được đặt ra.
- Về nguyên lý mở tắt của đèn chúng ta sữ dụng các vòng lập để tự tạo cho
mình nhiều kiểu đèn sáng khác nhau.
22
2.8. Phần mềm Proteus
- Proteus là phần mềm cho phép mô phỏng hoạt động của mạch điện tử bao
gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều
khiển như MCS-51, PIC, AVR, … Proteus là phần mềm mô phỏng mạch
điện tử của Lancenter Electronics, mô phỏng cho hầu hết các linh kiện điện
tử thông dụng, đặc biệt hỗ trợ cho cả các MCU như PIC, 8051, AVR,
Motorola.
- Phần mềm bao gồm 2 chương trình:
o ISIS cho phép mô phỏng mạch
o ARES dùng để vẽ mạch in.
- Proteus là công cụ mô phỏng cho các loại vi điều khiển khá tốt, nó hỗ trợ các
dòng vi điều khiển PIC, 8051, PIC, dsPIC, AVR, HC11, MSP430,
ARM7/LPC2000 ... các giao tiếp I2C, SPI, CAN, USB, Ethernet,... ngoài ra
còn mô phỏng các mạch số, mạch tương tự một cách hiệu quả. Nếu bạn đang
muốn học lập trình trên Arduino hoặc bất kì vi điều khiển nào khác mà
không có điều kiện hoặc kinh nghiệm để làm các mạch phát triển hoặc bạn
muốn kiểm tra chương trình trước khi nạp vào mạch phát triển thì Proteus là
lựa chọn không thể bỏ qua.
- Ngoài chức năng mô phỏng "bá đạo" ra thì phần mềm Proteus còn được sử
dụng để thiết kế mạch, làm board, mô phỏng 3D.
23
3. PHÂN TÍCH VÀ THIẾT KẾ
- Mạch đèn LED biểu diễn nhiều chết độ sáng tắt khác nhau dành để trang trí.
- Tìm hiểu code và viết các phương thức sáng khác nhau.
24
3.1.3 Mạch LED
3.2. Thực hiện mạch đo nhiệt độ, độ ẩm hiển thị lên LED và di động
25
- 1 Module NRF24L01
26
Hình 3.13 Kết quả đo hiển thị lên smartphone
27
KẾT LUẬN
- Ưu điểm:
Mạch đơn giản, dễ dùng, thích hợp với mọi lứa tuổi, chỉ cần
cấp nguồn cho mạch chạy.
- Nhược điểm:
Mạch có thang đo hẹp và độ chính xác không cao.
- Phát triển chức năng đưa dữ liệu lên website hoặc phần mềm dạng biểu đồ để
dễ quản lý.
28