目录

1.概述

2.环境准备

2.1 ESP8266的Arduino编译环境准备

2.2 巴法云平台设置

2.3 米家设置

3.控制程序

3.1 与云平台交互

3.2 与舵机交互

4.增加OTA功能

5.打印一个外壳并加上一个机械按键

6.源文件


1.概述

用舵机的角度拨动墙壁的电灯开关实现开关灯功能,利用ESP8266控制舵机的角度。小爱同学通过巴法云云平台和ESP8266进行TCP通讯交互,从而实现语音控制。

2.环境准备

2.1 ESP8266的Arduino编译环境准备

本人使用的TB上12多块钱一块的ESP8266开发板。安装Arduino开发环境可以参考这篇博客:esp8266开发入门教程(基于Arduino)——环境安装_柒壹漆的博客-CSDN博客_esp8266开发

2.2 巴法云平台设置

为了和小爱同学交互,就需要一个云平台进行中转,大概的交互流程如下图:

这里我使用的云平台是巴法云。以我一年多的使用情况来看,这个平台的稳定性还是很好的,几乎没出现过连接丢失的情况。

首先去到他家的官网:巴法科技&巴法云-巴法设备云-巴法物联网云平台。注册个账号,按照如下截图步骤操作即可。

主题可以简单的理解为被控制的一个/一组单片机的抽象:如果单片机已联网,并且订阅了这个主题,在此处推送消息,单片机就可以收到推送的消息。

这里的主题名字是light002。结尾的002根据巴法云接口文档的定义即是灯泡设备。

巴法云接口文档截图

2.3 米家设置

打开米家app,底部--我的---其他平台设备---->点击添加--->找打巴法,登录你的巴法云账号,如果巴法云控制台有创建设备,设备就会自动同步过去了。

3.控制程序

3.1 与云平台交互

对于和巴法云交互的TCP通讯程序,官方已经给出了例程:下载地址

下载后解压用Arduino IDE打开,我们只需要更改注释中提示需要更改的部分。

改好后将其烧录到ESP8266中,如果能在巴法云控制台中看到订阅者在线,说明这步成了。

3.2 与舵机交互

按照如下图进行单片机和舵机的接线。注意舵机最好使用5V引脚供电,我手里这个使用3.3V供电有时舵机不工作。

代码部分可以基于3.1章节的代码添加舵机控制代码。如下:

#include <Servo.h> //引入舵机库/*开灯*/
void turnOnLed(){Serial.println("Turn ON");//digitalWrite(LED_Pin,LOW); //这行巴法云示例的代码,注释掉,添加下面舵机控制代码myServo.write(60); //开灯时舵机向下走的角度delay(400);myServo.write(40);  //回到中间位置
}/*关灯*/
void turnOffLed(){ Serial.println("Turn OFF");//digitalWrite(LED_Pin,HIGH); //这行巴法云示例的代码,注释掉,添加下面舵机控制代码myServo.write(0); //关灯时舵机向上走的角度delay(400);myServo.write(40); //回到中间位置}

这其中舵机的角度需要根据舵机在开关上的固定角度来调整。

至此,如果一切顺利的话。你对小爱同学说“开卧室灯”,那么舵机就会转一定的角度。将舵机粘到灯的开关上即可以实现控制开关灯功能。

4.增加OTA功能

ESP8266还有一个特性就是可以实现OTA功能。

a.首先需要在Arduino IDE将代码编译为Bin文件。

b.接着需要将此Bin文件上传到一个网络地址。如果有云服务器的话可以使用Web服务器发布。如果没有的话使用巴法云的OTA存储也可以,操作如下:

c.添加OTA升级代码,如下:

#include <ESP8266httpUpdate.h>String upUrl = FirmwareBin; //固件Bin文件的链接void updateBin(){Serial.println("start update");    WiFiClient UpdateClient;t_httpUpdate_return ret = ESPhttpUpdate.update(UpdateClient, upUrl);switch(ret) {case HTTP_UPDATE_FAILED:      //当升级失败Serial.println("[update] Update failed.");break;case HTTP_UPDATE_NO_UPDATES:  //当无升级Serial.println("[update] Update no Update.");break;case HTTP_UPDATE_OK:         //当升级成功Serial.println("[update] Update ok.");break;}
}

d.添加OTA升级的触发代码。本人的策略是如果收到云平台发的“update”消息,即开始升级。在Base的代码中添加如下即可。

5.打印一个外壳并加上一个机械按键

为了让PCB不至于裸露在外面,我建模并3D打印了一个外壳。外壳上面那个窟窿就是安装机械按键的地方。

安装个机械按键是为了在断网的时候,也能有一个很酷炫的开灯关灯方式。那么经过这一段时间的体验,我发现机械按键来控制开关灯的手感惊人的好。茶轴哒哒的手感和小爱同学一比,后者也不香了。(笑)

安装后的样子就是这样的:

机械按键两个脚一个接GND,一个接ESP8266的D5引脚。将D5配置Input上拉即可。这部分代码可以在源文件的KeyCrtLed函数中找到。

