Đồ án môn IoT · Đề xuất ý tưởng

Nhà thông minh ESP32

Mô hình ngôi nhà 3 phòng có ban công, điều khiển từ điện thoại, tự phản ứng theo cảm biến và có hệ thống an ninh. Trang này mô tả nên làm những gì, làm mô hình ra sao, chi phí bao nhiêu và demo thế nào.

Người làm: Hoang Nguyen Huy Ngày: 01/10/2026 Đơn vị giá: nghìn đồng (k)
Trả lời nhanh

Ba câu hỏi của bạn

Có phải làm mô hình nhà không?

Không bắt buộc, nhưng nên làm

Không có mô hình thì đèn LED nằm trên breadboard trông giống bài thực hành, người xem khó hình dung. Một ngôi nhà không mái làm bằng tấm xốp formex (nhìn từ trên xuống thấy cả 3 phòng) chỉ tốn khoảng 70–140k và 2–3 buổi làm. Xem cách làm.

Có gì ngoài đèn và quạt?

Còn cửa, rèm, an ninh, báo gas, giàn phơi

Cửa mở bằng thẻ từ, rèm tự đóng khi trời tối, báo động khi có người mở cửa sổ, báo rò gas và tự bật quạt hút, giàn phơi tự thu vào khi mưa, đèn đổi màu theo chế độ. Tổng cộng 17 thiết bị, chia cho 2 board ESP32. Xem sơ đồ.

Làm sao cho tốt và hợp lý?

Phần cứng vừa đủ, phần mềm làm sâu

Smart home là đề tài nhiều nhóm làm. Điểm khác biệt nằm ở phần mềm: sơ đồ nhà bấm được, chế độ một chạm, luật tự động do người dùng tự tạo, điều khiển bằng giọng nói tiếng Việt, vẫn an toàn khi mất mạng. Xem chi tiết.

Mô hình 3D

Bấm thử từng thiết bị trong ngôi nhà

Kéo để xoay, cuộn hoặc chụm hai ngón để phóng to. Bấm vào số trên một thiết bị, hoặc bấm một chế độ bên dưới, để xem ngôi nhà phản ứng. Khung bên phải hiện tin nhắn MQTT tương ứng, giống những gì hệ thống thật sẽ gửi đi.

Kéo để xoay · Cuộn để phóng to · Bấm vào số để thử
Chế độ
Tình huống

Bấm vào một thiết bị

Mỗi số trên mô hình là một thiết bị. Màu xanh là mức cơ bản, đồng là mức nâng cao. Thử bấm số 11 (đầu đọc thẻ ở cửa) để xem chế độ “Về nhà”.

Tin nhắn trong hệ thống

  1. Sẵn sàngCác lệnh và sự kiện sẽ hiện ở đây, mới nhất ở trên cùng.
Bản vẽ

Mặt bằng ngôi nhà nhìn từ trên xuống

Dùng bản vẽ này khi cắt xốp và gắn thiết bị. Số trên vòng tròn trùng với số trong mô hình 3D và bảng bên dưới.

