Tải bản đầy đủ (.doc) (23 trang)

BÁO CÁO BÀI TẬP LỚN KỸ THUẬT VI ĐIỀU KHIỂN VÀ ỨNG DỤNG Nghiên cứu, thiết kế hệ thống giám sát môi trường

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 (2.17 MB, 23 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

BÁO CÁO BÀI TẬP LỚN
Môn học: KỸ THUẬT VI ĐIỀU KHIỂN VÀ ỨNG DỤNG
Đề tài: Nghiên cứu, thiết kế hệ thống giám sát môi trường
Sinh viên thực hiện :
Dương Văn Huy
Đinh Hoang Thượng
Nguyễn Thành Nam
Trần Văn Cương
Nguyễn Cao Mạnh
Lớp :KTĐ-ĐT K14B
Giáo viên hướng dẫn: Th.S Mai Thị Kim Anh


LỜI NÓI ĐẦU
Trong những năm gần đây trên thế giới cùng với sự phát triển mạnh mẽ của
ngành công nghiệp chế tạo linh kiện bán dẫn và vi mạch tổng hợp, một hướng
phát triển mới của các vi xử lý đã hình thành đó là các vi điều khiển. Với nhiều
ưu điểm, vi điều khiển đã được sử dụng rộng rãi trên nhiều lĩnh vực khác nhau.
Bằng cách áp dụng vi điều khiển vào trong quá trình sản xuất và xử lý, vi điều
khiển đã thực sự thể hiện được ưu thế của mình so với các thiết bị điều khiển
thông thường. Vì nhiều những lý do trên, trong các trường Đại Học, Cao Đẳng,
vi xử lý thực sự trở thành một môn học hết sức quan trọng, trong đó board mạch
Arduino gần như là một môn học sử dụng để trang bị cho chúng ta những kiến
thức cơ bản về vi xử lý, từ đó mở rộng ra các loại vi xử lý khác có cấu trúc phức
tạp hơn như 8051,AVR, …
Qua đề tài này, đã giúp em hình dung được thực tế vi xử lý áp dụng như thế nào
trong cuộc sống hiện đại, cụ thể chính là thiết bị cảnh báo an ninh dùng board
mạch Arduino Nano. Bài tập gồm 3 chương:


Chương 1: Tổng quan về hệ thống giám sát môi trường , các thành phần chính
của hệ thống giám sát môi trường, các thành phần của hệ thống sám sát môi
trường ,nguyên lí hoạt động ngôn ngữ sủa dụng và phần mền mô phỏng.
Chương 2: Khảo sát board mạch Arduino Nano
Chương 3: Thiết kế phần cứng và phần mềm.
Nhóm chúng em xin chân thành cảm ơn sự giúp đỡ, chỉ bảo tận tình của thầy
Phạm Đức Long trong suốt thời gian chúng em thực hiện đề tài này .

MỤC LỤC


LỜI MỞ ĐẦU:........................................................................................................
CHƯƠNG 1: : Tổng quan về hệ thống giám sát môi trường , các thành phần chính
của hệ thống giám sát môi trường, các thành phần của hệ thống sám sát môi trường
,nguyên lí hoạt động ngôn ngữ sủa dụng và phần mền mô phỏng.1.1: Phân tích yêu
cầu bài toán
1.2: Tổng quan về hệ thống giám sát môi trường……………………………………
1.2.1: Sơ đồ khối......................................................……………………………..
1.3: Lựa chọn linh kiện........................................................................................
1.3.1 Tổng quan và đặc tính kỹ thuật của các linh kiện sử dụng...............................
1.4: Ngôn ngữ sử dụng và phần mềm mô phỏng. ……………………………….
CHƯƠNG 2: Thiết kế và thực thi
2.1: Thiết kế phần cứng
2.1.1. Mạch nguyên lý……………………… …………………………………...
2.1.2: Mạch in và mạch thật………………………..........................................
2.2: Thiết kế phần mềm…………………………………………………….
2.2.1: Lưu đồ thuật toán.....................................……………………………
2.2.2: Mã nguồn chương trình………………………………………………..
2.3 . Một số ảnh của sản phẩm......................................................................


CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG GIÁM SÁT MÔI TRƯỜNG,
CÁC THÀNH PHẦN CHÍNH CỦA HỆ THỐNG GIÁM SÁT MÔI
TRƯỜNG, NGUYÊN LÝ HOẠT ĐỘNG, NGÔN NGỬ SỬ DỤNG VÀ
PHẦN MỀM MÔ PHỎNG


1.1: Phân tích yêu cầu bài toán
Yêu cầu bài toán:: Nghiên cứu, xây dựng, thiết kê hệ thống giám sát môi
trường để chúng ta có thể biết được nhiệt độ, độ ẩm, thời gian thực để chúng ta có
thể lựa chọn công việc vào 1 thời điểm sao cho thích hợp.

1.2: Tổng quan về hệ thống giám sát môi trường
Hiện nay do biến đổi khí hậu nên thời tiết môi trường cũng biến đổi một
cách thất thường ảnh hưởng rất lớn đến sức khỏe của con người.Sức khỏe con
người là rất quan trọng vì vậy cần tạo ra một hệ thống để có thể biết được nhiệt
độ ,độ ẩm của môi trường để con người có thể chăm sóc sức khỏe của bản thân
mình một cách tốt nhất.
Một vấn đề nữa đó là môi trường ảnh hưởng trực tiếp đến công việc của con
người đặc biệt là công việc của người nông dân phụ thuộc rất nhiều vào môi
trường.Vậy tạo ra một hệ thống giám sát môi trường là thực sự cần thiết
Động cơ đề tài:
- Do con người không biết thời tiết môi trường hôm đó ra sao mà làm
những công việc phù hợp khiến cơ thể mệt mỏi có thể ốm sốt cảm cúm.
- Về nông nghiệp nếu không biết môi trường hôm nó ra sao nếu môi
trường khắc nghiệt quá sẽ ảnh hưởng đến mùa màng ( ví dụ : ngày deo hạt, ngày
trồng cây có thể làm hỏng hạt , cây có thể chết)
Vì vậy em đã nảy sinh ý tưởng thiết kế ra một hệ thống giám sát môi trường
để phục vụ đời sống cho con người.
Trong đề tài này chúng tôi sẽ thiết kế một hệ thống sử dụng cảm biến
DHT11 để có thể đo được nhiệt độ,độ ẩm của môi trường, module DS1307 để

kiểm soát thời gian thực và hiển thị lên màn hình LCD.


1.2.1 Sơ đồ khối
Cảm biến và
Module

VĐK

LCD

Nguồn

Chức năng các khối.
Khối Vi Điều Khiển: nhận tín hiệu từ cảm biến rồi xử lý tín hiệu theo yêu
cầu của lập trình viên rồi đưa tín hiệu ra màn hình hiển thị LCD.
Khối cảm biến và Module: đo nhiệt độ , độ ẩm, thời gian từ ngoài môi
trường và sau khi quét xong sẽ đưa tới khối VĐK.
Khối LCD: chịu trách nhiệm hiển thị theo yêu cầu đã được lập trình theo hệ
thống.
Khối nguồn: có nhiệm vụ cấp nguồn cho các khối khác.
1.3 Lựa chọn Linh kiện
- Adruino NANO (sử dụng chíp ATM 328P)
- Cảm biến nhiệt độ,độ ẩm DHT11
- Module DS1307
- Màn hình hiển thị LCD
- Một số phụ kiện khác (biến trở 10k, điện trở 10k, điện trở 220)

1.3.1. Tổng quan về board mạch adruino
+ Giới thiệu

Môi trường Arduino được thiết kế đơn giản cho người mới bắt đầu sử dụng.
Arduino được sử dụng để tạo ra rất nhiều dự án tuyệt vời như nhạc cụ, robot, điêu
khắc ánh sáng, trò chơi, đồ nội thất tương tác … Arduino được sử dụng rất nhiều


trong các chương trình giáo dục trên toàn thế giới, đặc biệt đối với các nhà thiết kế
và nghệ sĩ những người muốn tạo ra những cái mới độc đáo mà không có am hiểu
sâu về vấn đề của kỹ thuật. Bởi vì Arduino được thiết kế sử dụng cho những người
không am hiểu về kỹ thuật , phần mềm Arduino có rất nhiều ví dụ được cung cấp
bởi nhà phát triển nên rất dễ dàng để tiếp cận sử dụng
Mặc dù dễ dàng sử dụng nhưng Arduino có phần cứng được thiết kế rất tinh tế nên
các kỹ sư có thể dễ dàng nhúng nó vào trong các ứng dụng nhúng. Những người đã
sử dụng và phát triển các ứng dụng nhúng bằng vi điều khiển cũng bị thu hút bởi
Arduino do khả năng phần cứng tốt và phần mềm tiện dụng dễ dàng cho việc giải
quyết các ý tưởng. Phần cứng Arduino : là các board Arduino nơi thực thi các
chương trình lập trình. Các board này có thể điều khiển hoặc đáp trả các tín hiệu
điện, vì vậy các thành phần được ghép trực tiếp vào nó để tương tác với thế giới
thực hiện để cảm nhận hoặc truyền thông. Ví dụ các cảm biến bao gồm các thiết bị
hiển thị. Hầu hết các board Arduino sử dụng kết nối kiểu USB dùng để cấp nguồn
và upload dữ liệu cho board Arduino.
Arduino được biết nhiều nhất là phần cứng của nó, nhưng phải có phần mềm để lập
trình phần cứng. Cả phần cứng và phần mềm gọi chung là “Arduino”. Các phần
mềm là miễn phí, mã nguồn mở. Ngoài ra, có một số hoạt động liên quan tới
Arduino được giải đáp bởi diễn đàn Arduino trên toàn thế giới và Wikimedia gọi
chung là sân chơi Arduino. Phần mềm Arduino :được gọi là sketches, được tạo ra
trên máy tính có tính hợp môi trường phát triển (IDE). IDE cho phép viết , chỉnh
sửa code và truyền đổi sao cho phần cứng có thể hiểu. IDE dùng để biên dịch và
nạp vào Arduino ( quá trình xử lý này gọi là UPLOAD).
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. Một board 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²C-nhiề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 một máy tính gốc như là một bộ nạp chương trình.


Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board được
lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy thuộc
vào đời phần cứng. Các board Serial Arduino có chứa một mạch chuyển đổi giữa
RS232 sang TTL. Các board Arduino hiện tại được lập trình thông qua cổng USB,
thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232. Vài biến
thể, như Arduino Mini và Boarduino không chính thức, sử dụng một board adapter
hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các phương thức
khác. (Khi sử dụng một công cụ lập trình vi điều khiển truyền thống thay vì
ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.)
Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng cho
những mạch ngoài. Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân I/O

kỹ thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6 chân
input analog, có thể được sử dụng như là 6 chân I/O số. Những chân này được thiết
kế nằm phía trên mặt board, thông qua các header cái 0.10-inch (2.5 mm). Nhiều
shield ứng dụng plug-in cũng được thương mại hóa. Các board Arduino Nano, và
Arduino-compatible Bare Bones Board và Boarduino có thể cung cấp các chân
header đực ở mặt trên của board dùng để cắm vào các breadboard.
Có nhiều biến thể như Arduino-compatible và Arduino-derived. Một vài trong số
đó có chức năng tương đương với Arduino và có thể sử dụng để thay thế qua lại.
Nhiều mở rộng cho Arduino được thực thiện bằng cách thêm vào các driver đầu ra,
thường sử dụng trong các trường học để đơn giản hóa các cấu trúc của các 'con rệp'
và các robot nhỏ. Những board khác thường tương đương về điện nhưng có thay
đổi về hình dạng-đôi khi còn duy trì độ tương thích với các shield, đôi khi không.
Vài biến thể sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức độ tương thích
khác nhau.
1.3.3. Lịch sử phát triển của các loại vi xử lý, vi điều khiển
Vi xử lý được chế tạo từ các tranzito tích hợp trên một vi mạch tích hợp đơn.
Xuất hiện lần đầu tiên vào những năm đầu của thập kỷ 70 của thế kỷ 20. Sử dụng
mã BCD trên nền 4 bit. Các vi xử lý 4 bit và 8 bit được sử dụng trong các thiết bị
đầu cuối, máy in, các hệ thống tự động...Đến giữa những năm 1970 thì lần đầu tiên
các vi xử lý 8 bit với 16 bit địa chỉ được sử dụng như máy tính đa mục đích. Các
hãng sản xuất vi xử lý đầu tiên ở thời điểm này là Intel, Texas Instruments và
Garrett AiResearch với ba dòng chip tương ứng: Intel 4004, TMS 1000 và Central
Air Data Computer. Đây là những vi xử lý 4 bit. Sau sự ra đời của các vi xử lý 4 bit
thì các hãng cho ra đời các dòng 8 bit, 12 bit, 16 bit, 32 bit, 64 bit. Intel 8008 là vi
xử lý 8 bit đầu tiên trên thế giới được sản xuất năm 1972. Tiếp sau thành công của
8008 là các phiên bản như 8080 (1974), Zilog Z80 (1976). Các vi xử lý của
Motorola 6800 được phát hành tháng 8 năm 1974 và MOS technology ra đời năm
1975. Intersil 6100 là vi xử lý 12 bit, từ khi được sản xuất bởi công ty Harris nó
được biết đến với tên HM-6100 được sử dụng trong quân đội suốt thập niên 1980.
Vi xử lý 16 bit đầu tiên được giới thiệu bởi hãng National Semiconductor IMP-16



vào năm 1973 đây là vi xử lý đa chip. Đến năm 1975 hãng này giới thiệp vi xử lý
đơn chip đầu tiên. Hãng Texas Instruments ra đời vi xử lý 16 bit đơn chip TI-990
sử dụng như một máy tính mini. Intel cũng cho ra đời dòng vi xử lý 16 bit lấy tên
8086. Vi xử lý 16 bit chỉ xuất hiện trên thị trường một thời gian ngắn thì dòng 32
bit đã bắt đầu xuất hiện. MC6800 là vi xử lý 32 bit đầu tiên của hãng Motorola, họ
68k có 32 bit thanh ghi nhưng sử dụng đường dẫn dữ liệu 16 bit bên trong và 16 bit
dữ liệu bên ngoài để giảm số lượng pin, hỗ trợ 24 bit địa chỉ. Motorola thường
được biết đến như vi xử lý 16 bit mặc dù nó có cấu trúc 32 bit. Vi xử lý 32 bit đầy
đủ đầu tiên là AT&T Bell Labs BELLMAC-32A với mẫu đầu tiên vào năm 1980
và sản xuất năm 1982. Vi xử lý 32 bit đầu tiên của Intel là dòng iAPX 432 được
giới thiệu năm 1981 nhưng không thu được thành công. Vi xử lý ARM đầu tiên ra
đời năm 1985 với thiết kế RISC viết tắt của reduced instruction set computer máy
tính có tập lệnh rút gọn, các vi xử lý ARM được sử dụng chủ yếu trong các điện
thoại di động. Vi xử lý 64 bit được thiết kế cho các máy tính cá nhân. Nó được
thiết kế vào đầu những năm 1990 đến đầu những năm 2000 chứng kiến vi xử lý 64
bit nhằm vào thị trường máy tính. Vi xử lý AMD 64 bit tương thích ngược với x86,
x86-64 còn gọi là AMD64 trong tháng 9 năm 2003, tiếp sau thành công của
Intel64. Kỷ nguyên của máy tính 64 bit đã bắt đầu.
Vi điều khiển là một máy tính được tích hợp trên một chíp, nó thường được
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. Các loại vi điều khiển trên thị trường hiện nay:








Freescale 68HC11 (8-bit)
Intel 8051
STMicroelectronics STM8S (8-bit), ST10 (16-bit) và STM32 (32-bit)
Atmel AVR (8-bit), AVR32 (32-bit), và AT91SAM (32-bit)
Freescale ColdFire (32-bit) và S08 (8-bit)
Hitachi H8 (8-bit), Hitachi SuperH (32-bit)
MIPS (32-bit PIC32)







PIC (8-bit PIC16, PIC18, 16-bit dsPIC33 / PIC24)
PowerPC ISE
PSoC (Programmable System-on-Chip)
Texas Instruments Microcontrollers MSP430 (16-bit), C2000 (32-bit),
và Stellaris (32-bit)

 Toshiba TLCS-870 (8-bit/16-bit)
 Zilog eZ8 (16-bit), eZ80 (8-bit)
Philips Semiconductors LPC2000, LPC900, LPC700
1.3.4: Adruino NANO
+ Cấu trúc bên trong của Arduino Nano
Arduino Nano là một hội đồng quản trị nhỏ, hoàn chỉnh và có bề dày bảng
dựa trên ATmega328 (Arduino Nano 3.0) hoặc ATmega168 (Arduino Nano
2.x). Nó có nhiều hoặc ít hơn các chức năng tương tự của Arduino Duemilanove,
nhưng trong một gói khác nhau. Nó chỉ thiếu một jack cắm nguồn DC, và hoạt
động với một cáp USB Mini-B thay vì một cổng USB tiêu chuẩn. Nano được thiết
kế và đang được sản xuất bởi Gravitech.

Adruino NANO (chíp ATM 328p)


Thông số kỹ thuật:
Vi điều khiển Atmel ATmega168 hoặc ATmega328
Điện áp hoạt động: (mức logic) 5 V
Điện áp đầu vào: (đề nghị) 7-12 V
Điện áp đầu vào: (giới hạn) 6-20 V
Số I / O Pins kỹ thuật số: 14 (trong đó 6 cung cấp đầu ra PWM)
Ngõ vào Analog: 8
Dòng điện một chiều cho mỗi I / O Pin: 40 mA
Bộ nhớ Flash: 16 KB (ATmega168) hoặc 32 KB (ATmega328) trong đó 2 KB
được sử dụng bởi trình nạp khởi động
SRAM: 1 KB (ATmega168) hoặc 2 KB (ATmega328)
EEPROM: 512 byte (ATmega168) hoặc 1 KB (ATmega328)
Tốc độ đồng hồ: 16 MHz
Kích thước: 0,73 "x 1,70"
Arduino Nano có thể được cung cấp qua kết nối USB Mini-B, nguồn điện bên

ngoài không được kiểm soát 6-20V (pin 30) hoặc nguồn điện bên ngoài được điều
chỉnh 5V (chân 27). Nguồn điện được tự động chọn vào nguồn điện áp cao nhất.
Các FTDI FT232RL chip trên Nano chỉ được cung cấp nếu bảng đang được cung
cấp trên USB. Do đó, khi chạy bằng nguồn ngoài (không USB), sản lượng 3.3V
(được cung cấp bởi chip FTDI) không có sẵn và đèn RX và TX LED sẽ nhấp nháy
nếu chân kỹ thuật số 0 hoặc 1 cao.
ATmega168 có 16 KB bộ nhớ flash để lưu trữ mã (trong đó 2 KB được sử dụng
cho bộ tải khởi động); ATmega328 có 32 KB, (cũng với 2 KB được sử dụng cho
bộ nạp khởi động). ATmega168 có 1 KB SRAM và 512 byte của EEPROM (có thể
đọc và ghi bằng thư viện EEPROM); ATmega328 có 2 KB SRAM và 1 KB của
EEPROM.
Mỗi một trong số 14 chân kỹ thuật số trên Nano có thể được sử dụng như một đầu
vào hoặc đầu ra, sử dụng các chức năng của pinMode (), digitalWrite () và
digitalRead (), hoạt động ở 5 volts. Mỗi pin có thể cung cấp hoặc nhận tối đa 40
mA và có một điện trở kéo lên bên trong (bị ngắt kết nối theo mặc định) 20-50
kOhms. Ngoài ra, một số chân có các chức năng chuyên biệt: Serial: 0 (RX) và 1
(TX). Được sử dụng để nhận dữ liệu nối tiếp TTL (RX) và truyền (TX). Các chân
này được kết nối với các chân tương ứng của chip FTDI USB-to-TTL Serial. Ngắt
ngoài: 2 và 3. Những chân này có thể được cấu hình để kích hoạt một ngắt trên một
giá trị thấp, một cạnh tăng hoặc giảm, hoặc thay đổi giá trị.
PWM: 3, 5, 6, 9, 10, và 11. Cung cấp đầu ra PWM 8-bit với chức năng
analogWrite ().


SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Những chân này hỗ trợ truyền
thông SPI, mặc dù được cung cấp bởi phần cứng cơ bản, hiện tại không có trong
ngôn ngữ Arduino.
LED: 13. Có một đèn LED gắn sẵn kết nối với chân số 13. Khi pin có giá trị CAO,
đèn LED bật, khi pin ở LOW, nó tắt.
Nano có 8 đầu vào analog, mỗi bộ đều cung cấp 10 bit độ phân giải (tức là 1024

giá trị khác nhau). Theo mặc định chúng đo từ mặt đất đến 5 volts, tuy nhiên có thể
thay đổi phần trên của dải bằng cách sử dụng hàm analogReference (). Ngoài ra,
một số chân có chức năng đặc biệt:


I2C: 4 (SDA) và 5 (SCL). Hỗ trợ giao tiếp I2C (TWI) bằng cách sử dụng thư
viện Wire (tài liệu trên trang web Wiring).

Có một vài chân khác trên bảng:


AREF. Điện áp tham khảo cho các đầu vào tương tự. Được sử dụng với
analogReference ().



Cài lại. Mang dòng này LOW để thiết lập lại vi điều khiển. Thông thường
được sử dụng để thêm một nút đặt lại để che chắn ngăn chặn một trên bảng.

Arduino Nano có một số cơ sở để giao tiếp với máy tính, một Arduino khác, hoặc
các vi điều khiển khác. ATmega168 và ATmega328 cung cấp giao tiếp nối tiếp
UART TTL (5V), có sẵn trên chân số 0 (RX) và 1 (TX). Một FTDI FT232RL trên
bảng này truyền thông nối tiếp qua USB và các trình điều khiển FTDI (kèm theo
phần mềm Arduino) cung cấp cổng ảo cho phần mềm trên máy tính. Phần mềm
Arduino bao gồm một màn hình nối tiếp cho phép dữ liệu văn bản đơn giản được
gửi đến và từ bảng Arduino. Các RX và TX LED trên bảng sẽ nhấp nháy khi dữ
liệu được truyền qua chip FTDI và kết nối USB tới máy tính (nhưng không cho
truyền thông nối tiếp trên chân 0 và 1).
Thư viện SoftwareSerial cho phép truyền thông nối tiếp trên bất kỳ chân kỹ thuật
số của Nano.

ATmega168 và ATmega328 cũng hỗ trợ giao tiếp I2C (TWI) và SPI. Phần mềm
Arduino bao gồm một thư viện Wire để đơn giản hóa việc sử dụng bus I2C.
Arduino Nano có thể được lập trình bằng phần mềm Arduino (tải về). Chọn
"Arduino Diecimila, Duemilanove, hoặc Nano w / ATmega168" hoặc "Arduino
Duemilanove hoặc Nano w / ATmega328" từ trình đơn Tools> Board (theo vi điều
khiển trên bảng của bạn). Để biết chi tiết, xem tài liệu tham khảo và hướng dẫn.


