

















Preview text:
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ VIỄN THÔNG ====o0o====
BÁO CÁO BÀI TẬP LỚN
KĨ THUẬT VI XỬ LÝ
ĐỀ TÀI: ĐO, HIỂN THỊ VÀ ĐIỀU KHIỂN NHIỆT ĐỘ, ĐỘ ẨM
GVHD: NGUYỄN HOÀNG DŨNG Nhóm 10:
Họ và tên MSSV Lớp
1 .Nguyễn Bá Khởi 20146406 CN-ĐT1 K 59
2 .Lê Thị Minh Châu 20155155 CN-ĐT1 K 60
3 .Đoàn Kim Nguyên 20156528 CN-ĐT3 K 60 Hà Nội, tháng12 năm 2017 lOMoAR cPSD| 59421307 MỤC LỤC Trang
Lời nói đầu..............................................................................................................4
Chương 1 Tổng quan về đề tài................................................................................5
1.1 Tính ý nghĩa và thực tế của đề tài.....................................................................6
1.2 Sơ lược về mạch và sơ đồ khối của mạch........................................................6
1.2.1 Sơ lược về mạch..........................................................................................6
1.2.2 Sơ đồ khối...................................................................................................7
Chương 2 Thiết kế..................................................................................................8
2.1 Chức năng của các khối....................................................................................8
2.1.1 Khối cảm biến................................................................................................8
2.1.2 Khối điều khiển..............................................................................................10
2.1.2.1 Arduino là gì?.............................................................................................10
2.1.2.2 Arduino UNO R3........................................................................................13
2.1.3 Khối hiển thị..................................................................................................17
Chương 3 Thi công lắp đặt.....................................................................................18
Phụ lục....................................................................................................................19 lOMoAR cPSD| 59421307
PHÂN CÔNG CÔNG VIỆC VÀ NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Họ và tên Công việc Nguyễn Bá Khởi
-Thiết kế mạch, lắp đặt -Viết code Đoàn Nguyên
-Test mạch, viết báo cáo Lê Thị Minh Châu -Mua linh kiện -Viết báo cáo
Nhận xét của Giảng viên hướng dẫn
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
...................................................................................................................................... LỜI NÓI ĐẦU
Ngày nay, khoa học-công nghệ liên tục thay đổi. Đặc biệt là các công nghệ liên quan
đến lĩnh vực điện-điện tử. Điều này cho thấy sự phát triển của lĩnh vực điện tử là vô
cùng nhanh và mạnh, và gần như không có giới hạn. Do đó, việc học tập nghiên cứu
các đề tài về điện tử là việc hết sức cần thiết với sinh viên hiện nay. Là những sinh viên
của Viện Điện tử-Viễn thông, trường Đại học Bách khoa Hà Nội, với việc đã được làm
quen với các kiến thức căn bản về linh kiện điện tử, các mạch điện tử.... thì việc quan
tâm, tìm hiểu về vi điều khiển và vi xử lý là vô cùng cần thiết. Bước đầu của quá trình
tìm hiểu, nhóm em chọn kit vi điều khiển Arduino, là một dòng kit vi điều khiển được
ứng dụng rất rộng rãi hiện nay. Mục tiêu của đề tài:
• Làm quen và giao tiếp với Arduino UNO R3, LCD
• Sử dụng Arduino UNO R3 để đo nhiệt độ, độ ẩm, hiển thị kết quả lên LCD lOMoAR cPSD| 59421307
• Điều khiển thiết bị ngoại vi khi nhiệt độ hoặc độ ẩm quá giới hạn cho phép Nhiệm vụ của đề tài:
• Nghiên cứu cấu tạo và hoạt động của Arduino UNO R3
• Tìm hiểu nguyên lý và hoạt động của DHT11
• Tính toán và thiết kế mạch điện tử
• Xây dựng thuật toán và viết chương trình để kit vi xử lý thực hiện chức năng
phục vụ mục đích đặt ra.
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
GIỚI THIỆU ĐỀ TÀI
1.1 Tính ý nghĩa và thực tế của đề tài
Trong cuộc sống hiện nay có rất nhiều yếu tố ảnh hưởng đến quá trình sản
xuất và con người.Trong đó nhiệt độ và độ ẩm cũng là yếu tố được đề cập
tới rất nhiều, vì thế mạch đo nhiệt độ và độ ẩm ra đời là sự tất yếu. Với sự
phát triển của công nghệ hiện nay việc sản xuất mạch đo nhiệt độ và độ ẩm
đơn giản mà độ chính xác cao là điều khá đơn giản. Việc áp dụng trong thực
tế càng phổ biến hơn khi nhiệt độ độ ẩm đóng vai trò lớn ảnh hưởng đến con
người, hàng hoá, máy móc, độ bền … Vì vậy nhiệt độ được sử dụng hầu hết
các nhà máy sản xuất, kho chứa hàng hoá, bảo quản máy móc cũng như điều kiện vận hành.
Trong y tế nó được sử dụng rộng rãi trong các phòng cách ly, phòng điều trị
cho bệnh nhân cũng như áp dụng hầu hết trong các dây chuyền cũng như
các công nghệ sản xuất tuỳ theo nhu cầu mà chúng ta có thể tuỳ biến thêm
ngoài chức năng của đề tài này để phù hợp với đúng nhu cầu trong quá trình
hoạt động ngoài chức năng chính là hiển thị nhiệt độ độ ẩm của các khu vực
cần khảo sát nhiệt độ và độ ẩm.
Với đề tài này 1 bộ mạch “Đo, điều khiển nhiệt độ và độ ẩm” ta có thể đo
cùng lúc nhiệt độ và độ ẩm có thể phát triển hiệu quả hơn, nhưng đề tài chỉ
trong phạm vi là Bài tập lớn Kĩ thuật vi xử lý nên tính hiệu quả thực tế cũng
như tính chính xác của mạch không cao.
1.2 Sơ lược về hệ thống và sơ đồi khối của hệ thống. lOMoAR cPSD| 59421307
1.2.1 Sơ lược về hệ thống
Bộ mạch được điều khiển bởi kit vi điều khiển Arduino UNO R3 đóng vai trò
điều khiển và nhập xuất dữ liệu từ các thiết bị giao tiếp với nó, điển hình như cảm biến
nhiệt độ và độ ẩm DHT11 được giao tiếp với kit vi điều khiển Arduino UNO R3 và
nhập xuất dữ liệu đọc nhiệt độ và độ ẩm từ cảm biến sau đó giao tiếp với thiết bị LCD
mã hóa dữ liệu để thực hiện hiển thị kết quả ra màn hình với dữ liệu cùng cảm biến có
dải nhiệt độ từ 0℃ đến 50℃ và độ ẩm từ 20% đến 95%.
Sau khi lắp đặt mạch, vi điều khiển sẽ được nạp chương trình qu các lệnh được
thiết kế bằng ngôn ngữ C như những tập lệnh điều khiển vi điều khiển khác để mạch
hoạt động một cách trơn tru. 1.2.2 Sơ đồ khối Cảm biến VĐK LCD DHT11 Ngu ồn
Muốn cảm biến gửi tín hiệu đầu tiên, vi điều khiển sẽ gửi tín hiệu muốn đo đến cảm biến
DHT11 sau khi được xác nhận.
Khối cảm biến sẽ nhận nhiệt độ và độ ẩm từ môi trường bên ngoài để gửi tín hiệu dạng
sóng 5 byte dữ liệu và nhiệt độ đo được đến vi điều khiển.
Sau đó vi điều khiền sẽ đọc dữ liệu và gửi trực tiếp đến bộ màn hình LCD, qua bộ giải
mã được tích hợp trong LCD thì nhiệt độ và độ ẩm được hiển thị trên màn hình. Nguồn
được dùng để cung cấp cho vi điều khiển, cảm biến, màn hình LCD hoạt động ổn định.
CHƯƠNG 2 THIẾT KẾ lOMoAR cPSD| 59421307
2.1 CHỨC NĂNG CỦA CÁC KHỐI 2.1.1 Khối cảm biến
Hiện nay, trên thị trường có rất nhiều cảm biến đo nhiệt độ và độ ẩm như:
Cảm biến nhiệt độ: LM35, LM355, PT100... Hình 2.1 Cảmbiến LM35 Độ chính xác
thực tế: 1/4℃ ở nhiệt độ phòng và 3/4℃ ngoài
khoảng -55℃ đến 150℃. LM35 hiệu năng
cao, công suất tiêu thụ là 60µA, giá thành rẻ. Cảm
biến đo độ ẩm: HS1011, HS220... HinH Hình 2.2 cảm biến HS101
Cảm biến tích hợp đo cả nhiệt độ và độ ẩm: DHT11, DHT22, SHT11... Hình 2.3 Cảm biến SHT11
SHT11 có độ sai số nhỏ, phù hợp với khảo sát ở những nơi cần độ chính xác cao như
nhà máy, phòng thí nghiệm. lOMoAR cPSD| 59421307
Tuy nhiên, trong phạm vi Bài tập lớn Kĩ thuật vi xử lý, để phù hợp và tiện sử dụng hơn
thì ta sử dụng cảm biến tích hợp nhiệt độ và độ ẩm DHT11, cũng như giá thành rẻ hơn
những thiết bị khác nhưng có khuyết điểm là tính chính xác tương đối. DHT11
Cảm biến nhiệt độ và độ ẩ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 dây truyền dữ liệu
duy nhất). Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp có được dữ liệu chính xác
mà không phải qua tính toán. Hình 2.4 Cảm biến DHT11 Nguồn 3-5V
Dòng sử dụng: 2.5mA max (khi truyền dữ liệu)
Đo tốt ở độ ẩm 20-80%RH với sai số 5%
Đo tốt ở nhiệt độ 0 - 50℃ sai số ± 2℃
Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần) 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 lOMoAR cPSD| 59421307
Hình 2.5 dạng tín hiệu giao tiếp với cảm biến
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.
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
không. Nếu tín hiệu đo được DHT11 lên cao, khi đó hoàn thiện quá trình giao tiếp của MCU với DHT.
-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. Tr ng đó: 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 gia 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:
Hình 2.6 dạng tín hiệu khi ở bit 0. lOMoAR cPSD| 59421307
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 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.
2.1.2 Khối điều khiển
Ngày nay, những ứng dụng của vi điều khiển đã đi sâu vào đời sống sinh hoạt và
sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện hiện nay đều có sự
góp mặt của vi điều khiển và vi xử lí. Ứng dụng vi điều khiển trong thiết kế hệ thống
làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn định của
thiết bị và hệ thống.
Trên thị trường hiện nay có nhiều dòng vi điều khiển, kit vi điều điều khiển nhưng
tại sao lại chọn Arduino UNO R3 để thực hiện ứng dụng:
- Aruino UNO R3 được sử dụng phổ biến ở nước ta. Vì vậy, việc tìm mua và trao đổi kinh nghiệm là dễ dàng.
- Giá thành Arduino UNO R3 chấp nhận được với sinh viên.
- Arduino UNO R3 hỗ trợ nhiều tính năng để sinh viên tự học .
- Có sự hỗ trợ cao của nhà sản xuất về các công cụ lập trình, trình biên dịch,
mạch nạp code từ đơn giản. Không những vậy các tính năng đa dạng của các
dòng Arduino không ngừng được phát triển.
- Đây là họ VĐK được chế tạo theo kiến trúc RISC (Reduced Intruction
SetComputer) có cấu trúc khá phức tạp. Ngoài các tính năng như các họ VĐK khác,
nó còn tích hợp nhiều tính năng mới rất tiện lợi cho người thiết kế và lập trình.
2.1.2.1 Arduino là gì?
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với
nhau hoặc với môi trường được thuận lợi hơn. Phần cứng bao gồm một board mạch
nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-
bit. Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào
analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau.
Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắng mang
đến một phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và
giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác với môi trường thông
qua các cảm biến và các cơ cấu chấp hành. Những ví dụ phổ biến cho những người yêu
thích mới bắt đầu bao gồm các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển
động. Đi cùng với nó là một môi trường phát triển tích hợp (IDE) chạy trên các máy tính
cá nhân thông thường và cho phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc C++. lOMoAR cPSD| 59421307
Hình 2.7 Arduino loại: bộ điều khiển đơn Phần cứng:
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung
giúp dễ dàng lập trình và có thể mở rộng với các mạch khác. Một khía cạnh quan trọng
của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết nối với CPU của
board với các module thêm vào có thể dễ dàng chuyển đổi, được gọi là shield. Vài shield
truyền thông với board Arduino trực tiếp thông qua các chân khách nhau, nhưng nhiều
shield được định địa chỉ thông qua serial bus I²Cnhiều shield có thể được xếp chồng và
sử dụng dưới dạng song song. Arduino chính thức thường sử dụng các dòng chip
megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, và
ATmega2560. Một vài các bộ vi xử lý khác cũng được sử dụng bởi các mạch Aquino
tương thích. Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh
dao động 16 MHz (hoặc bộ cộng hưởng ceramic trong một vài biến thể), mặc dù một
vài thiết kế như LilyPad chạy tại 8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do
hạn chế về kích cỡ thiết bị. Một vi điều khiển Arduino cũng có thể được lập trình sẵn
với một boot loader cho phép đơn giản là upload chương trình vào bộ nhớ flash on-chip,
so với các thiết bị khác thường phải cần một bộ nạp bên ngoài. Điều này giúp cho việc
sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như là
một bộ nạp chương trình. 2.1.2.2 Arduino UNO R3
Nhắc tới dòng mạch Arduino dùng để lập trình, cái đầu tiên mà người ta thường nói
tới chính là dòng Arduino UNO. Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (R3). Hình 2.8 Arduino UNO R3
Một vài thông số của Arduino UNO R3 Vi điều khiển Atmega328 họ 8 bit lOMoAR cPSD| 59421307 Điện áp hoạt động
5V (chỉ được cấp qua cổng USB) Tần số hoạt động 16Mhz Dòng tiêu thụ Khoảng 30mA Điện áp khuyên dùng 7-12V Điện áp vào giới hạn 6-20V DC Số chân digital I/O 14 (6 chân hardware PWM) Số chân Analog 6 (độ phân giải 10 bit)
Dòng tối đa trên mỗi chân I/O 30mA Dòng ra tối đa (5V) 500mA Dòng ra tối đa (3.3V) 50mA Bộ nhớ flash
32 KB (Atmega328) với 0.5KB dùng bởi bootloader SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328) *Vi điều khiển Hình 2.9 Chip Atmega328
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8,
ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển
đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ -
độ ẩm và hiển thị lên màn hình LCD,… hay những ứng dụng khác. *Năng lượng
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn
ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì cấp nguồn
bằng pin vuông 9V là hợp lí nhất nếu không có sẵn nguồn từ cổng USB. Nếu cấp nguồn
vượt quá ngưỡng giới hạn trên sẽ làm hỏng Arduino UNO. lOMoAR cPSD| 59421307
*Các chân năng lượng
- GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi dùng cácthiết bị
sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau.
- 5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
- 3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA. - Vin
(Voltage Input): để cấp nguồn ngoài cho Arduino UNO, nối cực dương của nguồn với
chân này và cực âm của nguồn với chân GND.
- IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đoở chân
này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy không được lấy nguồn 5V từ chân này để
sử dụng bởi chức năng của nó không phải là cấp nguồn.
- RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương vớiviệc
chân RESET được nối với GND qua 1 điện trở 10KΩ. Lưu ý:
+Arduino UNO không có bảo vệ cắm ngược nguồn vào. Do đó phải hết sức cẩn thận,
kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino UNO. Việc làm chập
mạch nguồn vào của Arduino UNO sẽ biến nó thành một miếng nhựa chặn giấy, nên
dùng nguồn từ cổng USB nếu có thể.
+Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho các thiết bị
khác, không phải là các chân cấp nguồn vào. Việc cấp nguồn sai vị trí có thể làm hỏng
board. Điều này không được nhà sản xuất khuyến khích.
+Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dưới 6V có thể làm hỏng board.
+Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển ATmega328.
+Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của Arduino UNO
nếu vượt quá 200mA sẽ làm hỏng vi điều khiển.
+Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO sẽ làm hỏng vi điều khiển.
+Cường độ dòng điện qua một chân Digital hoặc Analog bất kì của Arduino UNO
vượt quá 40mA sẽ làm hỏng vi điều khiển. Do đó nếu không dùng để truyền nhận dữ
liệu, phải mắc một điện trở hạn dòng. *Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
• 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ
Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được
dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu.
• 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo
khi lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ
nhớ RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ
mà bạn phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất. lOMoAR cPSD| 59421307
• 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory):
đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của
mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM. *Cổng vào/ra
Hình 2.10 Cổng vào ra của Arduino
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).
Một số chân digital có các chức năng đặc biệt như sau:
• 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive –
RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua
2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial
không dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
• Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ
phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm
analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở
chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
• Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức
năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức
SPI với các thiết bị khác.
• LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút
Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13.
Khi chân này được người dùng sử dụng, LED sẽ sáng.
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. 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. lOMoAR cPSD| 59421307
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác. *Lập trình cho Arduino
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng. Ngôn ngữ này
dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung. Và Wiring lại là một biến
thể của C/C++. Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++.
Riêng mình thì gọi nó là “ngôn ngữ Arduino”, và đội ngũ phát triển Arduino cũng gọi
như vậy. Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu.
Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, người dùng một môi
trường lập trình Arduino được gọi là Arduino IDE (Intergrated Development
Environment) như hình dưới đây.
Hình 2.11 Giao diện chương trình 2.1.3 Khối hiển thị lOMoAR cPSD| 59421307
Hình 2.12 Màn hình LCD thực tế
LCD làm việc chế độ 8 bit ghép nối Port D của vi điều khiển trung tâm.
Hình 2.13 Sơ đồ chân LCD Chân Kí hiệu Chức Năng 1 VSS Mass 2 VDD Nguồn cung cấp cho LCD 3 VEE Chỉnh độ tương phản 4 RS Chon thanh ghi trong LCD 5 RW Đọc và ghi dữ liệu lOMoAR cPSD| 59421307 6 E Cho phếp chon LCD 7 D0 Bit 0 của byte dữ liệu 8 D1 Bit 1 của byte dữ liệu 9 D2 Bit 2 của byte dữ liệu 10 D3 Bit 3 của byte dữ liệu 11 D4 Bit 4 của byte dữ liệu 12 D5 Bit 5 của byte dữ liệu 13 D6 Bit 6 của byte dữ liệu 14 D7 Bit 7 của byte dữ liệu 15 BL- Nguồn cho LED nền LCD 16 BL+ Mass cho LED nền LCD
Bảng 2.1 Các kí hiệu và ý nghĩa chân của LCD
Chỉ dùng LCD để hiển thị (Write) nên chân R/W được nối mass CHƯƠNG 3 THI CÔNG LẮP ĐẶT
3.1 Trước khi thi công và lắp đặt
3.1.1 Tìm hiểu và chuẩn bị linh kiện
Tìm hiểu linh kiện và chuẩn bị những linh kiện cần thiết để tiến hành các bước
lắp đặt trên testboard. Đảm bảo linh kiện đầy đủ và có chất lượng tốt để không xảy ra lỗi đáng có.
Một số linh kiện cần sử dụng: -2 testboard -VĐK Arduino UNO R3 -Điện trở 10k -LCD 16x02 -Dây nối lOMoAR cPSD| 59421307 Hình 2.14 Mạch thực tế KẾT LUẬN
Bài tập lớn Kĩ thuật vi xử lý giúp chúng em hoàn thiện thêm kỹ năng làm việc nhóm.
Giúp chúng em vận dụng được hết kỹ năng đã học trên giảng đường vào thực tế, giúp
chúng em hoàn thiện rất nhiều kỹ năng để chuẩn bị tốt cho công việc sau này. Chúng em
xin cảm ơn thầy Nguyễn Hoàng Dũng, nhờ sự giúp đỡ tận tình của thầy mà nhóm em có
thể hoàn thành tốt công việc mà môn học đã đề ra.
TÀI LIỆU THAM KHẢO 1. Datasheet DHT11 2. https://www.wikipedia.org/
3. Học lập trình arduino tại: http://arduino.vn/
4. Hướng dẫn cài đặt phần mềm liên quan tại: https://www.youtube.com/ PHỤ LỤC Mã nguồn: #include #include #include LiquidCrystal_I2C lcd(0x27,16,2);
const int DHTPIN = 2; const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, lOMoAR cPSD| 59421307 0B00000, 0B00000, 0B00000, 0B00000 }; void setup() { lcd.init(); lcd.backlight();
lcd.print("Nhiet do: "); lcd.setCursor(0,1); lcd.print("Do am: "); lcd.createChar(1, degree); dht.begin(); int led = 11; pinMode(led, OUTPUT); } void loop() { float h = dht.readHumidity();
float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { } else { lcd.setCursor(10,0); lcd.print(round(t)); lcd.print(" "); lcd.write(1); lcd.print("C"); lcd.setCursor(10,1); lcd.print(round(h));
lcd.print(" %"); if (t < 30) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } }