You are on page 1of 33

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA ĐIỆN - ĐIỆN TỬ

BÀI TẬP LỚN


MÔN HỌC: THỰC HÀNH CƠ SỞ
NHÓM MÔN HỌC: 02
Đề bài :
Sử dụng KIT ESP32 WROOM 32U xây dựng ứng dụng thu thập dữ liệu nhiệt độ,
độ ẩm, chất lượng không khí của môi trường xung quanh hiển thị LCD 20x4 tại chỗ và gửi
dữ liệu lên Thingspeak vẽ đồ thị đồng thời lưu lại dữ liệu thu được bằng công cụ google
sheeet.

Giảng viên: Nguyễn Đức Việt


Sinh viên thực hiện:
Đỗ Duy Khánh – B20DCDT109
Đào Huy Hùng – B20DCDT081
Nguyễn Trung Kiên – B20DCDT101
Bùi Ngọc Đức – B20DCDT053

Hà Nội - 2023
MỤC LỤC
DANH MỤC HÌNH ẢNH..................................................................................................4
LỜI MỞ ĐẦU .....................................................................................................................5
CHƯƠNG I: CẤU TẠO, CHỨC NĂNG VÀ NGUYÊN TẮC HOẶT ĐỘNG CỦA
CÁC LINH KIỆN SỬ DỤNG TRONG MẠCH ..............................................................6
1. KIT ESP32 WROOM 32U..............................................................................6
1.2 Cấu tạo và nguyên tắc hoạt động ...............................................................6
1.3 Thông số kỹ thuật........................................................................................7
1.4 Sơ đồ chân ...................................................................................................8
2. Giới thiệu về LCD 20x4.................................................................................12
2.1 Thông số kỹ thuật......................................................................................13
2.2 Sơ đồ chân LCD 20x4 ...............................................................................13
3. DHT11 ...........................................................................................................14
3.1 Giới thiệu DHT11 .....................................................................................14
3.2 Cấu tạo cảm biến nhiệt độ độ ẩm DHT11 ...............................................14
3.3 Sơ đồ chân DHT11 ...................................................................................14
3.4 Nguyên lý hoạt động .................................................................................15
3.5 Thông số kĩ thuật ......................................................................................16
4. MQ135 ............................................................................................................16
4.1 Giới thiệu dòng cảm biến MQ .................................................................16
4.2 Nguyên lý hoạt động .................................................................................17
4.3 Thông số kỹ thuật MQ135 ........................................................................17
5. Module chuyển đổi I2C cho LCD 20x4 .......................................................18
5.1 Tính năng ..................................................................................................18
5.2 Thông số kĩ thuật ......................................................................................19
CHƯƠNG II: DỊCH VỤ ĐÁM MÂY ............................................................................20
1. Thingspeak .....................................................................................................20
1.1 Các tính năng quan trọng của Thinkspeak .............................................20
1.2 Phương thức hoạt động thingspeak .........................................................20
2
2 Google Sheets ..................................................................................................21
2.1 Giới thiệu Google Sheets ..........................................................................21
2.2 Các tính năng nổi bật của Google Sheets ................................................21
CHƯƠNG III: CÁC GIAO THỨC SỬ DỤNG TRONG MẠCH ...............................22
1. Giao thức I2C .................................................................................................22
1.1 Khái niệm ..................................................................................................22
1.2 Quá trình truyền nhận dữ liệu .................................................................22
1.3 Các chế độ hoạt động của I2C: ................................................................23
2 Giao thức HTTP ............................................................................................23
2.1 Khái niệm của HTTP ................................................................................23
2.2 Cấu trúc cơ bản của HTTP .....................................................................23
3. Giao thức One – wire ....................................................................................23
3.1 Khái niệm ..................................................................................................23
3.2: Cách thức liên kiết ...................................................................................24
CHƯƠNG IV: THIẾT KẾ LẮP RÁP MẠCH ĐIỆN THỰC TẾ ................................25
1. Sơ đồ khối .......................................................................................................25
2. Sơ đồ nguyên lý ..............................................................................................25
3. Hình ảnh mạch trong thực tế .......................................................................26
4. Kết quả khảo sát thực tế thu được ...............................................................26
4.1 Kết quả trên Thingspeak ...........................................................................27
4.2 Kết quả trên Google Sheets.......................................................................28
5. Đánh giá kết quả ............................................................................................28
6.Code .................................................................................................................29
TÀI LIỆU THAM KHẢO ...............................................................................................33

3
DANH MỤC HÌNH ẢNH
Hình 1. Kit ESP32 WROOM 32U ………………………………………………………..6
Hình 2. chip ESP32-D0WD………………………………………………………… ........7
Hình 3. Sơ đồ chân KIT ESP32 WROOM 32U…………………………………………..8
Hình 4: Hình ảnh LCD 20x4………………………………………………………….......11
Hình 5: Sơ đồ chân DHT11…………………………………………………………........13
Hình 6: Hình ảnh cảm biến MQ135………………………………………………………14
Hình 7: Sơ đồ chân I2C…………………………………………………………..............16
Hình 8: Module chuyển đổi I2C cho LCD 20x4…………………………………………16
Hình 9: Mô hình của Thinkspeak…………………………………………………………18
Hình 10: Sơ đồ hoạt động của HTTP…………………………………………………….21
Hình 11: Mạch thực tế hàn trên PCB lỗ………………………………………………….24
Hình 12: Kết quả trên Thingspeak………………………………………………………..25
Hình 13; Kết quả trên Goolesheet………………………………………………………..26

4
LỜI MỞ ĐẦU

Hiện nay, ngành kỹ thuật điện tử và công nghệ thông tin tiến bộ không liên tục.
Chúng đang ngày càng phát triển và được ứng dụng trong tất cả các mặt của cuộc sống.
Các thiết bị điện tử sử dụng Vi Điều Khiển được sử dụng rộng rãi trong các ứng dụng tự
động. Nó giúp chúng ta trong mọi công việc cũng như giải trí. Các bộ Vi Điều khiển ngày
càng hiện đại, tốc độ xử lý nhanh hơn và các ứng dụng mở rộng hơn.
Một trong những ứng dụng quan trọng của Vi Điền Khiển đó là xây dựng trong đo
lường và điều khiển. Nhờ các loại cảm biến, ứng dụng của đo lường bằng Vi Điều khiển
không chỉ giới hạn trong các đại lượng điện mà còn mở rộng ra các tín hiệu không phải
điện. Sử dụng Vi Điều Khiển chung ta thu thập các đại lượng cần đo dễ dàng hơn, cụ thể
là có thể xử lý ngay các đại lượng đó và đưa ra kết quả như mong muốn.
Để làm khái quát về những kiến thức trong môn Thực hành cơ sở và kết thúc học
phần môn Thực hành cơ sở. Chúng em xin làm bài tập lớn này để tổng hợp lại những gì
em đã nghiên cứu và nghiên cứu trong môn học. Trong bài tập lớn này, chúng em xin được
khám phá và trình bày nội dung:
“Sử dụng KIT ESP32 WROOM 32U xây dựng ứng dụng thu thập dữ liệu nhiệt độ, độ
ẩm, chất lượng không khí của môi trường xung quanh hiển thị LCD 20x4 tại chỗ và gửi
dữ liệu lên Thingspeak vẽ đồ thị đồng thời lưu lại dữ liệu thu được bằng công cụ google
sheeet.”

5
CHƯƠNG I: CẤU TẠO, CHỨC NĂNG VÀ NGUYÊN TẮC HOẶT ĐỘNG CỦA
CÁC LINH KIỆN SỬ DỤNG TRONG MẠCH
1. KIT ESP32 WROOM 32U

Hình 1. Kit ESP32 WROOM 32U


ESP32-WROOM-32U là một module mạnh mẽ tích hợp Wi-Fi, Bluetooth và
Bluetooth Low Energy (BLE) được thiết kế để đáp ứng nhiều yêu cầu khác nhau của các
dự án IoT. Module này được trang bị bộ nhớ flash dung lượng 64 Mbits và tích hợp đầu
nối U.FL giúp nâng cao khả năng truyền tín hiệu Wi-Fi và Bluetooth.
ESP32-WROOM-32U sử dụng chip ESP32-D0WD với hai lõi CPU có thể điều
khiển riêng lẻ và tần số xung nhịp CPU có thể điều chỉnh từ 80MHz đến 240MHz. Chip
này cũng tích hợp Bluetooth 4.2 BR/EDR và BLE, Wi-Fi 802.11 b/g/n, bộ xử lý mã hóa
phần cứng, bộ chuyển đổi ADC và DAC, và nhiều cổng giao tiếp khác như UART, SPI,
I2C và GPIO.
ESP32-WROOM-32U có thể được sử dụng cho nhiều ứng dụng IoT khác nhau như
phát nhạc, giải mã MP3, mã hóa giọng nói, và các ứng dụng đòi hỏi tính năng mạng và tiêu
thụ năng lượng thấp. Module này cũng được thiết kế để tích hợp với các thiết bị khác để
tạo ra các hệ thống IoT thông minh và linh hoạt.
1.2 Cấu tạo và nguyên tắc hoạt động

6
Cấu tạo của ESP32-WROOM-32U bao gồm chip ESP32-D0WD, bộ nhớ flash dung
lượng 64 Mbits, đầu nối U.FL, và các linh kiện khác như điện trở, tụ điện, điện áp ổn áp,
và các linh kiện điện tử khác được lắp đặt trên một board mạch nhỏ gọn.
Nguyên lý hoạt động của ESP32-WROOM-32U là sử dụng chip ESP32-D0WD để
thực hiện các chức năng liên quan đến mạng và kết nối, bao gồm Wi-Fi, Bluetooth và BLE.
Chip này được tích hợp hai lõi CPU có thể điều khiển riêng lẻ và tần số xung nhịp CPU có
thể điều chỉnh từ 80MHz đến 240MHz.
Khi được kết nối với một anten thông qua đầu nối U.FL, ESP32-WROOM-32U sẽ
có khả năng truyền và nhận tín hiệu Wi-Fi và Bluetooth từ các thiết bị khác. Nó cũng có
thể giao tiếp với các thiết bị khác thông qua các cổng giao tiếp như UART, SPI, I2C và
GPIO.
ESP32-WROOM-32U cũng được trang bị bộ nhớ flash dung lượng 64 Mbits, cung
cấp đủ không gian lưu trữ cho các ứng dụng IoT khác nhau. Các ứng dụng này có thể được
phát triển và nạp vào chip thông qua một trình biên dịch và trình nạp.

Hình 2. Chip ESP32-D0WD


1.3 Thông số kỹ thuật
 Chip xử lí: ESP32-D0WD
 SPI flash: 32 Mbits, 3.3V
 Crystal: 40 MHz
 Antenna: đầu nối U.FL (giúp kết nối với anten IPEX bên ngoài)
 Network protocols: IPv4, IPv6, SSL, TCP/UDP/HTTP/FTP/MQTT
 User configuration: AT instruction set, cloud server, Android/iOS app
 WiFi:
 Wi-Fi mode: Station/SoftAP/SoftAP+Station/P2P
7
 Wi-Fi Security: WPA/WPA2/WPA2-Enterprise/WPS
 Các giao thức:
 802.11 b/g/n (802.11n up to 150 Mbps)
 A-MPDU and A-MSDU aggregation and 0.4 µs guard interval
