DIY máy đo chất lượng không khí chất lượng cao tích hợp Home Assistant

DIY máy đo chất lượng không khí chất lượng cao tích hợp Home Assistant

Update mới nhất: 27/05/2026

Mình chia sẻ quá trình tự DIY một chiếc máy đo chất lượng không khí chất lượng cao. Bản thân nội dung bài mình tập trung vào xây dựng phần cứng và phần mềm giúp thiết bị hoạt động, mọi thứ ở dạng module dễ thay thế.

Thành phẩm hiện tại chưa có yếu tố thẩm mỹ, mình cũng chưa có bất cứ ý tưởng gì về việc làm cho nó đẹp ở giai đoạn này, nên máy đo chất lượng không khí của mình đang xấu, mà xấu cũng được, trước tiên phải hoạt động đã. Vì thế, nếu cần đẹp hơn, các bạn hãy tiếp tục sáng tạo nhé.

Nhu cầu sử dụng

Mình là người quan tâm đến chất lượng không khí, đặc biệt là chất lượng không khí trong nhà, vì vậy mình luôn sử dụng máy đo chất lượng không khí. Tuy nhiên, trên thị trường có quá nhiều máy đo chất lượng không khí giá rẻ nhưng gần như không ai biết về độ chính xác của những máy đo này. Và thường do giá rẻ, nên thường chỉ được trang bị cảm biến chất lượng thấp, có thể sai số ngay từ đầu hoặc sau một thời gian ngắn sử dụng.

Mình không hề muốn mua một chiếc máy đo mà lại không chính xác hoặc. Vì thế, mình đã từng mua mẫu máy đo Qingping Air Monitor 2 với giá khá cao, khoảng 3 triệu đồng để dùng thử, đây là một mẫu được đánh giá khá tốt vì sử dụng nhiều cảm biến chất lượng tương đối cao.

Tuy nhiên, Qingping Air Monitor 2 khá khó mua vì gần như chưa có ai ở VN bán, hầu như phải đặt hàng qua Taobao hoặc Aliexpress, và giá thành cũng không hề rẻ. Để tích hợp vào Home Assistant cũng mất khá nhiều thời gian và phải mày mò nhiều.

Giờ mình muốn có thêm thiết bị theo dõi chất lượng không khí cho một vài khu vực khác trong nhà, nên mình đã thử sức tự DIY một chiếc máy đo, với giá thành dễ chịu hơn, mà vẫn đáp ứng được nhu cầu sử dụng.

Mình có một số nhu cầu như sau:

  • Sử dụng cảm biến chất lượng cao, đây là yếu tốt tiên quyết. Trong dự án DIY này, toàn bộ cảm biến mình dùng sẽ từ Sensirion, một thương hiệu cảm biến nổi tiếng của Thụy Sỹ, chuyên cung cấp cảm biến công nghiệp với độ chính xác cao và bền bỉ trong nhiều năm (đa phần là trên chục năm).
  • Có thể kết nối Wifi để đẩy dữ liệu về Home Assistant. Giải pháp là sử dụng một bảng mạch ESP32 để kết nối với các cảm biến, mình sẽ dùng ESPHome để nạp phần mềm cho ESP32. Tin vui là toàn bộ cảm biến mình dùng đều tương thích với ESP32 và ESPHome, đồng thời việc kết nối giữa ESPHome và Home Assistant có thể diễn ra tự động, nên rất dễ tích hợp và làm việc với nhau.
  • Có thể đo các thông số: Bụi mịn (PM), nồng độ CO2, nhiệt độ, độ ẩm, VOC – tương tự như máy Qingping Air Monitor 2 mà mình đang dùng. Các bạn nếu muốn tiết kiệm chi phí có thể dùng ít cảm biến hơn hoặc mua dần dần bổ sung thêm theo nhu cầu.

Chuẩn bị phần cứng

DIY máy đo chất lượng không khí chất lượng cao ngonboxe

