1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án thiết kế mạch Điện tử Đề tài “iot smart home automation system using esp32”

32 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Iot smart home automation system using esp32
Tác giả Đoàn Long Vũ, Nguyễn Sỹ Toản, Phan Mạnh Cường, Đỗ Dương Thanh, Lê Xuân Quốc
Người hướng dẫn Trương Minh Đức
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Thể loại Đồ án
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 32
Dung lượng 6,97 MB

Nội dung

8 Tìm ki m nhóm mu n thêm Bot ế ố ➢ Bước 2: Chọn tên của nhóm để hiển th khung Group Infor, sau đó nhấn biểu ịtượng thêm thành viên khung màu ở đỏ:... 9 Chọn biểu tượng thêm thành viên t

Trang 1

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

- -

Đề tài : “IOT smart home automation system using ESP32”

Giảng viên hướng dẫn : Trương Minh Đức

Nhóm h c t p ọ ậ : 01

Sinh viên th c hi nự ệ : Đoàn Long Vũ - B21DCDT247

: Nguy n S ễ ỹ Toản B21DCDT223: Phan Mạnh Cường - B21DCDT051

-: Đỗ Dương Thanh - B21DCDT207 : Lê Xuân Quốc - B21DCDT183

HÀ NỘI – 2024

Trang 2

MỤC L C Ụ

MỤC L C 2Ụ

MỤC L C HÌNH Ụ ẢNH 4

L I M Ờ Ở ĐẦU 6

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 7

1.1 Gi i thi u Bot trên Telegram 7ớ ệ 1.2.1 Cách t o Bot 7ạ 1.2.2 Cách thêm Bot trong h i nhóm 10ộ 1.2 Tính b o m t cả ậ ủa ứng d ng Telegram 11ụ 1.3 L a ch n Telegram Bot API 12ự ọ 1.4 QUICK CHART 12

1.5 GIỚI THI U V ESP32 13Ệ Ề 1.6 GIAO TH C HTTPS 13Ứ 1.5 K T LUẾ ẬN CHƯƠNG 14

CHƯƠNG 2 THIẾT KẾ HỆ THỐNG 15

2.1 TỔNG QUAN V H Ề Ệ THỐNG 15

2.2 THI T K Ế Ế PHẦN CỨNG 16

2.2.1 Danh sách linh ki n và chệ ức năng 16

2.2.2 Thi t k h ế ế ệ thống trên ph n m m ALTIUM 16ầ ề 2.2.3 M ch th c t 17ạ ự ế 2.3 THI T K Ế Ế PHẦN M M 17Ề 2.3.1 Kh i t o Bot 17ở ạ 2.3.2 Telegram bot button 18

2.3.1 Điều khiển 4 thiết bị đầu ra ở Telegram 19

2.3.2 Điều khiển thiết bị sử dụng cảm biến chạm 20

2.3.3 Kh i t o biố ạ ểu độ nhiệt độ độ ẩ m 21

2.3.4 Thi t lế ập ngưỡng cho nhiệt độ, độ ẩ m 24

2.4 K T LUẾ ẬN CHƯƠNG 27

CHƯƠNG 3 KẾT QUẢ VÀ ĐÁNH GIÁ HỆ THỐNG 27

3.1 K t qu ế ả đạt được 27

3.2 Đánh giá 30

Trang 3

3.3 K t luế ận chương 30

K T LU N 31Ế Ậ TÀI LI U THAM KH O 32Ệ Ả Giáo trình & bài gi ng Ti ng Viả ế ệt: 32 Tài li u tham kh o Ti ng Anh: 32ệ ả ế

Trang 4

MỤC L C HÌNH NH Ụ Ả

Hinh 1.1 Tìm ki m t khóa BotFather 7ế ừHinh 1 2 Ch n BotFather 8ọHinh 1 3 Kh i ch y BotFather 8ở ạHinh 1 4 T o bot m i 8ạ ớHinh 1 5 T o tên cho Bot kh i t o 9ạ ở ạHinh 1 6 Username c a Bot 9ủHinh 1 7 Tin nh n t o Bot thành công 10ắ ạHinh 1 8 Tìm ki m nhóm mu n thêm Bot 10ế ốHinh 1 9 Ch n biọ ểu tượng thêm thành viên trong h i nhóm 11ộHinh 1 10 Thêm Bot mu n tham gia v i h i nhóm 11ố ớ ộHình 1.13 Trang ch c a QuickChart 12ủ ủHình 1.14 Sơ đồ chân ESP-WROOM-32-30 chân 13 Hình 1.16 Mô t giao th c HTTPS 14ả ứHình 2.1 Sơ đồ hệ thống 15 Hình 2.2 Sơ đồ nguyên lý 16 Hình 2.5 L p 3D 17ớHình 2.8 M ch th c t 17ạ ự ếHình 2 9 Các bước để lấy mã token trong Telegram 18 Hình 2 10 Inline Keyboards trong ng d ng Telegram 18ứ ụHình 2 11 K t qu ế ả chạy chương trình khởi đầu dùng Inline Keyboard 19Hình 2 12 K t qu giao diế ả ện điều khi n Inline Keyboard 20ểHình 2.13 Giao di n chệ ọn ngưỡng theo nhiệt độ và độ ẩm 25Hình 3.1 K t qu 1 27ế ảHình 3.2 K t qu 2 28ế ảHình 3.3 K t qu 3 28ế ảHình 3.4 K t qu 4 28ế ảHình 3.5 K t qu 5 29ế ảHình 3.8 K t qu 8 29ế ảHình 3.9 K t qu 9 29ế ả

Trang 6

LỜI M Ở ĐẦ U

Dự án nhà thông minh là m t n l c hiộ ỗ ự ện đại để ối ưu hóa sự t tiện nghi và an ninh trong không gian s ng V i vi c tích h p các công ngh tiên tiố ớ ệ ợ ệ ến như Internet of Things (IoT),

và t ự động hóa, nhà thông minh không ch mang l i s ỉ ạ ự thoải mái và ti n lệ ợi mà còn tăng

cường sự an toàn và ti t kiế ệm năng lượng Từ việc điều ch nh ánh sáng, nhiỉ ệt độ đến

qu n lý thi t bả ế ị gia đình từ xa, dự án nhà thông minh mang đến tr i nghi m s ng hiả ệ ố ện

đại và tiên tiến cho cư dân, đồng th i giúp tờ ối ưu hóa quản lý và sử d ng tài nguyên ụNội dung chính của đề tài:

• Chương 1: Cơ sở lý thuyết

• Chương 2: Thiết k h ế ệ thống

• Chương 3: Kết quả sản ph ẩm và đánh giá hoạ t động

Dưới đây em xin trình bày chi tiết các ph n trong n i dung c a đề tài ầ ộ ủ

Trang 7

CHƯƠNG 1 CƠ S LÝ THUYẾT Ở

Chương này sẽ trình những kiến thức tổng quan cần thiết để phát triển một chatbot bao g m các nồ ội dung chính như: Tổng quan v ề chatbot, tính bảo m t c a Telegram, lậ ủ ựa chọn API và giao thức giao tiếp kết nối giữa các thiết bị

1.1 Giới thi u Bot trên Telegram

➢ Được gi i thiớ ệu vào năm 2015, Telegram Bots là ứng dụng trò chuyện c a bên ủthứ ba được thực hiện với API Telegram Bot Các bot Telegram về cơ bản là tài kho n Telegram tả ự động có th trò chuy n ho c thêm làm b n bè vào các cuể ệ ặ ạ ộc trò chuyện, nhóm ho c kênh c a mình ặ ủ

➢ Trong khi các ng d ng nhứ ụ ắn tin khác như WhatsApp và Kakao đặt ra các giới

h n nghiêm ng t vạ ặ ề những gì người dùng có th tể ạo, Telegram cho phép người dùng của họ ạ t o Telegram Bots cho h u hầ ết mọi thứ

1.2.1 Cách t o Bot

➢ Bước 1: Trên Telegram, tìm kiếm Botfather:

Hinh 1.1 Tìm ki m t khóa BotFather ế ừ

➢ Bước 2: Chọn BotFather có tích xanh:

Trang 9

Hinh 1 5 T o tên cho Bot kh i t o ạ ở ạ

➢ Bước 6: Nhập username cho Bot của người dùng tạo:

Hinh 1 6 Username c a Bot

➢ Bước 7: Hệ thống sẽ gửi tin nhắn báo tạo bot Telegram thành công:

Trang 10

Hinh 1 7 Tin nh n t o Bot thành công ắ ạ

1.2.2 Cách thêm Bot trong h i nhóm

➢ Bước 1: M ng d ng Telegram, nh p tên nhóm lên khung chat mu n thêm ở ứ ụ ậ ố Bot:

Hinh 1 8 Tìm ki m nhóm mu n thêm Bot ế ố

➢ Bước 2: Chọn tên của nhóm để hiển th khung Group Infor, sau đó nhấn biểu ịtượng thêm thành viên khung màu ở đỏ:

Trang 11

Hinh 1 9 Chọn biểu tượng thêm thành viên trong h i nhóm

➢ Bước 3: Chọn tên Bot muốn thêm, sau đó ấn nút add ở dưới cùng:

Hinh 1 10 Thêm Bot mu n tham gia v i h i nhóm ố ớ ộ

➢ Bước 4: Kết quả thành công sau khi thêm Bot

2 Tính b1 ảo m t c ậ ủa ứng d ng Telegram ụ

➢ Telegram sử d ng biụ ện pháp mã hóa đầu cu i giố ống như WhatsApp và Signal Loại mã hóa này chuyển đổi tin nh n thành m t mã mà không c n s ắ ậ ầ ự trợ giúp của máy ch ủ ở gi a khi n nó gữ ế ần như không thể truy c p vào giao ti p giậ ế ữa hai người dùng khi không có s ự đồng ý của họ

➢ Cơ chế bảo mật của Telegram:

• Telegram là ứng d ng trò chuy n miụ ệ ễn phí và độ ả b o m t cậ ực kỳ cao

• Cơ chế bảo mật của Telegram tốt đến mức các công ty của Nga cũng không th truy cể ập được

• Cuộc gọi, tin nhắn, đoạn chat của người dùng trên Telegram được mã hóa

đầu cu i (end to end) ố – –

Trang 12

• Dữ liệu s ẽ được mã hóa ngay tại điện tho i cạ ủa người g i chuyử ển đến điện thoại người nhận và sau đó được gi i mã ả

1.3 Lựa ch n Telegram Bot API ọ

➢ Telegram Bots là những tài khoản đặc bi t không yêu c u thêm sệ ầ ố điện thoại đểthiết l p Các tài khoậ ản này đóng vai trò là giao diện cho mã ch y ạ ở đâu đó trên máy chủ của ngươif dùng

➢ Để s dử ụng tính năng này, người dùng không c n bi t b t k ầ ế ấ ỳ điều gì v cách thề ức

hoạt động c a giao thủ ức mã hóa MTProto của nhà phát tri n ể

➢ Máy ch trung gian c a hãng s x lý t t c quá trình mã hóa và giao ti p vủ ủ ẽ ử ấ ả ế ới API Telegram cho người dùng

➢ Người dùng có thể giao tiếp v i máy chủ này thông qua giao diện HTTPS đơn ớ

gi n cung c p phiên bả ấ ản đơn giản hóa c a API Telegram ủ

Trang 13

1.5 GIỚI THI U V ESP32 Ệ Ề

ESP32 là m t module Wi-Fi và Bluetooth tích hộ ợp, được phát tri n b i Espressif ể ởSystem Được ra mắt vào năm 2016 , ESP32 được biết đến như một phiên bản nâng cấp của ESP8266 v i nhiớ ều tính năng và khả năng mở năng mở ộng hơn r

Ngoài Wi-Fi và Bluetooth , ESP32 còn hỗ trợ các giao tiếp khác như UART, SPI, I2C, GPIO, PWM và nhi u giao ti p khác, tề ế ạo điều ki n thu n l i cho vi c kệ ậ ợ ệ ết ố ớn i v i các thiết b và c m bi n khác ESP32 cung cị ả ế ấp các chân GPIO đa dạng cho phép người dùng

