IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 使用小爱同学+ESP8266+舵机控制家里的电灯 -> 正文阅读

[嵌入式]使用小爱同学+ESP8266+舵机控制家里的电灯

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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:58:04  更:2022-10-08 21:01:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:49:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码