Dưới đây là danh sách phần cứng cần chuẩn bị, mình để link tại từng món để các bạn có thể tham khảo, tất cả mọi linh kiện mình đều mua trên Shopee được:

(Khi các bạn ấn vào link để xem hoặc mua hàng, mình có thể sẽ nhận được một chút hoa hồng từ tiếp thị liên kết, dù không nhiều nhưng cũng sẽ góp phần giúp mình xây dựng kênh và đem lại nhiều nội dung hữu ích hơn đến với các bạn. Cám ơn các bạn.)

Linh kiện thiết yếu:

  • Bảng mạch ESP32: ESP32-WROOM-32D (chọn phân loại TypeC-D sẽ có sẵn anten wifi và dùng cổng TypeC) – hoặc các bạn có thể sử dụng các bảng mạch ESP32 khác tùy ý, miễn sao có chân 5V, 3.3V, GND, GPIO 21 và 22. [~100,000đ]
  • Cảm biến bụi mịn: Sensirion SPS30 (mình mua tại shop này thấy ok, có kèm dây để cắm cảm biến. Một số shop khác có thể sẽ không kèm dây, hoặc không giao hàng) [~450,000đ]
  • Cảm biến CO2, nhiệt độ, độ ẩm: Sensirion SCD30 [~300,000đ]
  • Cảm biến VOC: Sensirion SPG4x (SPG40 chỉ đo VOC, SPG41 đo VOC và NOx) [~170,000đ]
  • Update: Màn hình hiển thị (tùy chọn): OLED 0.96 inch 128×64 [~50,000đ]

Một số món linh kiện bổ sung:

Tổng chi phí phụ tùng cho mọi thứ là hơn 1 triệu đồng, chỉ bằng 1/3 so với mua 1 sản phẩm cảm biến hoàn chỉnh như Qingping, mà Qingping cũng mới chỉ dùng cảm biến CO2 Sensirion SCD40, cảm biến VOC Sensirion SPG40 và cảm biến bụi mịn đến từ thương hiệu Grandway, là cảm biến bụi mịn ở phân khúc thấp hơn nếu so với Sensirion SPS30.

Tất nhiên Qingping còn đắt tiền do đã được thiết kế hoàn chỉnh, có màn hình cảm ứng, có ứng dụng độc lập v.v… Nhưng đó cũng là những thứ mà mình chưa cần ở chiếc máy DIY, hiện mình chỉ cần có kết nối Wifi và làm việc được với Home Assistant.

Nguyên lý hoạt động

Trước khi bắt tay vào làm, chúng ta cần hiểu một chút về nguyên lý hoạt động. Mình build bộ này là để sử dụng chung với Home Assistant mà mình đang host sẵn ở trên NAS, vì vậy ngoài những phần cứng mình đã liệt kê ở trên, nếu bạn chưa dùng Home Assistant, sẽ cần thêm 1 mini server (ví dụ như Raspberry Pi) để chạy Home Assistant và ESPHome – hoặc các bạn có thể chạy 2 món đó trên một chiếc PC / Mini PC mà các bạn đang sử dụng (thông qua Docker).

Về nguyên lý hoạt động chung: ESP32 sẽ chạy phần mềm được nạp từ ESPHome, trong đó sẽ nhận tín hiệu từ các cảm biến và rồi gửi dữ liệu về Home Assistant. Trên Home Assistant chúng ta sẽ cấu hình để hiển thị các thông số đo đạc được, cũng như có thể theo dõi chất lượng không khí theo thời gian.

Mình chọn ESP32-WROOM-32D vì đây là một bảng mạch phát triển khá đầy đủ, cả về chức năng lẫn các chân kết nối, để sau này có thể gắn thêm linh kiện khác, ví dụ như mình muốn gắn thêm màn hình hiển thị, hoặc nút bấm vật lý, có thể sẽ dùng thêm các chân kết nối khác, nên mình chọn bảng mạch này, tuy hơi to nhưng có nhiều chân giao tiếp.

