/

舵机控制普通单控 86 开关

servo_cover

小弟想将灯泡接入 HA,看到有大大通过舵机控制灯泡开关(参见这里),感觉思路很赞,那个大大是通过 Arduino 写固件,小弟觉得想用 ESPHome 实现,代码简单、有拓展性(可接入其他传感器之类的),尝试一番成功接入。

材料准备

1、ESP8266 开发板

2、SG90 9g 克舵机(90 度)

3、公对母杜邦线

4、公对母 USB 延长线(方便接电源)

5、90 度直角固定支架(或其他直角支架)

刷入固件

确保安装好 ESPHome,HASS 可以直接通过插件安装。打开 ESPHome ,新建或打开已经或在原有设备新增以下代码:

ESP8266 参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
api:
services:
- service: control_servo
variables:
level: float
then:
- servo.write:
id: my_servo
level: !lambda 'return level / 100.0;'

servo:
- id: my_servo
output: pwm_output

output:
- platform: esp8266_pwm
id: pwm_output
pin: D7
frequency: 50 Hz

switch:
- platform: gpio
name: "switch"
pin: D7
on_turn_on:
- servo.write:
id: my_servo
level: +100.0%
- delay: 0.5s
- servo.write:
id: my_servo
level: 0%
on_turn_off:
- servo.write:
id: my_servo
level: -100.0%
- delay: 0.5s
- servo.write:
id: my_servo
level: 0%

代码执行命令如下:按下「开」,正旋转 70%,500ms 之后回到初始位置;按下「关」,负旋转 70%,500ms 之后回到初始位置。注意角度可以按照实际情况修改。

在 Home Assistant 可以自动发现 ESPHome 设备,添加即可。

连线

首先将舵机与 ESP8266 连线,

舵机 ESP8266
红色 3.3V
棕色 GND
黄色 D7

将舵机、直角支架放在 86 开关上确定各自的距离,注意舵机旋转方向,用热熔胶粘在直角支架上,直角支架粘在墙上,舵机与开关可以留一定距离,这样不影响手动开关。

servo_pic1

servo_pic2

距离可参考小弟的:

servo_distance

粘上后最好等待 24 小时热熔胶固定再使用。