准备材料:
Arduino Uno 一块
Arduino 扩展板 购买链接
DT-06模块一个 购买链接
安卓手机一个
小度音箱一个
小灯珠一个
杜邦线若干

1.DT-06固件的烧录

1.1打开ESP模块下载工具ESPFlashDownloadTool,选择需要下载的固件,填写下载地址,推荐使用 ESP8266 Download TOOL,配置信息如下:

1.2 选择实际的串口,选择下载速度

1.3点击ERASE,先插除,再点击START,开始下载

工具下载及详细请看:http://bbs.doit.am/forum.php?mod=viewthread&tid=208

DT-06固件.bin文件下载链接

2.硬件电路的连接

小灯珠的R———arduino扩展板D2口

小灯珠的G———arduino扩展板D3口

小灯珠的B———arduino扩展板D4口

小灯珠的GND———arduino扩展板GND

DT-06安装到arduino扩展板的串口排插位置

3.DT-06通讯协议

通信方式:串口通讯

波特率:115200,无奇偶校验,8位数据位,1位停止位

每条命令以\r\n结尾。

3.1、控制命令
3.1.1 DT06->arduino
cmd=ctrl&message=power_off|r|g|b|w|m
power_off表示开关灯操作,0表示关,1表示开

r,g,b,w,m几个字段分别表示红、绿、蓝、白、暖光的颜色值,颜色值取值范围是0~5000

3.1.2 Arduino->DT06

cmd=ctrl&ok;

3.2、上传状态
3.2.1 Arduino->DT06

上传基本状态

cmd= stat&status= soft_power

cmd=stat代表基本状态 50s传一次

上传扩展状态
cmd=ext_stat&status=r|g|b|w|m

cmd=ext_stat 代表扩展状态 60s传一次

3.2.2 DT06->arduino

基本状态:cmd=stat& ok

扩展状态:cmd=ext_stat&ok

4.Arduino UNO 程序的编写

//材料:UNO+DT06
#include <EEPROM.h>

/IO引脚定义*/

#define MAX_PACKETSIZE 512

#define DataSerial Serial

#define PWM_R 2
#define PWM_G 3
#define PWM_B 4
#define PWM_W 5
#define PWM_M 6

//#define DebugSerial Serial1
struct config_type
{
uint8_t ledswitch;
uint16_t r;
uint16_t g;
uint16_t b;
uint16_t w;
uint16_t m;
};

config_type config;

//uartdata
char buffUart[MAX_PACKETSIZE];
unsigned int buffUartIndex = 0;
unsigned long preUartTick = 0;
int eeAddress = 0;

char strStat[64] = {0};
char strExtStat[128] = {0};

/*
保存参数到EEPROM
*/
void saveConfig()
{
DataSerial.println("-----Save config-----");
DataSerial.print(“ledswitch:”);
DataSerial.print(config.ledswitch);
DataSerial.print(",r:");
DataSerial.print(config.r);
DataSerial.print(",g:");
DataSerial.print(config.g);
DataSerial.print(",b:");
DataSerial.print(config.b);
DataSerial.print(",w:");
DataSerial.print(config.w);
DataSerial.print(",m:");
DataSerial.println(config.m);
DataSerial.println("-------------------");

EEPROM.put(eeAddress, config);

}

/*
从EEPROM加载参数
*/
void loadConfig()
{
EEPROM.get(eeAddress, config);
DataSerial.println("-----Read config-----");
DataSerial.print(“ledswitch:”);
DataSerial.print(config.ledswitch);
DataSerial.print(",r:");
DataSerial.print(config.r);
DataSerial.print(",g:");
DataSerial.print(config.g);
DataSerial.print(",b:");
DataSerial.print(config.b);
DataSerial.print(",w:");
DataSerial.print(config.w);
DataSerial.print(",m:");
DataSerial.println(config.m);
DataSerial.println("-------------------");
}

//定时上传状态
void doUploadStatus()
{
static uint32_t uploadTimeTick = 0;
static uint8_t stat_cnt = 0;
static uint8_t ext_stat_cnt = 0;
if (millis() - uploadTimeTick >= 1000) {
uploadTimeTick = millis();
stat_cnt++;
ext_stat_cnt++;
if (stat_cnt >= 50) {
stat_cnt = 0;
sprintf(strStat,“cmd=stat&status=%d\r\n”,config.ledswitch);
sendUART(strStat);
}
if (ext_stat_cnt >= 60) {
ext_stat_cnt = 0;
sprintf(strExtStat,“cmd=ext_stat&status=%d|%d|%d|%d|%d\r\n”,config.r,config.g,config.b,config.w,config.m);
sendUART(strExtStat);
}
}
}