Cảm biến bụi mịn SPS30: Đây là cảm biến đo bụi mịn, sử dụng công nghệ laser cho độ chính xác cao, sai số thấp và độ bền trên 10 năm, các bạn có thể tham khảo thêm về thông tin của cảm biến này trên trang chủ của Sensirion, đặc biệt là datasheet và guideline lắp ráp phần cứng. Cảm biến này có quạt bên trong để hút không khí vào cho cảm biến đo bụi mịn. Các bạn có thể xem lại bài so sánh nguyên lý của hai loại cảm biến bụi mịn hồng ngoại và laser mình từng chia sẻ.

Cảm biến CO2, nhiệt độ, độ ẩm: Mình chọn SCD30, dùng công nghệ đo CO2 cũ hơn SCD40 và SCD41, nhưng lại có độ chính xác cao hơn và ít phải cân chỉnh hơn. Mình giải thích lý do tại post trên FB, các bạn có thể xem lại. Ngoài ra nên tham khảo datasheet và guideline lắp ráp phần cứng tại trang chủ Sensirion.

Cảm biến VOC: về bản chất, cảm biến này sẽ cho ra VOC Index, là một chỉ số thể hiện sự có mặt của các hợp chất hữu cơ trong không khí, nhằm giúp chúng ta có cái nhìn tổng quan về chất lượng không khí nói chung, không phải là để đo từng chất hữu cơ đơn lẻ. Các bạn có thể tham khảo thêm thông tin về SPG40SPG41.

Các cảm biến trên sẽ giao tiếp với ESP32 thông qua giao thức I2C, hiểu đơn giản là chúng ta chỉ cần nối 2 chân dữ liệu SDA-SCL của cảm biến vào 2 chân GPIO21 và GPIO22 của ESP32, và khai báo địa chỉ của từng cảm biến là ESP32 có thể gửi nhận dữ liệu với cảm biến rồi.

Update: Màn hình hiển thị. Loại mình sử dụng cũng dùng giao thức I2C, vì vậy cũng chỉ cần kết nối 2 dây nguồn và 2 dây dữ liệu tương tự các cảm biến là có thể hiển thị được thông tin.

Còn ESPHome và Home Assistant có giao thức ngầm để tự động hoạt động với nhau nên bộ đôi này rất hợp nhau và hợp cho dự án này.

Xử lý phần cứng

Khi mua về, các phần cứng sẽ cần được xử lý một chút trước khi ráp mọi thứ lại với nhau. Với cảm biến bụi mịn SPS30, đi kèm sẽ có dây để cắm vào cảm biến, tuy nhiên đầu dây còn lại đang chưa có gì, các bạn có thể hàn vào jump đực hoặc hàn vào dây cắm mạch, mục đích là để dễ dàng cắm được xuống Breadboard.

Đối với cảm biến CO2 SCD30 và VOC SGP40 cũng vậy, có sẵn các lỗ chờ, các bạn sẽ cần hàn jump đực vào để có thể cắm được vào bảng mạch.

Như những hình trên là những gì mà mình nhận được khi đặt hàng.

Và dưới đây là hình ảnh sau khi đã xử lý, mình hàn chân jump đực vào các bo mạch của cảm biến.

Lắp ráp phần cứng

2 cái Breadboard, các bạn có thể gắn giống như hình dưới đây, mỗi một hàng chân của ESP32 sẽ nằm trên một Breadboard, như vậy sẽ có nhiều lỗ để cắm dây kết nối hơn. Các cảm biến các bạn cũng có thể cắm vào tương tự.

Có một lưu ý của Sensirion đó là khi gắn cảm biến SCD30, mặt dưới của cảm biến cũng cần phải hở ra một chút như hình, về cơ bản khi hàn jump đực vào là đủ khoảng trống, ngoài ra, mặt dưới góc chữ S cũng là cảm biến độ ẩm và nhiệt độ, nên tránh xa nguồn nhiệt và ở vị trí thoáng.

