背景
由于巴塞罗那的治安不算很好,日程规律的学生又容易成为入室行窃的目标,于是想给房门装上门磁传感器。从 Tasmota 支持设备列表中找了一个合适的型号 “TY01”,从 AliExpress 以 €5.76 包邮购入。
硬件
拆开传感器看到 Wi-Fi 模块上印着 “CB3S”,一查又是 Tuya 基于 Beken BK7231 系列 ARM SoC 的模块,再次踩雷。

还好这个 PCB 比较小又容易拆,在电热灶台上靠近烤一会儿就能把模块轻松解焊:

清理焊盘后换上一片 ESP-12F,然后焊上需要的几条线:
- 黑色:GND,连接至 PIN9 或电池座负极
- 白色:Vcc(+3.3 V),连接至 PIN8
- 灰色:UART RxD,连接至 PIN15
- 紫色:UART TxD,连接至 PIN16
另外短接 PIN12(GPIO0)和 PIN9 或屏蔽罩(GND),再用镊子短接 PIN1(RST)和屏蔽罩后释放,让 ESP 重置后进入烧写模式。

起初使用原来的 GPIO7 作为输入引脚,可是由于在 ESP8266 模块上这个脚连着内部的闪存,会导致无法刷写程序,只好将干簧管飞线到一个空闲 GPIO(如 GPIO5),并将其通往 GPIO7 的线路割断。
另外 Tuya CB3S 模块运行不需要上拉 ENABLE 脚,PCB 上并没有相关电路,还得自己焊一个上拉电阻到 Vcc,最后完成如图:

软件
ESPHome 配置示例:
substitutions:
device_name: '门磁'
esphome:
name: door-sensor
comment: '客厅门磁'
esp8266:
board: esp12e
restore_from_flash: false
preferences:
flash_write_interval: 24h
logger:
level: WARN
# baud_rate: 115200
wifi:
fast_connect: true
networks:
- ssid: !secret wifi_ssid
bssid: !secret wifi_bssid
password: !secret wifi_password
domain: !secret domain_name
api:
ota:
password: !secret ota_password
button:
# 硬重启
- platform: restart
id: restart_button
name: '重启 ${device_name}'
entity_category: diagnostic
light:
- platform: status_led # 把自带 LED 作为状态指示灯
id: led
pin: 13
internal: true
binary_sensor:
- platform: gpio
id: living_room_door
name: '客厅门'
pin:
number: 5 # 连至干簧管
inverted: true # 反转 HASS 状态(关门为 OFF,开门为 ON)
device_class: door # 指定 HASS 设备类(使 OFF/ON => 关门/开门)
on_state:
then:
- light.turn_on: # 开关门时闪一下 LED
id: led
flash_length: 500ms
publish_initial_state: true
测试之后传感器无法正常工作,分析电路发现干簧管下拉电阻过大(10 MΩ),把它换成 10 kΩ 的即可。

0 Comments