PHÒNG KHÁCH PHÒNG NGỦ BẾP BAN CÔNG LỐI VÀO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 board ESP32 và nguồn giấu dưới sàn
Mức cơ bản Mức nâng cao
Hai board ESP32ESP32 A lo lối vào, bếp và cửa sổ (an ninh, an toàn). ESP32 B lo phòng khách, phòng ngủ và ban công (tiện nghi).
Lối vàoQuẹt thẻ mở cửa (11 → 7), màn hình chào (8). Đây là nơi bắt đầu chế độ “Về nhà”.
Phòng kháchTrung tâm tiện nghi: đèn chỉnh độ sáng, quạt, rèm, đèn màu, các cảm biến nhiệt độ, ánh sáng, chuyển động.
Phòng ngủĐèn ngủ cho chế độ “Đi ngủ”, cửa sổ có cảm biến chống đột nhập.
BếpCụm an toàn: cảm biến gas, còi, quạt hút tự chạy.
Ban côngCảm biến mưa và giàn phơi tự thu vào, thuộc ESP32 B.
#Thiết bịLinh kiệnNgười xem sẽ thấy gìBoard
Mức cơ bản: bắt buộc, đủ 4 lớp IoT, demo được ngay
1Đèn trần phòng kháchLED trắng siêu sángKéo thanh trượt trên điện thoại, đèn sáng dần lênB
2Đèn ngủLED vàngBấm “Đi ngủ”, đèn ngủ bật, mọi đèn khác tắtB
3Quạt phòng kháchQuạt 5V mini qua relayHà hơi vào cảm biến nhiệt, quạt tự chạy, relay kêu “tách”B
4Cảm biến nhiệt độ, độ ẩmDHT11Số đo và biểu đồ cập nhật trên webB
5Cảm biến ánh sángModule quang trởLấy tay che lại, đèn phòng khách tự bậtB
6Cảm biến chuyển độngPIR HC-SR501Vẫy tay, đèn tự bật. Ở chế độ “Vắng nhà” thì báo độngB
7Cửa chínhServo SG90Bấm “Mở cửa” trên web, cánh cửa quay mởA
8Màn hình ở cửaOLED 0,96″Hiện giờ, nhiệt độ, dòng chữ “Chào mừng về nhà”A
9Quạt hút bếpQuạt 5V mini qua relayTự chạy khi phát hiện gasA
10Còi báo độngBuzzerKêu khi có gas hoặc có đột nhậpA
13Cảm biến gasMQ-2Gas lại gần: còi kêu, quạt hút chạy, dashboard hiện cảnh báoA
Mức nâng cao: làm thêm từ tuần 7 nếu kịp
11Khóa cửa bằng thẻĐầu đọc RFID RC522Quẹt thẻ, cửa mở, đèn bật, rèm mở: chế độ “Về nhà”A
12Cảm biến cửa sổCông tắc từ MC-38Mở cửa sổ khi đang “Vắng nhà”: còi kêu, dashboard hiện cảnh báo đỏA
14Rèm cửaServo SG90 kéo dây rèmChe cảm biến ánh sáng (giả trời tối), rèm tự đóngB
15Đèn trang tríVòng LED RGB WS2812Đổi màu theo chế độ: tiếp khách, đi ngủB
16Cảm biến mưaModule cảm biến mưaNhỏ vài giọt nước lên cảm biến…B
17Giàn phơiServo SG90…giàn phơi tự quay vào trong mái cheB
Phạm vi

Hai mức: cơ bản và nâng cao

Mức cơ bản xong trước hết tuần 6 và đã đủ để qua môn. Mức nâng cao làm từ tuần 7 nếu kịp. Cả hai mức đều dùng 2 ESP32, nên lên nâng cao chỉ là cắm thêm module, không phải đổi thiết kế.

Mức cơ bản · bắt buộc

Điều khiển, tự động và báo gas

640k – 1 tr
  • ESP32 A: mở cửa từ xa, màn hình ở cửa, báo gas (còi, quạt hút)
  • ESP32 B: bật tắt, chỉnh sáng đèn; đèn tự bật khi tối hoặc có người; quạt tự chạy khi nóng
  • Trang web: điều khiển, trạng thái cập nhật ngay, biểu đồ nhiệt độ, cảnh báo gas
  • Mô hình nhà 3 phòng bằng xốp formex

Đủ để qua môn: có đủ thiết bị, truyền thông, máy chủ và giao diện.

Mức nâng cao · làm thêm

An ninh, chế độ và ban công

+150k – 240k
  • ESP32 A: quẹt thẻ mở cửa, cảm biến cửa sổ cho chế độ “Vắng nhà”
  • ESP32 B: rèm tự động, đèn RGB, trời mưa thì giàn phơi tự thu vào
  • Trang web: 4 chế độ cài sẵn, quy tắc tự đặt, sơ đồ nhà bấm được

Phần ghi điểm cao, vì có nhiều tình huống để demo.

Tạo khác biệt

Phần mềm: nơi bạn ghi điểm

Phần cứng smart home của các nhóm thường gần giống nhau. Giảng viên sẽ nhớ đến nhóm có phần mềm làm kỹ. Đây cũng là phần bạn mạnh nhất.

Sơ đồ nhà bấm được

Dashboard vẽ mặt bằng ngôi nhà giống sơ đồ ở trên. Bấm vào bóng đèn trên sơ đồ để bật, thiết bị đang chạy thì sáng màu. Trạng thái cập nhật realtime qua WebSocket.

Ấn tượng hơn hẳn một danh sách nút bấm

Chế độ một chạm

Một nút làm nhiều việc. “Về nhà”: mở cửa, bật đèn, mở rèm. “Đi ngủ”: tắt hết đèn, bật đèn ngủ, đóng rèm. “Vắng nhà”: tắt hết, bật chống trộm. “Tiếp khách”: bật đèn sáng, mở rèm, bật quạt, đèn màu ấm.

Thể hiện tư duy thiết kế sản phẩm

Luật tự động do người dùng tạo

Trang web cho tạo luật dạng “Nếu nhiệt độ > 30°C thì bật quạt” hay “Nếu sau 22:00 có chuyển động thì bật đèn 20%”. Server lưu luật trong PostgreSQL và tự đánh giá mỗi khi có số đo mới.

Phần kỹ thuật sâu nhất, đáng giá nhất

Hẹn giờ và lịch

Bật đèn hiên lúc 18:00, tắt quạt sau 30 phút. Có thể dùng chính bảng luật ở trên với điều kiện là thời gian.

Dễ làm, người dùng thấy hữu ích ngay

Điều khiển bằng giọng nói tiếng Việt

Dùng Web Speech API có sẵn trong Chrome: nói “bật đèn phòng khách”, trang web nhận câu nói rồi gửi lệnh. Không tốn tiền, không cần thêm phần cứng.

Khoảnh khắc “wow” khi demo

Nhật ký và thông báo

Ghi lại mọi sự kiện: ai quẹt thẻ, cửa mở lúc nào, báo gas lúc nào. Sự kiện quan trọng hiện thành cảnh báo đỏ ở đầu dashboard, kèm thời gian.

Dữ liệu để vẽ biểu đồ, viết báo cáo

Nguyên tắc thiết kế: việc an toàn xử lý ngay tại nhà

Khi có gas, ESP32 A tự bật còi và quạt hút ngay lập tức, sau đó mới báo lên server. Nó không chờ server ra lệnh. Nhờ vậy, khi mất WiFi hoặc server sập, chức năng an toàn vẫn chạy. Phần an toàn cũng nằm riêng trên ESP32 A, nên khi ESP32 B bị treo hoặc đang nạp lại code, báo gas và chống trộm vẫn hoạt động. Còn những việc tiện nghi như chế độ, hẹn giờ, luật người dùng tạo thì chạy trên server, vì dễ thay đổi mà không phải nạp lại code cho ESP32.

Trình bày nguyên tắc này trong báo cáo và demo nó (rút WiFi, báo gas vẫn kêu). Đây là điểm giảng viên đánh giá cao vì cho thấy bạn hiểu kiến trúc IoT thực tế.

Kiến trúc hệ thống

flowchart LR
  E1[ESP32 A
cửa, gas, còi] E2[ESP32 B
đèn, quạt, rèm] B[(Broker MQTT
Mosquitto)] S[Server Bun
luật, chế độ, hẹn giờ] D[(PostgreSQL)] W[Dashboard
điện thoại, máy chiếu] E1 <-->|MQTT| B E2 <-->|MQTT| B B <--> S S --> D S <-->|WebSocket| W

Tin nhắn MQTT trông như thế nào

Mỗi thiết bị có hai “kênh”: một kênh nhận lệnh, một kênh báo trạng thái. Đặt tên theo phòng và thiết bị cho dễ đọc.

Web ra lệnh bật đèn 70%:
home/livingroom/light/set → {"on":true,"brightness":70}

ESP32 báo đã bật xong:
home/livingroom/light/state → {"on":true,"brightness":70}

ESP32 gửi số đo mỗi 5 giây:
home/livingroom/climate → {"temp":29.4,"hum":71}

ESP32 báo sự kiện khẩn:
home/event/gas → {"level":812,"action":"alarm_on"}

Mô hình

Làm mô hình nhà thế nào

Có ba cách. Nên chọn nhà không mái bằng xốp formex: rẻ, nhìn rõ bên trong và dễ đi dây. Xốp formex là tấm nhựa xốp nhẹ và cứng, cắt được bằng dao rọc giấy, thường dùng làm mô hình kiến trúc.