/*
检查串口是否有数据
*/
void doUartTick()
{
if (DataSerial.available() > 0)
{
uint8_t t = DataSerial.read();
buffUart[buffUartIndex++] = t;

    preUartTick = millis();if (buffUartIndex >= MAX_PACKETSIZE - 1) {buffUartIndex = MAX_PACKETSIZE - 2;preUartTick = preUartTick - 100;}
}
if (buffUartIndex > 0 && (millis() - preUartTick >= 200))
{    //data readybuffUart[buffUartIndex] = 0x00;//DataSerial.flush();parseUartPackage(buffUart, buffUartIndex);buffUartIndex = 0;
}

}

//处理串口数据
void parseUartPackage(char *p, size_t len)
{
DataSerial.println(“parseUartPackage”);
DataSerial.println§;
char * s = NULL, *e = NULL;
char power[8]; memset(power, 0x00, sizeof(power));
char r[8]; memset(r, 0x00, sizeof®);
char g[8]; memset(g, 0x00, sizeof(g));
char b[8]; memset(b, 0x00, sizeof(b));
char w[8]; memset(w, 0x00, sizeof(w));
char m[8]; memset(m, 0x00, sizeof(m));
if (strstr(p, “cmd=ctrl”) != NULL) {
s = strstr(p, “message=”);
if (s == NULL) return;
e = strstr(s, “|”);
if (e == NULL) return;
memcpy(power, s + strlen(“message=”), e - s - strlen(“message=”));
s = strstr(e + 1, “|”);
if (s == NULL) return;
memcpy(r, e + 1, s - e - 1);
e = strstr(s + 1, “|”);
if (e == NULL) return;
memcpy(g, s + 1, e - s - 1);
s = strstr(e + 1, “|”);
if (s == NULL) return;
memcpy(b, e + 1, s - e - 1);
e = strstr(s + 1, “|”);
if (e == NULL) return;
memcpy(w, s + 1, e - s - 1);
s = strstr(e, “\r\n”);
if (s == NULL) return;
memcpy(m, e + 1, s - e - 1);
config.ledswitch = atoi(power);
config.r = atoi®;
config.g = atoi(g);
config.b = atoi(b);
config.w = atoi(w);
config.m = atoi(m);
ctrlLED(config.r,config.g,config.b,config.w,config.m);
saveConfig();
}
}

/*

  • 发送数据到串口
    /
    void sendUART(char p, size_t len)
    {
    DataSerial.println("[send to UART:]char
    ");
    DataSerial.println§;
    DataSerial.write((uint8_t
    )p, len);
    delay(50);
    }

/*

  • 发送数据到串口
    */
    void sendUART(char *p)
    {
    DataSerial.println("[send to UART:]string");
    DataSerial.println§;
    DataSerial.print§;
    delay(50);
    }

//控制LED
void ctrlLED(uint16_t r,uint16_t g,uint16_t b,uint16_t w,uint16_t m)
{
analogWrite(PWM_R, r);
analogWrite(PWM_G, g);
analogWrite(PWM_B, b);
analogWrite(PWM_W, w);
analogWrite(PWM_M, m);
}

//初始化LED
void initLED()
{
pinMode(PWM_R, OUTPUT);
pinMode(PWM_G, OUTPUT);
pinMode(PWM_B, OUTPUT);
pinMode(PWM_W, OUTPUT);
pinMode(PWM_M, OUTPUT);
ctrlLED(config.r,config.g,config.b,config.w,config.m);
}

void setup()
{
//DebugSerial.begin(115200);
DataSerial.begin(115200);
loadConfig();
initLED();
}

void loop()
{
doUartTick();
doUploadStatus();
}

注意:

(1)上传arduino程序需先断开DT-06模块的连接,程序上传完成后再插上DT-06模块

arduino UNO控制程序代码:下载地址

5.功能测试

5.1 DT-06与手机DoHome App 的连接
5.1.1扫描下面二维码(注意用浏览器扫描,不要用微信)或直接访问

