esp32 micropython连接继电器,天猫精灵控制继电器熄灭灯;连接控制舵机;d11温湿度传感器

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
com3v3电源引脚
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)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loong_XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值