Ở ESP32 các bạn chỉ cần dùng đến các chân kết nối sau: 5V, 3V3, GND, GPIO21 và GPIO22, những chân này đều đã được ghi rõ trên bảng mạch.

Và sau đó, có thể tiến hành kết nối dây.

DIY máy đo chất lượng không khí chất lượng cao ngonboxe

Cảm biến bụi mịn SPS30

Đây là layout các chân của cảm biến, có 5 chân lần lượt như hình, các bạn kết nối vào ESP32 như bảng mình để bên dưới. Lưu ý chân số 4 – SEL nhất định phải nối vào GND để chọn chế độ I2C cho cảm biến, nếu không chân 2 và chân 3 sẽ ra điện 5V có thể làm hư bảng mạch ESP32 đang chạy điện 3.3V ở chân GPIO21 và 22.

Cảm biến bụi mịn SPS30ESP32
1 – VDD5V
2 – SDAGPIO21
3 – SCLGPIO22
4 – SELGND (quan trọng)
5 – GNDGND

Cảm biến CO2 SCD30

Cảm biến SCD30 có nhiều chân, nhưng chúng ta chỉ sử dụng: VDD, GND, SCL, SDA, SEL. Trong đó, chân SEL cũng cần kết nối GND tương tự như cảm biến bụi mịn. Các bạn có thể kết nối như bảng dưới.

Cảm biến CO2 SCD30ESP32
1 – VDD5V
2 – GNDGND
3 – SCLGPIO22
4 – SDAGPIO21
7 – SELGND (quan trọng)

Cảm biến VOC SPG40/41

Trên cảm biến VOC sẽ có 5 chân, nhưng chúng ta chỉ dùng 4 chân 3.3V, GND, SCL, SDA và kết nối như bảng dưới

Cảm biến VOC SPG40/41ESP32
2 – 3.3V3V3
3 – GNDGND
4 – SCLGPIO22
5 – SDAGPIO21

Sau khi kết nối toàn bộ các linh kiện, các bạn kiểm tra kĩ lại 1 lượt các chân kết nối, lưu ý 2 chân SEL của cảm biến bụi mịn và cảm biến CO2 phải được nối vào GND, và chân nguồn của cảm biến VOC sử dụng điện 3.3V chứ không phải 5V như 2 cảm biến còn lại.

Đối với cảm biến bụi mịn SPS30, nếu đặt cảm biến nằm ngang, mặt vỏ kim loại sẽ phải quay lên trên như hướng dẫn của Sensirion, để layout của các lỗ hút khí như ảnh dưới đây. Nếu các bạn đặt dọc, hãy vào trang chủ của Sensirion để xem hướng dẫn lắp đặt, họ có guide khá kĩ để đảm bảo đường gió vào và ra giúp cảm biến hoạt động chính xác.

DIY máy đo chất lượng không khí chất lượng cao ngonboxe

Các bạn có thể dùng băng keo 2 mặt để cố định cảm biến bụi mịn. Hoặc nếu vẫn muốn nhấc ra để sau này design thêm case ngon lành, thì có thể tạm cố định bằng vài khúc jump tại 4 cạnh của cảm biến như mình.

Update: Màn hình

Vì màn hình mình chọn có kích thước khá nhỏ, vì vậy sẽ có 2 giải pháp. Giải pháp 1 là sử dụng 1 màn hình nhưng về sau sẽ code để có thể lật trang nhằm hiển thị nhiều thông tin lần lượt. Giải pháp 2 là sử dụng nhiều màn hình và mỗi màn hình hiển thị một vài thông tin.

Bản thân mình chọn giải pháp sử dụng 2 màn hình, trong đó màn hình 1 sẽ thường trực hiển thị thông số bụi mịn, màn hình 2 sẽ luân phiên hiển thị độ ẩm, nhiệt độ và nồng độ CO2, VOC.