http://dohome.doit.am/upgrade/downLoad/downLoad.php 下载

5.1.2 App安装完成后打开应用,打开左上角配置栏,在“点击登录”处创建和登陆帐户。


5.1.3 点右上角加号添加设备,点击灯具,添加灯具设备



5.1.4连接附近可用的WIFI,选择设备要连接的网络路由器,并输入正确的网络密码。点击下一步


5.1.5按照页面说明,返回手机的WLAN设置,连接“DoHome_XXXX”的热点,其密码为“12345678”。注:若有多台设备,请注意区分不同的热点名字。等待设备连接完成100%。



5.2功能调试
点击APP控制界面为红灯,小灯珠的红色灯亮起


点击APP控制界面为绿灯,小灯珠的绿色灯亮起


点击APP控制界面为蓝灯,小灯珠的蓝灯亮起


点击APP控制界面为关灯,小灯珠熄灭

6.小度音响的连接和远程控制

在手机应用市场搜索小度音箱app并安装完成打开小度音箱APP

6.1小度音箱APP添加小度音响设备
打开手机蓝牙,打开小度音箱APP,点击添加新设备,长按音箱上的三角键,听到音箱提示音后点击下一步


6.2小度音箱APP添加其他平台设备
6.2.1打开小度音箱APP,点击“智能家居”,然后添加设备,接着在弹出的品牌列表中找到DoHome。


6.2.2选择绑定账号,输入DoHome APP的绑定账号信息(注意是在第5节关于创建和注册的DoHome账号)。返回智能家居主页面,刷新可以得到该账号下的设备列表。


6.2.3现在您已经可以使用小度音响控制您的设备了。同时,小度音箱在“设备详情”菜单下支持分组功能。

小度支持的部分指令如下(以插座为例):
打开 [设备名字]
关闭 [设备名字]

6.3 小度音箱语音远程控制继电器
对小度说打开门口插座,继电器 的红色开关指示灯亮起
对小度说关闭门口插座,继电器 的红色开关指示灯熄灭


7.天猫精灵的连接和远程控制

7.1天猫精灵APP添加音响设备
7.1.1 在各大应用市场搜索天猫精灵app并安装以华为为例

7.1.2 打开天猫精灵APP,点击“我的”,然后添加智能设备,接着在左侧列表中选择您的音响设备类型-》选择路由器-》长按音响上的静音键点击开始连接



7.2天猫精灵APP添加其他平台设备
第一步:打开天猫精灵APP,点击“我的”,然后添加智能设备,接着在左侧列表中选择您的设备类型。



第二步:右上角搜索“DoHome”,并在链接的页面中输入您的DoHome 账号信息,完成天猫精灵与DoHome之间的链接。



第三步:此时,天猫精灵APP中,已经出现该账号下的所有设备。您可以选取特定设备,进行重新命名,例如“客厅的台灯”等等。现在您可以使用天猫精灵控制设备了。


天猫精灵支持的部分指令(以插座为例):
打开 [设备名字]
关闭 [设备名字]

7.3 天猫精灵语音远程控制继电器
对天猫精灵说打开门口插座,继电器 的红色开关指示灯亮起
对天猫精灵说关闭门口插座,继电器 的红色开关指示灯熄灭

8.小米音箱的连接和远程控制

8.1米家APP添加小爱音响设备
8.1.1在各大应用市场搜索米家app并安装以华为为例

8.1.2 打开小爱音箱,长按音箱上三角形按键听到语音提示:已进入配对模式。手机打开蓝牙,打开米家APP点击添加设备–>附近设备,搜索到设备连接,接着选择路由器下一步即可


8.2米家APP添加其他平台设备
第一步:打开米家APP,点击“我的”,然后选择“其他平台设备”。


第二步:点击添加,在弹出的列表中,找到“四博智联”。选择绑定账号,输入DoHome APP的绑定账号信息。


第三步:现在您已经可以使用小爱同学控制您的设备了。
小爱支持的部分指令如下(以插座为例):
打开 [设备名字]
关闭 [设备名字]

8.3 小米音箱语音远程控制继电器
对天猫精灵说打开门口插座,继电器 的红色开关指示灯亮起
对天猫精灵说关闭门口插座,继电器 的红色开关指示灯熄灭

