导语丨腾讯小哥哥亲自动手做了一个物联网智能灯,可以灵活调节亮度、色温,可用微信小程序远程控制,还可接入彩色模式。非常之拉风炫酷……所有软硬件设计全部开源,有兴趣的小伙伴也可以在此基础上改造属于你自己的智能台灯。

一起来看看吧~

▲完整制作操作视频

一、项目介绍

1项目介绍

台灯是日常使用频率最高的电器,将给大家介绍如何制作一款可以使用微信小程序进行远程控制的智能台灯。这款台灯操作简便,可以灵活调节亮度、色温,开发板上的OLED显示屏能够实时显示台灯的状态,同时预留了WS2812灯带接口,内置多种彩灯模式,可以做氛围灯使用。所有软硬件设计全部开源,动手能力强的小伙伴也可以在此基础上改造属于你自己的智能台灯。

2. 材料清单

以下是我制作智能台灯所需的材料清单,供大家参考:

  • TencentOS_tiny_EVB_G0 开发板 x1

  • E53接口LED驱动模块 x1(需要自己焊接,详细物料清单参见下方链接)

  • 椴木板外壳一套 (需要根据图纸自己加工)

  • 双色温LED灯管 x2 (文中同款搜索“Rohm led灯条”)

  • 150 * 20 * 6 mm 散热器 x2

  • 12V 1A 电源 x1 (保护环境,可以使用旧路由器、电视盒子等的电源,输出电压12V,输出电流为1A或更高)

  • 鹅颈管 x1

  • 鹅颈管配套铁夹 x1

  • 鹅颈管配套螺母若干

  • UHU胶、电线、焊锡、电烙铁、镊子、扳手等其他材料与工具。

3项目链接

工程源码:https://gitee.com/dma/iot_led.git

电路图及PCB:https://oshwhub.com/Code504/e53-kuo-zhan-mu-kuai_copy

二、硬件准备

1TOS_EVB_G0 开发板

TOS_EVB_G0 开发板是由腾讯TencentOS Tiny团队设计的一款物联网开发板,外观如下:

* 主控芯片采用STM32G070RB,Flash空间为128KB、RAM空间为36KB;

* 板载腾讯云定制固件版ESP8266 WIFI模组;

* 板载E53传感器标准接口,方便连接各种E53传感器;

* 板载128*32 OLED显示屏幕;

* 板载8MB SPI Flash,可用于固件升级;

* 板载CH340转串口连接,可以使用一根USB线连接至电脑,查看串口日志。

下面是每部分详细的说明:

开发板硬件电路详解

(1) 最小系统电路

最小系统部分由电源电路、时钟电路、Boot电路、复位电路、下载电路组成:

(2) Wi-Fi电路

Wi-Fi部分包括ESP8266 Wi-Fi模组供电电路、串口通信电路:

(3) E53扩展接口电路

E53扩展接口供外部传感器连接,包括:一个串口、一个SPI接口、一个IIC接口、四个普通GPIO口、一个ADC模拟采集接口,一个DAC模拟输出接口,如图:

(4) USB转串口电路

USB转串口电路将串口信息转换为USB口信号,使得开发板可以直接通过USB线连接至PC,在PC上使用串口助手查看日志:

(5) OLED显示屏幕电路

OLED屏幕部分包括OLED供电部分和通信部分:

(6) 连接Micro USB线

(7) 连接ST-Link下载器

开发板3v3---> STlink 3.3V

开发板DIO---> STlink SWDIO

开发板CLK---> STlink SWCLK

开发板GND---> STlink GND

请大家参考下图进行连接,千万不要接反接错,以免烧掉MCU。

2. 台灯外壳及结构

首先需要购买鹅颈管、铁架、螺母等零件,规格如下:

