Search models, users, collections, and posts

Sense S5 - mmWave & Air Quality Esphome Sensor

Print Profile(1)

All
A1 mini
P2S
P1S
H2S
P1P
X1 Carbon
X1
H2D Pro
H2D
A1
X1E
H2C
X2D
A2L

0.2mm layer, 2 walls, 15% infill
0.2mm layer, 2 walls, 15% infill
Designer
54 min
1 plate

Open in Bambu Studio
Boost
2
7
3
0
2
2
Released 

Description

Here is my newest version of my Esphome mmWave based on esp32c3.


If you need the Esphome code, send me a message (I got a busy week right now so cant add it in the description right now)
 

Quick Guide Update

 

Info about project


Compact Air quality and presence sensor, Only temperature reading is inaccurate due to esp32c3 heat.

ENS160 sensor has a bootup time of a couple hours, so wait a day before thinking its broken.

Bluetooth Proxy icons, and entity names are allready set up for you.

Get an ESP32c3 board with a .8mm thick pcb, and get a WIFI fixed version that has grounded vias next to the antenna component. ive provided a link that should be thin enough as the original seller i bought mine from stopped selling them.

I used a permanent marker to make the back of the esp32c3 black.

Everything should snap in

 

Components used

esphome:
 name: sense-s5-mthab >> PUTINYOURCHOSENNAMESPHOME
 friendly_name: Sense S5 MTHAB >> NAMETHATSHOWSUPINHOMEASSISTANT

esp32:
 board: esp32-c3-devkitm-1
 variant: esp32c3
 framework:
   type: esp-idf

logger:
 level: WARN

api:
 encryption:
   key: "PUTINYOURKEYAUTOGENERATEDESPHOME"

ota:
 - platform: esphome
   password: "PUTINYOURPASSWORDAUTOGENERATEDESPHOME"

wifi:
 ssid: !secret wifi_ssid
 password: !secret wifi_password
 manual_ip:
   static_ip: 192.168.0.99 >>>>PUTINYOUSTATICIP
   gateway: 192.168.0.1
   subnet: 255.255.255.0
 ap:
   ssid: "Sense S5 Offline"
   password: "PUTINARANDOMRECOVERYWIFIPASSWORD"

time:

captive_portal:

esp32_ble_tracker:
 scan_parameters:
   active: true
bluetooth_proxy:
 active: true

i2c:
 sda: GPIO8
 scl: GPIO9
 scan: true
 id: bus_a

uart:
 id: ld2410_uart
 tx_pin: GPIO7
 rx_pin: GPIO6
 baud_rate: 256000

ld2410:
 id: ld2410_sensor
 uart_id: ld2410_uart

light:
 - platform: esp32_rmt_led_strip
   rgb_order: GRB
   pin: GPIO10
   num_leds: 1
   chipset: SK6812
   is_rgbw: true
   name: "Indicator Light"
   icon: "mdi:star-four-points-circle-outline" 
   id: indicator_light

sensor:
 - platform: internal_temperature
   name: "Internal Chip Temperature"
   icon: "mdi:temperature-celsius"
 
 - platform: aht10
   variant: AHT20
   update_interval: 30s
   i2c_id: bus_a
   temperature:
     name: "Sensor Temperature"
     id: room_temp
     icon: "mdi:thermostat"
   humidity:
     name: "Room Humidity"
     id: room_humidity
     icon: "mdi:percent-circle-outline"

 - platform: ens160_i2c
   i2c_id: bus_a
   update_interval: 30s
   address: 0x53
   eco2:
     name: "Estimated CO2"
     icon: "mdi:circle-double"
   tvoc:
     name: "Total VOC"
     icon: "mdi:image-filter-tilt-shift"
   aqi:
     name: "Air Quality Index"
     icon: "mdi:leaf-circle-outline"
   compensation:
     temperature: room_temp
     humidity: room_humidity

 - platform: ld2410
   moving_distance:
     name: "Distance to Moving Object"
     icon: "mdi:account-reactivate-outline" 
     unit_of_measurement: "cm"
   still_distance:
     name: "Distance to Static Object"
     icon: "mdi:account-circle-outline" 
     unit_of_measurement: "cm"
   moving_energy:
     name: "Energy of Moving Object"
     icon: "mdi:account-reactivate-outline" 
     unit_of_measurement: "%"
   still_energy:
     name: "Energy of Static Object"
     icon: "mdi:account-circle-outline" 
     unit_of_measurement: "%"
   detection_distance:
     name: "Overall Detection Distance"
     icon: "mdi:contactless-payment-circle-outline" 
     unit_of_measurement: "cm"

binary_sensor:
 - platform: ld2410
   has_target:
     name: "Target Detected"
     id: target_detected
     icon: "mdi:circle-outline"
   has_moving_target:
     name: "Moving Target Detected"
     icon: "mdi:circle-outline"
   has_still_target:
     name: "Still Target Detected"
     icon: "mdi:circle-outline"

 - platform: gpio
   pin:
     number: GPIO0
     mode: INPUT_PULLUP
     inverted: true
   name: "Reset Button"
   internal: true
   on_click:
     min_length: 6s
     max_length: 10s
     then:
       - logger.log: "Long press → factory reset WiFi + preferences"
       - button.press: wifi_reset_button

text_sensor:
 - platform: ld2410
   version:
     name: "LD2410 Firmware Version"
     icon: "mdi:arrow-up-bold-circle-outline"
   mac_address:
     name: "LD2410 MAC Address"
     icon: "mdi:information-variant-circle-outline"

button:
 - platform: ld2410
   restart:
     name: "Restart mmWave Sensor"
     icon: "mdi:reload" 
   
 - platform: ld2410
   factory_reset:
     name: "Factory Reset mmWave Sensor"
     icon: "mdi:cog-clockwise"
     
 - platform: factory_reset
   id: wifi_reset_button
   internal: true  # Hides it from Home Assistant dashboard (recommended)

switch:
 - platform: ld2410
   engineering_mode:
     name: "Config Mode"
     icon: "mdi:progress-wrench"
   bluetooth:
     name: "mmWave Bluetooth"
     icon: "mdi:swap-horizontal-circle-outline"

select:
 - platform: ld2410
   distance_resolution:
     name: "Distance resolution"
     icon: "mdi:radius-outline"
   baud_rate:
     name: "Baud Rate"
     icon: "mdi:ProgressUpload"
   light_function:
     name: "Light Function"
     icon: "mdi:LightbulbQuestion"

 

Comment & Rating (3)

(0/1000)

I am new to ESP and would really enjoy a list of the parts you used for this project and the program.
The designer has replied
designer
1
Reply
i used an esp32c3 thin pcb version, make sure too look for a version with the wifi fix, theres info about this online, i used an sk6812b 5v adressable led, a ENS160+AHT21 board, an ld2410B (B version for bluetooth, its really handy for calibration using the HLK radar app), and an old usb cable. everything should press fit in there. i used thin silicone coated wire to solder it together, but its a microsoldering job.
0
Reply
actually ive added a quick update to the description for you, let me know if you run into issues, prefferrably DM if thats possible
0
Reply
No more

License

This user content is licensed under the MakerWorld Exclusive License.

You may create derivative works based on this object, provided that all such derivative works are published exclusively on the MakerWorld platform and include proper attribution to the original creator. You may not share, upload, host, distribute, or publish this object—or any derivative work of this object—on any other digital platform, marketplace, or distribution channel. Commercial use of this object and any derivative works is strictly prohibited. This includes, but is not limited to, selling, renting, sublicensing, or using the object in any context in which you receive monetary compensation or other financial benefits.