利用DoHome APP和音箱控制LED灯实验参考步骤相关推荐

  1. 利用DoHome APP和音箱控制小车的实验参考步骤

    准备材料: Arduino Uno 一块 Arduino 扩展板 购买链接 DT-06模块一个 购买链接 安卓手机一个 小度音箱一个 小车一个 杜邦线若干 1.DT-06固件的烧录 1.1打开ESP模 ...

  2. led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验

    1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...

  3. 【正点原子FPGA连载】第十一章 触摸按键控制LED灯实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  4. 《STM32从零开始学习历程》——USART串口通讯实验篇2——指令控制LED灯实验

    <STM32从零开始学习历程>@EnzoReventon USART串口通讯实验篇2--指令控制LED灯实验 本实验是在<USART串口通讯实验篇1--中断接收与发送>的基础上 ...

  5. 驱动——按键中断控制LED灯实验

    三个按键实现按键中断 要求:按键按一下灯亮,再按一下灯灭 注:由于开发板位置,为了方便一一对应观察,采用key1控制LED3,key2控制LED2,key3控制LED1 0.添加相关设备树节点信息 ① ...

  6. FPGA之触摸按键控制LED灯实验

    一.背景介绍 简介:触摸按键在稳定性.使用寿命.抗干扰能力等方面都优于传统的机械按键,被广泛应用于遥控器,便携式电子设备,楼道开关和各种智能控制等方面. 分类 电阻式触摸按键:是由多块导电薄膜按照按键 ...

  7. verilog学习笔记- 12)触摸按键控制LED灯实验

    目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证: 简介: 触摸按键主要可分为四大类:电阻式.电容式.红外感应式以及表面声波式.根据其属性的不同,每种触摸按键都有其合适的使用领域. 电阻式触 ...

  8. 鸿蒙系统分享----软件驱动使用JS控制LED灯实验方法

    第一:鸿蒙系统环境搭建方法 1.BearPi-HM Micro ubuntu 镜像下载和虚拟机VMware Workstation 安装(虚拟机环境) 2.VS Code的安装和安装RaiDrive工 ...

  9. verilog学习笔记- 10)按键控制 LED 灯实验

    目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证 : 总结与反思: 简介: 按键开关是一种电子开关,属于电子元器件类.我们的开发板上有两种按键开关:第一种是本实验所使用的轻触式按键开关,使用 ...

最新文章

  1. 易语言静态连接器提取_易语言静态编译链接器切换工具
  2. ClickHouse系列教程六:源码分析之Debug编译运行
  3. FLEX 运行 空白
  4. fatal error C1900: Il mismatch between 'P1' version '20060201' and 'P2' version '20050411'
  5. 【小白学习C++ 教程】十二、C++面向对象编程中的构造函数和析构函数
  6. linux efi不要boot目录,linux – 找不到efi目录:grub-install的问题
  7. 2014年英语一作文partA
  8. __va_rounded_size
  9. IT成长日记(二)——打印机硒鼓重置
  10. Java 数据库基本操作
  11. STM32F103学习笔记(7)——ISP串口下载程序
  12. alook浏览器_Alook浏览器
  13. onclick事件诡异事件 一
  14. 黑苹果教程(二)自己制作cdr、dmg镜像
  15. 新年喜报!10人通过RHCA、60人通过RHCE!
  16. G2、D3 绘制维恩图
  17. 全球及中国光通信箱体行业市场需求前景与发展规划分析报告2022-2028年
  18. LTE小基站吞吐量测试:三星G3518手机频点锁定方法
  19. 主板噪音测试软件,华硕B85-Pro Gamer主板测试:SupremeFX音效听感
  20. 【Js】中this与that

热门文章

  1. android开发手机推荐 2015,2015年9月十佳最好安卓手机排行榜 高性价比Android手机推荐...
  2. 1667 修复表中的名字
  3. Windows管理器进程列表
  4. 互联网大佬打脸史,牛逼也是会吹破的
  5. spring 全家族相关注解
  6. 《跟二师兄学Nacos吧》EXT-01篇 看看Nacos是怎么活学活用简单工厂模式的!
  7. 平均数、众数、中位数、极差、方差、标准差……
  8. 通关GO语言03 控制结构:if、for、witch 逻辑语句的那些事儿
  9. iPad开发-分屏、画中画(即多任务处理增强功能)
  10. 如何在三星Galaxy手机上截屏