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

THEO dõi NỒNG độ KHÍ GAS, NHIỆT độ và độ ẩm

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 (647.66 KB, 27 trang )

BÀI TẬP LỚN
MÔN THỰC HÀNH CƠ SỞ
THEO DÕI NỒNG ĐỘ KHÍ GAS, NHIỆT ĐỘ VÀ ĐỘ ẨM
LỚP: D13DT3
NHÓM:
SINH VIÊN: VŨ CHIẾN
HOÀNG BÁ HUÂN
GIANG XUÂN PHONG

I.

LỜI MỞ ĐẦU………………………………………………….

1


II. GIỚI THIỆU CHUNG………………………………………………..….
1. Lịch sử ra đời và phát triển của điều khiển tự động……………………
2. Giới thiệu về những ứng dụng của điều khiển tự động trong các đời sống cũng như trong ngành
công nghiệp………………………………………
3. Tổng quan về Internet Of Things………………….
4. Giới thiệu linh kiện sử dụng………………
4.1.Giới thiệu về Arduino………………………………………….
4.2.Cảm Biến Khí Gas MQ2……………………………………………………………………
4.3.Cảm Biến Nhiệt Độ, Độ Ẩm DHT11 ……………………………………
4.4.Module ESP8266 ………………………………………………………..
4.5.Màn Hình LCD…………………………………………………………………..

III. NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH………………………….
1. Sơ đồ khối của mạch………..
2. Lưu đồ thuật toán của toàn chương trình……………….


3. Sơ đồ nguyên lý các khối trong mạch……………….
3.1. Khối
điều

khiển………………………..

……………………………………………………..
3.2. Khối cảm biến …………………………………………………………………………..
3.3. Khối đưa dữ liệu lên mạng………………………………………………
3.4. Khối nguồn…………………………..

IV. THIẾT KẾ PHẦN CỨNG…………………………………………….
V.

THIẾT KẾ PHẦN MỀM………………………..………………….

VI.
VII.

KHẢO SÁT TRONG THỰC NGHIỆM……………………….
HẠN CHẾ VÀ HƯỚNG KHẮC PHỤC
TÀI LIỆU THAM KHẢO………………….………………………………..

2


I. LỜI MỞ ĐẦU.
Ngày nay với những ứng dụng của khoa học kỹ thuật trên tiên tiến, thế giới chúng ta đã
và đang ngày một thay đổi, văn minh và hiện đại hơn. Sự phát triển của kỹ thuật điện tử
đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ

nhanh, gọn nhẹ là những yếu tố rất cần thiết cho hoạt động của con người đạt hiệu quả
cao.
Điện tử đang trở thành một nghành công nghiệp đa nhiệm vụ.Điện tử đã đáp ứng
những đòi hỏi không ngừng từ các lĩnh vực công nông lâm ngư nghiệp cho đến các nhu
cầu thiết bị trong đời sống hàng ngày.
Một trong những ứng dụng quan trọng trong công nghệ điện tử là kỹ thuật điều
khiển tự động, nó đã góp phần rất lớn trong việc điều khiển các thiết bị một cách thông
minh mà không cần đến sự trợ giúp của con người, một ứng dụng rất thực tế và gắn bó
gần gũi với cuộc sống hàng ngày của chúng ta, hay những thiết bị mà con người không
thể trực tiếp chạm vào đề vận hành điều khiển các hệ thống trong môi trường làm việc
độc hại và nguy hiểm. Xuất phát từ những ứng dụng quan trọng trên, em đã làm đề tài là
“Thiết bị đo nồng độ khí Gas, đo nhiệt độ, độ ẩm và đưa dữ liệu lên mạng”.
Thiết bị sau khi thi công mạch xong có thể phát hiện rõ rỉ khí Gas và đưa ra cảnh
báo bằng việc kêu còi và báo đèn. Đo nhiệt độ, độ ẩm và hơn nữa là đưa tất cả dữ liệu về
nồng độ khí gas, nhiệt độ và độ ẩm lên trang Web để người dùng có thể theo dõi mọi lúc
mọi nơi.
Trong quá trình thực hiện đề tài, em đã cố gắng nhưng không thể tránh khỏi những
thiếu sót, em rất mong nhận được chỉ dẫn và góp ý của các thầy cô để bản thân em cũng
như đề tài ngày càng hoàn thiện hơn.
Em xin chân thành cảm ơn.

II. Ý TƯỞNG SẢN PHẨM
Mạch đo nhiệt độ, độ ẩm và khí gas sử dụng Arduino Nano, là một Kit vi điều khiển
khá phổ biến trên thị trường, sản phầm được làm ra với mục đích chính là để phát hiện
việc rò rỉ khí gas ở các nơi như hộ gia đình, nhà hàng, các cây xăng, xưởng sản xuất hay
những nơi sử dụng hay lưu trữ khí gas và cảnh báo cho người dùng .

3



II. GIỚI THIỆU CHUNG
1. Lịch sử ra đời và phát triển của điều khiển tự động.
Tự động hóa là ngành thuộc nhóm ngành điện-điện tử dùng để chỉ một công
việc được thực hiện mà không có sự giúp đỡ của bất kỳ sự can thiệp trưc tiếp của
con người. Tự động hóa có nghĩa là thực hiện một nhiệm vụ đặc biệt với sự giúp
đỡ của mạch điện truyền động điện. Tự động hóa đã luôn luôn chứng tỏ là một ý
tưởng có hiệu quả đối với hầu hết các ngành công nghiệp và các công ty, mà đối
phó với sản xuất, vốn và hàng hoá tiêu dùng. Bất kỳ loại hình sản xuất sẵn sàng tạo
điều kiện thuận lợi bằng cách tự động hóa. Tự động hóa là một bộ môn được hình
thành khi kỹ thuật điện đã sử dụng các chất bán dẫn phát minh ra Transitor, diode,
thiristor đã (1949) và đã dần xây dựng bộ vi xử lý(1971) đã tạo ra các máy tính
điều khiển (Role, PLC, 8051, PIC, 8088, PC,...) nên hệ thống truyền động điện
bằng động cơ điện - mạch điều khiển đã thay thế các hệ thống điều khiển bằng cơ
khí: xích-bánh răng.Hệ thống tự động hóa là phần điện - điện tử của của một hệ
thống có cả điện - điện tử và cơ khí. Ví dụ điều khiển lò nhiệt của nhà máy thép:
thì có 2 phần cơ bản là Cơ khí và Điện, trong đó cơ khí là phần vỏ lò chịu nhiệt
còn phần Điện tức là phần mạch điều khiển nhiệt độ của lò để biến điện năng
thành nhiệt năng. Các tên tương đương: Tự động hóa, Điều khiển tự động, Tin học
công nghiệp, Điện tự động, Điện tử công nghiệp,... thuộc nhóm ngành Kỹ thuật
điều khiển - tự động hóa hay rộng hơn nữa là thuộc lĩnh vực Kỹ thuật điện.
2.

Giới thiệu về những ứng dụng của điều khiển tự động trong các đời
sống cũng như trong ngành công nghiệp.
Tự động hóa mang lại nhiều tiện ích cho con người trong cuộc sống hàng
ngày.ngày càng có nhiều thiết bị bảo vệ, chăm sóc sức khỏe, các robot giúp việc…
mang lại nhiều tiện nghi cho người sử dụng. Các thiết bị này tỏ ra rất hữu ích khi
gia đình của bạn có người già hay em nhỏ. Các thiết bị có mặt trong ngôi nhà còn
giúp ngôi nhà của chúng ta hiện đại và sang trọng hơn rất nhiều. Trong các ngành
công nghiệp các thiết bị tự động hóa giúp tiết kiệm sức lao động của người lao

động và do đó nó cũng giúp tiết kiệm rất nhiều thời gian cho người lao động có thể
được hướng dẫn đến một số quá trình làm việc khác. Lợi thế lớn nhất của việc sử
dụng hệ thống tự động và các công cụ là nó tiết kiệm thời gian quảng cáo đồng
thời nó cũng giúp tiết kiệm chi phí. Trong một ngành công nghiệp, đó là tham gia
vào sản xuất hàng hoá kỹ thuật nặng và dịch vụ, trong cùng một ngành công
4


nghiệp các hệ thống tự động có thể thực hiện nhiệm vụ, được thực sự được thực
hiện, nói, 100 người lao động. Hệ thống tự động hóa sẽ không mất một nửa thời
gian của người lao động của con người sẽ thực hiện để hoàn thành một nhiệm vụ
cụ thể. Vì lý do này ít hơn số lượng của bàn tay con người được yêu cầu phải thực
hiện một nhiệm vụ cụ thể trong một ngành công nghiệp. Điều này giúp tiết kiệm
thời gian và tại cùng một thời gian, công ty đã thanh toán tiền lương thấp hơn cho
người lao động do đó tiết kiệm một số tiền một lần ra lợi nhuận của nó.Cùng với
tất cả những điều này, lợi thế quan trọng của tự động hóa là để nâng cao năng suất
của công ty.Một ngành công nghiệp, có cài đặt các máy tự động trong quá trình sản
xuất của nó, rõ ràng là đã đưa ra một quyết định thông minh. Lý do là nó thường
được quan sát thấy rằng tự động hóa của bất kỳ quá trình sản xuất cải thiện năng
suất phần lớn. Do đó, tự động hóa của nền văn hóa làm việc trong một công ty cụ
thể, công ty có thể tăng tiềm năng của nó và kiếm được nhiều hơn bằng cách đầu
tư ít hơn.
3.

Tổng quan về Internet Of Things

Internet of Things (IoT) là một kịch bản của thế giới, khi mà mỗi đồ vật, con
người được cung cấp một định danh của riêng mình, và tất cả có khả năng
truyền tải, trao đổi thông tin, dữ liệu qua một mạng duy nhất mà không cần
đến sự tương tác trực tiếp giữa người với người, hay người với máy tính. IoT

đã phát triển từ sự hội tụ của công nghệ không dây, công nghệ vi cơ điện tử
và Internet.Theo khái niệm ta có thể hiểu Internet of Thing (IoT) là mọi vật
đều có thể kết nối với nhau qua Internet, người dùng có thể kiểm soát đồ vật
của minh qua một thiết bị thông minh như laptop, table PC hay smatphone.
Internet of Things ra đời đang dần cụ thể hóa các bộ phim khoa học viễn
tưởng thành hiện thực trong đời sống. Internet of Things - Xu hướng công
nghệ tương lai ?Mặc dù khái niệm Internet of Things được đưa ra từ
lâu.Nhưng trong những năm gần đây nó mới được nhiều doanh nghiệp cũng
như các nhà khoa học để ý và phát triển mạnh mẽ. Trong các năm gần đây
tại các triển lãm công nghệ CÉS, triễn lãm di động toàn cầu... các hãng sản
xuất lớn thay nhau đưa ra các thiết bị thông minh: tivi thông minh, tủ lạnh
thông minh và ý tưởng về nhà thông minh... liên tục được giới thiệu. Và khi
gây được sự chú ý của cộng đồng, IoT đã cho thấy tiềm năng của mình bằng
những con số đáng kinh ngạc.
Internet of Things đến năm 2020:
• 4 tỉ người kết nối với nhau.
• 4 ngàn tỷ USD doanh thu.
5


• Hơn 25 triệu ứng dụng.
• Hơn 25 tỷ hệ thống nhúng và hệ thống thông minh.
• 50 ngàn tỷ Gigabytes dữ liệu.

Đi theo xu hướng toàn cầu cộng với yêu cầu môn học và hả năng còn giới
hạn, chúng em đã và đang tìm hiểu về 1 thiết bị có khả năng đo đạc và quản
lý nồng độ khí gas và nhiệt độ phòng.
Một trong những thiết bị có thể sử dụng công nghệ IOT này là module ESP
8266, với giá thành rẻ và kích thước nhỏ gọn. Thiết bị này có khả năng kết
nối mạng gửi và nhận dữ liệu với wed và từ đó ta có thể sử dụng dữ liệu đó.


4.Giới thiệu linh kiện sử dụng
4.1. Giới thiệu về ARDUINO

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.

6


Đượ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 nhiế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++..
a. 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²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 1 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

7


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.
b. Phần Mềm

Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng cross-platform (nền
tảng) được viết bằng Java, và từ IDE này sẽ được sử dụng cho Ngôn ngữ lập trình xử
lý(Processing programming language) và project Wiring. Nó được thiết kế để dành cho các nghệ
sĩ và những người mới tập tành làm quen với lĩnh vực phát triển phần mềm. Nó bao gồm một
chương trình code editor với các chức năng như đánh dấu cú pháp, tự động brace matching, và tự
động canh lề, cũng như compile(biên dịch) và upload chương trình lên board chỉ với 1 cú click
chuột. Một chương trình hoặc code viết cho Arduino được gọi là một sketch.[5]
Các chương trình Arduino được viết bằng C hoặc C++. Arduino IDE đi kèm với một thư
viện phần mềm được gọi là "Wiring", từ project Wiring gốc, có thể giúp các thao tác input/output
được dễ dàng hơn.
c. Chức năng của Arduino trong mạch

Nhận tín hiệu từ cảm biến nhịp tim, sau đó xử lý tìn hiệu để hiển thị lên màn hình và đưa
thông tin lên mạng.Đồng thời thực hiện chức năng hiển thị thời gian thực.

4.2 Cảm Biến Khí Gas MQ2
GIỚI THIỆU:
- MQ2 là cảm biến khí, dùng để phát hiện các khí có thể gây cháy. Nó được cấu tạo từ
chất bán dẫn SnO2.Chất này có độ nhạy cảm thấp với không khí sạch.Nhưng khi trong

8



môi trường có chất ngây cháy, độ dẫn của nó thay đổi ngay. Chính nhờ đặc điểm này
người ta thêm vào mạch đơn gian để biến đổi từ độ nhạy này sang điện áp.
- Khi môi trường sạch điện áp đầu ra của cảm biến thấp, giá trị điện áp đầu ra càng tăng
khi nồng độ khí gây cháy xung quang MQ2 càng cao. - MQ2 hoạt động rất tốt trong môi
trường khí hóa lỏng LPG, H2, và các chất khí gây cháy khác. Nó được sử dụng rộng rãi
trong công nghiệp và dân dụng do mạch đơn giản và chi phí thấp.

4.3Cảm Biến Nhiệt Độ, Độ Ẩm DHT11
Giới Thiệu: 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 one wire. 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 phải qua bất kỳ tính
toán nào.

9


Thông số kỹ thuật:
• Nguồn 3 đén 5 V
• Dòng sử dungh 2.5mA
• Đo tốt ở nhiệt độ 0 đén 50 độ C sai số +-2 độ C
• Tần số lấy mẫu tối đa 1Hz
• Kích thước 15mmx12mmx5.5mm

4.4.Module ESP8266
Giới thiệu :

10



Nếu ta để ý đến cấu hình của các smart phone hiện nay thì hẳn ai cũng nghe rất
nhiều về những con chip sử dụng trong đó như SnapDragon của Qualcomm hay
Exynos của Samsung hay các chip Apple A6, A7… Những chip đó không chỉ là 1
CPU như trong máy tính mà là tích hợp cả 1 hệ thống từ bộ xử lý, bộ nhớ Ram, bộ
nhớ Flash, chip Wifi, LTE hay GPS… nên được gọi là SoC (System on Chip)
Esp8266 bản thân cũng là SoC tích hợp giao thức TCP/IP kết nối vào mạng WiFi
của bạn. Các module esp8266 này có sức mạnh thua kém hơn các SoC vừa kể trên
rất là nhiều nhưng đủ mạnh để chúng ta lập trình cho chúng giao tiếp với các loại
cảm biến và các thiết bị chấp hành thông qua các cổng GPIO (General Purpose
Input Output).










Về nguồn gốc của con chip này thì ESP8266 được sản xuất bởi nhà sản xuất
Espressif, ở thượng hải. Lần đầu tiên con chip đã gây sự chú ý đến các nhà sản xuất
phương Tây trong tháng 8 năm 2014 với module ESP-01, được sản xuất bởi một
nhà sản xuất bên thứ ba, AI-thinker. Module nhỏ gọ này cho phép vi điều khiển thực
hiện kết nối Wi-Fi và thực hiện các kết nối TCP / IP đơn giản sử dụng lệnh Hayesstyle. Tuy nhiên, vào thời điểm đó gần như không có tài liệu tiếng Anh cho con chip
và các lệnh bằng tiếng anh mà nó được chấp nhận. Nó có một mức giá rất thấp, do
thực tế là có rất ít thành phần ngoại vitrên module, do vậy nó cũng rất nhỏ gọn.
Chính vì lý do này nó đã thu hút được nhiều hacker khám phá, tìm hiểu về con chip,
và các phần mềm trên đó, cũng như là dịch các tài liệu tiếng Trung Quốc sang tiếng

Anh. Với các thông số kỹ thuật như :
SDIO 2.0, SPI, UART
32-pin QFN ( Chip esp8266)
Tích hợp RF switch, balun, 24dBm PA, DCXO, and PMU
Tích hợp bộ xử lý RISC, trên chip bộ nhớ và giao diện bộ nhớ bên ngoài
Tích hợp bộ vi xử lý MAC / baseband
Chất lượng quản lý dịch vụ
Giao diện I2S cho độ trung thực cao ứng dụng âm thanh
On-chip thấp học sinh bỏ học điều chỉnh tuyến tính cho tất cả các nguồn cung cấp
nội bộ

11

















Kiến trúc giả miễn phí thế hệ đồng hồ độc quyền

Tích hợp WEP, TKIP, AES, và các công cụ WAPI
Wifi 802.11 b/g/n
Wi-Fi Direct (P2P), soft-AP
Tích hợp giao thức TCP / IP stack
Tích hợp TR chuyển đổi, balun, LNA, bộ khuếch đại quyền lực và phù hợp với
mạng
PLLs tích hợp, quản lý, DCXO và các đơn vị quản lý điện năng
+ Công suất đầu ra 19.5dBm ở chế độ 802.11b
Tích hợp công suất thấp 32-bit CPU có thể được sử dụng như là bộ vi xử lý ứng
dụng
SDIO 1.1 / 2.0, SPI, UART
STBC, MIMO 1 × 1, 2 × 1 MIMO
A-MPDU & A-MSDU tập hợp & 0.4ms khoảng bảo vệ
Thức dậy và truyền tải các gói dữ liệu trong <2ms
Chế độ chờ tiêu thụ điện năng <1.0mW (DTIM3)
Do vậy môi trường lập trình cho con chip này cũng khá nhiều chẳng hạn như:
Nodemcu, Arduino IDE, Python hay môi trường lập trình khá nổi tiếng và được cho
là hoàn hảo cho các thiết bị IOT là Node.js. Trong đề tài này nhóm em sẽ dùng
Arduino IDE cho module này.
Theo datasheet của nhà sản xuất cung cấp thì con chip này có chuẩn WIFI LÀ
802.11 b/g/n với dải tần từ 2.4 đến 2.5 Ghz. Trong thực tế khi bọn em đo thì với
điều kiện trong nhà thì khoảng cách xa nhất wifi nhận là khoảng 25m, còn ở ngoài
trời là 80m.

4.5 .Màn Hình LCD
Màn hình tinh thể lỏng (Liquid Crystal Display, LCD) là loại thiết bị hiển thị cấu tạo bởi
các tế bào (các điểm ảnh) chứa tinh thể lỏng có khả năng thay đổi tính phân cực của ánh
sáng và do đó thay đổi cường độ ánh sáng truyền qua khi kết hợp với các kính lọc phân
cực. Chúng có ưu điểm là phẳng, cho hình ảnh sáng, chân thật và tiết kiệm điện.Ngày
nay, thiết bị hiển thị LCD được sử dụng trong rất nhiều các ứng dụng của VĐK. LCD có