support
 Phạm vi tần số: 2.4 ~ 2.5 GHz
 Bluetooth:
 Các giao thức: Bluetooth v4.2 BR/EDR and BLE specification
 Radio:
 NZIF receiver with –97 dBm sensitivity
 Class-1, class-2 and class-3 transmitter
 AFH
 Audio: CVSD and SBC
 Encryption: AES/RSA/ECC/SHA
 Firmware upgrade: UART Download / OTA
 Software development: Supports Cloud Server Development / SDK for custom
firmware development
 Module interface: SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM, I2S,
IR
 On-chip sensor: Hall sensor
 On-board clock: 40 MHz crystal
 Điện áp hoạt động: 2.7 ~ 3.6V
 Dòng điện hoạt động: trung bình: 80 mA
 Dòng điện tối thiểu lấy từ nguồn điện: 500 mA
 Nhiệt độ hoạt động: –40°C ~ +85°C
1.4 Sơ đồ chân

8
Hình 3. Sơ đồ chân KIT ESP32 WROOM 32U
Mô tả các chân ESP32
Chân Input Only
GPIO từ 34 đến 39 là GPI – chân chỉ đầu vào. Các chân này không có điện trở kéo lên hoặc
kéo xuống bên trong. Chúng không thể được sử dụng làm đầu ra, vì vậy chỉ sử dụng các
chân này làm đầu vào:
 GPIO 34
 GPIO 35
 GPIO 36
 GPIO 39
Chân tích hợp Flash trên ESP32
GPIO 6 đến GPIO 11 dùng để kết nối Flash SPI, không khuyến khích sử dụng trong các
ứng dụng khác
 GPIO 6 (SCK/CLK)
 GPIO 7 (SDO/SD0)
 GPIO 8 (SDI/SD1)
 GPIO 9 (SHD/SD2)
 GPIO 10 (SWP/SD3)
 GPIO 11 (CSC/CMD)
Chân cám biến điện dung

9
Các chân ESP32 này có chức năng như 1 nút nhấn cảm ứng, có thể phát hiện sự thay đổi
về điện áp cảm ứng trên chân.
Các cảm biến cảm ứng bên trong đó được kết nối với các GPIO sau:
 T0 (GPIO 4)
 T1 (GPIO 0)
 T2 (GPIO 2)
 T3 (GPIO 15)
 T4 (GPIO 13)
 T5 (GPIO 12)
 T6 (GPIO 14)
 T7 (GPIO 27)
 T8 (GPIO 33)
 T9 (GPIO 32)
Analog to Digital Converter (ADC)
ESP32 có các kênh đầu vào ADC 18 x 12 bit (trong khi ESP8266 chỉ có ADC 1x 10 bit).
Đây là các GPIO có thể được sử dụng làm ADC và các kênh tương ứng:
 ADC1_CH0 (GPIO 36)
 ADC1_CH1 (GPIO 37)
 ADC1_CH2 (GPIO 38)
 ADC1_CH3 (GPIO 39)
 ADC1_CH4 (GPIO 32)
 ADC1_CH5 (GPIO 33)
 ADC1_CH6 (GPIO 34)
 ADC1_CH7 (GPIO 35)
 ADC2_CH0 (GPIO 4)
 ADC2_CH1 (GPIO 0)
 ADC2_CH2 (GPIO 2)
 ADC2_CH3 (GPIO 15)
 ADC2_CH4 (GPIO 13)
10
 ADC2_CH5 (GPIO 12)
 ADC2_CH6 (GPIO 14)
 ADC2_CH7 (GPIO 27)
 ADC2_CH8 (GPIO 25)
 ADC2_CH9 (GPIO 26)
Các kênh đầu vào ADC có độ phân giải 12 bit. Điều này có nghĩa là bạn có thể nhận được
các số đọc tương tự từ 0 đến 4095, trong đó 0 tương ứng với 0V và 4095 đến 3,3V. Bạn
cũng có thể lập trình độ phân giải của các kênh của mình trên code.
Digital to Analog Converter (DAC)
Có các kênh DAC 2 x 8 bit trên ESP32 để chuyển đổi tín hiệu kỹ thuật số thành đầu ra tín
hiệu điện áp tương tự. Các kênh này chỉ có độ phân giải 8 bit, nghĩa là có giá trị từ 0 – 255
tương ứng với 0 – 3.3V
Đây là các kênh DAC:
 DAC1 (GPIO25)
 DAC2 (GPIO26)
Các chân thời gian thực RTC
Các chân này có tác dụng đánh thức ESP32 khi trong chế độ Low Power Mode. Sử dụng
như 1 chân ngắt ngoài.
Các chân RTC:
 RTC_GPIO0 (GPIO36)
 RTC_GPIO3 (GPIO39)
 RTC_GPIO4 (GPIO34)
 RTC_GPIO5 (GPIO35)
 RTC_GPIO6 (GPIO25)
 RTC_GPIO7 (GPIO26)
 RTC_GPIO8 (GPIO33)
 RTC_GPIO9 (GPIO32)
 RTC_GPIO10 (GPIO4)
 RTC_GPIO11 (GPIO0)
 RTC_GPIO12 (GPIO2)
11
 RTC_GPIO13 (GPIO15)
 RTC_GPIO14 (GPIO13)
 RTC_GPIO15 (GPIO12)
 RTC_GPIO16 (GPIO14)
 RTC_GPIO17 (GPIO27)