Cách làmHình dungCông sứcChi phíNhận xét
Bảng demo phẳngTấm xốp formex khổ A3 vẽ mặt bằng nhà, gắn module đúng vị trí từng phòng1 buổi30–60kNhanh, dễ sửa dây. Nhưng không giống ngôi nhà, cửa và rèm khó thể hiện.
Nhà không mái bằng xốp formex
Đề xuất
Hộp 3 phòng không mái, tường thấp, sàn hai lớp để giấu mạch bên dưới2–3 buổi70–140kNhìn từ trên xuống thấy cả 3 phòng như sơ đồ. Cửa, rèm, giàn phơi đều làm được.
Nhà gỗ lắp ghép mua sẵnBộ kit nhà búp bê bằng gỗ MDF bán trên sàn thương mại điện tử1–2 buổi150–400kĐẹp nhưng chật, khó khoan lỗ đi dây, không chọn được kích thước theo ý muốn.

Thông số gợi ý cho nhà bằng xốp

  • Đế: khoảng 50 × 35 cm, gồm nhà 40 × 29 cm và ban công bên phải
  • Tường: cao 12–15 cm, đủ để gắn đèn và quạt, vẫn nhìn được vào trong
  • Sàn hai lớp: cách nhau 3–4 cm. Breadboard, ESP32, dây đặt ở tầng dưới, khoét lỗ tròn để luồn dây lên
  • Vật liệu: 2–3 tấm xốp formex dày 5 mm, súng keo nến, dao rọc giấy, thước kim loại

Mẹo cho mô hình gọn và dễ sửa

  • Gắn module bằng băng keo hai mặt, không dán keo nến chết vào, để còn thay khi hỏng
  • Để một mặt tường hoặc tấm sàn trên tháo rời được, khi sửa dây không phải phá mô hình
  • In giấy dán tường và đồ nội thất bằng giấy, dán nhãn tên phòng: rẻ mà trông chuyên nghiệp hơn nhiều
  • Bó dây bằng dây rút, dán nhãn đầu dây theo số thiết bị trên sơ đồ
  • Một thành viên làm mô hình song song từ tuần 2, không đợi phần mạch xong
Chi phí

Bao nhiêu tiền

Mức cơ bản là bắt buộc. Linh kiện mức nâng cao có thể mua sau, khi đã chắc làm kịp.

Tổng linh kiện 790k – 1,24 tr Chia 3 người: khoảng 212k – 337k mỗi người
Linh kiệnDùng choGiá
Mức cơ bản · 640k – 1 tr
ESP32 DevKit V1 (board A)An ninh: cửa, gas, còi90–130k
ESP32 DevKit V1 (board B)Tiện nghi: đèn, quạt90–130k
2 breadboard 830 lỗ + bộ dây jumperNối dây không cần hàn75–120k
Adapter 5V 3A + đầu jack DCNguồn cho servo, quạt, relay65–100k
LED trắng, vàng siêu sáng + điện trở#1, #210–20k
2 relay 1 kênh 5V#3, #930–45k
2 quạt 5V mini#3, #940–60k
PIR HC-SR501#620–30k
Module quang trở#510–15k
DHT11#420–30k
Servo SG90#725–35k
Màn hình OLED 0,96″ I2C#855–85k
Module buzzer#105–10k
Cảm biến gas MQ-2#1335–50k
Xốp formex, súng keo nến, keoMô hình nhà70–140k
Mức nâng cao · thêm 150k – 240k
RFID RC522 kèm thẻ, móc khóa#1140–60k
Công tắc từ MC-38#1215–25k
Servo SG90#1425–35k
Vòng LED RGB WS2812 (8–16 bóng)#1530–60k
Module cảm biến mưa#1615–25k
Servo SG90#1725–35k

Chưa gồm phí ship (20–35k mỗi đơn) và 10% dự phòng linh kiện hỏng. Khi đặt hàng, chọn module “đã hàn chân” để không phải hàn. Phần mềm (Mosquitto, Bun, PostgreSQL, Web Speech API) đều miễn phí.

Tham khảo khi nối dây

Chân cắm trên hai board ESP32

