MENU

【教程】使用舵机控制普通单控86开关

December 23, 2018 • Read: 24 • 技术,安全,Home Assistant阅读设置

最近把学校的普通86开关加了一个舵机这个样就可以实现手机控制开关,也可以手动控制并且加入到了Home Assistant。本来是装在门上来拉门把手的结果发现拉不动,于是就把它装在了开关上。

准备:

1.Arduino IDE
2.ESP8266 开发板
3.SG90 9G克舵机
4.固件代码(已上传附件,文章末尾)

具体步骤:

1.打开固件Servo,安装所需的库修改相关WiFi和MQTT地址

QQ截图20181223182700.png

2.选择合适的开发板和参数
QQ截图20181223182941.png

3.清空ESP8266里面原有固件然后上传
4.上传完固件打开串口监视器,按一下rst键重启8266就会看见连接了WiFi和MQTT
QQ截图20181223215036.png

5.打开MQTT调试工具,我这安装的是EMQTT自带调试,填入自己的MQTT的IP地址、用户名和密码,端口默认不要改如果你用其他调试工具的话大概步骤也差不多
QQ截图20181223215657.png

6.发送消息,主题是刚才编译固件是的主题,默认是servo消息是是控制舵机角度的百分比(1———100)
QQ截图20181223215718.png

7.用热熔胶把舵机粘在开关边上,接线:棕色————GND 红色————uv(5V) 黄色—————D4(GPIO2)下面就自己慢慢的寻找合适的角度,一共有三个角度我这个是25%、50%、75%(第一个是开,第二个是复位,第三个是关)
6FE0EF16D91126754172F53441D7A034.JPG
IMG_0740.JPG

8.加入Home Assistant,编辑configuration.yaml

light:
  - platform: mqtt
    name: door 
    state_topic: "servo"
    command_topic: "servo"
    payload_on: "75"
    payload_off: "25"
    qos: 1
    retain: false  //注意这边是false,否者重启ESP8266后会恢复到25%或者75%的位置可能会烧坏舵机

9.设置自动化,防止烧坏舵机让舵机复位(悬空)

####################################舵机复位############################################
- alias: '7'
  initial_state: true
  hide_entity: true
  trigger:
   - platform: state
     entity_id: light.door
     from: 'off'
     to: 'on'
  action: 
   - delay:
      seconds: 0.5 
   - service: mqtt.publish
     data:
      topic: "servo"
      payload: '50'
     
     
- alias: '8'  
  initial_state: true
  hide_entity: true
  trigger:
   - platform: state
     entity_id: light.door
     from: 'on'
     to: 'off'
  action:
   - delay:
      seconds: 0.5 
   - service: mqtt.publish
     data:
      topic: "servo"
      payload: '50'

另外再发一个通过实际度数控制的(给有强迫症准备的),第一个是通过百分比控制的,大概方法都一样,上传固件后会发出一个myAP的WiFi连上后设置WiFi信息等待重启,发送的主题和消息不一样(可以在固件中改),默认主题是esp8266_in,消息是P舵机旋转90度,如有必要,使用发布有效负载中的Dxxx和Exxx参数调整持续时间和角度,例如PD002E120,在120度下按住2秒钟。
Servo1.zip(百分比控制)
Servo2.zip(实际度数控制)

Last Modified: January 9, 2019