Chân PWM
ESP32 LED PWM có 16 kênh độc lập có thể được định cấu hình để tạo tín hiệu PWM với
các thuộc tính khác nhau. Tất cả các chân có thể hoạt động như đầu ra đều có thể được sử
dụng làm chân PWM (GPIO từ 34 đến 39 không thể tạo PWM).
Để xuất PWM, bạn cần xác định các thông số này trong code:
 Frequency – tần số
 Duty cycle
 Kênh PWM
 Chân GPIO nơi bạn muốn xuất tín hiệu
Chân I2C
ESP32 có hai kênh I2C và bất kỳ chân nào cũng có thể được đặt làm SDA hoặc SCL. Khi
sử dụng ESP32 với Arduino IDE, các chân I2C mặc định là:
 GPIO 21 (SDA)
 GPIO 22 (SCL)
Nếu các bạn muốn sử dụng chân khác cho việc điều khiển I2C có thể sử dụng code:
Wire.begin(SDA, SCL);
Chân Ngắt Ngoài
Tất cả các chân ESP32 đều có thể sử dụng ngắt ngoài
2. Giới thiệu về LCD 20x4
Màn hình text LCD 20 x 4 xanh dương /xanh lá sử dụng driver HD44780, có khả
năng hiển thị 4 dòng với mỗi dòng 20 ký tự, màn hình có độ bền cao, rất phổ biến, nhiều
code mẫu và dễ sử dụng thích hợp cho những người mới học và làm dự án.

12
Hình 4: Hình ảnh LCD 20x4
2.1 Thông số kỹ thuật
 Điện áp hoạt động là 5 V.
 Kích thước: 98 x 60 x 13.5 mm
 Chữ trắng, nền xanh dương/chữ đen nền xanh lá
 Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với Breadboard.
 Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây điện.
 Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít
điện năng hơn.
 Có thể được điều khiển với 6 dây tín hiệu
 Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật, xem thêm HD44780
datasheet để biết thêm chi tiết.
2.2 Sơ đồ chân LCD 20x4

Số chân Ký hiệu chân Mô tả chân


1 Vss Cấp điện 0V
2 Vcc Cấp điện 5V

3 V0 Chỉnh độ tương phản

4 RS Lựa chọn thanh ghi địa chỉ hay dữ liệu


5 RW Lựa chọn thanh ghi Đọc hay Viết
6 EN Cho phép xuất dữ liệu

13
7 D0 Đường truyền dữ liệu 0

8 D1 Đường truyền dữ liệu 1

9 D2 Đường truyền dữ liệu 2


10 D3 Đường truyền dữ liệu 3
11 D4 Đường truyền dữ liệu 4

12 D5 Đường truyền dữ liệu 5


13 D6 Đường truyền dữ liệu 6

14 D7 Đường truyền dữ liệu 7

15 A Chân dương đèn màn hình


16 K Chân âm đèn màn hình

3. DHT11
3.1 Giới thiệu DHT11
DHT11 là một cảm biến kỹ thuật số giá rẻ để cảm nhận nhiệt độ và độ ẩm. Cảm
biến này có thể dễ dàng giao tiếp với bất kỳ bộ vi điều khiển vi nào như Arduino,
Raspberry Pi, ... để đo độ ẩm và nhiệt độ ngay lập tức.
DHT11 là một cảm biến độ ẩm tương đối. Để đo không khí xung quanh, cảm biến này sử
dụng một điện trở nhiệt và một cảm biến độ ẩm điện dung.
3.2 Cấu tạo cảm biến nhiệt độ độ ẩm DHT11
Cảm biến DHT11 bao gồm một phần tử cảm biến độ ẩm điện dung và một điện trở
nhiệt để cảm nhận nhiệt độ. Tụ điện cảm biến độ ẩm có hai điện cực với chất nền giữ ẩm
làm chất điện môi giữa chúng. Thay đổi giá trị điện dung xảy ra với sự thay đổi của các
mức độ ẩm. IC đo, xử lý các giá trị điện trở đã thay đổi này và chuyển chúng thành dạng
kỹ thuật số.
Để đo nhiệt độ, cảm biến này sử dụng một nhiệt điện trở có hệ số nhiệt độ âm, làm giảm
giá trị điện trở của nó khi nhiệt độ tăng. Để có được giá trị điện trở lớn hơn ngay cả đối
với sự thay đổi nhỏ nhất của nhiệt độ, cảm biến này thường được làm bằng gốm bán dẫn
hoặc polymer.
3.3 Sơ đồ chân DHT11

14
Số chân Tên chân Mô tả
1 Vcc Nguồn 3.5V đến 5.5V
Đầu ra cả nhiệt độ và độ ẩm thông qua dữ liệu nối
2 Data
tiếp
3 NC Không có kết nối và do đó không sử dụng

4 Ground Nối đất

Hình 5: Sơ đồ chân DHT11

3.4 Nguyên lý hoạt động


Nguyên lý hoạt động của cảm biến DHT11 được mô tả như sau:
1. Đo độ ẩm: Cảm biến DHT11 sử dụng một cảm biến độ ẩm có nguyên tắc làm việc
dựa trên sự thay đổi điện trở của một vật liệu hấp thụ ẩm. Bên trong cảm biến, có
một vật liệu hấp thụ ẩm như polimer hoặc muối có khả năng thay đổi điện trở khi
tiếp xúc với độ ẩm. Điện trở này được đo và chuyển đổi thành giá trị độ ẩm tương
ứng.
2. Đo nhiệt độ: Cảm biến DHT11 cũng sử dụng một cảm biến nhiệt độ để đo nhiệt độ
môi trường. Thông thường, cảm biến nhiệt độ trong DHT11 là một cảm biến nhiệt
độ số, chẳng hạn như một resistor nhiệt độ. Khi nhiệt độ thay đổi, điện trở của cảm
biến nhiệt độ cũng thay đổi. Giá trị điện trở này được đo và chuyển đổi thành giá trị
nhiệt độ tương ứng.
3. Giao tiếp: Cảm biến DHT11 được giao tiếp với vi điều khiển hoặc mạch điện tử
khác thông qua giao diện số 1-Wire hoặc giao diện bất đồng bộ. Cảm biến truyền
dữ liệu độ ẩm và nhiệt độ thông qua các tín hiệu kỹ thuật số.

