1、esp32 连接继电器
1)低压侧:vcc接esp32电源;gnd接esp32gnd,in接esp32 gpio引脚来控制继电器
2)高压侧:nc是常闭,com是当是负极;NO是常开,可以通过in来控制闭合通电
高压侧一般需要单独的电源供电工作,独立的一套,与低压隔离
继电器
天猫精灵控制继电器熄灭灯
天猫精灵控制继电器熄灭灯
参考(连接天猫精灵):https://blog.csdn.net/weixin_42357472/article/details/126311113?spm=1001.2014.3001.5502
连接走线:
低压侧:
继电器 | esp32 |
---|---|
vcc电源口 | vic 电源引脚 |
gnd口 | gnd引脚 |
in口 | d2引脚(板子自有灯光那个) |
高压侧(接用esp32主要是引入作为电源):
红灯 | esp32 |
---|---|
com | 3v3电源引脚 |
on 接红灯 | |
gnd接红灯gnd |
2、连接控制舵机,型号SG90
***注意点,红色电线一定接在3v,如果接在vic可以变化的电压5v这,程序运行会异常或运行卡死, connect lost EOF或Device is busy or does not respond. Your options
舵机
连接:
舵机 | esp32 |
---|---|
GND 黑褐色 | gnd引脚 |
VCC:红色 | 3v3电压引脚 |
数据线:橙黄色 | d15 引脚 |
代码:
from machine import Pin, PWM
import time
# 使用引脚是D5
s = PWM(Pin(15,Pin.OUT))
s.freq(50)
angle = 0
flag = 0
# 用Servo实现占空比与角度的转换
# angle可以是0~180,也可以是0~-180
def Servo(servo, angle):
#value =int(((angle) / 180*2 + 0.5) / 20 * 1023)
value = int((angle-0)*(125-25)/(180-0) + 25)
print("value:",value)
s.duty(value)
#while True:
# 调用Servo函数
#Servo(s, angle)
#time.sleep(1)
while True:
Servo(s, 180)
time.sleep(1)
Servo(s, 0)
time.sleep(1)
#0-->180
#aa=[0,30,60,90,120,150,180]
#for i in aa[1:]:
#print(i)
#Servo(s, i)
#time.sleep(1)
#180-->0
#for i in aa[::-1][1:]:
#print(i)
#Servo(s, i)
#time.sleep(1)
天猫精灵控制就在回调函数里增加几行代码,灯开关位置增加舵机控制逻辑代码:
from machine import Pin,PWM
import utime
s = PWM(Pin(15,Pin.OUT))
s.freq(50)
def Servo(angle):
#value =int(((angle) / 180*2 + 0.5) / 20 * 1023)
value = int((angle-0)*(125-25)/(180-0) + 25)
print("value:",value)
s.duty(value)
Servo(0)
def aligeniePowerState(state):
global oState
print("#"*8,state)
BLINKER_LOG('need set power state: ', state)
if state == BLINKER_CMD_ON:
p2.value(1)
Servo(180)
utime.sleep(1)
BlinkerAliGenie.powerState("on")
BlinkerAliGenie.print()
oState = 'on'
print(BLINKER_CMD_ON,"aaaaaaa")
elif state == BLINKER_CMD_OFF:
p2.value(0)
Servo(0)
utime.sleep(1)
BlinkerAliGenie.powerState("off")
BlinkerAliGenie.print()
oState = 'off'
print(BLINKER_CMD_OFF,"sssssss")
3、d11温湿度传感器
连接:
温湿度传感器 | esp32 |
---|---|
s这边第一个 | d15引脚 |
s起第二个 | 3v3电源引脚 |
s这起第三个 | gnd引脚 |
代码:
import machine
import dht, utime
d = dht.DHT11(machine.Pin(15))
while True:
d.measure()
temp = d.temperature() # eg. 23 (°C)
hum = d.humidity() # eg. 41 (% RH)
print("温度",temp,"湿度:",hum)
utime.sleep(1)
Blinker app显示温度湿度
代码:
import machine
import dht, utime
temp = 0
hum = 0
number2 = BlinkerNumber('num-jbe')
number3 = BlinkerNumber('num-f9t')
d = dht.DHT11(Pin(15))
def heartbeat_callback():
global temp,hum
d.measure()
temp = d.temperature() # eg. 23 (°C)
hum = d.humidity() # eg. 41 (% RH)
print("温度",temp,"湿度:",hum)
number2.print(temp)
number3.print(hum)
Blinker.attachHeartbeat(heartbeat_callback)