Màn hình cũng đã có sẵn 4 chân, các bạn chỉ cần cắm vào Breadboard và nối dây là được.

Màn hìnhESP32
1 – VCC3V3
2 – GNDGND
3 – SCLGPIO22
4 – SDAGPIO21

Trong trường hợp các bạn sử dụng nhiều màn hình, vì các màn hình đều dùng chung giao tiếp I2C và có cùng 1 địa chỉ, vì thế giải pháp là cấu hình thêm chân GPIO khác để giao tiếp với màn hình thứ 2 (ví dụ mình dùng giao thức I2C với chân GPIO 16 và GPIO 17 cho màn hình thứ 2)

Cài đặt phần mềm

Chúng ta sẽ cần:

  • Home Assistant: các bạn có thể xem guide hướng dẫn cài Home Assistant tại trang chủ. Nếu bạn nào dùng NAS Synology có thể tham khảo thêm bài hướng dẫn chi tiết của mình tại đây.
  • ESPHome: Mình cài đặt ESPHome bằng docker trên NAS luôn. Về cơ bản cũng rất dễ. Còn nếu dùng phần cứng khác như Raspberry Pi cài Home Assistant OS, các bạn có thể cài ESPHome Device Builder trong Add-on của Home Assistant.
  • Để nạp phần mềm (nạp code) cho ESP32 lần đầu, các bạn có thể cắm thẳng ESP32 vào thiết bị đang chạy ESPHome, đây là cách dễ nhất.
  • Một cách khác (như mình sử dụng) là cắm ESP32 vào máy tính, rồi truy cập ESPHome Device Builder từ máy tính và nạp phần mềm thông qua máy tính. Cách này sẽ phức tạp hơn vì các bạn sẽ phải tạo tên miền và dùng chứng chỉ SSL cho ESPHome. Vì vậy mình khuyến nghị dùng cách cắm trực tiếp sẽ dễ hơn.
  • Các lần nạp code sau có thể update OTA thông qua Wifi vì ESPHome sẽ hỗ trợ giao thức này.
  • Trong trường hợp cắm ESP32 vào máy tính mà không nhận, các bạn cần cài đặt driver. Với bảng mạch ESP32-WROOM-32D mà mình dùng trong bài này, sử dụng chip giao tiếp CP2102, các bạn có thể tải tại trang driver CP210x của Silicon Labs

Trong giao diện ESPHome, các bạn tạo thiết bị mới bằng nút màu xanh lá góc dưới bên phải, chọn New Device Setup và đặt tên cho thiết bị.

Sau đó một bảng Install sẽ hiện ra, các bạn có thể chọn Skip this step.

Tiếp đến, có một bảng các bo mạch ESPHome hỗ trợ hiện ra, các bạn chọn ESP32.

Cuối cùng khi ESPHome hiện chúc mừng, các bạn tiếp tục Skip. Mục đích là để chúng ta vào Edit code bên trong.