15
3.5 Thông số kĩ thuật
- Điện áp hoạt động: 3V - 5V DC
- Dòng điện tiêu thụ: 2.5mA
- Phạm vi cảm biến độ ẩm: 20% - 90% RH, sai số ±5%RH
- Phạm vi cảm biến nhiệt độ: 0°C ~ 50°C, sai số ±2°C
- Tần số lấy mẫu tối đa: 1Hz (1 giây 1 lần)
- Kích thước: 23 * 12 * 5 mm
4. MQ135
4.1 Giới thiệu dòng cảm biến MQ

Hình 6: Hình ảnh cảm biến MQ135


Cảm biến MQ là một loại cảm biến khí dùng để phát hiện và đo lượng khí như khí
NH3, NOx, CO, Ancol, Benzen, Khói, gas, CO2, CH4…. và các hợp chất hữu cơ khác
trong không khí. Đa số khí nó nhận biết đều là khí tạp chất và không có lợi cho sức khỏe
nên chính vì vậy người ta gọi nó là cảm biến chất lượng không khí.
Khi cảm biến được đặt trong môi trường ô nhiễm, Nồng độ ô nhiễm trong không khí
tăng lên, cảm biến đo đạc được và sẽ dẫn điện ở ngưỡng thiết lập, Lúc này sẽ xuất tín hiệu
đầu ra được kết nối đến mạch chuyển đổi như mạch vi điều khiển, hoặc kết nối trực tiếp
đến Module relay.
Module cảm biến khí MQ135 là module lý tưởng để sử dụng trong nhà, văn phòng
hoặc ứng dụng công nghiệp như mạch điều khiển và giám sát đơn giản, là một cảm biến
với chi phí thấp và ứng dụng nhiều
16
4.2 Nguyên lý hoạt động
Cảm biến MQ135 hoạt động dựa trên nguyên lý tương tác giữa chất khí trong không
khí và một chất trung gian trên bề mặt của cảm biến.
Cảm biến này dựa trên nguyên tắc của phản ứng hóa học để phát hiện sự hiện diện
của các chất khí.
MQ-135 có một lớp vật liệu phản ứng trên bề mặt của nó, và khi có chất khí tương
tác với lớp vật liệu này, sẽ xảy ra các phản ứng hóa học. Khi phản ứng xảy ra, điện trở của
cảm biến thay đổi. Dựa trên sự thay đổi này, cảm biến có thể đo lường mức độ có chất khí
trong không khí.
Cụ thể, MQ-135 phản ứng với các chất khí như sau:
1. Khí CO2: MQ-135 phản ứng với khí CO2 và thay đổi điện trở. Điện trở sẽ tăng lên khi
mức độ CO2 tăng.
2. Khí CO: MQ-135 cũng phản ứng với khí CO và thay đổi điện trở. Điện trở cũng sẽ tăng
lên khi mức độ CO tăng.
3. Khí ammonia (NH3): MQ-135 có phản ứng với khí ammonia và thay đổi điện trở. Điện
trở sẽ tăng khi mức độ NH3 tăng.
4. Khí khói (smoke): MQ-135 phản ứng với khí khói và thay đổi điện trở. Điện trở sẽ tăng
khi có mức độ khói tăng.
5. Nitơ oxit (NOx): MQ-135 có thể phản ứng với các hợp chất nitơ oxit như nitơ monoxit
(NO) và nitơ dioxide (NO2). Khi mức độ NOx tăng, điện trở của cảm biến có thể thay đổi.
6. Khí mêthane (CH4): MQ-135 có thể phản ứng với khí mêthane, một chất khí thường
gặp trong khí tự nhiên và các quá trình sinh học. Điện trở của cảm biến có thể thay đổi khi
mức độ mêthane tăng.
7. Hidro sulfua (H2S): MQ-135 cũng phản ứng với khí hidro sulfua, một chất khí có mùi
hôi thối. Thay đổi điện trở của cảm biến có thể phản ánh mức độ H2S trong không khí.
4.3 Thông số kỹ thuật MQ135
 Điện áp nguồn: 5V DC
 Điện áp của heater: 5V±0.1 AC/DC
 Điện trở tải: thay đổi được (2kΩ-47kΩ)
 Điện trở của heater: 33Ω±5%
 Công suất tiêu thụ của heater: ít hơn 800mW

17
 Nồng độ phát hiện của một số chất: 10 - 300 ppm NH3, 10 - 1000 ppm Benzene,
10 - 300 Alcol, 1-10 ppm khói, 100-5000 ppm CO2
 Kích thước: 32mm*20mm
 Khoảng đo rộng
 Bền, tuổi thọ cao
 Phát hiện nhanh, độ nhạy cao
 Mạch đơn giản
5. Module chuyển đổi I2C cho LCD 20x4

Hình 7: Sơ đồ chân I2C

Hình 8: Module chuyển đổi I2C cho LCD 20x4

5.1 Tính năng


