1 điểm bởi GN⁺ 2023-08-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đây là dự án tạo chuông cửa DIY tích hợp cục bộ với Home Assistant bằng ESP32-CAM và ESPHome, dành cho người dùng muốn tránh các chuông cửa thông minh phụ thuộc vào đám mây
  • Cấu hình cơ bản gồm Home Assistant, add-on ESPHome, ứng dụng Home Assistant companion app trên di động; khi nút được bấm, hệ thống sẽ gửi ảnh chụp nhanh từ camera tới điện thoại dưới dạng thông báo
  • Phần cứng gồm ESP32-CAM, nút nhấn tức thời, vòng 8 RGB LED tùy chọn, cáp Micro USB 10m và vỏ in 3D; có thể dùng đèn LED tích hợp thay cho đèn flash
  • Tùy theo biến thể ESP32-CAM, sơ đồ chân và hành vi pulldown có thể khác nhau, nên đầu vào nút GPIO14 cần đấu thêm điện trở pulldown 10kΩ xuống GND
  • Vỏ PLA được dùng trong bản in mẫu, nhưng PETG hoặc ABS phù hợp hơn cho mục đích chống nước; do có lỗ camera, cần lắp đặt ở vị trí tránh mưa

Cấu hình chuông cửa cục bộ và những thứ cần chuẩn bị

  • Chuông cửa thông minh này hướng tới cấu hình thân thiện với quyền riêng tư và được tích hợp với Home Assistant thông qua ESPHome
  • Để bắt đầu, cần có các thành phần sau
    • Một instance Home Assistant đang chạy
    • Add-on ESPHome
    • Ứng dụng Home Assistant companion app trên di động để nhận thông báo khi nút được bấm
  • Bản build ví dụ dùng đèn vòng 8 RGB LED, nhưng nếu muốn đơn giản hóa có thể bỏ qua và dùng LED tích hợp của ESP32-CAM làm đèn flash
  • Phiên bản ESP32-CAM AI-Thinker có thể không có đầy đủ các điện trở pullup/pulldown như ESP32 thông thường
    • Đã thử dùng chức năng INPUT_PULLDOWN của ESPHome trên GPIO14 nhưng không hoạt động
    • Có nhiều biến thể ESP32-CAM sản xuất tại Trung Quốc, nên có thể có khác biệt tùy từng bo mạch

Linh kiện và tệp công khai

  • Các linh kiện chính như sau
    • ESP32-CAM
      • Khuyến nghị dùng bo mạch có nút flash/download/io0 để dễ flash ESPHome lần đầu
      • Bo mạch không có nút này cần được flash bằng bộ chuyển đổi FTDI
    • Nút nhấn tức thời
    • Đèn vòng 8 RGB LED
    • Cáp Micro USB 10m
  • Các tệp in 3D và tệp cấu hình đã được công khai

In vỏ và lắp ráp

  • Vỏ được in thành ba bộ phận
    • Thân chính
    • Tấm cố định ESP32-CAM
    • Tấm lưng kiêm ngàm gắn tường
  • Vỏ trước và vỏ sau cần được in với support
  • Bản in ví dụ dùng PLA, nhưng với mục đích chống nước, khuyến nghị dùng filament PETG hoặc ABS với infill 20–30%
  • Sau khi in, thêm hai insert ren M2.5
    • Lắp vào nắp trước để có thể siết giá đỡ cố định ESP32-CAM
    • Lắp vào phần dưới của tấm lưng để có thể cố định face plate bằng vít M2.5 dài 10mm

Flash ESP32-CAM bằng ESPHome

  • Để khởi động ESP32-CAM vào chế độ flash, giữ nút flash/download/io0 trong khi kết nối với máy tính bằng cáp Micro USB
  • Trong Home Assistant, mở add-on ESPHome và tạo thiết bị mới
    • Đường dẫn là Settings -> Add-ons -> ESPHome -> Open Web UI
    • Có thể đặt tên thiết bị mới là Doorbell, chẳng hạn
    • Chọn loại thiết bị là ESP32 và tích chọn use recommended settings
  • Dán mã cấu hình từ kho GitHub vào bên dưới captive_portal: trong cấu hình YAML được tạo
  • Nhấn SaveInstall, rồi chọn Plug into this computer
  • Flash firmware trong trình duyệt thông qua ESPHome Web
    • Google Chrome được dùng như trình duyệt ổn định nhất để flash firmware ESP32-CAM
    • Sau khi biên dịch firmware, có thể nhấn Download Project; quá trình này có thể mất vài phút
  • Khi firmware mới đã được flash, Home Assistant sẽ phát hiện thiết bị mới và có thể thêm các entity mong muốn vào dashboard

