使用Blinker控制esp01s Relay继电器模块

一、ESP-01s和ESP-01区别

ESP8266-01简称ESP-01;ESP8266-01s简称ESP-01s。

外观区别

  1. ESP01模块上电和信号传输在天线区域右下角有2个LED灯,红色LED上电的时候闪烁,串口通讯的时候蓝色LED闪烁;ESP01s整个模块上只有一个蓝色LED,上电和串口通讯都是蓝色LED闪烁。如图左边是ESP01s,右边是ESP01(图片来源https://www.cnblogs.com/easyidea/p/11525197.htm)
    在这里插入图片描述
  2. ESP01s模块背面有引脚说明,ESP01背面没有。
    在这里插入图片描述

电路区别

ESP01s内部电路相较于ESP01做了优化,

  • LED灯的管脚发生变化,由ESP01的TXD0变成ESP01s的GPIO2引脚;
  • ESP01s模块的IO0、RST、EN引脚上加了上拉电阻,也就是说在连接了3v3引脚后这三个引脚也自动连接上高电平,无需再EN引脚上外接高电平。
    在这里插入图片描述

二、ESP-01s引脚

管脚示意图

在这里插入图片描述

管脚功能定义

在这里插入图片描述

电路原理

在这里插入图片描述

三、控制esp01s Relay

具体arduino IDE配置看前边使用arduion IDE开发ESP8266,我是使用点灯科技Blinker来远程控制ESP01s的继电器模块。

安装blinker arduino库

  1. 从点灯科技官网下blinker arduino库https://diandeng.tech/dev,下载下来是个.ZIP格式的压缩包,打开arduion IDE导入该压缩包。
    在这里插入图片描述
  2. Arduino IDE打开:项目-加载库-添加.ZIP库知道刚刚下载的库导入(另一种方法是直接放到arduino IDE软件下载的libraries文件夹下,进入IDE文件-示例-Blinker
  3. 在这里插入图片描述

申请Secret Key

  1. 下载安装blinker APP,从GIthub上下载https://github.com/blinker-iot/app-release/releases或者从手机应用商店搜blinker下载我这里用小米的应用商店没有搜到
  2. 进入App没有账号先注册一个然后进入点击右上角的+,选择独立设备网络接入随便选择一个通信服务商申请一个密钥复制保存留用。如果忘记了可以进入APP后点击左上角三条横线那进入侧边菜单栏选择设备管理点击已经申请的设备就能看见密钥。(免费的最多可以申请五个设备的密钥)
3. 申请完后进入页面会有向导页,跟着导向页提示载入示例就可以。

Demo控制继电器通断

根据说明书我们可以看到ESP01s芯片通过GPIO0引脚控制的继电器工作,且是高电平有效。
在这里插入图片描述
在这里插入图片描述
其中COM是公共端,NC常闭触点,NO常开触点,当GPIO0输出为高电平的时候NC常闭触点就打开,而NO常开触点关闭。

#define BLINKER_WIFI //以WIFI方式接入,BLINKER_BLE以蓝牙方式接入
#include <Blinker.h>
//配置wifi联网模块
char auth[] = "Blinker中申请的密钥";
char ssid[] = "WIFI名字";
char pswd[] = "WIFI密码";
int GPIO = 0;
BlinkerButton Button1("btn-abc");//新建组件和Blinker app上的数据键名一样
// 按下按键就会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(GPIO, HIGH);
    Blinker.delay(500);//操作延时
}
void setup() {
    // 初始化串口
    Serial.begin(115200);
    // 初始化控制继电器的GPIO引脚
    pinMode(GPIO, OUTPUT);
    digitalWrite(GPIO, LOW);//低电平默认继电器关闭
    // 初始化WIFI设置
    Blinker.begin(auth, ssid, pswd);
   //数据管理,当收到指令的时候会调用该回调函数
    Button1.attach(button1_callback);
}
//让程序一直运行
void loop() {
    Blinker.run();
}

 
 
  • 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

四、程序烧录

在arduino IDE中写完程序后,经过编译没有问题后直接上传烧录,接线引脚如下:

  • 3V3——3V3
  • GND——GND
  • RX——TXD
  • TX——RXD
  • IO0——GND(烧录下载模式必须使得IO0引脚处于低电平,接地)
    在这里插入图片描述
    在这里插入图片描述

参考

esp-01与esp-01s的区别 ESP8288-01S与ESP8288-01的区别
详解ESP8266 ESP-01SRealy继电器模块天猫精灵语音控制实现
WIFI模块ESP8266-01S
点灯科技的官方文档

    </div>
<think>好的,我现在需要帮助用户了解如何在ESP32-C3上控制继电器,并提供教程和示例代码。首先,我需要整理已有的引用内容,看看哪些信息可以直接使用。 用户提供的引用中有四个相关的引用。[^1]提到ESP32-C3基于Arduino框架使用Blinker控制10路开关或继电器组,这可能涉及使用Blinker库和Arduino代码。[^2]讨论了上电后50ms内控制GPIO输出的流程,这可能对继电器的初始化时序有帮助。[^3]详细说明了继电器的引脚连接,特别是VCC、GND和IN信号线连接到GPIO22,这应该是硬件连接的基础。[^4]则涉及智能插座的嵌入式架构,可能提供软件分层的参考,比如HAL层和BSP层的代码示例。 首先,用户需要的是控制继电器的教程和代码,所以应该从硬件连接开始。根据引用,继电器有三个引脚:VCC接电源,GND接地,IN接ESP32的GPIO22。需要确认电源电压是否匹配,避免损坏继电器模块,通常继电器可能需要5V或3.3V,而ESP32-C3的GPIO输出是3.3V,可能需要逻辑电平转换,但很多继电器模块内置光耦,可以直接用3.3V控制。 接下来是软件部分。用户可能熟悉Arduino框架,引用[^1]和都提到了Arduino和分层架构。需要给出简单的GPIO控制代码,比如设置引脚为输出,然后高低电平控制继电器开闭。可能还需要提到延时、继电器触发方式(高电平或低电平有效),这取决于具体继电器模块的规格。 然后,考虑到引用[^2]中提到的上电后快速控制GPIO,可能在初始化时需要尽快设置引脚模式,避免继电器上电瞬间的误动作。这时候可能需要配置GPIO在系统启动时立即初始化,确保稳定性。 另外,引用中的HAL层示例代码可能对软件结构有帮助,比如抽象硬件操作,方便维护。但用户可能更关注直接的示例,所以提供简单的Arduino代码会更合适。 需要注意的问题包括:继电器的电源隔离,防止反向电流,使用二极管保护;GPIO驱动能力是否足够,是否需要三极管或MOSFET驱动继电器线圈;以及代码中的逻辑,比如继电器的触发信号是持续保持还是脉冲,这取决于应用场景。 最后,根据用户要求,生成相关问题,可能涉及代码优化、多路控制、电源管理、协议集成(如Matter或Blinker)以及故障排查等。</think>### ESP32-C3 控制继电器教程及示例代码 #### 一、硬件连接 1. 继电器模块引脚说明(以常规单路继电器为例): - **VCC**:外接3.3V或5V电源(需匹配继电器工作电压) - **GND**:与ESP32-C3共地 - **IN**:信号控制端,连接ESP32-C3的GPIO引脚(如GPIO22) 2. 接线示意图: ``` ESP32-C3 继电器模块 GPIO22 →→→→→ IN 3.3V →→→→→ VCC GND →→→→→ GND ``` #### 二、Arduino框架基础控制代码 ```cpp #define RELAY_PIN 22 // 定义继电器控制引脚 void setup() { pinMode(RELAY_PIN, OUTPUT); // 设置引脚为输出模式 digitalWrite(RELAY_PIN, LOW); // 初始状态设为关闭 } void loop() { digitalWrite(RELAY_PIN, HIGH); // 打开继电器 delay(2000); // 保持2秒 digitalWrite(RELAY_PIN, LOW); // 关闭继电器 delay(2000); // 保持2秒 } ``` #### 三、关键注意事项 1. **电源匹配**:继电器模块VCC需与供电电压匹配(常见3.3V/5V) 2. **保护电路**:建议在继电器线圈两端并联反向二极管(如1N4007)防止反电动势 3. **逻辑电平**:确认继电器控制信号的有效电平(高电平/低电平触发) 4. **时序优化**:如需上电快速响应,可在`setup()`函数前添加`__attribute__((constructor))`修饰符 #### 四、扩展应用(基于Blinker物联网控制) ```cpp #include <Blinker.h> #define RELAY_PIN 22 void button_callback(const String &state) { digitalWrite(RELAY_PIN, (state == "on") ? HIGH : LOW); // 通过APP控制继电器 } void setup() { pinMode(RELAY_PIN, OUTPUT); Blinker.begin("YourDeviceKey"); // 填写设备密钥 Blinker.attachButton("btn-relay", button_callback); // 绑定按钮事件 } void loop() { Blinker.run(); } ``` #### 五、故障排查指南 | 现象 | 可能原因 | 解决方案 | |------|---------|---------| | 继电器无响应 | 1. 电源未接通<br>2. GPIO配置错误 | 检查VCC-GND电压<br>验证引脚初始化代码 | | 状态切换延迟 | 1. WiFi干扰<br>2. 代码逻辑阻塞 | 添加硬件消抖电路<br>优化延时函数使用 | | 异常发热 | 1. 驱动电流过大<br>2. 负载过载 | 增加三极管驱动电路<br>检查负载功率 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值