鹅颈管建议选用40-60cm长,空心偏硬的鹅颈管,注意鹅颈管的内径不要太小,否则电线难以穿过;铁夹子选购时注意开孔的形状,最好使用扁孔,这样方便固定鹅颈管,保证不会旋转;当然还要记得买配套的螺母;灯管用704硅橡胶居中粘在散热器上,胶水一定不要挤得太多,胶水干透后焊接双色LED灯管。

下一步准备台灯外壳:

图纸在源码的 doc 文件夹内,店家一般都是在一整块木板上进行切割,不论实际切割的大小都按整张板收费,因此建议在一张图纸内多切割几个外壳,充分利用这块木板,减少浪费。如下图所示,这里在一块木板上切了4套台灯外壳和其他几个外壳:

实测单灯管照明有点暗,强烈建议用两个灯管,下图中标注的单灯管零件就不要使用了,B1和B2、G1和G2、H1和H2完全一样,F1和F2的区别在于开孔的直径不一样,一个是8mm,另一个是10mm,如果买不到同规格的鹅颈管方便替换使用。

最后组装完成是这样的,供大家参考,安装时一定注意先后顺序,提前把线、螺母穿好,避免返工。

上图有一个细节,我的外壳边缘比中间的零件大概高出2mm,预留用于安装透明外壳。如果买了什么东西的包装盒是塑料磨砂材质,可以裁剪一块合适大小盖在灯管外壳上,这样光线会柔和一点,不至于太刺眼。实在没有可以不装,如果不差钱也可以按尺寸找商家切割一块2mm厚的雾面亚克力。

注意事项:

不同商家的木板厚度有一定误差,切割机也有一定误差,请提前沟通,误差一般在0.1-0.2mm左右,可能需要在图纸中进行补偿。

3. E53接口LED驱动模块

请根据原理图内物料清单采购元件并焊接,模块焊接完成如图:

请按下图所示与开发板进行组装:

注意事项

1. 板子上预留WS2812灯带的接口,没有灯带或不需要灯带可以不焊。

2. 不使用灯带或WS2812灯珠数量少于5个,建议采用线性稳压方案;超过5个建议采用开关稳压方案。

3. 板子上有两路PT4115驱动,如果使用双色灯管,左边一路接黄色,右边一路接白色。如果使用单色灯管,建议只接右边一路,并把色温调整到6500K,这样使用的缺点就是浪费了一路驱动,想要驱动两路白光LED,请自行修改的代码,删除调整色温的相关内容。

4. 灯管的功率计额定电压决定了PT4115的采样电阻,目前用的是两根双色温灯管,单根灯管额定电压6V,单色额定电流300mA,这里是两根灯管的黄色与黄色并联、白色与白色并联,单色温的总额定电流为600mA,根据PT4115手册计算出0.2ohm采样电阻输出电流为500mA,因此串联两个0.1ohm的采样电阻。如果使用其他规格的灯管请自行计算采样电阻阻值。

5. 旋转编码器旁边有一个排阻,为IO口上拉,如果单片机支持上拉可以不焊。

6. P2、P3、R3、R4为预留测试焊盘,不需要焊接。

7. 设计输入电压为12V,如需驱动更高电压、更大功率的LED灯管,请注意元件耐压,可能需要更换更高耐压的元件。

三、软件开发

1. 开发板软件环境准备

1.1 MDK软件介绍

Keil公司开发的ARM开发工具MDK,是用来开发基于ARM核的系列微控制器的嵌入式应用程序。它适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件,支持所有基于ARM的设备,能帮助工程师按照计划完成项目。

1.2 MDK安装

登录MDK官网,下载MDK5软件,下载地址:

http://www2.keil.com/mdk5 或者 https://www.keil.com/download/product/

下载的版本最好在5.24以上,本开发教程以5.24版本为例。

激活MDK,导入License,激活MDK后便可使用了。

特别提示:一定要输入License激活MDK软件,建议购买正版License。

1.3 Pack安装

安装完MDK后,我们需要安装开发套件中单片机型号对应的Pack。

