目录

1. 前言

2. 硬件准备及改装

2.1 硬件准备

2.2 硬件改装

2.3 外挂电源

3. 在腾讯云平台上创建产品

3.1 登录腾讯云

3.2 新建项目

​3.3 新建产品

3.4 新建设备

4. 从Github上下载esp-qcloud

4.1 下载代码

4.2 修改腾讯云三元组码

4.3 配置设备控制引脚

4.4 修改设备数据点

5. 通过腾讯连连小程序控制设备

5.1 通过小程序给设备配网

5.2 通过小程序控制设备

6. 结束语


1. 前言

我之前在某宝上买了一个空调扇,入手不到一年半的时间里,外壳上的触摸按键经常失灵、无法启动,天气闷热又吹不了风扇的时候真的有一种怒砸机的冲动。好在今天是周末,索性就花小半天时间捣鼓一下,刚好手上有一个Esp32模组可以派上用场,我的目的就是切除空调扇原有控制,全部改为由Esp32联网控制。记得我去年用Esp32接入过腾讯云和苹果HomeKit,但是没有做详细的记录,不过接入步骤和流程大体还是知道的,所以本文就以Esp32接入腾讯云为例详细介绍接入流程,以便以后有需要的时候查看。

2. 硬件准备及改装

2.1 硬件准备

1)Esp32模组1个;

2)触控失灵的空调扇1台;

3)万用表1台;

4)直流电源1台;

5)电洛铁1台;

6)热熔胶枪1个;

7)镊子1个;

8)飞线、杜邦线若干;

9)220V转5V1A/2A开关电源一个。

其实也不用准备这么多,如果单纯只是熟悉怎么接入腾讯云的话,一个Esp32模组就够了哈,其他的工具是我为了改造空调扇的硬件电路而准备的。

2.2 硬件改装

首先拆掉空调扇,它后盖虽然有很多螺丝,但是用一把十字螺丝刀就可以全部搞定了,拧完所有螺丝,拆下后盖的样子如下图:

接着是把空调扇的控制板拆出来,控制板在最上方的位置,也比较好拆,先取下上盖,然后同样的,用十字螺丝刀拧下固定控制板四个角的螺丝,控制板便顺利的取下来了。

拆好的控制板,正面和反面先拍个照,尴尬的是拆下来之后,触摸按键又能控制了,,不过这并不影响我继续拆下去的决心,既然能控制了那就顺便用万用表量一下控制口的信号,测量结果如下(这里有交流电,在测量的时候一定要小心):

      通过上面的测量,理清楚了空调扇的工作逻辑,那么接下来就好干活了。

把上面图中灰、蓝、白、红四条信号线的控制端与控制板单片机IO之间的线路全部用镊子割断,主要是为了避免原有单片机IO信号对Esp32控制的影响 ,而且原有单片机是5V系统,Esp32是3.3V系统。Esp32能不能直接驱动1A60可控硅达到控制电机的目的需要测试一下,实际测试是能直接控制的,这样就省去了额外搭电平转换电路的麻烦。四条信号线都用直流电源调到3.3V测试一下,确保给信号的时候电机会动,给制冷信号的时候,水泵会工作有响声。

2.3 外挂电源

本来还想从原控制板上取5V的电给Esp32开发板供电的,结果把Esp32的5V和GND飞线焊上去测了下发现原控制板的5V电源带载能力不够,导致Esp32不停地重启,原控制板上的电源有一个器件一直在滋滋响,这样从这里取电的想法就果断放弃了。还好手上有两个以前买的两个220V转5V的小开关电源模块,正好派上用场了,使用起来也非常方便,输入端接市电L N,输出端输出5V。

现在开始搭建电源,拔掉风扇的电源插头,先用烙铁将两根全公头的杜邦线焊接到开关电源的输入端,然后将杜邦线的另一端分别焊接到控制板的L N上。确定连接正常没有短路后,将风扇的电源插头插到排插上,看到开关电源的指示灯亮起,证明开关电源模块正常工作了。用万用表直流电压档量一下开关电源模块的输出端是不是有5V输出,如果有5V输出了,证明开关电源的输出是正常的。接下来,拔掉风扇电源插头,用两根电源线焊接到开关电源的输出端,然后通过一公一母的杜邦线连接到Esp32上,这样Esp32的电源就搞定了。由于Esp32还要控制风扇制冷和电机,所以原控制板的电源还需要和Esp32的电源共低,不然无法控制,再飞一根线将二者的地连接到一起就好了。

硬件调试完毕,并烧录程序,开始组装外壳,刚好风扇后面有一个矩形开孔,可以用来伸出Esp32的电源线和控制线,用透明胶粘一下并封住开口,以免里面电路受潮。

