<h2 align="center"> SmartSwitch</h2>
<p align="center">基于esp8266的自动开关灯系统-单片机主程序</p>
-----------------------
## 实现原理
通过控制连接在单片机上的舵机的旋转角度/速度/方向以实现控制电灯等家用电器的开关。相较于使用继电器控制而言,无需改造家庭电路,更安全,维护更方便。
-----------------------
## 使用方法
1.安装 arduinoide<br>
2.打开smartswitch.ino文件。<br>
3.安装blinker库/esp8266库【同时也安装一下esp8266的驱动,不然有可能识别不到串口】<br>
4.修改代码以满足需求(打开源码后,填写点灯账号密码等基础信息并填写无线网络信息后可以按照注释更改实现代码)<br>
5.编译并上传到单片机<br>
6.在点灯app中设计用于控制单片机的前端页面并编写后端代码
-----------------------
## 客户端
手机控制客户端请使用点灯blinker的手机版客户端。<br>
电脑控制可以使用我编写的blinker电脑版客户端,本客户端支持自动登录。<br>
https://github.com/bertwaver/blinker_Win<br>
你可以使用客户端对你的单片机进行控制,但在那之前,我们需要为其编写一个页面以及控制相关的代码。这里提供一个样例:<br>
<img src="https://yun.ixfish.cn/?explorer/share/fileOut&path=%7BshareItemLink%3A-LVBUZ7A%7D%2F&_etag=1709108027-246682&shareID=-LVBUZ7A" height="500">
1.在点灯客户端中点击右上角的添加按钮,并且选择“独立设备”->"网络接入"。<br>
2.进入刚添加的设备页面中,点击右上角的编辑按钮,在“触发器配置”中添加下列代码
```json
[{"source":"switch","source_zh":"开关状态","state":["on","off"],"state_zh":["打开","关闭"]}]
```
3.在"动作配置"中添加下列代码<br>
```json
[{"cmd":{"switch":"on"},"text":"打开?name"},{"cmd":{"switch":"off"},"text":"关闭?name"}]
```
4.在"界面配置"中添加下列代码<br>
```json
{¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨}}¨dashboard¨|{¨type¨¨btn¨¨ico¨¨fad fa-lightbulb-on¨¨mode¨Ê¨t0¨¨开灯¨¨t1¨¨文本2¨¨bg¨Ì¨cols¨Í¨rows¨Í¨key¨¨test¨´x´Ë´y´Í¨speech¨|÷¨cus¨¨on¨¨lstyle¨Ë¨clr¨¨#076EEF¨}{ß9ßAßB¨fad fa-lightbulb¨ßDÉßE¨关灯¨ßGßHßIÌßJÍßKÍßLßM´x´Ë´y´ÒßN|÷ßQËßRßS}{ß9¨deb¨ßDÉßIÉßJÑßKÌßL¨debug¨´x´É´y´É}{ß9ßAßB¨fad fa-house-day¨ßDÉßE¨取消锁定¨ßGßHßIÉßJËßKËßL¨resetc¨´x´Ê´y´¤EßQÉßR¨#00A90C¨}{ß9ßAßB¨fad fa-tachometer-alt-fast¨ßDÉßE¨调节灯温¨ßGßHßIÉßJËßKËßL¨tjdw¨´x´Î´y´¤EßRßa}÷¨actions¨|¦¨cmd¨¦¨switch¨‡¨text¨‡ßP¨打开?name¨¨off¨¨关闭?name¨—÷¨triggers¨|{¨source¨ßg¨source_zh¨¨开关状态¨¨state¨|ßPßj÷¨state_zh¨|¨打开¨¨关闭¨÷}÷¨rt¨|÷}
```
5.保存并返回。
-----------------------
## 小爱音响控制
本项目代码中已经添加了小爱音箱控制的相关代码,如不需要使用改功能,请将下面的代码注释掉。
```cpp
#define BLINKER_MIOT_LIGHT
```
```cpp
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
myservo.write(140);
delay(110);
myservo.write(90);
light_state=1;
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
}
else if (state == BLINKER_CMD_OFF) {
myservo.write(45);
delay(100);
myservo.write(90);
light_state=0;
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
void miotColor(int32_t color)
{
BLINKER_LOG("need set color: ", color);
if(light_state==-1 or light_state==1)
{
BlinkerMIOT.print();
myservo.write(45);
delay(100);
myservo.write(90);
light_state=0;
delay(350);
myservo.write(140);
delay(110);
myservo.write(90);
light_state=1;
}
else if(light_state==0)
{
BlinkerMIOT.print();
myservo.write(140);
delay(110);
myservo.write(90);
light_state=1;
}
BlinkerMIOT.color(color);
}
```
-----------------------
## 注意事项
1.单片机控制代码由c++编写,相较于其它语言在执行速度上已经有不小的优势。但是由于esp8266(以nodemcu为例)性能较鸡肋。当代码过多/定义变量过多时,仍然有可能出现指令延迟/死机等问题。<br>
2.在使用的过程中,要注意供电问题。【有时候舵机按不动开关可能不是代码的问题,而可能是接入单片机的电池/充电宝没电了】<br>
3.在接入舵机时,一定要注意,不要将正负极反接。<br>
4.修改io口请更改下方的代码:<br>
```cpp
myservo.attach(2);
```
-----------------------
## 鸣谢
arduino(https://www.arduino.cc/en/software)<br>
点灯(https://www.diandeng.tech/home)
不走小道
- 粉丝: 3375
- 资源: 5052
最新资源
- 基于Html和Shell的“老罗投资/知行合一日拱一卒投资人生”主题设计源码
- 基于Java的OnlineMusic在线音乐播放器设计源码
- comsol多场耦合 水合物降压降压开采THMC,注气驱替甲烷THM,地质封存等多场耦合收敛技术,相关地质能源开采类多场耦合仿真案列分析,包括岩土类地质灾害防护,煤层气、页岩气开采,咸水封存co2,H
- 模糊逻辑控制(FLC)Matlab simulink仿真搭建模型: 提供以下帮助 波形纪录 参考文献 仿真文件 原理解释 电机参数说明 仿真原理结构和整体框图
- 基于ThinkPHP5+Vue3的RBAC权限控制前后端分离管理系统设计源码
- 基于.Net6架构的轻量级前后端分离微服务开发框架设计源码
- 主机厂基于Simulink MBD新能源电动汽车主驱电驱控制器算法模型及开发资料,量产模型,量产软件,量产代码,软件架构设计,输入输出定子,单元测试,MIL测试资料 Sumlink MCU电机控制策
- 基于微信小程序的JavaScript/TypeScript答题小程序设计源码
- 基于QT框架的语音图像识别与数据库操作综合练手小demo设计源码
- FDTD超材料吸收器吸收光谱
- 基于Vue框架的求职招聘系统移动端(Uniapp)设计源码
- 电压型同步发电机(VSG)离网仿真模型,包含电压电流双闭环,有功无功外环控制,阻抗 仅模型 MATLAB的2018以上版本都可以
- 基于MATLAB和Python的多种数据分析方法与图表生成设计源码
- 台式三轴自动螺丝机(sw16可编辑+工程图+bom)全套技术资料100%好用.zip
- 基于Vue框架的酒店管理小程序设计源码
- 基于TypeScript的鸿蒙移动应用程序个人日记本设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