安装方式一:登录官网:http://www.keil.com/dd2/pack/

下载Keil.STM32G0xx_DFP.x.x.x.pack 后安装。

安装方式二:MDK软件上在线安装。

打开软件,在导航栏打开Pack安装界面,然后选择ok选项。

进入在线安装界面,选着STM32G0XX Pack,点击Install进行安装。

到这里,我们开发板的单片机程序开发环境已经搭建完毕,重启MDK软件就可以使用了。

1.4 ST-Link驱动安装

前面讲了开发板单片机程序的开发环境的搭建,但是为了将程序烧录到开发板中我们还需要使用仿真器。我们这套开发板选用ST公司的ST-Link V2仿真器进行开发板程序的烧写和仿真,下面介绍ST-Link驱动的安装及环境搭建。

在ST官网下载ST-Link驱动,

https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-utilities/stsw-link009.html

(驱动有2种:32位电脑系统安装“dpinst_x86”、64位电脑系统安装“dpinst_amd64”)。

运行对应的驱动,安装ST-Link V2驱动程序。安装路径尽量保持默认路径。

安装完成后, 将ST-Link通过USB接口连入电脑。打开“设备管理器”。若看到如下图所示,表示驱动安装成功。

有两点值得注意:

1. 各种 Windows 版本设备名称和所在设备管理器栏目可能不一样,例如 Win10 插上ST-Link 后显示的是 STM32 ST-Link。

2. 如果设备名称旁边显示的是黄色的叹号,请直接点击设备名称,然后在弹出的界面点击更新设备驱动

至此, ST-Link 驱动已经安装完成。

接下来大家只需要在 MDK工程里面配置一下 ST-Link即可。

1.5 CH340串口驱动安装

互联网搜索下载CH340 串口芯片的驱动,安装方法:打开驱动安装程序点击安装即可。

注:若安装失败,请先点击卸载,后点击安装。

1.6 串口调试助手的安装与使用

工具下载:http://www.daxia.com/download/sscom.rar

安装方法:串口调试助手sscom5.13.1是免安装的,解压出压缩包即可直接使用。

根据PC和终端之间的连接,选择正确的串行端口。

打开电脑的设备管理器,在端口列表可以看到PC与开发板连接的端口号。

我这里显示的是COM26,所以要在sscom工具中选择COM26,开发板程序波特率设置为115200,所以我在sscom串口工具中选择115200波特率。

2. ESP8266烧写腾讯云定制固件

2.1 下载固件

腾讯云IoT AT指令是一套针对使用通讯模组(2G/4G/NB/Wi-Fi)接入腾讯云物联平台的定制AT指令集,如果通讯模组实现了该指令集,则设备接入和通讯更为简单,所需代码量更少。ESP8266作为IoT领域使用最广泛的一款Wi-Fi芯片/模组,腾讯云在其通用AT指令基础上,增加了腾讯云IoT AT指令集,形成一个定制的模组固件QCloud_IoT_AT_ESP8266。

下载链接:https://github.com/tencentyun/qcloud-iot-esp-wifi  

使用git下载的命令如下:

git clone https://github.com/tencentyun/qcloud-iot-esp-wifi.git

下载之后即可在图中圈出的文件夹中看到定制固件:

2.2 下载烧写工具

使用乐鑫官方下载工具ESPFlashDownloadTool,下载链接如下:

https://www.espressif.com/zh-hans/support/download/other-tools

点击下载Flash 下载工具(ESP8266 & ESP32 & ESP32-S2):

下载之后解压即可。

2.3 固件说明

腾讯云IoT定制的AT模组固件QCloud_IoT_AT_ESP8266,适用于所有FLASH大小为2MB或者2MB以上的ESP8266模组。