LCD có quá nhiều chân gây khó khăn trong quá trình kết nối và chiếm dụng nhiều
chân của vi điều khiển? Module chuyển đổi I2C cho LCD sẽ giải quyết vấn đề này cho
18
bạn, thay vì sử dụng tối thiểu 6 chân của vi điều khiển để kết nối với LCD (RS, EN, D7,
D6, D5 và D4) thì với module chuyển đổi bạn chỉ cần sử dụng 2 chân (SCL, SDA) để kết
nối. Module chuyển đổi I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 1602,
LCD 2004, … ), kết nối với vi điều khiển thông qua giao tiếp I2C, tương thích với hầu hết
các vi điều khiển hiện nay.
- Ưu điểm
+ Tiết kiệm chân cho vi điều khiển
+ Dễ dàng kết nối với LCD
5.2 Thông số kĩ thuật
 Điện áp hoạt động: 2.5-6V DC
 Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780)
 Giao tiếp: I2C
 Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2)
 Kích thước: 41.5mm(L)x19mm(W)x15.3mm(H)
 Trọng lượng: 5g
 Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt
 Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD

19
CHƯƠNG II: DỊCH VỤ ĐÁM MÂY
1. Thingspeak
Thingspeak là một nền tảng mà bạn có thể trực quan hóa và phân tíchdữ liệu trên
đám mây. Nó là một sản phẩm Matlab và bạn có thể xử lý và phân tích dữ liệu trực tiếp từ
đám mây. Chủ yếu nó được sử dụng trong các dự án IoT cần phân tích để theo dõi những
thay đổi về giá trị cảm biến trên đám mây.

Hình 9: Mô hình của Thinkspeak


1.1 Các tính năng quan trọng của Thinkspeak
Thingspeak cung cấp các khả năng khác nhau để thu thập, trực quan hóa và phân tích dữ
liệu trên đám mây. Sau đây là các tính năng chính.
Các thiết bị có thể dễ dàng định cấu hình và gửi dữ liệu tới Thingspeak bằng cách sử dụng
các giao thức truyền thông.
Có thể xem dữ liệu trong thời gian thực
Nó có thể nhận dữ liệu từ phần mềm của bên thứ ba.
Có thể sử dụng với Matlab để phân tích dữ liệu
Nó không cần server và phần mềm web để xây dựng prototype hệ thống IoT.
Tự động thực hiện các hành động và giao tiếp bằng phần mềm của bên thứ ba như twitter.
1.2 Phương thức hoạt động thingspeak

20
Ba bước chính mà Thingspeak yêu cầu để hoàn thành công việc đó là thu thập dữ liệu,
phân tích và thực hiện một hành động.
Thingspeak hoạt động với điện toán đám mây, tất cả các thiết bị mà bạn muốn lấy dữ liệu
phải nằm trong mạng với cơ sở dữ liệu đám mây. Thingspeak cũng kết nối với cơ sở dữ
liệu đám mây và hiển thị luồng dữ liệu.
2 Google Sheets
2.1 Giới thiệu Google Sheets
Google Sheets (Google SpreadSheet) là một chương trình bảng tính được cung cấp
miễn phí bởi Google nằm trong dịch vụ Google Drive. Dịch vụ này cũng bao gồm Google
Docs và Google Slides, một trình xử lý văn bản và chương trình trình bày tương ứng. Hiểu
một cách đơn giản thì Google Sheets là ứng dụng về bảng tính của Google Docs.
2.2 Các tính năng nổi bật của Google Sheets

 Dễ dàng nhập liệu

 Đặt chương trình tính

 Làm việc năng suất hơn

 Không bao giờ phải nhấp lại “lưu”

 Hỗ trợ tốt cho việc làm nhóm

21
CHƯƠNG III: CÁC GIAO THỨC SỬ DỤNG TRONG MẠCH
1. Giao thức I2C
1.1 Khái niệm
 I2C (Inter – Integrated Circuit) là 1 giao thức giao tiếp nối tiếp đồng bộ được phát
triển bởi Philips Semiconductors, sử dụng để truyền nhận dữ liệu giữa các IC với
nhau chỉ sử dụng hai đường truyền tín hiệu.
 Các bit dữ liệu sẽ được truyền từng bit một theo các khoảng thời gian đều đặn được
thiết lập bởi 1 tín hiệu đồng hồ.
 Bus I2C thường được sử dụng để giao tiếp ngoại vi cho rất nhiều loại IC khác nhau
như các loại vi điều khiển, cảm biến, EEPROM,…
1.2 Quá trình truyền nhận dữ liệu
 Bắt đầu: Thiết bị Master sẽ gửi đi 1 xung Start bằng cách kéo lần lượt các đường
SDA, SCL từ mức 1 xuống 0.

 Tiếp theo đó, Master gửi đi 7 bit địa chỉ tới Slave muốn giao tiếp cùng với bit
Read/Write.
 Slave sẽ so sánh địa chỉ vật lý với địa chỉ vừa được gửi tới. Nếu trùng khớp, Slave
sẽ xác nhận bằng cách kéo đường SDA xuống 0 và set bit ACK/NACK bằng ‘0’.
Nếu không trùng khớp thì SDA và bit ACK/NACK đều mặc định bằng ‘1’.
 Thiết bị Master sẽ gửi hoặc nhận khung bit dữ liệu. Nếu Master gửi đến Slave thì
bit Read/Write ở mức 0. Ngược lại nếu nhận thì bit này ở mức 1.
 Nếu như khung dữ liệu đã được truyền đi thành công, bit ACK/NACK được set
thành mức 0 để báo hiệu cho Master tiếp tục.
22
 Sau khi tất cả dữ liệu đã được gửi đến Slave thành công, Master sẽ phát 1 tín hiệu
Stop để báo cho các Slave biết quá trình truyền đã kết thúc bằng các chuyển lần lượt
SCL, SDA từ mức 0 lên mức 1.
1.3 Các chế độ hoạt động của I2C:
 Chế độ chuẩn (standard mode) với tốc độ 100 kBit/s.
 Chế độ tốc độ thấp (low speed mode) với tốc độ 10 kBit/s.
2 Giao thức HTTP
2.1 Khái niệm của HTTP
HTTP là tên viết tắt của cụm từ HyperText Transfer Protocol, dịch . HTTP được
dùng trong www (world wide web) với mục đích tạo nên nền tảng kết nối giữa client và
server. Client ở đây đại diện cho bất kỳ loại thiết bị hoặc chương trình nào, có thể là PC,
smartphone… Còn Server được dùng để chỉ những máy tính trên đám mây. HTTP là một
giao thức cho phép trao đổi và sử dụng các nguồn tài nguyên khác nhau, chẳng hạn như
HTML doc. Một doc hoàn chỉnh sẽ được tạo nên từ nhiều doc con bao gồm văn bản, layout,
media, video, script…
2.2 Cấu trúc cơ bản của HTTP
Cấu trúc hoạt động của HTTP rất đơn giản và dễ hiểu. HTTP là một nền tảng cho
phép sự giao tiếp giữa 2 phía là Client và Server. Client ở đây là người dùng, thường truy
cập vào HTTP thông qua một công cụ bất kỳ như trình duyệt web. Còn Server sẽ đại diện
cho phía website, đằng sau giao diện web gồm có kịch bản phản ứng từ máy chủ và cơ sở
dữ liệu.

Hình 10: Sơ đồ hoạt động của HTTP


3. Giao thức One – wire
3.1 Khái niệm
Giao thức OneWire hoạt động theo cơ chế truyền thông đồng bộ, trong đó thiết bị
master tạo ra các xung đồng hồ để điều khiển quá trình truyền thông giữa các thiết bị trên
23
mạng. Các thiết bị trên mạng được kết nối thành chuỗi dạng liên kết (daisy chain) và
được đánh địa chỉ duy nhất để phân biệt với nhau.
Mỗi thiết bị trên mạng OneWire được trang bị một bộ điều khiển giao tiếp
OneWire để thực hiện các chức năng truyền thông. Khi có yêu cầu truyền thông, thiết bị
master sẽ gửi một lệnh điều khiển đến thiết bị có địa chỉ tương ứng trong chuỗi. Sau đó,
các thiết bị khác trong chuỗi sẽ lặp lại lệnh đó và chuyển tiếp dữ liệu tới thiết bị tiếp theo
cho đến khi nó đến thiết bị đích.
Mỗi thiết bị OneWire cũng có khả năng cung cấp nguồn điện thông qua dây truyền
thông. Khi cần thiết, thiết bị master có thể yêu cầu thiết bị nào đó trên mạng cung cấp
nguồn để cung cấp điện cho các thiết bị khác trên chuỗi.
Giao thức OneWire cũng có khả năng tự động phát hiện các thiết bị trên mạng
thông qua quá trình tìm kiếm địa chỉ (search address). Khi một thiết bị mới được thêm
vào mạng, quá trình này sẽ được thực hiện để xác định địa chỉ mới của thiết bị đó.
Tổng thể, giao thức OneWire hoạt động đơn giản và hiệu quả trong các ứng dụng
truyền thông tốc độ thấp và cung cấp tính năng linh hoạt, tiết kiệm chi phí cho các hệ
thống điện tử nhỏ và đơn giản.
3.2: Cách thức liên kiết
Onewire là giao thức truyền thông đơn dây được sử dụng để kết nối và truyền dữ
liệu giữa các thiết bị điện tử với nhau. Với Onewire chỉ cần sử dụng một dây truyền
thông duy nhất để kết nối tất cả các thiết bị trong một chuỗi .
Các thiết bị Onewire có thể được kết nối nhau theo dạng chuỗi thông qua chân
Data và GND thiết bị .Các thiết bị trên chuỗi được định danh thông qua một mã duy nhất
gọi là địa chỉ OneWire , giúp cho chúng có thể truyền và nhận dữ liệu với nhau.

24
CHƯƠNG IV: THIẾT KẾ LẮP RÁP MẠCH ĐIỆN THỰC TẾ
1. Sơ đồ khối

KHỐI CẢM BIẾN KHỐI ĐIỀU KHIỂN CLOUD


Wifi

KHỐI HIỂN THỊ

2. Sơ đồ nguyên lý

25
3. Hình ảnh mạch trong thực tế

Hình 11: Mạch thực tế hàn trên PCB lỗ

4. Kết quả khảo sát thực tế thu được

26
4.1 Kết quả trên Thingspeak

Hình 12: Kết quả trên Thingspeak

27
4.2 Kết quả trên Google Sheets

Hình 13; Kết quả trên Goolesheet


5. Đánh giá kết quả
Những công việc đã được thực hiện :
- Kết nối được ESP32 với 3 module để hiển thị kết quả đo được như nhiệt độ, độ ẩm, chất
lượng không khí của môi trường xung quanh.
- Đưa dữ liệu đo được từ Arduino lên Thingspeak vẽ đồ thị đồng thời lưu lại dữ liệu thu
được bằng công cụ google sheeet.
Nhận xét và định hướng trong tương lai :
- ESP 32 là module được ứng dụng rất nhiều trong lĩnh vực IOT
- Trong thời đại công nghiệp 4.0 các ngành tự động hóa ,trí tuệ nhân tạo và vạn vật kết
nối ngày càng nở rộ thì lĩnh vực lập trình trên là một nghề rất hứa hẹn trong tương lai
28
6.Code

#include <WiFi.h>
#include <ThingSpeak.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <HTTPClient.h>
// Thông số Wifi
const char* ssid = "P.401";
const char* password = "0967158696";
// Thông số ThingSpeak
unsigned long channelID = 2161411;
const char* apiKey = "3RS0AX5S71RP0DU1";

// địa chỉ google sheet


String IFTTT_Key =
"AKfycbzTrKlWFuXRWycd0qzDVndkp6n1dbJeqyB65XPqzOATTy6TS8T1Rmx3CV86Vg7Gb
As";
String
IFTTTUrl="https://script.google.com/macros/s/AKfycbzTrKlWFuXRWycd0qzDV
ndkp6n1dbJeqyB65XPqzOATTy6TS8T1Rmx3CV86Vg7GbAs/exec";

int value1;
int value2;
int value3;

const int ANALOG_PIN = 32; // Chân analog của MQ135


const int DHTPIN = 4; // Chân data của DHT11
const int DHTTYPE = DHT11; // Loại cảm biến DHT11
const float tempCoefficient = 0.000025;
const float humCoefficient = 0.00125;

DHT dht(DHTPIN, DHTTYPE); // Khai báo đối tượng cảm biến DHT11

LiquidCrystal_I2C lcd(0x27, 20, 4); // Khai báo đối tượng màn hình LCD
20x4 với địa chỉ I2C là 0x27
// Khởi tạo WifiClient
WiFiClient client;
void setup() {
Serial.begin(115200);
delay(1000);
// Kết nối Wifi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
29
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");

// Khởi tạo ThingSpeak


ThingSpeak.begin(client);

dht.begin(); // Khởi động cảm biến DHT11


lcd.begin(); // Khởi động màn hình LCD
lcd.backlight(); // Bật đèn nền của màn hình LCD
lcd.clear(); // Xóa màn hình LCD
}
// hàm đọc chất lượng không khí :
float getAirquality(void)
{
int airQuality;
float resistance;
airQuality = analogRead(ANALOG_PIN);
resistance = (1023 - airQuality) * 10000 / airQuality;
float ppm = 116.6020682 * pow(resistance/10000, -2.769034857) * (1 +
tempCoefficient * (dht.readTemperature() - 25) + humCoefficient *
(dht.readHumidity() - 50));
return ppm;
}

// gửi dữ liệu nên googlesheet


void sendDataToSheet(void)
{
//String url
= "https://script.google.com/macros/s/"+IFTTT_Key+"/exec?+"value1=" +
String((int)value1) + "&value2="+String((int)value2) +"&value3=" +
String((int)value3);
String url = "https://script.google.com/macros/s/" + IFTTT_Key +
"/exec?" + "value1=" + String((int)value1) + "&value2=" +
String((int)value2) + "&value3=" + String((int)value3) + "\"";

Serial.println(url);
//Start to send data to IFTTT
HTTPClient http;
Serial.print("[HTTP] begin...\n");
http.begin(url); //HTTP

30
Serial.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if(httpCode > 0) {
// HTTP header has been send and Server response header has been
handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if(httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n",
http.errorToString(httpCode).c_str());
}
http.end();

}
void loop() {
value1 = dht.readTemperature();// độ ẩm
value2 = dht.readHumidity();/// nhiệt độ
value3 = getAirquality(); //ánh sáng
Serial.print("nhiệt đô - độ ẩm - chất lượng không khí : ");
Serial.print(value1);
Serial.print(' ');
Serial.print(value2);
Serial.print(' ');
Serial.println(value3);
Serial.print(' ');
sendDataToSheet();

// Hiển thị dữ liệu lên màn hình LCD

lcd.setCursor(0, 0);
lcd.print("NHIET DO: ");
lcd.print(value1);
lcd.print("'C");
lcd.setCursor(0, 1);
lcd.print("DO AM: ");
lcd.print(value2);
lcd.print("%");

31
lcd.setCursor(0, 2);
lcd.print("CHAT LUONG KHONG KHI");
lcd.setCursor(0, 3);
lcd.print(value3);
lcd.print(" PPM");
lcd.setCursor(0, 2);
lcd.print("CHAT LUONG KHONG KHI");
lcd.setCursor(0, 3);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(value3);
lcd.print(" PPM");

// Gửi dữ liệu lên ThingSpeak


ThingSpeak.setField(1, value1);
ThingSpeak.setField(2, value2);
ThingSpeak.setField(3, value3);
int response = ThingSpeak.writeFields(channelID, apiKey);
Serial.print("ThingSpeak response: ");
Serial.println(response);

delay(10000); // Chờ 5 giây để đọc lại dữ liệu từ cảm biến DHT11


}

32
TÀI LIỆU THAM KHẢO

1. M. Đ. Nguyễn and V. Đ. Nguyễn , Bài giảng thực hành cơ sở, Hà Nội: Học Viện Công
Nghệ Bưu Chính Viễn Thông, 2020.
2. ESP32 Data Logging to Google Sheets with Google Scripts:
https://iotdesignpro.com/articles/esp32-data-logging-to-google-sheets-with-google-scripts
3. Đọc nhiệt độ - độ ẩm và xuất ra màn hình LCD: http://arduino.vn/bai-viet/91-doc-
nhiet-do-do-am-va-xuat-ra-man-hinh-
lcd?fbclid=IwAR0sLmVLrCGvMh0mfEc2czA11swoGclQiLlRrHNdNgktDmQ0UqZyjst
4VQc
4. Giới thiệu cảm biến chất lượng không khí MQ135: http://arduino.vn/bai-viet/1545-
gioi-thieu-cam-bien-chat-luong-khong-khi-mq135http://arduino.vn/bai-viet/1545-gioi-
thieu-cam-bien-chat-luong-khong-khi-mq135
5. Tổng quan về sơ đồ chân ESP32 và ngoại vi: https://khuenguyencreator.com/tong-
quan-ve-so-do-chan-esp32-va-ngoai-vi/

33

You might also like