S5in1

简介

PCB_3D WALL 玩智能家居有一段时间了,但是一直没接触传感器。逛Hassbian论坛偶然接触到了ESPESPHome被惊喜到了,真的太好用了,如此多的传感器只需要简单配置就能接入HA。玩人体红外传感器时发现菲涅尔透镜下还有很多空间,突发奇想,为何不放进去更多和光有关的传感器,再把他们塞进常见的86型人体传感器里,这样既实用又美观,并且菲涅尔透镜对红外发射和接收应该都有很好的增强效果。于是试着把人体红外传感器(检测是否有人)、红外发射传感器(遥控家电)、红外接收传感器(方便获取遥控器编码)、光敏电阻(获取亮度)、和LED灯(提示警告)。从淘宝买来了所有东西。试验了好几方案,最终还是选择了自己画原理图和PCB方案保证不会错和稳定,最终有了这个项目。本项目材料都是从淘宝购买, 型号及链接我会放在下方。

目录

硬件

材料清单

该清单的数量是DIY一个86S5in1所需要的,但实际购买时很多原件都是多个的价格没法单个买(比如电阻,二极管等),如果一次性DIY多个会更加划算,但实际只DIY一个的价格也不到40RMB(清单不包含焊接工具,刷机工具,等辅助工具价格),还是很便宜的

名称 型号 数量 PCB标注 链接
3MM/F3 白发粉红 发光二极管 颜色很多 1 LED 购买
单排针 间距2.54MM 1 * 40P 1 5V GND RX TX 购买
VS/HX1838/PC638 红外接收头 1 U3 购买
3MM 940nm红外发射管 2 U1 / U2 购买
光敏电阻5516 5516 1 R1 购买
微型人体红外感应模块 AS312 1 CGQ1 购买
AMS1117-3.3 稳压电源芯片降压IC AMS1117-3.3 1 U6 购买
ESP-12S模块 1 ESP12S 购买
贴片4 * 4 * 1.5/3.0MM 微动/按钮开关 4 * 4 * 1.5 1 SW 购买
贴片 S9014 J6/1F/T04/L6 100MA 三极管 SOT-23 1 Q1 购买
0603贴片电阻 1MΩ 1兆欧 1/10W 精度±1% 1 R2 购买
315MHZ/433MHZ弹簧天线 信号不佳可买 1 - 购买
40P彩排杜邦线 母对母 21CM 1 - 购买
220V转5V700mA电源模块 5V700mA 1 - 购买
86型人体感应开关面板 1 - 购买

PCB

自己是现学现用的PCB设计,尝试过AD但太复杂了,这种简单的模块就用国产立创EDA了,非常方便,设计到打样一条龙,节省时间并且这个项目打样只要5RMB。项目原理图和PCBEDA文件夹,导入打样即可,也可以修改后再打,因为自己也就学了两天而已,有些设计不合理的地方可以告诉我

焊接

没有热风枪,我用电烙铁焊的。需要注意人体传感器是买的AS312模块,自己对人体传感器电路设计也不是很懂,所有直接买了这个模块,然后万用表测了下电路,直接挪板到DIYPCB上。人体传感器模块怎么挪可以看下图,其他参考材料清单PCB标注 PIR

软件

Home Assistant就不用多介绍了,模块系统是ESPHome,自动化用的Node-RED(不做介绍,配合Home Assistant很好用),都是Docker安装,个人习惯Docker数据或配置都喜欢放/opt目录,下面是docker-compose.yaml

  homeassistant:
    image: homeassistant/home-assistant:stable
    container_name: homeassistant
    volumes:
      - /etc/localtime:/etc/localtime
      - /opt/homeassistant/conf:/config
    environment:
      - TZ=Asia/Shanghai
    network_mode: host
    restart: always
    
  esphome:
    image: esphome/esphome:latest
    container_name: esphome
    volumes:
      - /etc/localtime:/etc/localtime
      - /opt/esphome/conf:/config
    environment:
      - TZ=Asia/Shanghai
    network_mode: host
    restart: always

ESPHome

主要有一下几个配置:1.红外接收2.红外发送3.亮度4.人体传感器5.LED指示灯,替换##为自己的,然后浏览器打开ESPHome( 默认端口6052,一般是http://192.168.x.x:6052 )新建一个自己的配置例如名称为esp12s_demo,然后其他的随便填,保存后点击EDIT,把刚新增的配置直接替换为下方自己的配置,再点击保存,关闭后点击配置右上角三个点,点击Compile,开始编辑固件,编译结束后可以点击,DOWNLOAD BINARY下载刚编辑的固件,用杜邦线将模块的5VGNDRXTX分别连接到CH341A(其他编程器也可以,淘宝几块钱一个)编程器上对应的上面(注意RXTX需要掉换了接就是模块的RX接编程器TX,模块的TX接编程器RX),编程器调整套TTL挡位,然后按住模块的微动开关插入电脑USB,打开ESPHome刷机工具,选择好端口和刚下载的固件,点击刷机按钮开始刷机,刷机完成后ESPHome管理界面能识别到上线的模块变成绿色。也可以打开模块对应的IP地址(可以在ESPHome管理界面LOG里中看到实际IP),并测试五个传感器是否正常

esphome:
  name: esp12s_demo
  platform: ESP8266
  board: esp12e

wifi:
  ssid: "#WIFI名称#"
  password: "#WIFI密码#"

captive_portal:

logger:

api:
  password: '#api密码#'
  services:
    - service: send_raw_command
      variables:
        command: int[]
      then:
        - remote_transmitter.transmit_raw:
            code: !lambda 'return command;'

ota:
  password: '#ota密码#'

web_server:
  port: 80
  
# 1.红外接收
remote_receiver:
  pin:
    number: 14
    inverted: yes
  dump: 
    raw

# 2.红外发送
remote_transmitter:
  pin: 4
  carrier_duty_percent: 50%

# 3.亮度
sensor:
  - platform: adc
    pin: 17
    name: "esp12s_demo_brightness"
    update_interval: 60s
    unit_of_measurement: "%"
    icon: "mdi:brightness-6"
    accuracy_decimals: 0
    filters:
      - lambda: |-
            return ( 1 - x ) * 100.0;

# 4.人体传感器
binary_sensor:
  - platform: gpio
    pin: 13
    name: "esp12s_demo_pir"
    device_class: motion
    filters:
    - delayed_on: 5s

switch:
  # 5.LED指示灯
  - platform: gpio
    name: "esp12s_demo_led"
    pin:
      number: 12
      inverted: yes
  # 6.调用(2.红外发送)来发送(1.红外接收)的RAW数据实现红外万能遥控
  - platform: template
    name: esp12s_demo_ac_on
    turn_on_action:
      - remote_transmitter.transmit_raw:
          carrier_frequency: 38kHz
          code: [#红外接收到的raw码#]
  - platform: template
    name: esp12s_demo_aux_off
    turn_on_action:
      - remote_transmitter.transmit_raw:
          carrier_frequency: 38kHz
          code: [#红外接收到的raw码#]

HASS

打卡HA管理界面(默认端口8123),点击配置,集成,添加集成,搜ESPHome,让后输入刚上线的模块IP和之前配置的#api密码#,就可以接入模块了,让后Node-REDHomeKit也就很简单接入了

DIY

模块没啥问题下一步就可以给模块换上外壳了(86型人体感应开关面板),直接看图和视频了

步骤

1、PCB打样 -> 2、购买原件 -> 3、焊接 -> 4、编译固件 -> 5、刷机 -> 6、安装外壳 -> 7、测试 -> 8、接入HASS、HomeKit -> 9、万能遥控

1、PCB打样

PCB打样

2、购买原件

购买原件

3、焊接

视频

焊接

4、编译固件

视频

5、刷机

视频

6、安装外壳

HASS_01 HASS_02

7、测试

视频

8、接入HASS、HomeKit

HASS_01 HASS_02 HASS_03 HASS_04

9、万能遥控

需要配合SmartIR(有空更新)

最后

这个模块自己也是从最基础的一个个传感器慢慢测试过来的,最终形成了今天的样子。其实还有很多改进的地方,比如PCB长度应该再短0.5mm(有点长不太好塞进壳),ESP12S其实可以换成ESP32模块(例如ESP32-WROOM-32UE),更小,可更换天线,且多了蓝牙。不过蓝牙对我没啥用,并且贵了一点,所以最后还是选择了ESP12S,感兴趣的小伙伴可以自行修改原理图和PCB,有其他好玩的传感器能塞进去也欢迎告诉我