m r ng chở ộ ức năng của module thông qua vi c kệ ết nối với các module mở ộ r ng và cảm

Trang 14

“khóa công khai” (public key) và “khóa riêng” (private key) Bất c ứ thứ gì được mã hóa

b ng khóa công khai ch có th ằ ỉ ể được gi i mã bả ởi khóa riêng và ngược l i Các tiêu chuạ ẩn này đảm b o các n i dung s ả ộ ẽ được mã hóa trước khi truyền đi, và giải mã khi nhận Điều này khi n hacker dù có chen ngang lế ấy được thông tin cũng không thể “hiểu” được thông tin đó

1.5 K T LUẾ ẬN CHƯƠNG

➢ Qua nh ng ki n th c tữ ế ứ ổng quan đã được tìm hi u và nghiên c u, tham kh o t ể ứ ả ừnhi u ngu n khác nhau, ề ồ chúng em đã quyết định và hình dung được thi t k h ế ế ệthống c a em g m những phần chính sau: ủ ồ

• S d ng vi x ử ụ ử lý là ESP32 để ử x lý các tác v ụ

• Các thiết bị trong nhà được giao tiếp v i nhau qua giao thớ ức HTTPS

• S dử ụng trang web QuickChart để thực hiện v biẽ ểu đồ nhiệt độ, độ ẩ m

Trang 15

là 4 thi t bế ị đầu ra)

➢ Đo nhiệt độ , độ ẩm (được đọc từ cảm biến DHT22) gửi tin nhắn về Telegram chatbot bằng dạng text và biểu đồ