AT串口使用UART0,默认的Tx为GPIO1,Rx为GPIO3。但因为ESP8266的UART0 默认会在上电启动期间输出一些打印,如果打印信息影响设备功能,可在上电期间将 U0TXD(GPIO1)、U0RXD(GPIO3) 分别与 U0RTS (GPIO15),U0CTS(GPIO13)进行交换,以屏蔽打印。因此提供两个版本的固件:

* 名称包含UART_1_3的固件串口使用的Tx为GPIO1,Rx为GPIO3。

* 名称包含UART_15_13的固件串口使用的Tx为GPIO15,Rx为GPIO13。

进入QCloud_IoT_AT_ESP8266_FW,本文中我们使用第一个固件:

2.4 烧写固件

切换Boot选择端子和串口选择端子。

(1)将开发板上的ESP8266启动引脚配置端子切换到低电平;

(2)将开发板上的串口选择端子置于中间,使ESP8266直接与PC串口连接:

方法参考下图:

运行Flash烧写工具,双击工具,运行:

选择开发者模式:

选择ESP8266下载工具:

开始下载,按照图中进行操作:

点击下载之后,按下开发板上的复位键,Flash下载工具开始下载:

若没有显示,请检查接线端子是否连接正确。

下载完成之后如图:

关闭工具,将Boot选择引脚拔下,将串口选择端子恢复默认。

注意:

完成固件下载后,一定切记将跳线端子恢复到默认状态,默认端子怎么短接可以参考前面完整的组装成品图,否则Wi-Fi将没法工作,MCU也没法控制Wi-Fi。

3. 工程代码修改与使用

下载TencentOS代码

https://github.com/Tencent/TencentOS-tiny.git

下载本工程代码

https://gitee.com/dma/iot_led.git

把本工程代码放在 TencentOS-tiny\board\TencentOS_tiny_EVB_G0\KEIL

本工程使用的是AT SDK,已经集成在工程下,因为部分功能的需要,我在官方SDK的基础上做了一些修改及适配,源码在这里 https://github.com/tencentyun/qcloud-iot-sdk-tencent-at-based

如需移植其他OS或开发板请参阅官方文档自行修改。

在腾讯物联网开发平台创建设备,具体步骤参见 https://cloud.tencent.com/document/product/1081/34738

产品定义,新建项目,新建产品,按如下配置:

数据模板,选择“导入json”,json文件路径 `iot_led\user_code\智能灯.json`,你也可以添加自己的功能,或在此基础上进行二次开发。

没有修改json的话可以略过这一步,进行之后的交互开发,如果你之前在数据模板中添加了自己的功能或有其他修改,请点击“查看json”并下载json代码。

将导出的json放在iot_led\qcloud-iot-sdk-tencent-at-based\tools

cmd窗口运行python codegen.py -c 智能灯.json,重新生成数据模板代码,如果提示出错,请检查编码是否为GBK。

将生成几个c文件放入 iot_led\qcloud-iot-sdk-tencent-at-based\usr_logic

打开iot_led\qcloud-iot-sdk-tencent-at-based\usr_logic\data_template_usr_logic.c,在 deal_down_stream_user_logic中开发你自己的功能。

交互开发,面板配置这里按自己的需求摆放各个组件、设置图标等,点击左边的箭头可以设置图标顺序,样式和图标可以按自己的喜好进行更改,也可以照搬这个设计。

设备调试,设备端代码编译并下载后你可以在这里在线调试。

打开 iot_led\user_code\user_config.h

找到你刚刚创建的设备,填入设备密钥、产品ID、设备名。

填入你家的Wi-Fi名和密码(如果作为一个真正商用的产品,应该通过配网或其他方式来获取Wi-Fi信息,不应该在代码中写Wi-Fi名和密码,因为你不可能知道用户家的Wi-Fi,目前配网功能有,但还不完善,就先这样用吧)。

打开TencentOS-tiny\board\TencentOS_tiny_EVB_G0\BSP\Inc\stm32g0xx_hal_conf.h打开这处宏

/* #define HAL_TIM_MODULE_ENABLED   */