6.源文件

这个小项目的所有文件(包括代码和3D模型)已经上传到github中。

链接:GitHub - bin96/ESP8266CrtLight

使用小爱同学+ESP8266+舵机控制家里的电灯相关推荐

  1. python控制小爱同学_神秘鸭,用Siri小爱同学语音助手控制你的电脑

    智能手机发展至今,智能可不仅是改变了沟通和上网形式,依据强大的算法核心,各种基于AI的智能语音助手屡见不鲜,其中苹果的Siri.小米的小爱同学.阿里的天猫精灵,极受欢迎.虽说现在的人工智能语音助手,仍 ...

  2. 用小爱,小度语音控制家里的灯,无网络时,不影响物理开关

    贝壳物联和小度,小爱的完美结合 亮点 材料 接线 注册贝壳物联 ArduinoIDE 安装 程序编写烧录 巴法云微信推送 巴法云控制设置 微信小程序控制设备 小度音箱,小爱绑定和语音控制 关于内网穿透 ...

  3. 小爱同学+ESP8266+blinker点灯

    系列文章目录 第一章 ESP8266+blinker 点灯 文章目录 系列文章目录 小爱同学控制 一.简介 二. app端添加设备 三. 小爱同学接入 1.简绍 2.代码部分 3.代码讲解 4.米家的 ...

  4. 小爱同学、Blinker 控制esp32自带灯熄灭---Micropython版本

    操作官方案例修改增加小爱同学控制支持,具体代码上传到github可以参考,有帮助的话麻烦请star支持下,有细节问题也麻烦指出和交流 github地址: https://github.com/lonn ...

  5. 使用ESP8266与小爱同学通过Arduino控制舵机

    一.硬件 名称 数量 ESP8266开发板 1 Arduino UNO 1 MG995舵机 1 杜邦线 若干 二.开发环境配置 本实验通过Arduino IDE调用Blinker提供的SDK实现 ID ...

  6. (含代码)ESP8266+舵机 制作wifi灯控开关(arduino,点灯科技,小爱同学/天猫精灵实现)

    目录 项目涉及的主代码 前言 一.环境搭建 二.开发步骤 1.注册点灯科技平台 2.在点灯科技平台注册设备,获取Secret Key 3.在Arduino IDE中编写代码,写入ESP8266 4.编 ...

  7. ESP8266 Blinker 小爱同学 本地控制 手机配网 四路开关 物联网 arduino编程详细注释

    作为一名注册12年CSDN的电脑爱好者,没有从事喜欢的IT行业还是颇有那么一丝丝的想念. 通过一段时间的arduino编程和ESP8266学习,参考示例程序等,完善了自己的一份小爱同学四开关控制的程序 ...

  8. 从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座

    从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座 前言 一直对8266很感兴趣,放寒假嘛,也挺闲,刚好手头有原来买下的Nodemcu,就拿来做个多路开关 参考资料我 ...

  9. ESP8266用点灯app接入小爱同学

    ESP8266接入小爱同学-智能LED台灯或风扇 首先用的是arduino IDE对esp8266进行的编译,arduino对8266编译环境的具体配置可参考 1.利用WiFiManager库实现自动 ...

最新文章

  1. 凝聚406万开发者 飞桨十大发布提速产业智能化
  2. 至简至美-ATtiny0 跑的一个游戏
  3. 理解WebKit和Chromium: Chromium for Android
  4. php 菜谱 源码,基于php的菜谱大全api调用代码实例
  5. adoquery.parameters流化
  6. 一张图读懂nginx多线程高并发
  7. android颜色表
  8. QQ安装目录下各文件用途不完全揭密(转)
  9. 小学数学测试软件前言,小学数学教学案例集序言.docx
  10. 微信语音怎么转发给好友
  11. mac 字幕生成工具
  12. 哇塞,原来自己写 Google Chrome 浏览器扩展(插件)这么容易!
  13. 个人网站的制作,维护,推广,营销
  14. 《如何阅读一本书》笔记
  15. ppt嵌入文件对计算机有危害,ppt播放SWF文件提示此文件包括的内嵌内容可能对您的计算机有害!如何关闭此提示?...
  16. 简单写写我的个人简历
  17. c#如何实现 汉字转换成区位码?
  18. Alarils PK 靶控注射泵各药物药代动力学模型参数
  19. springboot配置hosts文件
  20. 利用selenium抓取英雄联盟壁纸

热门文章

  1. 2010年个人所得税计算公式
  2. Python 简单的小车绘画
  3. 2019总结,乘风破浪
  4. 强化学习(RL)初印象
  5. T2Admin 集成 Flowable 实现项目工作流业务
  6. mysql的for循环语句_Mysql实现for循环遍历
  7. 9月29日全球域名商(国际域名)解析量排行榜TOP20
  8. 【C语言】之实现简易的学生信息管理系统
  9. 中国设计行业竞争策略分析与未来发展规划研究报告2022-2028年版
  10. 【Linux】CentOS 7安装 MySQL