Tự động hóa thông báo nút bấm

  • Cấu hình tự động hóa để khi nút chuông cửa được bấm, hệ thống chụp ảnh nhanh từ camera và gửi tới điện thoại
  • Tạo tự động hóa mới trong Home Assistant
    • Đường dẫn là Settings -> Automations -> + Create Automation
    • Tạo tự động hóa mới từ đầu, rồi chọn Edit in YAML trong menu góc trên bên phải
  • Dán YAML tự động hóa từ kho GitHub, sau đó chỉnh tên entity của thiết bị như điện thoại di động cho phù hợp với môi trường của bạn
  • Sau khi lưu và khởi động lại Home Assistant, tự động hóa mới sẽ được kích hoạt

Ràng buộc về đấu dây và lắp đặt

  • Bo mạch ESP32-CAM có nhiều biến thể, nên cần kiểm tra sơ đồ chân của bo mạch thực tế
  • Việc đấu dây được thực hiện bằng cách hàn vào mặt sau PCB phía dưới, nơi có cổng Micro USB
  • Thêm điện trở pulldown 10kΩ giữa GPIO14 và GND
    • Nếu không có điện trở này, đã quan sát thấy GPIO14 thường bị trôi ở trạng thái high
    • Khuyến nghị bọc điện trở bằng ống co nhiệt
  • Do có lỗ camera tích hợp, cấu trúc không hoàn toàn chống nước và cần lắp ở vị trí được che mưa
  • Nguồn được cấp qua cáp Micro USB 10m có trong danh sách linh kiện