打开TencentOS-tiny\board\TencentOS_tiny_EVB_G0\TOS_CONFIG\tos_config.h

修改#define TOS_CFG_TASK_DYNAMIC_CREATE_EN  0u#define TOS_CFG_TASK_DYNAMIC_CREATE_EN  0u

由于启用了动态创建任务,任务栈会从对内存申请,所以系统堆内存适当改大一点,避免溢出#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE        0x2000 

最好结合自己的代码,在系统完全运行起来以后使用k_err_t tos_mmheap_check(k_mmheap_info_t *info);查看内存使用情况,适当修改对内存的大小。如果出现莫名其妙的死机、重启等问题,大概率是内存不足溢出了。

打开

TencentOS-tiny\board\TencentOS_tiny_EVB_G0\BSP\Src\stm32g0xx_it_module.c

添加头文件#include "ringbuff.h"

添加extern sRingbuff g_ring_buff;

同样在这个代码中找到HAL_UART_RxCpltCallback函数,去掉tos_at_uart_input_byte(data);,添加ring_buff_push_data(&g_ring_buff, &data, 1);

编译下载运行

点击进入工程配置界面按纽,进入工程配置界面:

选择Debug选项,进入仿真器设置界面。

下拉仿真器选择列表,选着ST-Link Debugger并勾选右侧Use,点击Settings进入ST-Link V2仿真器配置界面。

开发板设计的程序烧录方式为SW,此处Unit选择ST-Link/V2,且Port选择SW,并确认右侧框内是否检测出SW设备,点击确认保存配置。

点击确定之后,回到主界面,点击下载按钮:

四、联机演示

设备菜单选择配网,打开微信,在主页面下拉,搜索“腾讯连连小程序”,点击加号添加设备,在电工照明中选择灯,按照提示进行配网。详细操作步骤请看视频演示。

▲操作演示视频

工程源码:

https://gitee.com/dma/iot_led.git

往期推荐

1.乐鑫 ESP8266 x 腾讯连连 实战

2.Ruff开发板 x 腾讯连连 家居环境监测

3.树莓派+腾讯连连,打造智能鱼缸

4.LoRa设备接入腾讯云 IoT 平台实战

