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.
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ử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ơ đồ.
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.
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.
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à”.
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.
| # | Thiết bị | Linh kiện | Ngườ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ách | LED trắng siêu sáng | Kéo thanh trượt trên điện thoại, đèn sáng dần lên | B |
| 2 | Đèn ngủ | LED vàng | Bấm “Đi ngủ”, đèn ngủ bật, mọi đèn khác tắt | B |
| 3 | Quạt phòng khách | Quạt 5V mini qua relay | Hà hơi vào cảm biến nhiệt, quạt tự chạy, relay kêu “tách” | B |
| 4 | Cảm biến nhiệt độ, độ ẩm | DHT11 | Số đo và biểu đồ cập nhật trên web | B |
| 5 | Cảm biến ánh sáng | Module quang trở | Lấy tay che lại, đèn phòng khách tự bật | B |
| 6 | Cảm biến chuyển động | PIR HC-SR501 | Vẫy tay, đèn tự bật. Ở chế độ “Vắng nhà” thì báo động | B |
| 7 | Cửa chính | Servo SG90 | Bấm “Mở cửa” trên web, cánh cửa quay mở | A |
| 8 | Màn hình ở cửa | OLED 0,96″ | Hiện giờ, nhiệt độ, dòng chữ “Chào mừng về nhà” | A |
| 9 | Quạt hút bếp | Quạt 5V mini qua relay | Tự chạy khi phát hiện gas | A |
| 10 | Còi báo động | Buzzer | Kêu khi có gas hoặc có đột nhập | A |
| 13 | Cảm biến gas | MQ-2 | Gas lại gần: còi kêu, quạt hút chạy, dashboard hiện cảnh báo | A |
| Mức nâng cao: làm thêm từ tuần 7 nếu kịp | ||||
| 11 | Khóa cửa bằng thẻ | Đầu đọc RFID RC522 | Quẹt thẻ, cửa mở, đèn bật, rèm mở: chế độ “Về nhà” | A |
| 12 | Cảm biến cửa sổ | Công tắc từ MC-38 | Mở cửa sổ khi đang “Vắng nhà”: còi kêu, dashboard hiện cảnh báo đỏ | A |
| 14 | Rèm cửa | Servo SG90 kéo dây rèm | Che cảm biến ánh sáng (giả trời tối), rèm tự đóng | B |
| 15 | Đèn trang trí | Vòng LED RGB WS2812 | Đổi màu theo chế độ: tiếp khách, đi ngủ | B |
| 16 | Cảm biến mưa | Module cảm biến mưa | Nhỏ vài giọt nước lên cảm biến… | B |
| 17 | Giàn phơi | Servo SG90 | …giàn phơi tự quay vào trong mái che | B |
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ế.
Đủ để qua môn: có đủ thiết bị, truyền thông, máy chủ và giao diện.
Phần ghi điểm cao, vì có nhiều tình huống để demo.
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.
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ấmMộ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ẩmTrang 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ấtBậ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 ngayDù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 demoGhi 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áoKhi 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ế.
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
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"}
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àm | Hình dung | Công sức | Chi phí | Nhận xét |
|---|---|---|---|---|
| Bảng demo phẳng | Tấm xốp formex khổ A3 vẽ mặt bằng nhà, gắn module đúng vị trí từng phòng | 1 buổi | 30–60k | Nhanh, 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ưới | 2–3 buổi | 70–140k | Nhì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ẵn | Bộ 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ổi | 150–400k | Đẹp nhưng chật, khó khoan lỗ đi dây, không chọn được kích thước theo ý muố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.
| Linh kiện | Dùng cho | Giá |
|---|---|---|
| Mức cơ bản · 640k – 1 tr | ||
| ESP32 DevKit V1 (board A) | An ninh: cửa, gas, còi | 90–130k |
| ESP32 DevKit V1 (board B) | Tiện nghi: đèn, quạt | 90–130k |
| 2 breadboard 830 lỗ + bộ dây jumper | Nối dây không cần hàn | 75–120k |
| Adapter 5V 3A + đầu jack DC | Nguồn cho servo, quạt, relay | 65–100k |
| LED trắng, vàng siêu sáng + điện trở | #1, #2 | 10–20k |
| 2 relay 1 kênh 5V | #3, #9 | 30–45k |
| 2 quạt 5V mini | #3, #9 | 40–60k |
| PIR HC-SR501 | #6 | 20–30k |
| Module quang trở | #5 | 10–15k |
| DHT11 | #4 | 20–30k |
| Servo SG90 | #7 | 25–35k |
| Màn hình OLED 0,96″ I2C | #8 | 55–85k |
| Module buzzer | #10 | 5–10k |
| Cảm biến gas MQ-2 | #13 | 35–50k |
| Xốp formex, súng keo nến, keo | Mô hình nhà | 70–140k |
| Mức nâng cao · thêm 150k – 240k | ||
| RFID RC522 kèm thẻ, móc khóa | #11 | 40–60k |
| Công tắc từ MC-38 | #12 | 15–25k |
| Servo SG90 | #14 | 25–35k |
| Vòng LED RGB WS2812 (8–16 bóng) | #15 | 30–60k |
| Module cảm biến mưa | #16 | 15–25k |
| Servo SG90 | #17 | 25–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í.
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 ESP32 | Ghi 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, 4 | SDA, SCK, MOSI, MISO, RST. Nguồn 3,3V, không cắm 5V |
| #8 OLED (I2C) | GPIO21, GPIO22 | SDA, SCL |
| #7 Servo cửa | GPIO13 | Dây đỏ nối 5V adapter, không lấy nguồn từ ESP32 |
| #9 Relay quạt hút | GPIO16 | Quạt lấy điện từ adapter 5V qua tiếp điểm relay |
| #10 Buzzer | GPIO27 | |
| #12 Công tắc từ cửa sổ | GPIO34 | Thêm điện trở 10kΩ kéo lên 3V3 |
| #13 MQ-2 (AO) | GPIO36 | Qua 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, GPIO26 | Qua điện trở 220Ω. Dùng PWM để chỉnh độ sáng |
| #3 Relay quạt | GPIO16 | Quạt lấy điện từ adapter 5V qua tiếp điểm relay |
| Servo #14 rèm, #17 giàn phơi | GPIO13, GPIO33 | Dây đỏ nối 5V adapter |
| #15 Vòng LED RGB | GPIO32 | Nguồn 5V từ adapter |
| #6 PIR | GPIO39 | Chân chỉ đọc, hợp với cảm biến |
| #5 Quang trở (AO) | GPIO35 | Chân analog nhóm ADC1, đọc được khi WiFi bật |
| #4 DHT11 | GPIO14 | |
| #16 Cảm biến mưa (DO) | GPIO34 | Chỉnh độ nhạy bằng núm vặn trên module |
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.
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.
Giới thiệu mô hình 3 phòng và sơ đồ nhà trên dashboard.
Đ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.
Giọng nói: nói “bật quạt phòng khách”, quạt chạy.
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.
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.
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.
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 đỏ.
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.
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.
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.
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.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.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.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.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.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.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.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.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.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.