单片机学习小组
登录
直播中
jsqueh
8年用户
1207经验值
私信
关注
怎样去设计一种基于ESP8266与点灯科技平台的加湿器呢
开启该帖子的消息推送
ESP8266
加湿器
GPIO
怎样去设计一种基于ESP8266与点灯科技平台的加湿器呢?其代码该怎样去实现?
回帖
(1)
彭逸晨
2022-2-24 14:47:03
一、设计目标
使用点灯科技平台接入物联网,可通过手机点灯APP控制加湿器的开关
接入小爱同学,通过语音控制加湿器的开关
通过外接TTL串口下载模块给ESP8266程序烧写,通过跳线帽手动拉低GPIO0电平,手动RST
供电使用LM1117 5V转3V设计,可选择使用Mico USB和DC 5.5*2.5mm接口进行5V供电
引脚使用通用设计,方便外设扩展
LED指示灯指示系统运行状态
二、威廉希尔官方网站 设计
在上一个版本威廉希尔官方网站 的基础上进行优化,为节省成本去除CH340下载威廉希尔官方网站 ,板子喷黑色油漆提高科技感,输出引脚采用一般外设模块较为通用引脚设计,提高威廉希尔官方网站 板通用性。
三个威廉希尔官方网站 板通过铜柱共地并固定,通过一根黑色5V电源线进行板间供电,组成塔式结构。不同层数的威廉希尔官方网站 板执行不同的功能,第一层为点灯科技+小爱对加湿器开关控制。
三、思路介绍
关于加湿器模块是本人于某宝以10元左右的价格购入的,该模块本身是通过USB供电并通过模块自身的按键进行开关的。所以我们要通过ESP8266去控制它开关便需要对该模块进行改造。最简单的方法便是通过GPIO口来替代加湿器模块上的按键实现远程控制加湿器模块的开关,并从威廉希尔官方网站 板上将5V电源线和地线接入加湿器模块的供电端即可实现物联网威廉希尔官方网站 板对加湿器供电。经过测试,该加湿器模块的控制机制为按键输入引脚检测到低电平后一段时间内,要检测到高电平,才能识别为开关。关于哪个引脚是按键输入引脚,通过万用表对加湿器按键引脚进行测量即可得知。懂得这个机制以后就容易多了,我们让ESP8266的D1连接到加湿器模块的按键输入引脚,D1默认为输出高电平,我们先将D1电平拉低,延迟一段时间以后,再将电平拉高,这时候会发现加湿器开启了。同理,该方法也可以使开启时的加湿器模块关闭,所以为了防止将原本处于开启状态的加湿器误关或将原本处于关闭状态的加湿器误开,需对当前加湿器运行状态进行判断,否则会产生bug。感兴趣的小伙伴可以买入加湿器模块然后跟着我的解决思路去改造尝试。
四、ESP8266代码
#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#include
char auth[] = "*********";//设备号
char ssid[] = "*********";//无线账号
char pswd[] = "*********";//无线密码
// 新建组件对象
BlinkerButton Button1("HUM_Button");
int count = 0;//加湿器计数器
int count1 = 0;//led翻转计数器
int HUM_OPEN=0;//加湿器标志位
int HUM_State=0;//加湿器开关状态标志位,0关,1开
#define HUM_Button D1
#define LED1 16
#define LED2 14
// 按下按键即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
digitalWrite(LED2, !digitalRead(LED2));
HUM_OPEN=1;//标志位开启
if(digitalRead(LED2)==0)
{
Button1.print("off");
}
else
{
Button1.print("on");
}
}
// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
}
//小爱同学处理函数
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
if(HUM_State==0)//处于关闭状态开启
{
digitalWrite(LED2, HIGH);
HUM_OPEN=1;
HUM_State=1;//开启
}
}
else if (state == BLINKER_CMD_OFF) {
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
if(HUM_State==1)//处于开启状态关闭
{
digitalWrite(LED2, LOW);
HUM_OPEN=1;
HUM_State=0;//关闭
}
}
}
void setup() {
// 初始化串口
Serial.begin(115200);
#if defined(BLINKER_PRINT)
BLINKER_DEBUG.stream(BLINKER_PRINT);
#endif
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
pinMode(LED1, OUTPUT);
digitalWrite(LED1, HIGH);
pinMode(LED2, OUTPUT);
digitalWrite(LED2, LOW);
//初始化加湿器引脚
pinMode(HUM_Button, OUTPUT);
digitalWrite(HUM_Button, HIGH);//上电关闭
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
Button1.attach(button1_callback);//按键
//小爱回调函数
BlinkerMIOT.attachPowerState(miotPowerState);
}
void loop() {
Blinker.run();
count1++;//led翻转计数器
if(HUM_OPEN==1)
{
digitalWrite(HUM_Button, LOW);
count++;
if(count==30)
{
digitalWrite(HUM_Button, HIGH);
count=0;
HUM_OPEN=0;
}
}
if(count1==100)
{
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
digitalWrite(LED1, !digitalRead(LED1));
count1=0;
}
}
一、设计目标
使用点灯科技平台接入物联网,可通过手机点灯APP控制加湿器的开关
接入小爱同学,通过语音控制加湿器的开关
通过外接TTL串口下载模块给ESP8266程序烧写,通过跳线帽手动拉低GPIO0电平,手动RST
供电使用LM1117 5V转3V设计,可选择使用Mico USB和DC 5.5*2.5mm接口进行5V供电
引脚使用通用设计,方便外设扩展
LED指示灯指示系统运行状态
二、威廉希尔官方网站 设计
在上一个版本威廉希尔官方网站 的基础上进行优化,为节省成本去除CH340下载威廉希尔官方网站 ,板子喷黑色油漆提高科技感,输出引脚采用一般外设模块较为通用引脚设计,提高威廉希尔官方网站 板通用性。
三个威廉希尔官方网站 板通过铜柱共地并固定,通过一根黑色5V电源线进行板间供电,组成塔式结构。不同层数的威廉希尔官方网站 板执行不同的功能,第一层为点灯科技+小爱对加湿器开关控制。
三、思路介绍
关于加湿器模块是本人于某宝以10元左右的价格购入的,该模块本身是通过USB供电并通过模块自身的按键进行开关的。所以我们要通过ESP8266去控制它开关便需要对该模块进行改造。最简单的方法便是通过GPIO口来替代加湿器模块上的按键实现远程控制加湿器模块的开关,并从威廉希尔官方网站 板上将5V电源线和地线接入加湿器模块的供电端即可实现物联网威廉希尔官方网站 板对加湿器供电。经过测试,该加湿器模块的控制机制为按键输入引脚检测到低电平后一段时间内,要检测到高电平,才能识别为开关。关于哪个引脚是按键输入引脚,通过万用表对加湿器按键引脚进行测量即可得知。懂得这个机制以后就容易多了,我们让ESP8266的D1连接到加湿器模块的按键输入引脚,D1默认为输出高电平,我们先将D1电平拉低,延迟一段时间以后,再将电平拉高,这时候会发现加湿器开启了。同理,该方法也可以使开启时的加湿器模块关闭,所以为了防止将原本处于开启状态的加湿器误关或将原本处于关闭状态的加湿器误开,需对当前加湿器运行状态进行判断,否则会产生bug。感兴趣的小伙伴可以买入加湿器模块然后跟着我的解决思路去改造尝试。
四、ESP8266代码
#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#include
char auth[] = "*********";//设备号
char ssid[] = "*********";//无线账号
char pswd[] = "*********";//无线密码
// 新建组件对象
BlinkerButton Button1("HUM_Button");
int count = 0;//加湿器计数器
int count1 = 0;//led翻转计数器
int HUM_OPEN=0;//加湿器标志位
int HUM_State=0;//加湿器开关状态标志位,0关,1开
#define HUM_Button D1
#define LED1 16
#define LED2 14
// 按下按键即会执行该函数
void button1_callback(const String & state) {
BLINKER_LOG("get button state: ", state);
digitalWrite(LED2, !digitalRead(LED2));
HUM_OPEN=1;//标志位开启
if(digitalRead(LED2)==0)
{
Button1.print("off");
}
else
{
Button1.print("on");
}
}
// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
}
//小爱同学处理函数
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
if(HUM_State==0)//处于关闭状态开启
{
digitalWrite(LED2, HIGH);
HUM_OPEN=1;
HUM_State=1;//开启
}
}
else if (state == BLINKER_CMD_OFF) {
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
if(HUM_State==1)//处于开启状态关闭
{
digitalWrite(LED2, LOW);
HUM_OPEN=1;
HUM_State=0;//关闭
}
}
}
void setup() {
// 初始化串口
Serial.begin(115200);
#if defined(BLINKER_PRINT)
BLINKER_DEBUG.stream(BLINKER_PRINT);
#endif
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
pinMode(LED1, OUTPUT);
digitalWrite(LED1, HIGH);
pinMode(LED2, OUTPUT);
digitalWrite(LED2, LOW);
//初始化加湿器引脚
pinMode(HUM_Button, OUTPUT);
digitalWrite(HUM_Button, HIGH);//上电关闭
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
Button1.attach(button1_callback);//按键
//小爱回调函数
BlinkerMIOT.attachPowerState(miotPowerState);
}
void loop() {
Blinker.run();
count1++;//led翻转计数器
if(HUM_OPEN==1)
{
digitalWrite(HUM_Button, LOW);
count++;
if(count==30)
{
digitalWrite(HUM_Button, HIGH);
count=0;
HUM_OPEN=0;
}
}
if(count1==100)
{
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
digitalWrite(LED1, !digitalRead(LED1));
count1=0;
}
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
ESP8266
加湿器
GPIO
怎么实现基于
ESP8266
与
点灯
科技
平台
的温湿度计的设计?
2021-10-28
2054
怎样
使用lua语言
去
开发
一种
esp8266
?
2021-06-15
1757
怎样
去
设计
一种
基于STM32的
ESP8266
模块控制多路继电器
2021-10-08
1598
怎样
去
设计
一种
基于
esp8266
+树莓派+u***麦克风的智能音箱
呢
2022-02-24
1521
如何利用
esp8266
去
搭建
一种
网络服务器
呢
2022-02-22
1163
介绍
一种
基于
esp8266
-12E的nodemcu模块
2022-02-15
835
如何
去
实现
一种
基于
ESP8266
模块+天猫精灵IOT
平台
的RGB冷暖灯控制系统?
2021-07-27
1722
如何
去
实现
一种
基于
ESP8266
的物联网智能小车
呢
2022-02-22
1067
怎样
去
设计
一种
基于
ESP8266
和51单片机的手机遥控小车
2021-08-20
2214
怎样
通过
ESP8266
去
搭建
一种
网络服务器
呢
2022-02-22
709
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分