Hộp IoT theo dõi độ ẩm chống mốc cho tủ đồ và tủ máy ảnh
Ghi chú làm một hộp đo độ ẩm nhỏ cho tủ đồ hoặc tủ máy ảnh, dùng ESP32 và cảm biến SHT để báo khi độ ẩm cao kéo dài.
Chia sẻ

Nếu bạn muốn dựng một hộp tương tự, mình sẽ ưu tiên số đo ổn định và cảnh báo đúng lúc hơn một dashboard nhiều chi tiết.
Có những món đồ không hỏng ngay, nhưng âm thầm xuống cấp nếu bị đặt trong môi trường ẩm quá lâu: áo khoác ít mặc, túi da, ống kính máy ảnh, thân máy, filter, giấy tờ hoặc mấy hộp linh kiện nhỏ. Mình từng thấy kiểu vấn đề này khá khó chịu vì lúc mở tủ ra thì mọi thứ vẫn có vẻ bình thường, đến khi thấy mùi ẩm hoặc vệt mốc thì đã hơi muộn.
Thứ mình muốn làm là một hộp nhỏ đặt trong tủ, đủ kín đáo để quên nó đi nhưng đủ đều đặn để báo khi độ ẩm cao kéo dài. Nó đo độ ẩm, lưu lại lịch sử, cảnh báo khi vượt ngưỡng, và nếu muốn thì nhắc thay hoặc sấy lại túi hút ẩm.
Mục tiêu thực tế
Với tủ đồ và tủ máy ảnh, độ ẩm nên được giữ thấp hơn mức dễ sinh mốc. EPA khuyến nghị độ ẩm trong nhà nên dưới 60% RH, lý tưởng là khoảng 30-50% RH để hạn chế mốc. Với đồ máy ảnh, mình sẽ chọn vùng vận hành thận trọng hơn:
| Trạng thái | Gợi ý ngưỡng |
|---|---|
| Ổn định | 40-50% RH |
| Cần để ý | 50-60% RH |
| Cảnh báo | Trên 60% RH trong nhiều phút |
| Quá khô | Dưới 30-35% RH trong thời gian dài |
Điểm quan trọng là không chỉ nhìn một giá trị tức thời. Nếu vừa mở cửa tủ, độ ẩm có thể nhảy lên trong vài phút rồi giảm lại. Thiết bị nên chỉ cảnh báo khi độ ẩm cao kéo dài, ví dụ 10-15 phút.

Logic nên có hysteresis để thiết bị không báo động liên tục khi độ ẩm dao động quanh ngưỡng.
Phần cứng đề xuất
Một cấu hình gọn và dễ làm:
- ESP32-C3 hoặc ESP32-S3 mini module.
- Cảm biến SHT31, SHT40 hoặc SHT41 qua I2C.
- Màn hình OLED 0.96 inch nếu muốn xem tại chỗ.
- LED nhỏ hoặc buzzer rất nhẹ cho cảnh báo cục bộ.
- Pin Li-ion/LiPo kèm mạch sạc hoặc dùng USB nếu tủ có nguồn gần đó.
- Vỏ in 3D có khe thoáng, nhưng không để cảm biến sát chip ESP32 hoặc mạch sạc vì nhiệt sẽ làm sai số.
DHT22 vẫn dùng được cho bản thử nhanh, nhưng nếu làm hộp để theo dõi lâu dài thì mình nghiêng về SHT31/SHT40 hơn. Cảm biến dòng SHT thường ổn định và phản hồi tốt hơn cho bài toán môi trường.