哇噻,这个 IoT 物联网智能灯也太炫酷了吧!相关推荐

  1. python大游戏_玩游戏就能学Python?太炫酷了!

    原标题:玩游戏就能学Python?太炫酷了! 要说现在最火的语言,那一定是Python了. 各种排行榜里,Python的排名都是蹭蹭蹭地往上涨.Python也确实是最适合新手入门的语言了,语法简单,应 ...

  2. 太炫酷了|对全国大学数据进行可视化分析,看完后发现.....

    大家好,我是阿辰. 今天带大家来看一下全国所有大学的数据信息(包括专本科,覆盖全国),一共是获取到了全国31个省份,共2769所大学.先预览一下数据: 这里字段主要是包括了(省份.大学.类型.公或民办 ...

  3. 鸿蒙手机壁纸有条纹,华为鸿蒙系统界面曝光,图标也实在太炫酷了,彻底摆脱安卓味道!...

    原标题:华为鸿蒙系统界面曝光,图标也实在太炫酷了,彻底摆脱安卓味道! 有很多的消费者在购买手机的时候,一般情况下都会去选择上上一款所使用的手机的品牌,因为在使用一款手机一段时间之后,对于手机的系统界面 ...

  4. 华为鸿蒙系统的手机爆光图片,华为鸿蒙系统界面曝光,图标也实在太炫酷了,彻底摆脱安卓味道!...

    原标题:华为鸿蒙系统界面曝光,图标也实在太炫酷了,彻底摆脱安卓味道! 比亚迪全新一代唐完全视频13:25秒 有很多的消费者在购买手机的时候,一般情况下都会去选择上上一款所使用的手机的品牌,因为在使用一 ...

  5. python画动态小黄鸭_抖音小黄鸭动态朋友圈封面,这效果太炫酷了

    原标题:抖音小黄鸭动态朋友圈封面,这效果太炫酷了 大家好,我是辰由,这两天满屏的小黄鸭表情包,一早就有小伙伴问我朋友封面怎样设置成动态的小黄鸭,动态的!动态的!动态的!效果不能再酷炫,先放给大家看下视 ...

  6. vipjr3月份的发布会太炫酷了吧,竟然为课堂引进了网红机器人sophia

    不知道各位朋友有没有留意到vipjr的新动作~正确来说是,vipjr隶属的集团iTutorGroup的3月份发布会里公布与国际公民机器人sophia的合作战略. vipjr3月份的发布会太炫酷了,竟然 ...

  7. 唐山5.1级地震,IoT 物联网智能电视弹出预警

    07月12日,06时38分在河北唐山市古冶区(北纬39.78度,东经118.44度)发生5.1级地震,震源深度10千米. 家中监控记录地震时房顶墙皮脱落的瞬间: 震后超市满地狼藉: 微博有网友表示,在 ...

  8. 物联网领域,“花式”充电炫酷来袭

    无线充电技术已经率先在智能手机领域实现,下一步就将覆盖各种可穿戴设备. 未来的物联网世界会是什么样子呢?想象空间无限,但可以肯定的一点是,在万物互联并且高度智能的物联网时代,设备的数量几乎多到了难以计 ...

  9. 用手机APP来养一盆绿植,这个黑科技智能花盆实在是太炫酷 | 钛空舱

    关注"潜在价值",最好的技术商业媒体,了解那些智慧商业 本文由潜在价值旗下 创意产品推荐平台"钛空舱"推出 钛空(ID:TiKong-life) 一个关注于科技 ...

最新文章

  1. [转载].sscanf的用法
  2. Windows 不能在 本地计算机 启动 SQL Server 。错误代码126.
  3. 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)
  4. Android版本dp,Android中sp和dp区别
  5. Ubuntu下搭建NFS,并在开发板挂载
  6. 返回局部变量或临时变量的地址_值传递和地址返回两者在堆区(Heap)应用的三种易错点...
  7. 创建世界级品牌的大师忠告
  8. java 局部内部类常用么_Java中的内部类
  9. 10条思科文件管理命令帮你做到称职网管
  10. 最新PHP精品在线音乐分享网站源码/UI很好看
  11. html5页面设计报告书,网站设计报告模板.docx
  12. si4438 的初始化
  13. Windows 10 安装 Maven
  14. 人工智能基础:人工智能云服务(Alaas)介绍
  15. 华硕主板Z97-A无法识别intel M.2 NVME固态硬盘的解决方案
  16. 很喜欢这句话:将军赶路,不追小兔
  17. 英语发音规则---E字母(总结)-[复习中]
  18. 数据中心云工作流任务的能效调度算法研究(1)
  19. 微信小程序 社区电商demo模板
  20. IT公司是动物园——程序猿、攻城狮、射鸡师、产品锦鲤、西衣鸥!

热门文章

  1. 【苹果虚拟机真机】群控软件安装操作补码主动扫描或手动过滤
  2. 普京签署法案禁止美公民收养俄儿童
  3. 中国12家云平台实际进展情况,看完这篇你就全部了解了!
  4. 动态平衡网格交易_本周懒人大树数字币网格价值投资与主流币云算力挖矿实盘记录(12.19日更新)...
  5. 数据科学库之——matplotlib
  6. 细说JVM系列:自动内存管理内存回收:垃圾收集理论-垃圾收集算法
  7. Android开关机定制(动画,声音)
  8. C++ cout输出中文信息乱码问题解决
  9. onedrive php映射,宝塔面板搭建OneDrive目录程序OLAINDEX
  10. mysql勒索_mysql数据库被勒索删库怎么办