背景

由于巴塞罗那的治安不算很好,日程规律的学生又容易成为入室行窃的目标,于是想给房门装上门磁传感器。从 Tasmota 支持设备列表中找了一个合适的型号 “TY01”,从 AliExpress 以 €5.76 包邮购入。

硬件

拆开传感器看到 Wi-Fi 模块上印着 “CB3S”,一查又是 Tuya 基于 Beken BK7231 系列 ARM SoC 的模块,再次踩雷。

before

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

wifi-module-removed

清理焊盘后换上一片 ESP-12F,然后焊上需要的几条线:

  1. 黑色:GND,连接至 PIN9 或电池座负极
  2. 白色:Vcc(+3.3 V),连接至 PIN8
  3. 灰色:UART RxD,连接至 PIN15
  4. 紫色:UART TxD,连接至 PIN16

另外短接 PIN12(GPIO0)和 PIN9 或屏蔽罩(GND),再用镊子短接 PIN1(RST)和屏蔽罩后释放,让 ESP 重置后进入烧写模式。

testing

起初使用原来的 GPIO7 作为输入引脚,可是由于在 ESP8266 模块上这个脚连着内部的闪存,会导致无法刷写程序,只好将干簧管飞线到一个空闲 GPIO(如 GPIO5),并将其通往 GPIO7 的线路割断。

另外 Tuya CB3S 模块运行不需要上拉 ENABLE 脚,PCB 上并没有相关电路,还得自己焊一个上拉电阻到 Vcc,最后完成如图:

done

软件

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Ω 的即可。

reed-pulldown-resistor

0 Comments

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注