Một node nhỏ trong tủ chỉ cần đo ổn định, gửi dữ liệu đều và cảnh báo khi độ ẩm vượt ngưỡng.
Luồng hoạt động
Firmware có thể chạy theo vòng đơn giản:
- Thức dậy theo chu kỳ.
- Đọc nhiệt độ và độ ẩm vài lần rồi lấy trung bình.
- Gửi dữ liệu qua MQTT, Home Assistant hoặc Arduino IoT Cloud.
- Kiểm tra ngưỡng cảnh báo.
- Bật LED/buzzer nếu độ ẩm cao kéo dài.
- Ghi lại mốc thời gian để nhắc thay túi hút ẩm nếu độ ẩm giảm chậm.
- Vào deep sleep nếu chạy pin.
Ví dụ rule đơn giản:
Nếu RH > 60% trong 15 phút:
Gửi cảnh báo "tủ đang ẩm cao"
Nếu RH > 55% trong 6 giờ:
nhắc kiểm tra túi hút ẩm hoặc gioăng tủ
Nếu RH < 30% trong 24 giờ:
Nhắc kiểm tra vì môi trường có thể đang quá khô cho cao su, da hoặc một số vật liệu
Mình thích dùng hysteresis thay vì một ngưỡng duy nhất. Ví dụ, báo khi trên 60%, nhưng chỉ hạ trạng thái cảnh báo khi đã xuống dưới 55%. Như vậy, thiết bị không nhấp nháy liên tục khi độ ẩm quanh quẩn 59-61%.
Cách báo chậm này cũng hợp với các thiết bị IoT nhỏ trong nhà, ví dụ thiết bị nhắc mở cửa sổ khi phòng bí khí. Cảm biến khác nhau, nhưng logic sản phẩm vẫn giống nhau: đo, chờ điều kiện đủ rõ, rồi nhắc nhẹ đúng lúc.
Gửi dữ liệu đi đâu?
Nếu nhà đã có Home Assistant, MQTT là đường dễ và bền nhất. Node chỉ cần publish:
{
"temperature": 28.4,
"humidity": 57.2,
"battery": 82,
"state": "watch"
}
Dashboard có thể hiển thị biểu đồ theo ngày, còn automation lo phần cảnh báo. Nếu chưa có Home Assistant, có thể dùng Arduino IoT Cloud, ThingsBoard, hoặc một server nhỏ tự lưu SQLite/InfluxDB. Không nên làm app riêng ngay từ đầu, vì phần khó của sản phẩm này không nằm ở UI mà nằm ở độ ổn định và cảnh báo ít phiền.
Những chi tiết dễ bị bỏ qua
Vỏ hộp cần thoáng khí quanh cảm biến. Nếu cảm biến nằm trong một khoang kín hoặc sát pin/mạch sạc, số đo sẽ lệch.
Tủ máy ảnh thường kín hơn tủ đồ, nên phản ứng với độ ẩm chậm hơn. Sau khi thay túi hút ẩm, có thể mất vài chục phút đến vài giờ để đường cong RH giảm rõ.
Không nên bật buzzer quá ồn. Với thiết bị đặt trong phòng ngủ hoặc tủ đồ, cảnh báo qua điện thoại thường hữu ích hơn.
Nếu dùng pin, Wi-Fi là phần tốn điện nhất. Cách hợp lý là đo mỗi 5-15 phút, gửi nhanh, rồi deep sleep. Nếu cần biểu đồ mịn hơn thì phải chấp nhận sạc pin thường xuyên hơn.
Phiên bản MVP
Bản đầu tiên mình sẽ làm thật gọn:
- ESP32-C3.
- SHT40 qua I2C.
- Không OLED, chỉ một LED nhỏ.
- Gửi MQTT mỗi 10 phút.
- Cảnh báo Home Assistant khi RH trên 60% quá 15 phút.
- Vỏ in 3D treo hoặc dán bằng nam châm trong tủ.
Sau khi chạy thử khoảng một tuần, mới quyết định có cần thêm màn hình, buzzer hay khay túi hút ẩm tích hợp không. Với mình, một thiết bị IoT tốt không nhất thiết phải nhiều tính năng ngay từ đầu. Nó chỉ cần đo đúng, cảnh báo đúng, và không làm mình phải chăm nó quá nhiều.
Checklist trước khi dùng lâu dài
- So sánh số đo với một ẩm kế thương mại trong 24 giờ.
- Đặt cảm biến xa nguồn nhiệt và mạch sạc.
- Kiểm tra độ ẩm sau khi đóng/mở tủ nhiều lần.
- Test cảnh báo bằng cách đặt hộp gần khăn ẩm trong vài phút.
- Theo dõi pin ít nhất một tuần trước khi chốt chu kỳ deep sleep.
- Ghi lại thời điểm thay hoặc sấy lại túi hút ẩm.
Mình sẽ tin bản này dùng được khi nó giúp phát hiện một đợt ẩm kéo dài mà bình thường mình không để ý: vài ngày mưa liên tục, túi hút ẩm hết tác dụng, hoặc gioăng tủ không còn kín. Còn nếu nó chỉ báo liên tục sau mỗi lần mở tủ, firmware cần được chỉnh lại trước khi nghĩ tới PCB riêng.
Nguồn tham khảo
Chia sẻ
Tiếp tục khám phá
Đọc tiếp
Bài viết liên quan
Smart thermostat tự học cách căn phòng ấm lên
Ghi chú làm smart thermostat bằng ESP32, ESPHome và Home Assistant, có lớp tốc độ làm ấm để bật đúng lúc mà vẫn giữ giới hạn an toàn.
Đồng hồ để bàn “chỉ báo chất lượng giấc ngủ” không cần camera
Ghi chú làm một đồng hồ ESP32 cạnh giường, dùng CO2, nhiệt độ, ánh sáng và cảm biến hiện diện để giải thích vì sao sáng dậy thấy phòng ngủ không ổn, không cần camera.
Hộp nhắc uống thuốc cho người già có cảnh báo qua điện thoại
Ghi chú thiết kế một hộp thuốc có đèn, buzzer nhỏ, RTC và cảnh báo điện thoại cho người thân khi quá giờ mà chưa thấy xác nhận lấy thuốc.