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

Thiết kế hệ thống đo và điều khiển nhiệt độ, độ ẩm bằng module bluetooth thông qua KIT arduino

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.47 MB, 33 trang )

BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN
HỌC VIỆN NÔNG NGHIỆP VIỆT NAM
-----o0o-------

ĐỒ ÁN MÔN HỌC VI XỬ LÝ TRONG ĐIỀU KHIỂN
Đề tài : “Thiết kế hệ thống đo và điều khiển nhiệt độ, độ ẩm bằng
module Bluetooth thông qua KIT Arduino”
Giảng viên hướng dẫn : Th.S Lại Văn Song
Sinh viên thực hiện : Lê Thế Liêm MSV : 573116
Trần Trung Hiếu MSV : 576180
Nguyễn Huy Toàn MSV : 576233
Đỗ Hồng Quân MSV : 573128
Trần Văn Linh MSV : 576118


I.

ĐỊNH HƯỚNG NGHIÊN CỨU KHOA HỌC

1.1. Mục đích:
Giúp sinh viên củng cố lý thuyết môn học Vi xử lý trong điều khiển. Hiểu
thêm về cấu trúc của các dòng vi điều khiển nói chung và họ 8051 nói riêng.
Biết về cách lập trình cho vi điều khiển và thực hiện được một số bài toán
điều khiển cơ bản.
Giúp sinh viên có thêm kỹ năng giải quyết một số bài toán điều khiển đơn
giản ứng dụng các dòng vi điều khiển. Có khả năng phân tích bài toán điều
khiển để tìm biện pháp giải quyết vấn đề, biết lựa chọn giải pháp hợp lý và
biết cách chọn lựa thiết bị vật tư sử dụng cho công việc.
Thông qua việc thực hiện đồ án môn học, sinh viên sẽ làm quen với cách làm
nghiên cứu khoa học và cách triển khai công việc theo nhóm. Việc thảo luận
và phân công hợp lý, cụ thể sẽ mang lại hiệu quả tốt nhất cho công việc.


Rèn thêm tư duy thực hiện và cách thức trình bày để sinh viên tiếp cận dễ
dàng hơn đối với các đồ án môn học khác và đặc biệt là đồ án tốt nghiệp sau
này khi sinh viên làm Khóa luận tốt nghiệp.
1.2. Yêu cầu:
Bài viết phải mô tả được các công việc thực tế, có khả năng ứng dụng tốt và
đảm bảo tính logic, khoa học.
Thực hiện đúng theo tiến độ đã thống nhất.
1.3. Nội dung:
Sinh viên có thể lựa chọn bất kỳ đề tài nào liên quan đến những nội dung đã
được đề cập đến ở học phần: Điện tử số ứng dụng, Kỹ thuật Vi xử lý, Vi xử
lý trong điều khiển, Kỹ thuật lập trình, Vi điều khiển và ứng dụng.
Nếu sinh viên không tự chọn được tên và nội dung đồ án, giảng viên sẽ thảo
luận và yêu cầu sinh viên/nhóm sinh viên thực hiện theo yêu cầu của giảng
1.4. Hình thức và kết cấu đồ án
Nội dung chính của đồ án được giới hạn trong khoảng từ 30 đến 50 trang (không
kể phần phụ lục), yêu cầu đánh máy vi tính 1 mặt, khổ giấy A4, phông chữ Times
New Roman. Chi tiết về cách thức trình bày sinh viên xem thêm về Quy định mẫu
khóa luận tốt nghiệp của Học viện.
Kết cấu quyển đồ án được trình bày theo 5 phần chính:
- Mục lục
- Phần 1: Mở đầu (đặt vấn đề, mục đích)
- Phần 2: Tổng quan nghiên cứu
- Phần 3: Đối tượng, nội dung và phương pháp nghiên cứu
- Phần 4: Kết quả và thảo luận
- Phần 5: Kết luận và kiến nghị
- Phụ lục


PHẦN 1 :
MỞ ĐẦU

Như chúng ta biết , nhiệt độ và độ ẩm là những thành phần vật lý rất quan trọng trong cuộc sống
con người. Việc thay đổi nhiệt độ, độ ẩm ảnh hưởng rất nhiều đến sự sinh trưởng và phát triển
của động vật, thực vật và cấu tạo, tính chất vật lý của vật chất. Ví dụ, sự thay đổi nhiệt độ của 1
chất khí sẽ làm thay đổi thể tích, áp suất của chất khí trong bình. Vì vậy, trong nghiên cứu khoa
học, trong công nghiệp và trong đời sống sinh hoạt, thu thập các thông số và điều khiển nhiệt độ
là điều rất cần thiết. Trong các lò nhiệt, máy điều hoà, máy lạnh hay cả trong lò viba, điều khiển
nhiệt độ là tính chất quyết định cho sản phảm ấy. Trong ngành luyện kim, cần phải đạt đến một
nhiệt độ nào đó để kim loại nóng chảy, và cũng cần đạt một nhiệt độ nào đó để ủ kim loại nhằm
đạt được tốt các đặc tính cơ học như độ bền, độ dẻo, độ chống gỉ sét, . Trong ngành thực phẩm,
cần duy trì một nhiệt độ nào đó để nướng bánh, để nấu, để bảo quản, . Việc thay đổi thất thường
nhiệt độ, không chỉ gây hư hại đến chính thiết bị đang hoạt động, còn ảnh hưởng đến quá trình
sản xuất, ngay cả trên chính sản phẩm ấy. Trong ngành nông nghiệp, nhiệt dộ và độ ẩm ảnh
hưởng trực tiếp đến năng xuất và chất lượng sản phẩm. Vì vậy việc điều khiển được nhiệt độ và
độ ẩm là hết sức quan trọng. Có nhiều phương pháp điều khiển nhiệt độ và độ ẩm khác nhau, mỗi
phương pháp đều có ưu nhược điểm khác nhau. Trong nội dung đồ án này sẽ cho ta phương pháp
điều khiển nhiệt độ và độ ẩm từ xa bằng bluetooth thông qua arduino, thông tin nhiệt độ , độ ẩm
hiển thị trên màn hình LCD.
Đồ án này thích hợp ứng dụng cho nhà lưới trồng các loại rau, hoa, cây cảnh là thích hợp nhất,
có tính khả thi rất cao.
Giải pháp để điều khiển nhiệt độ, độ ẩm là dùng hệ thống quạt và phun sương để thay đổi nhiệt
độ và độ ẩm trong khu vực điều khiển.


PHẦN 2 :
TỔNG QUAN NGHIÊN CỨU
-

Đề tài vận dụng kiến thức các môn học :
Vi xử lý trong điều khiển
Kỹ thuật lập trình trong điều khiển

Thực tập lắp ráp mạch diện tử

-

-

-

Theo chúng em được biết thì đã có anh chị khóa trên và một số cá nhân làm đề tài dạng
này rồi
Những người thực hiện trước chỉ làm đến phần đọc và hiển thị thông tin, còn phần điều
khiển nhiệt độ, độ ẩm và điều khiển từ xa thì chưa thấy làm
Kết quả mà những người làm trước đật được là đo và hiển thị thông tin, ngoài ra còn có
thể truyền thông tin đi xa qua sóng RF và qua mạng wifi
Phân tích kết quả những người trước đạt được : đo đạc và hiển thị nhiệt độ , độ ẩm lên
màn hình LCD, truyền tải thông tin đi xa
Trong nội dung đồ án môn học, nhóm sẽ tiến hành theo phương pháp kế thừa và phát huy.
Những cải tiến so với người làm trước là : làm thêm phần điều khiển nhiệt độ , độ ẩm từ
xa bằng module bluetooth
Kết quả đạt được là có thể đo đạc thông số nhiệt độ độ ẩm của môi trường , điều khiển hệ
thống quạt thông gió và phun xương qua hệ thống điều khiển từ xa bằng module
bluetooth để thay đổi thông số nhiệt độ, độ ẩm
Thời gian thực hiện : 2 tháng
Địa điểm : tại nhà


PHẦN 3 :
ĐỐI TƯỢNG, NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN
CỨU
3.1. Đối tượng nghiên cứu

Độ án tập trung nghiên cứu về hệ thống đo đạc và điều khiển thông số nhiệt độ, độ ẩm
trong nhà kính nhằm điều chỉnh nhiệt độ, độ ẩm tạo môi trường thích hợp cho cây cối,
hoa màu phát triển và giảm sự ảnh hưởng của thời tiết xấu
3.2 Nội dung nghiên cứu
Hệ thống điều khiển nhiệt độ, độ ẩm hoạt động dựa trên cảm biến nhiệt độ DTH11 và
arduino uno r3, module relay, module bluetooth. Nhiệt độ, độ ẩm đo được sẽ hiển thị trên
màn hình LCD đặt trên mô hình để tiện theo dõi và kiểm tra. Arduino-uno-r3được lập
trình khi nhiệt độ tăng đến một mức nhất định sẽ làm cho quạt tự động quay, làm mát cho
khu vực trồng hoa trên mô hình cũng như làm quạt tự động dừng quay khi nhiệt độ giảm
xuống dưới mức cho phép.
3.3 Phương pháp nghiên cứu
Toàn bộ hệ thống dựa trên ứng dụng của vi điều khiển. Vi điều khiển là một máy tính tích
hợp trên 1 chip, thướng sử dụng để điều khiển các thiết bị điện tử. Vi điều khiển thực chất
gồm một vi xử lý có hiệu suất đủ cao và giá thành thấp (so với các vi xử lý đa năng dùng
trong máy tính) kết hợp với các thiết bị ngoại vi như các bộ nhớ, các mô đun vào/ra, các
mô đun biến đổi từ số sang tương tự và từ tương tự sang số, mô đun điều chế độ rộng
xung (PWM)...
Vi điều khiển thường được dùng để xây dựng hệ thống nhúng. Nó xuất hiện nhiều trong
các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, dây truyền tự động.
Hầu hết các loại vi điều khiển hiện nay có cấu trúc Harvard là loại cấu trúc mà bộ nhớ
chương trình và bộ nhớ dữ liệu được phân biệt riêng.
Cấu trúc của một vi điều khiển gồm CPU, bộ nhớ chương trình (thường là bộ nhớ ROM
hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), các bộ định thời, các cổng vào/ra để giao tiếp
với các thiết bị bên ngoài, tất cả các khối này được tích hợp trên một vi mạch.


CHƯƠNG 1 :
PHÂN TÍCH YÊU CẦU, LỰA CHỌN GIẢI PHÁP VÀ THIẾT
BỊ
Phân tích yêu cầu

Yêu cầu của đề tài là đo được thông số nhiệt độ độ ẩm của môi trường, sau đó
hiển thị ra màn hình LCD, sử dụng thuật toán cài đặt trong arduino để điều chỉnh
nhiệt độ , độ ẩm, sử dụng module bluetooth để điều chỉnh theo ý muốn.
I.2
Lựa chọn giải pháp và thiết bị
I.2.1
Lựa chọn giải pháp
Sử dụng module arduino làm trung tâm điều khiển
Module relay để thao tác đóng cắt điều khiển
Dụng màn hình LCD để hiển thị thông tin
Dùng cảm biến DTH11 để đo nhiệt đô, độ ẩm
Module bluetooth để điều khiển từ xa
I.2.2
Lựa chọn thiết bị
I.2.2.1
Mô hình thiết kế
I.1

Hình 1.1 Tổng quan mô hình khi hoạt động


I.2.2.2

Các thiết bị phần cứng
a. Arduino uno r3

Hình 1.2 Arduino uno r3


Một vài thông số của Arduino UNO R3


Vi điều khiển

ATmega328 họ 8bit

Điện áp hoạt động

5V DC (chỉ được cấp qua cổng USB)

Tần số hoạt động

16 MHz

Dòng tiêu thụ

khoảng 30mA

Điện áp vào khuyên dùng

7-12V DC

Đ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 10bit)

Dòng tối đa trên mỗi chân I/O

30 mA

Dòng ra tối đa (5V)

500 mA

Dòng ra tối đa (3.3V)

50 mA

Bộ nhớ flash

32 KB (ATmega328) với 0.5KB dùng bởi bootloader

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

Hình 1.3 Vi điều khiển



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,…
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 bạn 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,
bạn sẽ làm hỏng Arduino UNO.
Các chân năng lượng


ND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn dùng các thiế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, bạn 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 bạn 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ới việ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 đó bạn 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. mình
khuyên bạn 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, bạn
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.



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ác cổng vào ra

Hình 1.4 Các cổng vào ra
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 → 2 10-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.
Đặ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.
b. Màn hình LCD 1602 xanh dương 5V

Hình 1.5 mặt trước và sau của màn LCD


Hình 1.5: Sơ đồ khối của LCD

-Sơ đồ khối có thể hiểu đơn giản như sau:
Các đường giao tiếp( VDD, VSS, …, DB0-DB7) nhằm kết nối thiết bị điều khiển bên ngoài
và nguồn nuôi với IC trung tâm( LCD Controller LSI) của màn hình, dựa vào dữ liệu được gửi
đến( DB0-DB7) IC này sẽ điều khiển màn hiển thị “LCD panel”, “Segment driver” thông qua
bus COM, bus SEG. Ngoài ra, 2 đường giao tiếp BL1(+) và BL2(-) để điều khiển đèn
nền( Backlight).
-Kích thước.

Hình 1.6 Kích thước thực tế của LCD

Màn hình 16x2 với kích thước như sau:
Dài 80,0 ± 0,5 mm, trong đó có 64,5 ± 0,2 mm dành cho panel hiển thị.
Rộng: 36,0 ± 0,5 mm, trong đó có 14,0 ± 0,2 mm dành cho phần panel hiển thị.
Dày 12,0 mm( chiều dày tối đa).16 chân giao tiếp, tương ứng với đó là 16 lỗ, mỗi lỗ chân
rộng 1mm để cắm các kết nối, hoặc hàn luôn cable kết nối vào đó. Hai chân liền kề cách nhau
“2,54mm” (đúng bằng kích thước và khoảng cách giữa các lỗ trên bìa đục lỗ thường dùng hàn
mạch).


Trên panel hiển thị có 2 hàng( dòng), mỗi dòng có 16 module hiển thị, chính vì điều này nên
thường gọi luôn màn hình này là 16x2. Kích thước mỗi module 5,02x3 mm; các module trên
cùng 1 hàng cách nhau 0,5mm và giữa 2 hàng cách nhau 0,6mm; trên mỗi module có 8x5=40
điểm ảnh, kích thước mỗi điểm ảnh 0,54x0,52mm và chúng cách nhau 0,1mm.
Chân
Mức
Vào/Ra
Ký hiệu
Tính năng
số
logic

(I/O)
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
1 VSS
GND của mạch điều khiển.
Điện áp nguồn cho LCD, nối với VDD 5V của mạch điều
2 VDD
khiển.
V0
3
I
Cung cấp điện áp để điều chỉnh độ tương phản
(VEE)
Chân lựa chọn thanh ghi( Register Select). Nối chân RS với
mức logic 1( H) hoặc logic 0 để chọn thanh ghi.
+ Logic 1: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên
4 RS
0/1
I
trong LCD
+ Logic 0: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của
LCD( ở chế độ ghi), hoặc nối với bộ đếm địa chỉ của LCD( ở
chế độ đọc)
Chân chọn chế độ đọc/ghi. Nối chân R/W với logic 0 để LCD
5 R/W
0/1
I
hoạt động ở chế độ ghi, nối với mức logic 1 để LCD ở chế độ
đọc.
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
6
E
0/1
I
nhận) thanh ghi bên trong nó khi phát hiện một xung (high-tolow 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.
Tám đườ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 :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit
DB00/
7 -14
I/O MSB là bit DB7.
DB7
1
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới
DB7, bit MSB là DB7. Chi tiết sử dụng 2 giao thức này được
đề cập ở phần sau.
A
15
Chân cấp nguồn 5VDC cho đèn nền màn hình, nối với VDD.
(+)
K
16
Chân 0V cho đèn nền màn hình.
(-)



c. Module chuyển đổi I2C cho LCD 1602

Hình 1.7 Module I2C
Môđun LCD I2C cho Arduino dùng để điều khiển hiển thị dữ liệu lên các màn hình 16x2; 16x4;
20x4;... thông qua giao tiếp I2C.
Ưu điểm khi dùng môđun LCD I2C:
Chỉ cần 2 chân tín hiệu (SDA và SCL) để truyền dữ liệu cần hiển thị từ Arduino tới LCD thay vì
7 chân như khi kết nối trực tiếp LCD với Arduino.Có thể hiển thị đồng thời tới 8 (hoặc hơn) các
LCD mà vẫn chỉ cần 2 chân tín hiệu nếu trên.


Kết nối modun I2C với LCD

Hình 1.8 Cách kết nối với LCD
d. Nguồn cấp

Hình 1.9 adapter 5v
Điện áp vào : 100-240 V
Điện áp ra : 5V-1A
Chiều dài cáp :1m
Đầu jack chẩn micro


e. Cơ cấu chấp hành

Hình 1.10 động cơ chấp hành
Điện áp vào : 5V
Đường kính trục : 2mm
Độ dài trục : 10mm

Kích thước :25x28x15mm
Tốc độ : 12000v/phút
Dòng tiêu thụ : 0.3 -0.4 A
Có thể thay thế động cơ bằng quạt thông gió, máy phun sương, bơm…
f.

Module relay 4 kênh 5V-220V-10A

Hình 1.11 module relay


Tín hiệu vào : 5V
Bật 0, tắt 1
Thay đổi J0,J1 để thay đổi mức điều khiển
Tiếp điểm relay 220 V-10A
NC thường đóng
NO thường mở
VCC,GND là nguồn chung với điều khiển
VSS+, VSS- là nguồn của relay
g. Module bluetooth

Hình 1.12 module bluetooth e360
Giao tiếp PC, smart phone
Truyền nhận dữ liệu tốc độ cao
Sử dụng CC2540/CC2541 giao tiếp
Điện áp vào : DC 3-6V
Điện áp giao tiếp :3.3 V


h. Cáp nối


Hình 1.13 Cáp USB TO COM
Kết nối arduino với máy tính

Hình 1.14 Cáp nối
Dùng để nối các phần tử của đồ án với nhau


i.

Cảm biến nhiệt độ ,độ ẩm

Hình 1.15 Module cảm biến nhiệt độ , độ ẩm DTH11
Cảm biến DHT11 đã được tích hợp trong một mạch duy nhất, bạn chỉ việc nối dây nguồn (Vcc,
GND) và dây tín hiệu (Signal) vào mạch Arduino là xong.
Thông số kĩ thuật


Điện áp hoạt động: 3-5.5V DC



Ngưỡng độ ẩm: 20 - 90%



Sai số độ ẩm: ± 5%




Ngưỡng nhiệt độ: 0 - 55oC



Sai số nhiệt độ: ± 2oC


CHƯƠNG 2 :
GIA CÔNG CHẾ TẠO
Các linh kiện mua ở cửa hàng rồi lắp ráp


CHƯƠNG 3 :
LẬP TRÌNH ĐIỀU KHIỂN
CODE LẬP TRÌNH
#define START_CMD_CHAR '*'
#define END_CMD_CHAR '#'
#define DIV_CMD_CHAR '|'
#define CMD_DIGITALWRITE 10
#define CMD_ANALOGWRITE 11
#define CMD_TEXT 12
#define CMD_READ_ARDUDROID 13
#define MAX_COMMAND 20 // max command number code. used for error checking.
#define MIN_COMMAND 10 // minimum command number code. used for error checking.
#define IN_STRING_LENGHT 40
#define MAX_ANALOGWRITE 255
#define PIN_HIGH 3
#define PIN_LOW 2
String inText;
#include <DHT.h>

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f,16,2);
const int DHTPIN = 2;
const int DHTTYPE = DHT11;
DHT dht(DHTPIN, DHTTYPE);

byte degree[8] = {


0B01110,
0B01010,
0B01110,
0B00000,
0B00000,
0B00000,
0B00000,
0B00000
};

void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
lcd.init();
lcd.backlight();
lcd.print("Nhiet do: ");
lcd.setCursor(0,1);
lcd.print("Do am: ");

lcd.createChar(1, degree);
dht.begin();
Serial.begin(9600);
Serial.println("ArduDroid 0.12 Alpha by TechBitar (2013)");
Serial.flush();


}

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>22) {

digitalWrite (6,LOW);
}

if (t<21) {


digitalWrite(6,HIGH);

}

Serial.flush();
int ard_command = 0;
int pin_num = 0;
int pin_value = 0;
char get_char = ' ';

if (Serial.available() < 1) return;

get_char = Serial.read();
if (get_char != START_CMD_CHAR) return;

ard_command = Serial.parseInt();

pin_num = Serial.parseInt();
pin_value = Serial.parseInt();


×