1 bình luận

 
GN⁺ 2023-08-17
Ý kiến trên Hacker News
  • Hay đấy. Tôi cũng thích phần đèn
    Cũng có thể gắn một công tắc reed (kiểu cảm biến cửa mở/đóng thông thường) gần cuộn dây nam châm làm chuông của chiếc chuông cửa “ngu” reo, rồi gửi thông tin về Home Assistant
    Tôi nối một công tắc reed giá $0.50 vào chuông cửa hiện có, rồi đưa nó ra cổng I/O số của ESP, lấy nguồn từ cùng nguồn với cuộn dây chuông cửa. Khi chuông cửa được nhấn, nó gửi ảnh chụp nhanh qua email từ camera cửa ra vào chỉ dùng cục bộ, và phát bản ghi tiếng chuông cửa trên dàn stereo ở tầng trên. Ban đầu tôi định giám sát điện áp cuộn dây bằng ngõ vào analog nhưng quá không ổn định; cách đơn giản hơn là dùng công tắc reed thì việc phát hiện dòng điện rất ổn định

    • Ý tưởng cùng nguồn với cuộn dây chuông cửa hay thật. Tôi tò mò trong nhà còn những nguồn điện áp lưng chừng nào có thể tận dụng được nữa. Như bộ điều khiển HVAC, đường dây điện thoại analog chẳng hạn
      Đường dây điện thoại POTS (Plain Old Telephone Service) phải có khoảng 48V DC khi tất cả điện thoại đều ở trạng thái on-hook. Khi một điện thoại trên cùng đường dây chuyển sang off-hook, điện áp giảm xuống khoảng 3–9V. Điện thoại off-hook thường tiêu thụ khoảng 20mA DC để hoạt động, và điện trở DC khoảng 180Ω. Phần sụt áp còn lại xảy ra trên đường dây đồng và mạch của công ty điện thoại; thường có điện trở nối tiếp 200–400Ω để chống ngắn mạch và tách mạch âm thanh
      https://www.jkaudio.com/article_03.htm
    • Tôi cũng làm đúng y như vậy, đặt cảm biến tiếp điểm Aqara Zigbee có công tắc reed bên trong vào trong chuông cửa thật. Trên cuộn dây tình cờ có một chỗ phẳng nên hoạt động rất tốt
    • Có gặp vấn đề công tắc reed bị dính không nhả ra không? Với mục đích này tôi dùng cảm biến Hall rất ổn, nhưng có lẽ tôi chỉ từng thấy các công tắc reed chất lượng kém
    • Công tắc reed rất tuyệt cho cách dùng kiểu này
      Tôi từng dùng tương tự bằng cách gắn lên vỏ phía trên của relay, để phát hiện cuộn dây đã được cấp điện hay chưa mà không phải chọc trực tiếp vào mạch điều khiển hay mạch tải
  • Thứ tôi muốn ở các thiết bị IoT kiểu này chỉ là không phụ thuộc đám mây và dùng PoE. Tôi thà kéo cả tỷ sợi dây còn hơn phải đối phó với những viên pin ngu ngốc cứ hết liên tục. Giá pin cũng ngày càng quá đắt

    • Tham khảo PoE ESP32 cho DIY IoT
      Không cách ly: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou...
      Có cách ly: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open...
    • Đúng vậy. Kéo dây một lần thì rất cực, nhưng tệ nhất cũng chỉ tăng tuyến tính. Càng nhiều thiết bị thì cần thêm dây, và vì có thể rẽ nhánh từ hộp nối hiện có nên có khi còn gần với tăng theo log hơn
      Thay pin mỗi năm một lần là việc nhỏ, nhưng khi có vài chục thiết bị thì nó tích lại rất nhanh và lặp lại định kỳ, nên cũng chẳng hơn tăng tuyến tính là bao
    • Tôi nghĩ Zigbee là một giao thức tuyệt vời cho mục đích này. Nó hoạt động cục bộ, không lên Wi-Fi, và cảm biến chạy được nhiều năm chỉ với một viên pin cúc áo
    • Tôi muốn nguồn năng lượng mặt trời. Chuông cửa chắc chỉ được bấm cỡ 5 ngày một lần nhỉ? Chỉ cần phủ vỏ bằng tấm pin mặt trời và thêm siêu tụ để cấp điện ban đêm là được
    • Mấy loại pin đó thật sự phiền phức. Thiết bị dùng pin cũng có xu hướng không ổn định. Tuần nào cũng phải ghép đôi lại thứ gì đó hoặc thay pin
      Khi có nhà riêng, tôi định chuyển sang KNX
  • Hơi lạc đề một chút, nhưng vợ tôi bị ADD khá nặng nên thường xuyên làm thất lạc đồ. Tile chỉ tìm được đồ trong một khoảng cách nhất định và có vẻ hay hỏng
    Dù khả năng thấp, tôi vẫn tò mò liệu đã có ai từng xây dựng hệ thống định vị trong nhà dùng beacon Bluetooth Low Energy để tìm đồ vật trong không gian 3D với sai số vài cm chưa
    Nói gần với chủ đề hơn thì ESP32 khá tuyệt vời. Chỉ là với MicroPython hay CircuitPython tôi không giữ kết nối Wi-Fi ổn định được, nhưng phạm vi những gì có thể làm được thật đáng kinh ngạc. Bo mạch của tôi khá cũ, nên có thể nếu mua bo mới thì sẽ khác

    • DIY AirTags: https://github.com/seemoo-lab/openhaystack
    • Tôi chạy MicroPython trên bo ESP32 devkit, kết nối Wi-Fi và MQTT rồi gửi giá trị cảm biến 24/7, và nó hoạt động không vấn đề gì trong nhiều tuần
    • Không hoàn toàn khớp với yêu cầu, nhưng bạn đã thử https://www.room-assistant.io/ chưa?
    • Nếu là MicroPython hay CircuitPython thì không biết bạn kỳ vọng gì. Với hệ thống nhúng cần độ tin cậy thì gần như nên cấm dùng
  • Thật thú vị là ở một số nơi trên thế giới, sự tồn tại của chuông cửa lại quan trọng đến mức người ta còn thấy cần phải làm cho nó “thông minh”. Thành công của các sản phẩm chuông cửa thông minh cho thấy rõ nhu cầu đó
    Tôi không có chuông cửa. Nếu khách không biết cách liên lạc với tôi hoặc người khác trong nhà, thì rất có thể ngay từ đầu họ cũng chẳng có nhiều lý do để đến đó
    Không chỉ mình tôi như vậy. Theo một khảo sát rất thiếu khoa học khi đi dạo tuần trước, hầu hết con phố của chúng tôi cũng tương tự, và có lẽ phần lớn thành phố của tôi cũng vậy

    • Nghe khá lạnh lùng. Khi tôi mua nhà và chuyển đến, hàng xóm đã sang chào hỏi, có người còn mang cả quà mừng. Tôi không muốn tự cắt đứt mình khỏi cộng đồng khu phố như thế
    • Một phần nhu cầu về chuông cửa thông minh có vẻ là để xử lý vấn đề khách không rõ danh tính. Nó có thể báo cho chủ nhà biết ai đang ở trước cửa ngay cả khi họ không có nhà, và che giấu việc nhà đang trống
    • Nhà ở Anh nhỏ đến mức thường chỉ cần gõ cửa là đủ
      Chuông cửa có cảm giác lỗi thời. Trên con phố của chúng tôi gần như chẳng ai lắp
    • Bạn không hề đặt hàng qua mạng sao? Cũng chưa từng nhận thư bảo đảm từ cơ quan thuế à? Lý do chuông cửa thông minh nổi lên đặc biệt là vì đó là vị trí rất dễ nối vào nguồn điện vốn đã có sẵn bên ngoài nhà
    • Không hẳn là mọi người thật sự muốn làm cho chuông cửa “thông minh”, mà là sự phát triển của đồ điện tử tiêu dùng đã khiến việc lắp camera an ninh/giám sát ở vị trí ưu tiên cao là lối ra vào trở nên dễ dàng, bằng cách tận dụng nguồn điện khoảng 20V đã được đi dây sẵn đến một vị trí hoàn hảo trong hầu hết các ngôi nhà
  • Dựa trên các bài đánh giá tôi đã xem, camera chuông cửa Reolink có vẻ là lựa chọn thương mại duy nhất đáp ứng yêu cầu của tác giả. Nó hoạt động cục bộ và có thể tích hợp với Home Assistant
    Tuy nhiên, phần intercom cần một ứng dụng riêng. Giải pháp tự làm của tác giả dường như không cung cấp liên lạc âm thanh, và ít nhất chỉ với giao thức camera thì cũng không thấy có cách dùng âm thanh hai chiều trực tiếp trong Home Assistant

    • UniFi Doorbell thì sao? Nó không cần kết nối cloud, hoạt động cục bộ và có thể tích hợp với HomeAssistant / Scrypted / Homebridge
    • Amcrest cũng làm các sản phẩm hỗ trợ chỉ chạy cục bộ và tích hợp với Home Assistant
  • ESP32 đúng là một hố thỏ rất sâu. Đã có rất nhiều dự án dùng hoặc đang phát triển với ESP32, giờ lại có thêm một thứ nữa để lưu ý

    • Bạn đang làm những gì vậy?
  • Dự án rất hay. Camera ESP32 có thể cho chất lượng hình ảnh khá tệ. Sẽ hữu ích nếu blog có ảnh độ phân giải đầy đủ chụp từ chuông cửa

  • Dự án tuyệt vời. Thật vui khi thấy nhiều loại chuông cửa ESP32 khác nhau do cộng đồng maker tạo ra
    Nếu có video hoặc ảnh ví dụ thì tốt. Trước đây tôi từng dùng ESP32 Cam, bản thân nó khá ấn tượng, nhưng chất lượng không phải mức tôi mong muốn. Dĩ nhiên, mục đích dùng chuông cửa thông minh của tôi thiên về an ninh hơn là chỉ để biết “ai đang ở đó”

  • Hiện tôi đang dùng một chuông cửa PoE khá đắt mua ở tình trạng AS-IS để tiết kiệm chi phí. Đó là sản phẩm của Axis Communications
    Tôi rất thích khả năng nhận sự kiện ONVIF. Nếu có thể tiêu thụ sự kiện thì về cơ bản bạn có thể làm bất cứ điều gì mình muốn, nên các sản phẩm kiểu này rất linh hoạt. Ví dụ cũng có cách tạo sự kiện tùy chỉnh như khi ai đó dùng tay che ống kính camera
    Home Assistant hỗ trợ ONVIF rất tốt. Tôi muốn tạo một kiểu wrapper quanh các script (như boolean cửa mở/đóng) để lấy được sự kiện ONVIF native

  • Một bình luận trên trang này đã chỉ ra vấn đề hiệu năng của ESP32. Tôi chưa từng làm việc với thiết bị IoT hay các board kiểu này, nhưng vì chúng tương đối rẻ nên tôi muốn thử vọc, và khi tìm hiểu thì biết ESP32 được sản xuất trên tiến trình 40nm
    Tôi tò mò liệu có phiên bản mới hơn được sản xuất trên tiến trình tiên tiến hơn, cho hiệu năng cao hơn với mức ngân sách điện năng tương tự hay không

    • Hai nhân RISC 240MHz là khá mạnh rồi. 40nm không tệ đối với vi điều khiển. Ví dụ dòng nRF52 của Nordic, một đối thủ cạnh tranh, được sản xuất trên tiến trình 55nm
    • Không hẳn. Có các phiên bản chip mới hơn, bao gồm cả bản RISC-V hoặc Zigbee/Thread, nhưng khó thấy cải thiện đáng kể về hiệu năng/điện năng. Ở phân khúc thị trường này, giới hạn hiệu năng là chuyện bình thường, và đó là đánh đổi phải chấp nhận
      Cũng có các họ SoC đem lại đánh đổi tốt hơn, nhưng không nhiều thứ thân thiện với người làm dự án sở thích như ESP32. Có thể là Nordic, hoặc chuyển sang các máy tính đơn bo nhỏ như Pi Zero
      Dù vậy ESP32 vẫn mạnh hơn rất nhiều so với nhu cầu của hầu hết thiết bị tự động hóa gia đình. Nó chỉ bắt đầu chạm giới hạn ở một vài tác vụ nặng hơn như streaming video hoặc machine learning. Ngay cả khi đó, nếu làm khéo thì vẫn có thể làm được khá nhiều việc