Các bạn chọn Edit, sẽ thấy giao diện để các bạn sửa code (file yaml). Các bạn có thể tham khảo code của mình như bên dưới (Nội dung sau dấu # là để các bạn tự tùy biến hoặc giải thích ý nghĩa của dòng code). Hoặc có thể tham khảo code mẫu từ ESPHome tại đây: SPS30, SPG4xSCD30

esphome:
  name: esphome-air-monitor #tên tùy ý
  friendly_name: Air Monitor DIY1 #tên tùy ý
  min_version: 2025.11.0 
  name_add_mac_suffix: false

esp32:
  variant: esp32
  framework:
    type: esp-idf 

api:
  encryption:
    key: "8LHphH6Gg3Wz8n8ep9G3BXsgm6aqHRmRknBEwIa01TA=" #copy key của bạn do ESPHome tự tạo

ota:
  - platform: esphome

wifi:
  ssid: "Ten Wifi" #Điền tên Wifi của bạn  
  password: "password" #Điền pass wifi của bạn

  ap: #chức năng ap fallback
    ssid: "Air Monitor"
    password: "12341234"

captive_portal:

i2c:
  - id: bus_a
    sda: GPIO21
    scl: GPIO22
    scan: true
  
  - id: bus_b #tùy chọn nếu cần dùng thêm màn hình
    sda: GPIO16
    scl: GPIO17
    scan: true

sensor:
  # 1. Cảm biến CO2, Nhiệt độ, Độ ẩm (SCD30)
  - platform: scd30
    i2c_id: bus_a
    address: 0x61
    automatic_self_calibration: True
    update_interval: 5s #thời gian cập nhật dữ liệu
    temperature_offset: 2.2 #mức offset nhiệt độ

    co2:
      name: "SCD30 CO2"
      accuracy_decimals: 0
    temperature:
      name: "SCD30 Temperature"
      id: scd30_temp
      accuracy_decimals: 1
    humidity:
      name: "SCD30 Humidity"
      id: scd30_hum
      accuracy_decimals: 1
    

  # 2. Cảm biến VOC Index (SGP41)
  - platform: sgp4x
    i2c_id: bus_a
    address: 0x59
    update_interval: 5s
    
    voc:
      name: "SGP41 VOC Index"
      id: sgp41_voc
    nox:
      name: "SPG41 NOx Index"
      id: spg41_nox
    # Bù trừ chính xác, lấy dữ liệu từ SCD30
    compensation:
      temperature_source: scd30_temp
      humidity_source: scd30_hum
    

  # 3. Cảm biến Bụi mịn (SPS30)
  - platform: sps30
    id: "sps30_diy1"
    i2c_id: bus_a
    address: 0x69
    update_interval: 5s
    pm_1_0:
      name: "SPS30 PM1.0 W/C"
      accuracy_decimals: 0
      id: sps30_pm1
    pm_2_5:
      name: "SPS30 PM2.5 W/C"
      accuracy_decimals: 0
      id: sps30_pm25
    pm_10_0:
      name: "SPS30 PM10 W/C"
      accuracy_decimals: 0
      id: sps30_pm10
    
    pmc_1_0:
      name: "SPS30 PM1.0 N/C"
      accuracy_decimals: 0
    pmc_2_5:
      name: "SPS30 PM2.5 N/C"
      accuracy_decimals: 0
    pmc_10_0:
      name: "SPS30 PM10 N/C"
      accuracy_decimals: 0

#Cấu hình màn hình hiển thị
font:
  - file: "Arial.ttf" #các bạn upload file chung folder với ESPHome
    id: font_1
    size: 24

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    i2c_id: bus_a
    id: oled_1
    pages:
      - id: oled1page1
        lambda: |-
          if (id(scd30_temp).has_state()) {
            it.printf(0, 0, id(font_1), "T: %.1fC", id(scd30_temp).state);
          }
          if (id(scd30_hum).has_state()) {
            it.printf(0, 30, id(font_1), "H: %.1f%%", id(scd30_hum).state);
          }

      - id: oled1page2
        lambda: |-
          if (id(scd30_co2).has_state()) {
          it.printf(0, 0, id(font_1), "CO2:%.0f", id(scd30_co2).state);
          }
          if (id(sgp41_voc).has_state()) {
            it.printf(0, 30, id(font_1), "VOC:%.0f", id(sgp41_voc).state);
          }
  - platform: ssd1306_i2c
    model: "SSD1306 128x64"
    address: 0x3C
    i2c_id: bus_b
    id: oled_2
    pages:
      - id: oled2page1
        lambda: |-
          if (id(sps30_pm25).has_state()) {
            it.printf(0, 0, id(font_1), "PM2.5: %.0f", id(sps30_pm25).state);
          }
          if (id(sps30_pm10).has_state()) {
            it.printf(0, 30, id(font_1), "PM10: %.0f", id(sps30_pm10).state);
          }
#Ví dụ về việc lật trang
interval: 
  - interval: 6s # Thời gian chờ
    then:
      - display.page.show_next: oled_1

#Thêm nút ấn để cân chỉnh thủ công cảm biến CO2 và làm sạch cảm biến bụi

button:
  - platform: template
    name: "SCD30 Manual Calibration"
    entity_category: "config"
    on_press:
      then:
        - scd30.force_recalibration_with_reference:
            value: !lambda 'return id(co2_cal).state;'
  - platform: template
    name: "SPS30 fan clean"
    entity_category: "config"
    on_press:
      then:
        - sps30.start_fan_autoclean: sps30_diy1

number:
  - platform: template
    name: "CO2 calibration value"
    optimistic: true
    min_value: 350
    max_value: 4500
    step: 1
    id: co2_cal
    icon: "mdi:molecule-co2"
    entity_category: "config"

Một số lưu ý trong code của mình:

  • Cảm biến SCD30 CO2 thường sẽ báo nhiệt độ cao hơn bình thường do bản thân bảng mạch đo CO2 có thể sinh nhiệt khi đèn hồng ngoại hoạt động, hoặc khi bạn để gần các linh kiện sinh nhiệt khác, vì vậy sẽ cần có đoạn code temperature_offset: 2.2 tức là trừ đi 2.2 độ C. Ban đầu các bạn nên để offset = 0, để kiểm tra giá trị nhiệt độ của cảm biến rồi tìm ra con số offset hợp lý.
  • Trong đoạn code của SGP4x, sẽ có đoạn compensation để bù trừ nhiệt độ, lấy dữ liệu từ cảm biến SCD30, giúp tăng độ chính xác cho SGP4x.
  • Đoạn cuối mình có thêm 1 đoạn code để tạo các nút bấm trong Home Assistant để có thể cân chỉnh thủ công cảm biến CO2 và nút làm sạch cảm biến bụi.
  • Thời gian cập nhật dữ liệu mình đang để là 5s vì mình còn phải đo test nhiều thứ, còn nếu chỉ sử dụng cho gia đình, các bạn có thể để mức 60s (1 phút) hoặc 300s (5 phút) update data 1 lần là được.
  • Update: Khi cấu hình màn hình hiển thị, các bạn cần để file font chữ vào cùng thư mục của ESPHome trên thiết bị đang chạy ESPHome. Code trên mình sử dụng cho 2 màn hình, có cả dạng hiển thị cố định và dạng lật trang để các bạn tham khảo. Ngoài ra, còn có nhiều thứ để các bạn tùy biến được màn hình theo ý thích, ví dụ như tắt màn hình vào buổi đêm chẳng hạn…

Sau khi hoàn thiện code xong, các bạn ấn Save lại. Sẽ quay lại màn hình chính của ESPHome. Lúc này hãy chọn menu và ấn Validate, để ESPHome kiểm tra lại code của các bạn đã đúng chưa.

Nếu tất cả đã đúng, các bạn sẽ nhận được dòng xanh lá như hình, còn nếu sai, sẽ hiện màu đỏ và thông tin về dòng code bị sai.

Khi code đã đúng rồi, các bạn có thể cắm ESP32 vào và nạp code này vào ESP32 bằng nút Install. Khi cắm ESP32 vào máy, các bạn cần phải vào bootloader bằng cách nhấn giữ nút Boot và nhấn nút EN trên ESP32 để reboot vào chế độ bootloader.

Lần đầu nạp code sẽ phải cắm qua USB và có thể sẽ mất nhiều thời gian (có thể lên tới 15-20 phút tùy tốc độ mạng và tốc độ của thiết bị đang host ESPHome) vì ESPHome sẽ phải tải về khá nhiều thư viện và thực hiện compile code của chúng ta thành file software (file bin) để nạp vào ESP32, các bạn cứ kiên nhẫn trong lần đầu Install nhé.

Sau khi nạp xong code, các bạn sẽ thấy trạng thái của thiết bị trên ESPHome từ Offline sang Online. Về cơ bản như vậy là đã thành công. Giờ kể cả các bạn rút ESPHome ra khỏi máy tính và cắm nguồn độc lập, sau khi khởi động xong (sau vài giây) ESPHome cũng sẽ hiện Online, các bạn có thể nạp code hoặc xem Log qua Wifi (chức năng OTA)

Các bạn có thể ấn Logs để theo dõi trạng thái thiết bị. Những dòng màu tím thể hiện quá trình khởi động, các bạn sẽ nhìn thấy các cảm biến, tình trạng Wifi…

Cũng có thể thấy những dòng Logs màu xanh thể hiện việc gửi nhận dữ liệu giữa ESP32 và cảm biến.

Khi toàn bộ bảng mạch và cảm biến đã hoạt động. Các bạn chỉ cần vào Home Assistant là sẽ thấy hiện thiết bị ESPHome được phát hiện. Các bạn chỉ cần add vào Home Assistant là xong, có thể sẽ cần điền Encryption Key của ESPHome mà các bạn để trong code. Khi đó, các giá trị cảm biến và nút bấm sẽ hiện lên đầy đủ trong Home Assitant như các bạn đã cấu hình trong ESPHome.

Sau đó các bạn có thể tự tùy biến, add các thông số (entities) của cảm biến ra trang chủ Dashboard / Overview của Home Assistant là xong.

DIY máy đo chất lượng không khí chất lượng cao ngonboxe

Như vậy là đã có thể sử dụng chiếc máy đo chất lượng không khí DIY này rồi. Đó là những thứ cơ bản nhất về phần cứng và phần mềm để có thể tự DIY một chiếc máy đo chất lượng không khí. Mình chia sẻ để các bạn có thể tham khảo.

Tương lai, có thể mình sẽ tiếp tục nghiên cứu thêm để tăng tính thẩm mỹ cho chiếc máy, ví dụ như dùng mạch PCB hoặc có thêm một lớp vỏ đẹp đẽ. Mình sẽ tiếp tục cập nhật trên website và facebook của mình.

Nếu thấy nội dung bài viết hữu ích, hãy chia sẻ cho bạn bè và người thân. Đừng quên theo dõi Ngon Bổ Xẻ qua Facebook và Youtube để luôn cập nhật các nội dung mới nhất. Ngoài ra, mình cũng có lập Group FB chuyên chia sẻ các deal hời cho anh em về công nghệ, điện từ, gia dụng… các bạn cũng có thể tham gia nha. Một lần nữa, chân thành cám ơn các bạn và hẹn gặp lại trong những nội dung kế tiếp ❤️


Chia sẻ bài viết:

Long

Mình thường đánh giá chi tiết những món đồ mà mình đã sử dụng, phân tích nguyên lý hoạt động của các thiết bị và giải pháp của vấn đề, so sánh những thứ có thể đặt lên bàn cân và chia sẻ những kinh nghiệm cá nhân mà mình đã tích luỹ được

2 bình luận trong “DIY máy đo chất lượng không khí chất lượng cao tích hợp Home Assistant

  1. Xịn quá bác ơi. Em cũng thích món này.
    PS: xin hỏi thêm là có thể puclic được thông số này lên mạng internet không ạ. Giống như cách làm một điểm khí tượng. Với nó có thể tùy chỉnh để cho ra ngoài trời được không ạ

    1. Về việc cho ra ngoài trời, nếu như bạn để trong hiên nhà, hoặc có mái che ở trên thì đơn giản, chỉ cần làm 1 cái case che chắn tương đối là ok rồi.

      Còn chuyện public thông số lên mạng internet cũng hoàn toàn có thể làm được, tuy nhiên bạn sẽ cần kết hợp thêm một vài kĩ thuật nữa tùy vào việc muốn public thông số thế nào và public đến đâu nha

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *