嘉立创产业服务站群
发作品签到
专业版

智能排插

工程标签

4.2k
0
0
14

简介

基于ESP32的 WIFI+BL的智能排插。

简介:基于ESP32的 WIFI+BL的智能排插。
星火计划2024

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-03-11 10:32:48更新时间:2024-06-17 02:38:05

描述

项目说明

很多电器关机后状态灯还亮,灯光在夜里很影响睡眠。而路由器是比较特殊的。睡前躺在床上刷手机,睡着前要起床关闭电源,关了电源发现自己已经睡不着了。更不用说到了半夜睡不着还要用下WIFI。如果用手机APP控制用电器的电源将很大程度上解决了这个问题。

 

开源协议

GPL3

 

项目相关功能

1、使用立创ESP32开发板控制继电器开关排插上插位是否通电。

2、路由器打开时通过ESP32的WIFI连接到云服务器来接收控制命令;

     路由器关闭或者云服务器没法连接时通过ESP32的蓝牙直接连接手机来接收控制命令;

3、手机不在身边时可以使用万能遥控器控制.

4、手机APP低难度使用点灯APP,中难度用uniapp.或直接用阿里云的SDK模板。

5、使用市场上销售的插排改装来确保安全性。

6、ESP32开发板的5V供电由变压模块提供,变压模块220V接入点在排插总开关后,继电器1和总开关并联,ESP32开发板上电 后继电器1立即闭合非锁定的常开总开关开路,只要检测到风险或APP命令继电器1断开,整个系统都没有电了。保证安全性。

7、所有的火线插孔旁加装NTC来确保安全性。

 

 

项目属性

本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。

 

项目进度

完成

 

设计原理

 

软件说明

 

下面的代码是用电灯科技的代码,如果用阿里云或别的物联网平台的可以用附件中的uniapp_Demo修改。

#include <Blinker.h>
#define LED_BUILTIN 48
#define S_A   10
#define S_2   11
#define S_3   12
#define S_4   13
#define S_5   14

#define Temp_A  6
#define Temp_2  8
#define Temp_3  5
#define Temp_4  9
#define Temp_5  7

BlinkerButton Button1("btn-abc");
BlinkerButton Button2("btn-123");
BlinkerNumber Number1("num-100");

BlinkerButton Button3("btn-abd");
BlinkerButton Button4("btn-124");
BlinkerNumber Number2("num-101");

BlinkerButton Button5("btn-abe");
BlinkerButton Button6("btn-125");
BlinkerNumber Number3("num-102");

BlinkerButton Button7("btn-abf");
BlinkerButton Button8("btn-126");
BlinkerNumber Number4("num-103");

BlinkerButton Button9("btn-abg");
BlinkerButton Button10("btn-127");
BlinkerNumber Number5("num-104");

//NTC 温度读取函数
float readTemp(int pinNo)
{
 
  int sensorValue = analogRead(pinNo);
  float voltage = (sensorValue/4095.00) * 3.3 ;
  float res = 10000*voltage/(3.3-voltage);
  float temp = 1/((log(res/10000)/3980)+1/298.15)-273.15;
 
  return temp;
}

void button_update(BlinkerButton btn,int pin_num)
{
    // digitalWrite(pin_num, !digitalRead(pin_num));
    if(digitalRead(pin_num))
    {
      btn.color("#0000FF");
      btn.print();
    }else{
      btn.color("#FFFFFF");
      btn.print();
    }
}

void button9_callback(const String & state)
{
  BLINKER_LOG("get button state: ", state);
  digitalWrite(S_5, !digitalRead(S_5));
  button_update(Button10,S_5);
}
void button7_callback(const String & state)
{
  BLINKER_LOG("get button state: ", state);
  digitalWrite(S_4, !digitalRead(S_4));
  button_update(Button8,S_4);
}

void button5_callback(const String & state)
{
  BLINKER_LOG("get button state: ", state);
  digitalWrite(S_3, !digitalRead(S_3));
  button_update(Button6,S_3);
}

void button3_callback(const String & state)
{
  BLINKER_LOG("get button state: ", state);
  digitalWrite(S_2, !digitalRead(S_2));
  button_update(Button4,S_2);
}


void button1_callback(const String & state)
{

  BLINKER_LOG("get button state: ", state);
  digitalWrite(S_A, !digitalRead(S_A));
  button_update(Button2,S_A);
}
// void number1_callback(const String & state)
// {

//   BLINKER_LOG("get button state: ", state);
//   float t1 = readTemp(Temp_A);
//   Number1.print(t1);
// }

void heartbeat()
{
  // button_update(Button4,S_2);
  // button_update(Button2,S_A);
  // Number1.print(readTemp(Temp_A));
  // Number2.print(readTemp(Temp_2));
  // Number3.print(readTemp(Temp_3));
  // Number4.print(readTemp(Temp_4));
  // Number5.print(readTemp(Temp_5));
}
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    Number1.print(readTemp(Temp_A));
    Number2.print(readTemp(Temp_2));
    Number3.print(readTemp(Temp_3));
    Number4.print(readTemp(Temp_4));
    Number5.print(readTemp(Temp_5));
   
    BLINKER_LOG("读出温度为: ", readTemp(Temp_A));
    BLINKER_LOG("读出温度为: ", readTemp(Temp_2));
    BLINKER_LOG("读出温度为: ", readTemp(Temp_3));
    BLINKER_LOG("读出温度为: ", readTemp(Temp_4));
    BLINKER_LOG("读出温度为: ", readTemp(Temp_5));
    // Serial.println("读出温度为: %2f ",temp1)
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    pinMode(S_A, OUTPUT);
    pinMode(S_2, OUTPUT);
    pinMode(S_3, OUTPUT);
    pinMode(S_4, OUTPUT);
    pinMode(S_5, OUTPUT);

 
    pinMode(Temp_A, INPUT);
    pinMode(Temp_2, INPUT);
    pinMode(Temp_3, INPUT);
    pinMode(Temp_4, INPUT);
    pinMode(Temp_5, INPUT);
 
   

   
    Blinker.begin();
    Blinker.attachData(dataRead);

    Button1.attach(button1_callback);
    Button3.attach(button3_callback);
    Button5.attach(button5_callback);
    Button7.attach(button7_callback);
    Button9.attach(button9_callback);

    Blinker.attachHeartbeat(heartbeat);

}

void loop()
{
    Blinker.run();
}

 

 

实物展示

设计注意事项

 

 

其他

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
202404232014-3.mp4
34
2
_iot.clz.me.jpg
21
3
iot.clz.jpg
19
4
uniapp_Demo.rar
59
5
24-05-20.png
20
6
演示.mp4
20
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航