呼呼~,到这里,空调扇硬件电路上的改装工作就算完成了,开始下一步操作。

3. 在腾讯云平台上创建产品

3.1 登录腾讯云

用微信扫码登录腾讯云,这是地址,没有账号的需要注册一下:登录 - 腾讯云

选择我的资源里的物联网开发平台。

选择公共示例里的立即应用。

3.2 新建项目

3.3 新建产品

 选择好产品品类和通信方式。

选择好标准功能,也可以自定义功能。

 选择开发方式,我们采用的是C-SDK开发

配置小程序 ,面板配置选择免开发面板,保存。

设置配网引导。

3.4 新建设备

设备三元组信息,后面程序里会用到。

 至此,设备就已经在腾讯云物联网平台创建成功了,可以启动虚拟设备、用微信扫码体验腾讯连连小程序操控效果。

4. 从Github上下载esp-qcloud

4.1 下载代码

乐鑫官方在Github上托管的esp-qcloud仓库地址:https://github.com/espressif/esp-qcloud

通过git clone命令或者网页直接下载,下载好的源码目录结构如下:

通过TERMINAL窗口输入命令:cd examples/led_light ,使命令行进入到examples/led_light路径。

4.2 修改腾讯云三元组码

找到esp-qcloud/src/iot_hub/esp_qcloud_device.c 文件,修改成自己创建的设备三元组码,这三个参数默认在kconfig配置文件里定义,如果在配置文件里修改这三个参数,工程又要重新全部编译一遍,所以我们可以自己定义三个宏定义,修改起来比较方便:

#define MY_PRODUCT_ID     "HPPXC7FXXX"
#define MY_DEVICE_NAME    "SmartColXXX"
#define MY_DEVICE_SECRET  "ulITv8a/zwawB2XXXCIkyw==" 

4.3 配置设备控制引脚

还有对应的GPIO配置也要改一下,控制电机需要三个GPIO,制冷控制也需要一个GPIO,这是我的配置,放在app_main函数里调用一次即可(实际可根据自己的连线更改):

//GPIO DEFINITION
#define COLD_GPIO_NUM  12
#define LOW_SPEED_GPIO_NUM  14
#define MIDDLE_SPEED_GPIO_NUM 27
#define HIGH_SPEED_GPIO_NUM   26//user driver init
gpio_reset_pin(COLD_GPIO_NUM);
gpio_set_direction(COLD_GPIO_NUM, GPIO_MODE_OUTPUT);
gpio_reset_pin(LOW_SPEED_GPIO_NUM);
gpio_set_direction(LOW_SPEED_GPIO_NUM, GPIO_MODE_OUTPUT);
gpio_reset_pin(MIDDLE_SPEED_GPIO_NUM);
gpio_set_direction(MIDDLE_SPEED_GPIO_NUM, GPIO_MODE_OUTPUT);
gpio_reset_pin(HIGH_SPEED_GPIO_NUM);
gpio_set_direction(HIGH_SPEED_GPIO_NUM, GPIO_MODE_OUTPUT);

4.4 修改设备数据点

由于乐鑫官方接入腾讯云的示例是基于智能灯为例的,代码里的数据点也是灯的相关功能,所以需要修改,这个在app_main.c文件里,找到函数light_set_param,然后修改如下:

/* Callback to handle commands received from the QCloud cloud */
static esp_err_t light_set_param(const char *id, const esp_qcloud_param_val_t *val)
{esp_err_t err = ESP_OK;ESP_LOGI(TAG, "Received id: %s, val: %d", id, val->i);/*if (!strcmp(id, "power_switch")) {err = light_driver_set_switch(val->b);} else if (!strcmp(id, "value")) {err = light_driver_set_value(val->i);} else if (!strcmp(id, "hue")) {err = light_driver_set_hue(val->i);} else if (!strcmp(id, "saturation")) {err = light_driver_set_saturation(val->i);} else {ESP_LOGW(TAG, "This parameter is not supported");}*/static uint8_t onoff = 0;static uint8_t mode = 0;static uint8_t gear = 0;if (!strcmp(id, "power_switch")) {onoff = val->b;if(onoff){gpio_set_level(MIDDLE_SPEED_GPIO_NUM,LOW);gpio_set_level(HIGH_SPEED_GPIO_NUM,LOW);gpio_set_level(LOW_SPEED_GPIO_NUM,HIGH);}else{gpio_set_level(MIDDLE_SPEED_GPIO_NUM,LOW);gpio_set_level(HIGH_SPEED_GPIO_NUM,LOW);gpio_set_level(LOW_SPEED_GPIO_NUM,LOW);gpio_set_level(COLD_GPIO_NUM,LOW);}} else if (!strcmp(id, "windspeed")) {gear = val->i;if(onoff){switch(gear){case 0://低gpio_set_level(MIDDLE_SPEED_GPIO_NUM,LOW);gpio_set_level(HIGH_SPEED_GPIO_NUM,LOW);gpio_set_level(LOW_SPEED_GPIO_NUM,HIGH);break;case 1://中gpio_set_level(LOW_SPEED_GPIO_NUM,LOW);gpio_set_level(HIGH_SPEED_GPIO_NUM,LOW);gpio_set_level(MIDDLE_SPEED_GPIO_NUM,HIGH);break;case 2://高gpio_set_level(LOW_SPEED_GPIO_NUM,LOW);gpio_set_level(MIDDLE_SPEED_GPIO_NUM,LOW);gpio_set_level(HIGH_SPEED_GPIO_NUM,HIGH);break;}}} else if (!strcmp(id, "mode")) {mode = val->i;} else if (!strcmp(id, "timer")) {} else if(!strcmp(id, "swing")){//制冷if(onoff){if(val->b){gpio_set_level(COLD_GPIO_NUM,HIGH);}else{gpio_set_level(COLD_GPIO_NUM,LOW);}}} else if(!strcmp(id, "cold")){} else {ESP_LOGW(TAG, "This parameter is not supported");err = ESP_FAIL;}return err;
}

同样的,app_main函数里的数据点上报也需要修改一下:

/**< Register the properties of the device */// ESP_ERROR_CHECK(esp_qcloud_device_add_property("power_switch", QCLOUD_VAL_TYPE_BOOLEAN));// ESP_ERROR_CHECK(esp_qcloud_device_add_property("hue", QCLOUD_VAL_TYPE_INTEGER));// ESP_ERROR_CHECK(esp_qcloud_device_add_property("saturation", QCLOUD_VAL_TYPE_INTEGER));// ESP_ERROR_CHECK(esp_qcloud_device_add_property("value", QCLOUD_VAL_TYPE_INTEGER));ESP_ERROR_CHECK(esp_qcloud_device_add_property("power_switch", QCLOUD_VAL_TYPE_BOOLEAN));ESP_ERROR_CHECK(esp_qcloud_device_add_property("windspeed", QCLOUD_VAL_TYPE_INTEGER));ESP_ERROR_CHECK(esp_qcloud_device_add_property("mode", QCLOUD_VAL_TYPE_INTEGER));ESP_ERROR_CHECK(esp_qcloud_device_add_property("timer", QCLOUD_VAL_TYPE_INTEGER));ESP_ERROR_CHECK(esp_qcloud_device_add_property("swing", QCLOUD_VAL_TYPE_BOOLEAN));ESP_ERROR_CHECK(esp_qcloud_device_add_property("cold", QCLOUD_VAL_TYPE_BOOLEAN));

这样软件的移植工作就算完成了,是不是挺简单的哈,接下来就是通过小程序对设备进行控制!

5. 通过腾讯连连小程序控制设备

5.1 通过小程序给设备配网

点“+”图标添加设备

品类选择:家用电器→风扇

勾选 我已确认操作 然后点击 下一步

输入路由器WiFi名称、密码,点击下一步,开始配网。

由于小程序默认是一键配网模式,第一次配网会失败,不过不打紧,第二次我们选择,切换到热点配网。

前面两步和一键配网相同,第三步通过小程序连接设备热点:

第四步等待设备配网成功,即如下界面,设备成功添加。

5.2 通过小程序控制设备

风扇默认有5个功能,目前做了开关、制冷和挡位这三个功能,模式和定时有空的时候再加上。

放一张改造后的图,哈哈,表面看起来和之前完全没区别(实则内脏已被我掏空)。

这下终于解决了触摸按键失灵的困扰,也不用管红外遥控器好不好使,开个WiFi就能随意控制!

6. 结束语

这篇文章主要以智能冷空调扇为例介绍了Esp32接入腾讯云的具体过程,实际其他品类产品也可以采用类似方法,主要两点:第一是修改三元组码,第二是修改数据点下发和上报函数,其他基本都不用怎么改动。

这是我第一次手动改装一个小电器并且全程详细记录了改装的整个过程,虽然说操作并不复杂,但是作为一个电子爱好者来说还是有那么一点成就感的。其实,我想说的是,硬件改装和代码调试并没有花多少时间,写这篇文章码字却花了我差不多三个晚上外加一个周末的下午,这个效率着实太低了。后面还需要继续创作,好好提升一下文字表达能力和动手创新能力,奥利给!

Esp32快速接入腾讯云之智能冷空调扇实例相关推荐

  1. Android 快速接入腾讯云人脸核身(识别)

    Android 通过 SDK 快速接入腾讯云人脸核身 我的接入代码:https://blog.csdn.net/qq_39836064/article/details/108702725,很久之前写的 ...

  2. 图文手把手教程--ESP32 MQTT连接腾讯云物联网平台及OTA固件升级

    本文内容 1)在腾讯云物联网开发平台,新建项目,并在项目下新建设备"light_001". 2)下载腾讯云SDK-esp-qcloud,使用例程led_light,通过" ...

  3. ESP32接入腾讯云物联网开发平台

    文章目录 前言 1 资料参考 2 对接总体思路 3 代码移植 3.1 component qcloud_iot 3.2 项目顶层处理 3.3 component main 4 移植问题备忘 CMake ...

  4. 腾讯云首发智能网关流控,公有云进入网络精细管控时代

    2019独角兽企业重金招聘Python工程师标准>>> 欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 腾讯云私有网络率先在业界推出了智能网关流控,为NAT网关.专线网关. ...

  5. LR1110接入腾讯云

    LR1110接入腾讯云 前言 第一章 网关介绍 第二章 定位原理 第三章 平台搭建 固件烧录 腾讯云平台搭建 创建LoRa网关 LR1110设备创建 位置服务 前言 随着物联网的进步,位置信息作为一个 ...

  6. RAK7258 LoRaWAN 网关接入腾讯云物联网开发平台

    文章目录 前言 1 控制台操作 LoRa 网关 2 RAK 7258 LoRa网关实物操作 连接配置 网络配置 LoRa参数配置 网关上线确认 END 前言 这篇笔记记录采用 RAK7258 LoRa ...

  7. FLY攻略之第二回: 接入腾讯云短信服务 实现手机验证注册

    接入腾讯云短信服务 实现手机验证注册 上回说到 ,完成了security的接入和登录功能,但是在准备登录尝试security的强大时发现,还没有完成注册功能,根本没有账号提供登录,那么这回,就实现手机 ...

  8. 微信公众号HTML5接入腾讯云人脸核身

    微信公众号HTML5接入腾讯云人脸核身 概述 接入流程 原生H5对行业的要求 概述 针对微信公众号接入腾讯云,腾讯云提供了两种方案,一种是通用H5接入,另外一种是通过微信的原生H5来接入,但是一般都是 ...

  9. 骐俊CAT1模组 - MQTT接入腾讯云平台篇

    本次实验使用骐俊ML110S系列模组及开发底板,通过MQTT协议采用密钥的方式接入腾讯云平台,实现消息的发布及订阅,可分为接入注册及动态注册两种方式.   设备注册(接入注册) A.进入腾讯云平台注册 ...

最新文章

  1. Axel之 -axel_do剖析
  2. ae编程语言as_AE开发 入门教程
  3. 【 MATLAB 】逆离散余弦变换(idct)的基础知识介绍
  4. Java使用Proxy和CGLib实现动态代理
  5. HDU - 1811 Rank of Tetris 并查集 + 拓扑序 +me
  6. python实例 65,66
  7. 2021-10-13企业财务数据风险预警之随机森林
  8. hdu 4974 贪心
  9. linux ssh密钥登录
  10. 正态分布下含绝对值的期望求解 -- 待验证
  11. 几种深度学习框架的使用和对比
  12. static关键字_void和void指针_函数指针
  13. 数据库 ER图 EER图(鸭蹼图) freedgo绘图工具
  14. div+js写弹出框
  15. 系统分析和设计方法之数据建模和分析
  16. windows/Linux网络工具
  17. mini2440的串口在Qt上实现
  18. calibre的使用技巧
  19. MES系统和RRP之间需要交换哪些数据?
  20. 【Unity】【Android】问题记录

热门文章

  1. 一个「学渣」从零开始的Web前端自学之路
  2. 常用希腊字母及其发音
  3. 前端基础(8):javascript 基础语法(2)--实例与显示
  4. [英语学习]表示将来时的几种常用法
  5. Django高并发负载均衡
  6. java u0002_java 转义字符\u0010 \010 \2等
  7. 塑化行业采购商城网站规范企业采购流程,提高采购效率
  8. 【游戏UI理论知识】游戏界面设计,一定要掌握的8大风格!
  9. 2.MySQL之DQL语言
  10. 三方库 之 分分钟集成腾讯 TBS X5 。。。