rất nhiều ưu điểm so với các dạng hiển thị khác: Nó có khả năng hiển thị kí tự đa dạng,
trực quan (chữ, số và 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, tốn rất ít tài nguyên hệ thống và giá thành rẻ.
Tổng Quan Về LCD :

12


Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên hình là loại
LCD thông dụng

Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển bên trong lớp vỏ và chỉ đưa
các chân giao tiếp cần thiết. Các chân này được đánh số thứ tự và đặt tên như hình :

III. NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH
1.

Sơ Đồ Khối Của Mạch

13


MODULE
ESP 8266

Internet

I.

KHỐI BÁO

HIỆU

KHỐI XỬ LÝ
TRUNG TÂM

KHỐI HIỂN
THỊ

KHỐI CẢM
BIẾN

2.

Lưu Đồ Thuật Toán Của Toàn Chương Trình

SET UP

Cài Đặt
Mạng

14


Sai
D=analogWrite(A0)

Đèn
Màu
Xanh


If(d>40%)

Đúng
X=DHT.read
Đèn đỏ và
Loa kêu

Lặp 15 lần

Gửi Dữ Liệu
Lên Mạng

3.Sơ đồ nguyên lý các khối trong mạch
3.1Khối điều khiển
15


Khối này chính là Arduino, nhận dữ liệu đọc về từ các cảm biến sau đó xử lý dữ liệu
nếu nồng độ khí gas đạt đến một ngưỡng nào đó thì sẽ kêu còi và đèn báo màu đỏ ngược
lại thì đèn sang màu xanh. Dữ liệu sẽ cho hiển thị lên màn hình LCD và gửi lên mạng
bằng cách đưa dữ liệu và lệnh để gửi lên mạng ( Các lệnh này là các tập lệnh AT của
module ESP8266 ) đến module ESP8266 qua giao tiếp giả UART ( các chần này có thể
là chân số )

3.2Khối cảm biến
3.2.1 Cảm biến khí Gas MQ2.

-

Trong mạch có 2 chân đầu ra là Aout và Dout. Trong đó: o

Aout: điện áp ra tương tự. Nó chạy từ 0.3à4.5V, phụ thuộc vào
nồng độ khí xung quang MQ2.
Dout: điện áp ra số, giá trị 0,1 phụ thuộc vào điện áp tham chiếu và
nồng độ khí mà MQ2 đo được.
Việc có chân ra số Dout rất tiện cho ta mắc các ứng dụng đơn giản,
không cần đến vi điều khiển. Khi đó ta chỉ cần chỉnh giá trị biến trở
tới giá trị nồng độ ta muốn cảnh báo. Khi nồng độ MQ2 đo được
thấp hơn mức cho phép thì Dout = 1. Đèn Led tắt. Khi nồng độ khí
đo được lớn hơn nồng khí cho phép, Dout =0, đèn led sáng.
Ta có thể ghép nối vào mạch Realy để điều khiển bật tắt đèn, còi,
hoặc thiết bị cảnh báo khác. Một điều khó khăn khi làm việc với
MQ2 là chúng ta khó có thể quy từ điện áp Aout về giá trị nồng độ
ppm. Rồi từ đó hiển thị và cảnh báo theo ppm. Do giá trị điện áp
16


trả về từng loại khí khác nhau, lại bị ảnh hưởng nhiệt độ, độ ẩm
nữa.
- Trong thiết bị của mình, để xác định điểm cảnh báo mình làm
khá thủ công. o Đầu tiên đo trạng thái không khí sạch, giá trị thu
được Vout1 o Cho khí ga từ bật lửa rò rỉ ra. Ta thấy giá trị Aout
tăng lên. Khi đạt khoảng cách khí ga từ bật lửa hợp lý rồi tương
ứng với nồng độ khí bắt đầu nguy hiểm, ta ghi lại giá trị Vout2. Ta
chọn giá trị Vout2 là giá trị ngưỡng cảnh báo. Nếu giá trị đo được
lớn hơn ta sẽ cảnh báo o Chỉnh chân biến trở để điện áp đo tại chân
3 của L358 = Vout2
--Phần I
Cảm biến dùng nồng độ khí ga trong không khí để thay đổi điện áp, điên áp trên
cảm biến luôn nhỏ hơn hoặc bằng Vcc=5V, điện áp được biến đổi cho vào chân 2
của IC và đẩu AOUT

--Phần II
-Ở đây dùng IC_KDTT( LM358) với chức năng là để so sánh điện áp chuẩn với
điện áp ở cảm biến.
-Điện áp ở cảm biến được nối vào chân số 2 của IC và điên áp chuẩn được nối vào
chân số 3 với biến trở Rp làm thay đối giá trị điện áp chuẩn nhằm làm tăng độ nhạy
cho Modul.
-Với điện áp chuẩn > điện áp ở cảm biến thì Vout=+V bão hòa=Vcc, DOUT=1,
Led không sáng
-Với điện áp chuẩn < điện áp ở cảm biến thì Vout=-V bão hòa= GND, DOUT=0,
Led thông--> sáng
-R1 để định thiên
-R2 để hạn dòng
-Trans Q1 khi nhận tín hiệu nhị phân 0 từ DOUT thì nó thông , ngược lại nếu nhận
1 thì nó ngắt.
17


-Thiết kế như vậy để tạo ra xung có tần số F=1/T với T=0,693(R1+2R2)C1
-Chân số 4(Reset) hoạt động ở sườn âm khi nhận mức cao( Trans thông, có chênh
lệch điện áp của CE và đất, với R3 là để hạn dòng tránh bị doản mạch ) từ Trans
Q1 thì ngắt, khi nhận điện áp 0 từ đất qua R3 ( trans ngắt) thì chân được kích hoạt
-----> con IC 555 không dao động nữa
-Khi IC555 không xuất ra xung thì LED1 không sáng và loa không kêu
-Khi mà xuất ra xung có tần số f ( là chuỗi bit 0,1 liên tục ) thì khi nhận 1 thì Led1
sáng, nhận 0 thì Led1 tắt nhưng do ở đây xung này có tần số f chạy quá nhanh nên
Led gần như sáng liên tục. Xung này ra qua Trans Q2 được khuếch đại và làm loa
kêu. Trở R5,R6 hạn dòng Trans, Led.
R3 là để hạn dòng tránh bị doản mạch.

3.2.2 Càm biến nhiệt độ, độ ẩm DHT11.


- Sơ đồ kết nối vi xử lý:

- Nguyên lý hoạt động:
18


Để 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:
o Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
o 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

o 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.
o MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào.
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.
o 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 ko. 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
o 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 độ (TC)

Byte 4 : giá trị phần thập phân của nhiệt độ (TC)
19


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 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:

Bit 1:

20


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.

3.3Khối đưa dữ liệu lên mạng
Sử dụng module ESP 8266. Module này gồm có 8 chân kết nối như sau:
VCC
3.3 V

GND
GND


EN
3.3V

RX
Pin 11

TX
Pin 10

RST
N

GPIO 0
N

GPIO 2
N

ESP có thể được điều khiển thông qua truyền thông nối tiếp bằng các tấp lệnh AT.
Đầu tiên là phải các lệnh AT thiết lập chế độ mạng và kết nối wifi cho module. Nếu thiết
bị kết nối thành công thì sẽ trả tín hiệu về cho arduino, arduino sẽ hiển thị đoạn tin này
trên cửa sổ serial monitor của Arduino IDE. Thiết lập này chỉ được làm một lần và đặt
trong hàm setup. Sau khi kết nối mạng xong, khi nào muốn gửi dữ liệu lên mạng thì
arduino sẽ gửi lệnh cho esp8266 kết nối đến trang wed, cụ thể trong web sử dụng ở đây
là Thinkspeak.com nên nó sẽ kết nối đến 184.106.153.149/80 chính là miền địa chỉ của
21


trang web trên. Nếu kết nối lỗi thì sẽ gửi lại phản hồi và kết nối lại, nếu thành công thì

sẽ gửi độ dài chuỗi dữ liệu ( dữ liệu mà arduino đọc từ cảm biến ) này lên trang web.
Nếu trang web không báo về leenhjphanr hồi ACK thì kết nối lỗi hoặc kết nối bận sau
đó Arduino sẽ đưa ra lệnh để ESP8266 đóng kết nối.Nếu trang web sẽ xác nhận là nhận
dữ liệu và gửi lại eps8266 lệnh xác nhận ACK, ESP8266 nhận được sẽ gửi lại lệnh
(ACK) báo đã nhận lệnh xác nhận từ trang Web . Khinày ESP8266 sẽ gửi tín hiệu phản
hồi ( “>”) cho Arduino . Arduino nhận được phản hồi này thì tức là EESP8266 đã sẵn
sàng gửi dữ liệu lênWeb , lức nãy arduino sẽ gửi cho esp8266 dữ liệu ( bao gồm nhiệt
độ, độ ẩm và nồng độ khí gas đọc từ các cảm biến ). ESP 8266 sẽ đưa dữ liệu này lên
trang web, trang web nhận được dữ liệu sẽ gửi lại lệnh xác nhận ACK, ESP nhận được
sẽ gửi lại lệnh đã nhận được xác nhận ACK, vậy phiên giao dịch này xong. Quá trình
truyền, nhận dữ liệu sẽ mất 16s ( Điều này phụ thược vào trang web Thinkspeak.com )
3.4Khối nguồn
Sử dụng Adapter 5V, 2A để cung cấp nguồn cho toàn mạch. Do module ESP8266 chỉ
hoạt trong ngưỡng điện áp từ 3v đến 3.5v và theo datasheet của nhà sản xuất thì điện áp
để module này hoạt động ổn định nhất là 3.3v , dòng tối thiểu là 250mA. Vậy nên phải
thiết kế thêm một mạch ổn áp 3.3v.Ở đây nhóm em dùng IC AMS 1117 để ổn áp.

Nguồn nuôi IC là 5v, nguồn 3.3 V sẽ lấy từ điện áp tham chiếu của IC ( Điện áp tham
chiếu bằng 3.3V ). Việc dùng các tụ ở hai bên là để giảm độ gợn sóng của điên áp vào
và ra.Ổn định điện áp đầu ra.
22


VIII.

THIẾT KẾ PHẦN CỨNG

IX.

THIẾT KẾ PHẦN MỀM


X.

PHẦN CODE ARDUINO
#include<LiquidCrystal.h>
LiquidCrystal lcd(3, 4, 5, 6, 7, 8);
#include<SoftwareSerial.h>
#include<stdlib.h>
int sensor1State = 0; ///////////////////////////////////////////////////////Gan gia tri cam bien oday
int sensor2State = 0;
int sensor3State = 0;
String apiKey = "BL9UPU79N9IE4Q60";
SoftwareSerial esp8266(10, 11);
#include<dht.h>
dht DHT;
#define DHT11_PIN 12
float gas;
int tem;
int hum;
byte degree[8] =
{
B01111,
B01001,
B01001,
B01111,
B00000,
B00000,
B00000,
B00000,
};

void setup()
{
23


Serial.begin(9600);
esp8266.begin(9600);
ATcommands();
// delay(1000);
// esp8266.println("AT+RST");
lcd.begin(16, 2);
lcd.print("TEMP HUM GAS");
lcd.createChar(1, degree);
pinMode(9, OUTPUT);
pinMode(13, OUTPUT);
}
void lcdxx()
{
lcd.setCursor(0, 1);
lcd.print(tem);
lcd.write(1);
lcd.print("C");
lcd.setCursor(7, 1);
lcd.print(hum);
lcd.setCursor(9, 1);
lcd.print("%");
lcd.setCursor(11, 1);
lcd.print(gas);
lcd.setCursor(15, 1);
lcd.print("%");

}
void ATcommands()
{
esp8266.begin(9600);
String TEST = "AT";
String Mode = "AT+CWMODE";
String
Wifi
"AT+CWJAP=\"PTIT\",\"deotrodau\"";/////////////////////////////////Nhapwfif o day.
esp8266.println(TEST);
24

=


delay(2000);
Responds();
esp8266.println(Mode);
delay(2000);
Responds();
esp8266.println(Wifi);
delay(2000);
Responds();
}
void Responds()
{
if (esp8266.available())
{
while (esp8266.available())
{

char c = esp8266.read();
Serial.write(c);
}
}
}
void ESP8266()
{
String state1 = String(sensor1State);
String state2 = String(sensor2State);
String state3 = String(sensor3State);
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += "184.106.153.149";
cmd += "\",80";
esp8266.println(cmd);
Serial.println(cmd);
if (esp8266.find("Error")) {
Serial.println("AT+CIPSTART error");
return;
}
String getStr = "GET /update?api_key=";
getStr += apiKey;
getStr += "&field1=";
getStr += String(state1);
25


×