使用小爱同学+ESP8266+舵机控制家里的电灯
目录
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+舵机控制家里的电灯相关推荐
- python控制小爱同学_神秘鸭,用Siri小爱同学语音助手控制你的电脑
智能手机发展至今,智能可不仅是改变了沟通和上网形式,依据强大的算法核心,各种基于AI的智能语音助手屡见不鲜,其中苹果的Siri.小米的小爱同学.阿里的天猫精灵,极受欢迎.虽说现在的人工智能语音助手,仍 ...
- 用小爱,小度语音控制家里的灯,无网络时,不影响物理开关
贝壳物联和小度,小爱的完美结合 亮点 材料 接线 注册贝壳物联 ArduinoIDE 安装 程序编写烧录 巴法云微信推送 巴法云控制设置 微信小程序控制设备 小度音箱,小爱绑定和语音控制 关于内网穿透 ...
- 小爱同学+ESP8266+blinker点灯
系列文章目录 第一章 ESP8266+blinker 点灯 文章目录 系列文章目录 小爱同学控制 一.简介 二. app端添加设备 三. 小爱同学接入 1.简绍 2.代码部分 3.代码讲解 4.米家的 ...
- 小爱同学、Blinker 控制esp32自带灯熄灭---Micropython版本
操作官方案例修改增加小爱同学控制支持,具体代码上传到github可以参考,有帮助的话麻烦请star支持下,有细节问题也麻烦指出和交流 github地址: https://github.com/lonn ...
- 使用ESP8266与小爱同学通过Arduino控制舵机
一.硬件 名称 数量 ESP8266开发板 1 Arduino UNO 1 MG995舵机 1 杜邦线 若干 二.开发环境配置 本实验通过Arduino IDE调用Blinker提供的SDK实现 ID ...
- (含代码)ESP8266+舵机 制作wifi灯控开关(arduino,点灯科技,小爱同学/天猫精灵实现)
目录 项目涉及的主代码 前言 一.环境搭建 二.开发步骤 1.注册点灯科技平台 2.在点灯科技平台注册设备,获取Secret Key 3.在Arduino IDE中编写代码,写入ESP8266 4.编 ...
- ESP8266 Blinker 小爱同学 本地控制 手机配网 四路开关 物联网 arduino编程详细注释
作为一名注册12年CSDN的电脑爱好者,没有从事喜欢的IT行业还是颇有那么一丝丝的想念. 通过一段时间的arduino编程和ESP8266学习,参考示例程序等,完善了自己的一份小爱同学四开关控制的程序 ...
- 从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座
从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座 前言 一直对8266很感兴趣,放寒假嘛,也挺闲,刚好手头有原来买下的Nodemcu,就拿来做个多路开关 参考资料我 ...
- ESP8266用点灯app接入小爱同学
ESP8266接入小爱同学-智能LED台灯或风扇 首先用的是arduino IDE对esp8266进行的编译,arduino对8266编译环境的具体配置可参考 1.利用WiFiManager库实现自动 ...
最新文章
- 凝聚406万开发者 飞桨十大发布提速产业智能化
- 至简至美-ATtiny0 跑的一个游戏
- 理解WebKit和Chromium: Chromium for Android
- php 菜谱 源码,基于php的菜谱大全api调用代码实例
- adoquery.parameters流化
- 一张图读懂nginx多线程高并发
- android颜色表
- QQ安装目录下各文件用途不完全揭密(转)
- 小学数学测试软件前言,小学数学教学案例集序言.docx
- 微信语音怎么转发给好友
- mac 字幕生成工具
- 哇塞,原来自己写 Google Chrome 浏览器扩展(插件)这么容易!
- 个人网站的制作,维护,推广,营销
- 《如何阅读一本书》笔记
- ppt嵌入文件对计算机有危害,ppt播放SWF文件提示此文件包括的内嵌内容可能对您的计算机有害!如何关闭此提示?...
- 简单写写我的个人简历
- c#如何实现 汉字转换成区位码?
- Alarils PK 靶控注射泵各药物药代动力学模型参数
- springboot配置hosts文件
- 利用selenium抓取英雄联盟壁纸