Board A dùng 12 chân, board B dùng 10 chân, còn dư chân để thêm thiết bị. Các chân dưới đây đã tránh những chân gây lỗi khi khởi động.

Thiết bịChân ESP32Ghi chú
ESP32 A · An ninh và an toàn (lối vào, cửa sổ, bếp)
#11 RC522 đầu đọc thẻ (SPI)GPIO5, 18, 23, 19, 4SDA, SCK, MOSI, MISO, RST. Nguồn 3,3V, không cắm 5V
#8 OLED (I2C)GPIO21, GPIO22SDA, SCL
#7 Servo cửaGPIO13Dây đỏ nối 5V adapter, không lấy nguồn từ ESP32
#9 Relay quạt hútGPIO16Quạt lấy điện từ adapter 5V qua tiếp điểm relay
#10 BuzzerGPIO27
#12 Công tắc từ cửa sổGPIO34Thêm điện trở 10kΩ kéo lên 3V3
#13 MQ-2 (AO)GPIO36Qua cầu phân áp, vì MQ-2 xuất tới 5V
ESP32 B · Tiện nghi (phòng khách, phòng ngủ, ban công)
#1 Đèn trần, #2 Đèn ngủGPIO25, GPIO26Qua điện trở 220Ω. Dùng PWM để chỉnh độ sáng
#3 Relay quạtGPIO16Quạt lấy điện từ adapter 5V qua tiếp điểm relay
Servo #14 rèm, #17 giàn phơiGPIO13, GPIO33Dây đỏ nối 5V adapter
#15 Vòng LED RGBGPIO32Nguồn 5V từ adapter
#6 PIRGPIO39Chân chỉ đọc, hợp với cảm biến
#5 Quang trở (AO)GPIO35Chân analog nhóm ADC1, đọc được khi WiFi bật
#4 DHT11GPIO14
#16 Cảm biến mưa (DO)GPIO34Chỉnh độ nhạy bằng núm vặn trên module

Điều quan trọng nhất về nguồn điện

Servo, quạt, relay và đèn RGB cần nhiều điện hơn mức ESP32 cung cấp được. Nếu cắm chung vào ESP32, board sẽ tự khởi động lại liên tục mỗi khi servo quay, và đây là lỗi người mới hay gặp nhất. Hãy cấp điện cho các thiết bị này từ adapter 5V 3A, còn ESP32 cắm USB riêng, và nối chung dây GND của adapter với GND của ESP32. Hai board dùng chung một adapter được, chỉ cần nối GND của cả hai board vào GND adapter.

Bảo vệ

Kịch bản demo 6 phút

Chiếu dashboard lên máy chiếu, một người cầm điện thoại điều khiển, một người thao tác trên mô hình.

0:00

Giới thiệu mô hình 3 phòng và sơ đồ nhà trên dashboard.

0:30

Điều khiển: bấm vào bóng đèn trên sơ đồ, đèn trong mô hình sáng. Kéo thanh trượt, đèn sáng dần.

1:00

Giọng nói: nói “bật quạt phòng khách”, quạt chạy.

1:30

Về nhà: quẹt thẻ ở cửa. Cửa mở, màn hình hiện “Chào mừng về nhà”, đèn bật, rèm mở.Khoảnh khắc ấn tượng nhất, nhiều thiết bị phản ứng cùng lúc.

2:15

Tự động: lấy tay che cảm biến ánh sáng, đèn bật, rèm đóng. Hà hơi vào cảm biến nhiệt, quạt chạy.

3:00

Tạo luật trực tiếp: trên web tạo luật “Nếu có chuyển động thì bật đèn RGB màu đỏ”, rồi vẫy tay trước PIR.

3:45

An ninh: bấm “Vắng nhà”, mọi thứ tắt. Mở cửa sổ phòng ngủ: còi kêu, dashboard hiện cảnh báo đỏ.

4:30

An toàn khi mất mạng: tắt hotspot, đưa gas lại gần cảm biến: còi và quạt hút vẫn chạy. Bật lại hotspot, nhật ký tự cập nhật.Dùng bật lửa xả gas, không đánh lửa. Hỏi giảng viên trước. Nếu không được phép, dùng nút “giả lập rò gas” trên dashboard.

5:30

Dữ liệu: mở trang nhật ký và biểu đồ nhiệt độ trong buổi demo.

Các bước lúc 1:30, 3:00 và 3:45 cần mức nâng cao. Nếu chỉ có mức cơ bản, bỏ ba bước này, demo còn khoảng 4 phút.

Mẹo: đặt ngưỡng nhiệt độ bật quạt chỉ cao hơn nhiệt độ phòng 1°C để hà hơi là quạt chạy. Bật mô hình trước 5 phút để PIR và MQ-2 ổn định. Dùng hotspot điện thoại riêng, chạy broker và server trên laptop, quay sẵn video demo để dự phòng.

Kế hoạch

Lộ trình 10 tuần

Từ 05/10 đến 13/12/2026. Mỗi tuần chỉ thêm một thứ mới, có mốc kiểm tra rõ ràng. Mức cơ bản xong ở tuần 6, bốn tuần sau dành cho nâng cao và báo cáo.

Tuần 1 · 05/10 - 11/10

Mua linh kiện, cài công cụ, chạy thử

Cài VS Code + PlatformIO, Mosquitto. Trong lúc chờ hàng, mô phỏng trên Wokwi. Vẽ thiết kế mô hình.

nạp chương trình Blink, đèn trên ESP32 nhấp nháy.
Tuần 2 · 12/10 - 18/10

ESP32 B: đèn và quạt

Nối LED và relay quạt. Gõ lệnh trong Serial Monitor để bật tắt. Song song: một người bắt đầu làm mô hình.

gõ “fan on”, quạt chạy; gõ “light 50”, đèn sáng một nửa.
Tuần 3 · 19/10 - 25/10

ESP32 B: cảm biến và MQTT

Nối DHT11, quang trở, PIR. Kết nối WiFi, gửi số đo và nhận lệnh qua MQTT.

thấy số đo trong MQTT Explorer, gửi lệnh từ đó bật được đèn.
Tuần 4 · 26/10 - 01/11

ESP32 A: cửa, màn hình, báo gas

Nối servo cửa, OLED, MQ-2, còi, relay quạt hút. Viết phần báo gas chạy ngay trên board, không cần máy chủ.

đưa gas lại gần, còi kêu và quạt hút chạy dù đã tắt WiFi.
Tuần 5 · 02/11 - 08/11

Máy chủ và trang web cơ bản

Máy chủ Bun nhận MQTT, lưu PostgreSQL, đẩy dữ liệu lên web. Trang web có nút điều khiển, biểu đồ nhiệt độ, cảnh báo gas.

bấm nút trên điện thoại, đèn trong mô hình sáng.
Tuần 6 · 09/11 - 15/11

Lắp vào mô hình, xong mức cơ bản

Chuyển mạch vào sàn dưới, gắn thiết bị vào phòng. Quy tắc cố định: tối thì bật đèn, nóng thì bật quạt.

toàn bộ mức cơ bản chạy trong mô hình. Đây là mốc an toàn để qua môn.
Tuần 7 · 16/11 - 22/11

Nâng cao: phần cứng

ESP32 A thêm đầu đọc thẻ, công tắc từ cửa sổ. ESP32 B thêm servo rèm, vòng LED RGB.

quẹt thẻ thì cửa mở; mở cửa sổ khi “Vắng nhà” thì còi kêu.
Tuần 8 · 23/11 - 29/11

Nâng cao: phần mềm

4 chế độ cài sẵn, quy tắc tự đặt trên web, sơ đồ nhà bấm được.

quẹt thẻ là kích hoạt đầy đủ chế độ “Về nhà” trên cả hai board.
Tuần 9 · 30/11 - 06/12

Nâng cao: ban công, chạy thử

Thêm cảm biến mưa, servo giàn phơi. Kiểm tra trường hợp mất WiFi, một board bị treo.

chạy kịch bản demo trơn tru 3 lần liên tiếp.
Tuần 10 · 07/12 - 13/12

Báo cáo và dự phòng

Sơ đồ nối dây (Fritzing), sơ đồ kiến trúc, báo cáo, video demo.

có video demo 2 phút làm phương án dự phòng.

Nếu chậm tiến độ: dừng ở mức cơ bản sau tuần 6, dùng tuần 7-10 để hoàn thiện, chạy thử và viết báo cáo.