ATmega168 hoặc ATmega328 trên Arduino Nano được tích trữ sẵn với một bộ nạp
khởi động cho phép bạn tải mã mới lên nó mà không cần sử dụng một lập trình
phần cứng bên ngoài. Nó giao tiếp bằng cách sử dụng giao thức STK500 gốc.
Bạn cũng có thể bỏ qua trình nạp khởi động và chương trình vi điều khiển thông
qua tiêu đề ICSP (In-Circuit Serial Programming).
Thay vào đó, đòi hỏi phải nhấn nút thiết lập lại trước khi tải lên, Arduino Nano
được thiết kế theo cách cho phép thiết lập lại bằng phần mềm chạy trên máy tính
kết nối. Một trong những dòng điều khiển dòng chảy phần cứng (DTR) của
FT232RL được kết nối với đường đặt lại của ATmega168 hoặc ATmega328 thông
qua một tụ điện 100 nanofarad. Khi dòng này được khẳng định (lấy thấp), dòng
thiết lập lại giọt đủ lâu để thiết lập lại chip. Phần mềm Arduino sử dụng khả năng
này để cho phép bạn tải lên mã bằng cách nhấn nút tải lên trong môi trường
Arduino. Điều này có nghĩa là trình nạp khởi động có thể có thời gian chờ ngắn
hơn, vì việc giảm DTR có thể được phối hợp tốt với sự bắt đầu tải lên.
Thiết lập này có ý nghĩa khác. Khi Nano được kết nối với máy tính chạy Mac OS
X hoặc Linux, nó sẽ reset mỗi lần kết nối từ phần mềm (thông qua USB). Trong
khoảng nửa giây tiếp theo, bộ tải khởi động đang chạy trên Nano. Mặc dù chương
trình được lập trình để bỏ qua các dữ liệu không đúng định dạng (tức là bất cứ thứ
gì ngoài việc tải lên mã mới), nó sẽ chặn các byte đầu tiên của dữ liệu được gửi tới
bảng sau khi kết nối được mở. Nếu một phác thảo chạy trên bảng sẽ nhận được cấu
hình một lần hoặc các dữ liệu khác khi nó bắt đầu, đảm bảo rằng phần mềm mà nó
giao tiếp đợi một giây sau khi mở kết nối và trước khi gửi dữ liệu này.

Tóm tắt phần cứng Arduino nano:















IC chính: ATmega328P-AU.
IC nạp và giao tiếp UART: CH340.
Điện áp cấp: 5VDC cổng USB hoặc 6-9VDC chân Raw.
Mức điện áp giao tiếp GPIO: TTL 5VDC.
Dòng GPIO: 40mA.
Số chân Digital: 14 chân, trong đó có 6 chân PWM.
Số chân Analog: 8 chân (hơn Arduino Uno 2 chân).
Flash Memory: 32KB (2KB Bootloader).
SRAM: 2KB
EEPROM: 1KB
Clock Speed: 16Mhz.
Tích hợp Led báo nguồn, led chân D13, LED RX, TX.
Tích hợp IC chuyển điện áp 5V LM1117.
Kích thước: 18.542 x 43.18mm



1.3.5 Màn hình hiển thị LCD 16x2

Khối có chức năng hiển thị qua màn hình LCD 16 cột 2
dòng. LCD dùng chíp HD44780 phổ biến trên thị trường,hiển
thị ký tự trong mã Ascii. LCD nhận tín hiệu của vi điều
khiển. Đó là các tín hiệu điều khiển hiển thị các ký tự mong
muốn sau đó xử lý và hiển thị theo ý muốn của người lập
trình.
Sơ đồ chân:


Chức năng các chân của LCD 16*2

1.3.6: Cảm Biến
Cảm biến là gì:


Cảm biến là thiết bị điện tử cảm nhận những trạng thái hay quá trình vật
lý hay hóa học ở môi trường cần khảo sát, và biến đổi thành tín hiệu điện để thu
thập thông tin về trạng thái hay quá trình đó.
Thông tin được xử lý để rút ra tham số định tính hoặc định lượng của môi trường,
phục vụ các nhu cầu nghiên cứu khoa học kỹ thuật hay dân sinh và gọi ngắn gọn
là đo đạc, phục vụ trong truyền và xử lý thông tin, hay trong điều khiển các quá
trình khác.
Cảm biến thường được đặt trong các vỏ bảo vệ tạo thành đầu thu hay đầu dò (Test
probe), có thể có kèm các mạch điện hỗ trợ, và nhiều khi trọn bộ đó lại được gọi
luôn là "cảm biến". Tuy nhiên trong nhiều trường hợp thì thuật ngữ cảm biến ít
dùng cho vật có kích thước lớn. Thuật ngữ này cũng không dùng cho một số loại

chi tiết, như cái núm của công tắc bật đèn khi mở tủ lạnh, dù rằng về mặt hàn
lâm núm này làm việc như một cảm biến.
Có nhiều loại cảm biến khác nhau và có thể chia ra hai nhóm chính:




Cảm biến vật lý: sóng điện từ, ánh sáng, tử ngoại, hồng ngoại, tia X, tia
gamma, hạt bức xạ, nhiệt độ, áp suất, âm thanh, rung động, khoảng
cách, chuyển động, gia tốc, từ trường, trọng trường,...
Cảm biến hóa học: độ ẩm, độ PH, các ion, hợp chất đặc hiệu, khói,...

Các hiện tượng cần cảm biến rất đa dạng, cũng như phương cách chế ra các cảm
biến, và những cảm biến mới liên tục phát triển. Việc phân loại cảm biến cũng
phức tạp vì khó có thể đưa ra đủ các tiêu chí phân loại cho tập hợp đa dạng như
vậy được.
Cảm biến chủ động và cảm biến bị động phân biệt ở nguồn năng lượng dùng cho
phép biến đổi lấy từ đâu.




Cảm biến chủ động không sử dụng điện năng bổ sung để chuyển sang tín
hiệu điện. Điển hình là cảm biến áp điện làm bằng vật liệu gốm, chuyển áp
suất thành điện tích trên bề mặt. Các an-ten cũng thuộc kiểu cảm biến chủ
động.
Cảm biến bị động có sử dụng điện năng bổ sung để chuyển sang tín hiệu
điện. Điển hình là các photodiode khi có ánh sáng chiếu vào thì có thay đổi
của điện trở tiếp giáp bán dẫn p-n được phân cực ngược. Câc cảm biến
bằng biến trở cũng thuộc kiểu cảm biến bị động.


Phân loại thì như vậy nhưng một số cảm biến nhiệt độ kiểu lưỡng kim dường như
không thể xếp hẳn vào nhóm nào, nó nằm vào giữa.


A Phân loại theo nguyên lý hoạt động:
 Cảm biến điện trở: Hoạt động dựa theo di chuyển con chạy hoặc góc
quay của biến trở, hoặc sự thay đổi điện trở do co giãn vật dẫn.
o Cảm biến cảm ứng:
o Cảm biến biến áp vi phân: Cảm biến vị trí (Linear variable differential
transformer, LVDT)
o Cảm biến cảm ứng điện từ: các antenna
o Cảm biến dòng xoáy: Các đầu dò của máy dò khuyết tật trong kim
loại, của máy dò mìn.
o Cảm biến cảm ứng điện động: chuyển đổi chuyển động sang điện như
microphone điện động, đầu thu sóng địa chấn trên bộ (Geophone).
o Cảm biến điện dung: Sự thay đổi điện dung của cảm biến khi khoảng
cách hay góc đến vật thể kim loại thay đổi.
o Cảm biến điện trường:
o Cảm biến từ giảo (magnetoelastic): ít dùng.
o Cảm biến từ trường: Cảm biến hiệu ứng Hall, cảm biến từ
trường dùng vật liệu sắt từ,... dùng trong từ kế.
o Cảm biến áp điện: Chuyển đổi áp suất sang điện dùng gốm áp
điện như titanat bari, trong các microphone thu âm, hay ở đầu thu
sóng địa chấn trong nước (Hydrophone) như trong các máy Sonar.
o Cảm biến quang: Các cảm biến ảnh loại CMOS hay cảm biến
CCD trong camera, các photodiode ở các vùng phổ khác nhau dùng
trong nhiều lĩnh vực. Ví dụ đơn giản nhất là đầu dò giấy trong khay
của máy in làm bằng photodiode. Chúng đang là nhóm đầu bảng được
dùng phổ biến, nhỏ gọn và tin cậy cao.

o Cảm biến huỳnh quang, nhấp nháy: Sử dụng các chất phát quang thứ
cấp để phát hiện các bức xạ năng lượng cao hơn, như các tấm kẽm
sulfua.
o Cảm biến điện hóa: Các đầu dò ion, độ pH,...
o Cảm biến nhiệt độ: Cặp lưỡng kim, hoặc dạng linh kiện bán dẫn
như Precision Temperatur Sensor LM335 có hệ số 10 mV/°K.
B Vai trò của cảm biến trong tự động hóa:
Cảm biến có vai trò quan trọng trong các bài toán điều khiển quá trình nói
riêng và trong các hệ thống điều khiển tự động nói chung.


Là thiết bị có khả năng cảm nhận các tín hiệu điều khiển vào, ra.
Có vai trò đo đạc các giá trị.



Giới hạn cảm nhận với đại lượng vật lý cần đo




1.3.6.1 Cảm biến được sử dụng trong hệ thống
Cảm Biến DHT11

Cảm Biến DHT 11 là cảm biến nhiệt độ,độ ẩm . Cảm biến DHT11
đã được tích hợp trong một mạch duy nhất nên rất dễ để kết nối với
Adruino
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

Cách kết nối các chân của DHT 11 với Adruino NaNo
DHT 11

Adruino NaNo

GND

GND

VCC

5V

Signal


D2


1.4: Ngôn ngữ sử dụng và phần mềm mô phỏng



Ngôn ngữ sử dụng lập trình trên nền tảng Arduino.
Phần mềm mô phỏng trên Proteus.

CHƯƠNG II: THIẾT KẾ VÀ THỰC THI
2.1: Thiết kế phần cứng
2.1.1: Mạch nguyên lý


2.1.2: Sơ đồ mạch in

Mạch thật:


2.2 Thiết kế phần mềm
2.2.1: Lưu đồ thuật toán

Lưu đồ thuật toán :
Bắt đầu

Khởi tạo

CTC độ ẩm


CTC nhiệt độ

Hiển thị độ ẩm

Hiển thị nhiệt độ


2.2.2: Mã nguồn chương trình
CODE:
#include <DHT.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(8,9,4, 5, 6, 7);//

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

lcd.begin(16, 2); //
lcd.print("Nhiet DO: ");//
lcd.setCursor(0,1);

//

lcd.print("DO AM: "); //


lcd.createChar(1, degree);

dht.begin(); //
}

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(" %");
}
}

2.3: Một số hình ảnh của sản phẩm




×