➢ Thực hiện cài đặt ngưỡng cho nhiệt độ và độ ẩm, nếu nhiệt độ ộ ẩm) vượt quá (đkhoảng đã được cài đặt thì sẽ ực hiện bật (tắt) thiết bị và thông báo tới ngườth i dùng

Trang 16

2.2 THI T K Ế Ế PHẦN C NG

2.2.1 Danh sách linh kiện và chức năng

STT Khối Tên linh ki n ệ Chức nămg trong h ệ

thống

1 Vi điều khiển ESP32 Xử lý t t c các tác v ấ ả ụ

2 Khối đầu vào

Các c m bi n chả ế ạm - Touch

Là công tăng có tác dụng b t t t các thiậ ắ ệt

bị

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

3 Khối đầu ra Là kh i Relay bao g

4 Khối ngu n ồ Module ngu n HiLink ồ Chuy n t 220v -> 5v ể ừ

IC ASM1117 Chuy n t ể ừ 5v -> 3v3 2.2.2 Thi t k h ế ế ệ thống trên phần mềm ALTIUM

2.2.2.1 Sơ đồ nguyên lý

Hình 2.2 Sơ đồ nguyên lý

2.2.2.2 Bản vẽ PCB

Trang 17

➢ Mỗi Bot Telgram đều có m t mã token khác nhau ộ

➢ Khi người dùng khởi tạo Bot thành công thì Botfather sẽ gửi tin nhắn đến bao

g m Token c a Bot ồ ủ

➢ Người lập trình sẽ sử d ng Bot T ken kết h p vụ ọ ợ ới Bot Api để ạo ra Bot mong tmuốn

Trang 18

Hình 2 9 Các bước để ấ l y mã token trong Telegram

➢ Khai báo Bot:

➢ Khởi t o Bot: S dạ ử ụng thư viện s n có UniversalTelegramBot ẵ

UniversalTelegramBot bot(BOT TOKEN, clientTCP);

2.3.2 Telegram bot button

➢ New Inline Keyboards: Cho phép người dùng ấn chọn và thực hiện gửi tin nhắn

t i bot (Không g i tin nhớ ử ắn đến cu c trò chuyộ ện), sau đó ngườ ậi l p trình xử lý bot để có thể hiển thị kết qu mong muốn tới cuộc trò chuyện ả

Hình 2 10 Inline Keyboards trong ng d ng Telegram ứ ụ

String BOT_TOKEN = "6691707417:AAF0INIQzjme0ODUPY0_Yb9tWd1p9tIbVk4"; //bot token lay tu bot father

String CHAT_ID = "-4088291504";

Trang 19

➢ Xây dựng chương trình tạo Inline Keyboard cho giao diện bắt đầu:

String keyboardJson F= ("[[{ \"text\" : \"LIGHT\", \ "callback_data\ " :

\"light\" },{ \"text\" : \"TEMPERATURE-HUMIDITY\ ", \ "callback_data\ " :

Hình 2 11 K t qu ế ả chạy chương trình khởi đầu dùng Inline Keyboard

2.3.1 Điều khi n 4 thiể ết bị đầ ra ởu Telegram

Code t o giao diạ ện điều khi n ể

if (text == F("light")) {

String keyboardJson F= ("[[{ \"text\" : \"ON LED 1\",

\"callback_data\" : \"ON1\" },{ \"text\" : \"OFF LED 1\",

\"callback_data\" : \"OFF1\" }],");

keyboardJson += F("[{ \"text " : \"ON LED 2\", \\ "callback_data\" : \"ON2\" },{ \"text\" : \"OFF LED 2 ", \"callback_data\" : \"OFF2\" \ }],");

keyboardJson += F("[{ \"text " : \"ON LED 3\", \\ "callback_data\" : \"onfan1\" },{ \"text\" : \"OFF LED 3\", \"callback_data\" :

\"offfan1\" }],");

keyboardJson += F("[{ \"text " : \"ON LED 4\", \\ "callback_data\" : \"onfan2\" },{ \"text\" : \"OFF LED 4\", \"callback_data\" :

\"offfan2\" }],");

keyboardJson += F("[{ \"text " : \"ON ALL\", \\ "callback_data\" :

\"onall\ " },{ \ "text\ " : \"OFF ALL\", \"callback_data\" : \"offall\" }]]");

bot.sendMessageWithInlineKeyboard CHAT_ID( , "LED LIGHTS", "",

keyboardJson);

}

Trang 20

➢ K t qu : ế ả

Hình 2 12 K t qu giao diế ả ện điều khi n Inline Keyboard

➢ Đ ềi u khi n b t t t 4 thi t bị u ra qua Telegram, khi ta nh n t ng nút trên bể ậ ắ ế đầ ấ ừ ảng điều khi n ể

2.3.2 Điều khi n thi t b s d ng cể ế ị ử ụ ảm biến ch m

S d ng ng t (attachInterrupt) vử ụ ắ ới ểki u kích ho t ạ là “FALLING” FALLING : kích

hoạt khi trạng thái c a chân digital chuy n t mủ ể ừ ức điện áp cao sang mức điện áp th p ấGọi hàm ng t trong Setup vắ ới mức kích ho t là FALLING ạ

attachInterrupt switch_1 thietbi1 FALLING( , , );

attachInterrupt switch_2 thietbi2 FALLING( , , );

attachInterrupt switch_3 thietbi3 FALLING( , , );

attachInterrupt switch_4 thietbi4 FALLING( , , );

Trang 21

2.3.3 Khối tạo biểu độ nhiệt độ độ ẩ m

Bước đầu c a tạo ảnh là tạo data cho ảnh ủ Đọc data nhiệt độ, độ ẩm từ cảm bi n ếDHT22 và t o data thạ ời thời gian thực bằng việc sử ụ d ng hàm tính thời gian thực echotime() trong thư viện NTPClient.h

Code t o data : ạ

void Creat_data() {

long epochTime timeClient= getEpochTime(); // Lấy epoch time

float Humidity dht readHumidity= ();

float Temperature dht= readTemperature();

Serial.println Humidity( );

Serial.println Temperature( );

if isnan( (Humidity) || isnan(Temperature)) {

Serial.println("Lỗi khi đọc dữ liệu từ cảm biến DHT!");

return ;

}

ReportData.push({Temperature, Humidity, epochTime});

}

void Delete_data(unsigned long t ) {

while (ReportData size () > 0 &&ReportData[0].EpochTime_number t < ) {

Serial.print("xoa ");

ReportData.shift();

}

}

String EpochTime_to_string ( unsigned long number ) {

time_t timestamp number= ;

tmElements_t t;

breakTime(timestamp, t);

char buffer[25];

sprintf(buffer, "%4d-%02d-%02dT%02d:%02d:%02dZ", t Year + 1970,

t Month , t Day , t.Hour t Minute t, , Second);

return String buffer( );

}

String Build_axisX() {

String left_time = EpochTime_to_string start_time( );

String right_time = EpochTime_to_string end_time( );

String times = "'" left_time + + "'," + "'" right_time + + "'";

Serial print (times);

return times;

}

• Hàm “Creat_data()” có chức năng ấl y dữ liệu từ cảm bi n DHT22 và thời hiện ế

tại và g i vào cử ấu trúc ReportData.

• Hàm “Delete_data(unsigned long t)” có chức năng làm mới l i data dữ li u ạ ệsau khoảng th i gian t (2 giờ ờ)

• Hàm “EpochTime_to_string( unsigned long number)” có chức năng tính toán thời gianthực, tạo data thời gian

Trang 22

• Hàm “Build_axisX()” tạo thời gian bắ ầt đ u và kết thúc cho trục biểu diễn thời gian

Sau khi chúng ta đã tạo data xong Thì chúng ta đến bước tạo ảnh Đầu tiên tạo một mã Json tạo biểu đồ theo yêu c u hi n th ầ ể ị

String str1 =

"https://quickchart.io/chart?c={'type':'line','data':{'labels':[";

String str2 =

"],'datasets':[{'label':'Nhietdo','borderColor':'blue','fill':false,'bord erWidth':3,'data':[";

String str3 =

"]},{'label':'Doam','borderColor':'green','fill':false,'borderWidth':3,'d ata':[";

String str4 =

"]}]},'options':{'legend':{'position':'bottom'},'title':{'text':'Chart.js TimeScale'},'scales':{'xAxes':[{'type':'time','time':{'parser':'YYYY-MM- DDTHH:mm:ssZ','unit':'minute','unitStepSize':15,'displayFormats':{'minute ':':mm'}},'scaleLabel':{'display':false,'labelString':'Time'},'ticks':{'m ajor':{'enabled':true}}}],'yAxes':[{'id':'y-axis-

1','position':'left','scaleLabel':{'display':false,'labelString':'Nhi?tđ? ','fontColor':'rgba(255,0,0,1)'},'ticks':{'min':0,'max':100,'stepSize':10 ,'fontColor':'rgba(255,0,0,1)'}},{'id':'y-axis-

2','position':'right','scaleLabel':{'display':false,'labelString':'Đ??m', 'fontColor':'rgba(0,0,255,1)'},'ticks':{'min':0,'max':100,'stepSize':10,' fontColor':'rgba(0,0,255,1)'}}]},'plugins':{'datalabels':{'display':true, 'color':'gray','align':'right','formatter':function(value,context){index= context.dataIndex;data=context.dataset.data;if(index===data.length-

1)return(data[index].y);return('');}}}}}";

• B n bi n string (str1,str2,str3,str4) ố ế trên chứa mã Json v biẽ ều đồ đã được phác

họa và được link đến trang Wed Quickchart

• Mô tả biểu đồ: Biểu đồ ẽ có 2 cộ s t Y1 và Y2 lần lượt là thang nhiệt độ và độ

ẩm Với thang nhi t độ bi u di n giá trịệ ể ễ từ 0℃ n 40đế ℃, thang độ ẩm từ 55%

đến 95% Còn tr c X biểu diễn thụ ời gian trong 2h và độ chia là 15’

String str3 =

"]},{'label':'Doam','borderColor':'green','fill':false,'borderWidth':3,'d ata':[";

String str4 =

"]}]},'options':{'legend':{'position':'bottom'},'title':{'text':'Chart.js

Ngày đăng: 15/02/2025, 22:18

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN