HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN
THƠNG
*****
THỰC HÀNH CƠ SỞ
BÁO CÁO BÀI TẬP LỚN
Giảng viên: Nguyễn Đức Việt
Nhóm 02
Thành viên nhóm:
Đào Văn Tố
Mã Sinh Viên:B19DCDT198
Nguyễn Ngun Huy Tuấn
Mã Sinh Viên:B19DCDT205
Ngơ Đức Thọ
Mã Sinh Viên:B19DCDT238
Nguyễn Trọng Dũng
Mã Sinh Viên:B19DCDT031
Nguyễn Hoàng Anh
Mã Sinh Viên:B19DCDT010
Đề tài: Sử dụng KIT Arduino ESP32 kết hợp phần mềm hiển thì ThingSpeak và FireBase
thu thập dữ liệu môi trường và lưu trên server thời gian thực
Hà Nội-2022
Phần I:Ý tưởng, mục đích, thành phần sử dụng
Ý tưởng: Sử dụng các module cảm biến kết hợp bộ vi điều khiểu ESP xây dựng thành hệ
thống cảm biến và gửi thông tin lên server phục vụ việc nghiên cứu, đánh giá đưa ra dự
báo về sự thay đổi của mơi trường trong các khoảng thời gian.
Mục đích
Làm quen với với Kit IOT ESP32
Nắm được cấu tạo, nguyên lý hoạt động của module cảm biến nhiệt độ, độ ẩm DHT11,
quang trở module cảm biến âm thanh
Nắm được cách lập trình cho vi điều khiển dung Arduino IDE trên máy tính sử dụng
ngơn ngữ lập trình C.
Nắm được cách gửi thơng tin lên sever thời gian thực
Nắm được cách xây dựng phần cứng,cách nối các khối mạch điện để hoàn thiện hệ thống
mạch theo yêu cầu
Thành phần sử dụng
Phần cứng
KIT Arduino ESP32
Module DHT11
Quang trở
Module cảm biến âm thanh
Board mạch
Dây kết nối
Điện trở
Phần mềm
Arduino IDE
ThingSpeak
Firebase
Phần II:Kiến thức về các công cụ xử dụng
Phần cứng
KIT Arduino ESP32
ESP32 là dòng vi điều khiển giá rẻ đến từ Expressif Systems. Các vi xử lý
thuộc dòng ESP32 có mức tiêu thụ năng lượng thấp và đồng thời hỗ trợ các
kết nối WIFI và Dual-Mode Bluetooth.ESP32 được thiết kế cho các thiết bị
điện tử di động và đeo tay cũng như các ứng dụng trong ngành IoT( Internet
Of Things)
Thông số kỹ thuật
ESP32 là lõi kép, điều này có nghĩa là nó có 2 bộ vi xử lý.
Được tích hợp Wi-Fi và bluetooth.
Chạy các chương trình 32 bit.
Xung nhịp có thể lên đến 240MHz và nó có RAM 512 kB.
Bảng cụ thể này có 30 hoặc 36 chân, mỗi hàng có 15 chân.
Hỗ trợ kết hợp nhiều loại thiết bị ngoại vi, như: cảm ứng điện dung, ADC, DAC, UART,
SPI, I2C….
Được tích hợp cảm biến hiệu ứng mơi trường và cảm biến nhiệt độ tích hợp.
Sơ đồ chân
Module DHT11
DHT11 là module cảm biến nhiệt độ, độ ẩm có thể giao tiếp 1 dây(one wire). Cấu tạo
cảm biến gồm 2 phần: một phần điện trở nhiệt và một cảm biến độ ẩm điện dung. Ngồi
ra bên trong module cịn có các mạch chuyển đổi tương tự sang số. Cảm biến được tích
hợp bộ tiền xử lý giúp cho dữ liệu nhận về được chính xác mà khơng cần phải qua bất kỳ
khâu phân tích hay tính tốn nào.
Sơ đồ chân
Thông số kĩ thuật
Điện áp hoạt động: 3V - 5V (DC)
Dòng điện hoạt động cực đại là 2,5mA
Dải độ ẩm hoạt động: 20% - 90% RH, sai số ±5%RH
Dải nhiệt độ hoạt động: 0°C ~ 50°C, sai số ±2°C
Khoảng cách truyển tối đa: 20m
Nhiệt độ và độ ẩm đều có độ phân giải 16 bit
Tốc độ lấy mẫu không quá 1Hz (mỗi giây một lần).
Tốc độ cảm nhận: trung bình 2s
Module cảm biến âm thanh
Module cảm biến âm thanh là một hệ thống mạch điện sử dụng micro, hệ thống có thể
phát hiện cường độ âm thanh trong môi trường xung quanh. Module cảm biến này chỉ có
thể nhận ra tiếng ồn hay âm thanh quanh trong môi trường xung quanh theo nguyên tắc
rung của micro. Module không thể nhận ra một âm thanh hay một tiếng ồn có tần số cụ
thể.
Module cảm biến KY-037 có cấu tạo bao gồm một micro và một mạch so sánh, 2 ngõ ra,
khi tín hiệu âm thanh tác động đến micro đủ lớn cho khiến cho mạch so sánh thay đổi
trạng thái. Ngưỡng điện áp so sánh (cũng là mức độ nhạy cảm với âm thanh to nhỏ của
module cảm biến) có thể điều chỉnh được thơng qua một biến trở vi chỉnh.
Thông số kỹ thuật :
Điện áp: 3V-15V
Chân dương (+): kết nối 5V của arduino
Chân âm (-): kết nối GND của arduino
Chân A0: ngõ ra tương tự, tín hiệu điện áp ngõ ra của micro.
Chân D0: khi cường độ âm thanh đạt đến một ngưỡng nhất định, đầu ra tín hiệu cao/
thấp.
Độ nhạy có thể điều chỉnh bằng chiết áp trên mạch.
Module cảm biến ánh sáng
Module cảm biến ánh sáng cấu tạo gồm một quang trở và một biến trở để
thay đổi giá trị cần đo.
Quang trở còn được gọi là điện trở quang, photoresistor, photocell là một
trong những linh kiện được tạo bằng một chất đặc biệt có thể thay đổi điện trở
khi ánh sáng chiếu vào. Về cơ bản, bạn có thể hiểu nó là một tế bào quang
điện được hoạt động dựa theo nguyên lý quang dẫn. Hay có thể hiểu nó là một
điện trở có thể thay đổi được giá trị theo cường độ ánh sáng.
Quang trở được sử dụng nhiều trong các mạch cảm biến ánh sáng, đèn đường,
báo động ánh sáng, đồng hồ ngoài trời,…
Quang trở gồm 2 phần là phần trên và phần dưới là các màng kim loại được
đấu nối với nhau thông qua các đầu cực. Linh kiện này được thiết kế theo cách
cung cấp diện tích tiếp xúc tối đa nhất với 2 màng kim loại và được đặt trong
một hộp nhựa có thể giúp tiếp xúc được với ánh sáng và có thể cảm nhận được
sự thay đổi của cường độ ánh sáng.
Thành phần chính để tạo nên quang trở đó chính là Cadmium Sulphide (CdS)
được sử dụng là chất quang dẫn, thường khơng chứa hoặc có rất ít các hạt
electron khi không được ánh sáng chiếu vào.
Nguyên lý hoạt động
Quang trở được là bằng chất bán dẫn có trở kháng rất cao và khơng có một
tiếp giáp nào. Trong bóng tối, quang trở thường có điện trở lên vài MΩ. Cịn
khi có ánh sáng chiếu vào thì giá trị điện trở có thể giảm xuống mức một cho
đến vài trăm Ω.
Nguyên lý hoạt động của quang trở dựa trên nguyên lý hiệu ứng quang điện
trong một khối vật chất. Khi mà các photon có năng lượng đủ lớn đập vào, sẽ
khiến cho các electron bật ra khỏi các phân tử và trở thành các electron tự do
trong khối chất và từ chất bán dẫn chuyển thành dẫn điện. Mức độ dẫn điện
của quang trở tùy thuộc vào phần lớn các photon được hấp thụ.
Khi ánh sáng lọt vào quang trở, các electron sẽ được giải phóng và độ dẫn
điện sẽ được tăng lên. Tùy thuốc vào chất bán dẫn mà các quang trở sẽ có
những phản ứng khác nhau với các loại sóng photon khác nhau.
Các linh kiện khác
Điện trở
Board hàn
Dây kết nối
Phần mềm
Arduino IDE
Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết và biên dịch
mã vào module Arduino.
Đây là một phần mềm Arduino chính thức, giúp cho việc biên dịch mã trở nên dễ dàng
mà ngay cả một người bình thường khơng có kiến thức kỹ thuật cũng có thể làm được.
Arduino có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy trên
nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trị quan trọng để gỡ lỗi,
chỉnh sửa và biên dịch mã trong mơi trường.
Có rất nhiều các module Arduino như Arduino Uno, Arduino Mega, Arduino Leonardo,
Arduino Micro và nhiều module khác.
Mỗi module chứa một bộ vi điều khiển trên bo mạch được lập trình và chấp nhận thơng
tin dưới dạng mã.
Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau
đó được chuyển và tải lên trong bộ điều khiển trên bo.
Môi trường IDE chủ yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trình biên dịch, phần
đầu sử dụng để viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã
lên module Arduino.
Môi trường này hỗ trợ cả ngôn ngữ C và C ++.
Nguyên tắc hoạt động
Khi người dùng viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex là các file
thập phân Hexa được Arduino hiểu và sau đó được gửi đến bo mạch bằng cáp USB. Mỗi
bo Arduino đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file hex và
chạy theo mã được viết.
ThingSpeak
Thingspeak là một nền tảng mà bạn có thể trực quan hóa và phân tích dữ 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.
Các tính năng của nổi bật của ThingSpeak
Xem dữ liệu theo thời gian thực
Nhận dữ liệu từ phần mềm của bên thứ 3
Phân tích dữ liệu thu thập được bằng Matlab
Xây dựng nguyên mẫu về hệ thông IoT mà không cần server và phần mềm web
Các thiết bị có thể gửi dữ liệu tới Thingspeak một cách dễ dàng thơng qua việc cấu hình
và các giao thức truyền thông.
Cách kết nối arduino với thingspeak
Cài thư viện ThingSpeak
Cách tạo project ThinkSpeak
Đăng nhập, tạo Channel mới trong My Channels, thêm các field tương ứng trong đó.
Vào API Keys sao chép đường dẫn bên trong “Write a Channel Feed”.
FireBase
Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud. Kèm theo đó
là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính là giúp người dùng
lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Firebase Realtime Database
Là server có cơ sở thời gian thực, hỗ trợ đồng bộ hóa dữ liệu của người dùng kể cả khi
khơng có kết nối mạng. , tạo nên trải nghiệm xuyên suốt bất chấp tình trạng kết nối
internet của người sử dụng. Dù Android, IOS, web, c++, unity, và cả xamarin, Reatime
Database của Firebase vẫn hỗ trợ tốt. và đó là sự lựa chọn tương đối tốt cho các dự án về
IoT vốn yêu cầu cao về việc cập nhật dữ liệu liên tục.
Cấu trúc chương trình
Tổng quan
Chi tiết
Thư viện kết nối với DHT
Thư viện giao tiếp I2C
Thư viện arduino
Thư viện kết nối với wifi
Thư viện kết nối với firebase
Thư viện kết nối với thingspeak
Thư viện cần thiết trong hiện thị với firebase
Khai báo kết nối với DHT sử dụng chân số 4
Kết nối cảm biến ánh sáng chân số 32
Kết nối cảm biến âm thanh chân 33
Dạng DHT sử dụng là DHT11
Khai báo tên Wifi
Khai báo mật khẩu Wifi
Khai báo API của Database dùng để gửi giữ liệu lên web
Khai báo URL của firebase để gửi dữ liệu lên
Thiết lập cho DHT11
Khai báo các hàm của firebase
Đặt các biến sử dụng trong chương trình
Khai báo thiết lập wifi
Khai báo số bảng Thingspeak
Khai báo API của thingspeak
Khai báo biến tạm thời gian sử dụng sau
Khởi động chương trình kết nối I2C
Khởi động DHT
Khai báo xung kết nốt serial
Khai báo cảm biến âm thanh
Khởi động wifi
Khởi động kết nối với Firebase và ThingSpeak
Khai báo lấy dữ liệu của cảm biến DHT11 cảm biến âm thanh, ánh sáng
Hiển thị các thông số trên Serial Monitor
Gửi dữ liệu lên ThingSpeak
Gửi dữ liệu lên firebase
Kết quả đạt được
ThingSpeak
Độ ẩm
Nhiệt độ
Âm thanh
Ánh sáng
Firebase