完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前言
大家好,今天我又给大家带来点东西,灯控设备的一些技术分享。一些朋友应该了解到了市面上有一种天猫精灵控制的蓝牙灯,这个灯的话是蓝牙mesh的,我们可以语音控制他的亮灭和灯的亮度等,所以这篇文章就是来介绍和教会大家来开发制作一个自己的灯控设备,过程也非常简单。 原理分析 关于控制以及数据传输的原理的话我用下面的这张图来表示。 准备工作
环境搭建(一) 此环境主要用来对TB02进行代码编写以及三元组的烧录。 获取TC32编译工具链(文档仅适用于Linux) 目前仅测试了linux及Mac OS系统,Windows系统仅提供了编译工具链,需自行设置环境变量 Mac OS版本获取编译工具链 git clone https://github.com/flyskywhy/tc32 -b macos Windows 版本工具链下载地址 https://shyboy.oss-cn-shenzhen.aliyuncs.com/readonly/tc32-win.rar linux版本获取编译工具链 wget https://shyboy.oss-cn-shenzhen.aliyuncs.com/readonly/tc32_gcc_v2.0.tar.bz2 解压到opt文件夹 (也可解压到其他文件夹) sudo tar -xvjf tc32_gcc_v2.0.tar.bz2 -C /opt/ 添加工具链到环境变量(以解压到/opt为例) export PATH=$PATH:/opt/tc32/bin 测试是否搭建成功 tc32-elf-gcc -v 如果搭建成功将打印如下信息: Using built-in specs. COLLECT_GCC=tc32-elf-gcc COLLECT_LTO_WRAPPER=/opt/tc32/lib/gcc/tc32-elf/4.5.1.tc32-elf-1.5/lto-wrapper Target: tc32-elf Configured with: ../../gcc-4.5.1/configure --program-prefix=tc32-elf- --target=tc32-elf --prefix=/opt/tc32 --enable-languages=c --libexecdir=/opt/tc32/lib --with-gnu-as --with-gnu-ld --without-headers --disable-decimal-float --disable-nls --disable-mathvec --with-pkgversion='Telink TC32 version 2.0 build' --without-docdir --without-fp --without-tls --disable-shared --disable-threads --disable-libffi --disable-libquadmath --disable-libstdcxx-pch --disable-libmudflap --disable-libgomp --disable-libssp -v --without-docdir --enable-soft-float --with-newlib --with-gcc --with-gnu- --with-gmp=/opt/tc32/addontools --with-mpc=/opt/tc32/addontools --with-mpfr=/opt/tc32/addontools Thread model: single gcc version 4.5.1.tc32-elf-1.5 (Telink TC32 version 2.0 build) 获取SDK git clone https://github.com/Ai-Thinker-Open/Telink_SIG_Mesh.git 1 编译 进入examples/8258_mesh工程目录 cd Telink_SIG_Mesh/examples/8258_mesh 执行下列编译指令: make all 输出类似如下信息说明编译成功: Invoking: Print Size tc32-elf-size -t / ... /Telink_SIG_Mesh/examples/8258_mesh/out/8258_mesh.elf text data bss dec hex filename 134720 2724 14160 151604 25034 / ... /Telink_SIG_Mesh/examples/8258_mesh/out/8258_mesh.elf 134720 2724 14160 151604 25034 (TOTALS) Finished building: sizedummy 烧录程序到芯片 安信可自主开发了串口烧录工具,无需官方烧录器即可使用,前提是要先将安信可bootloader烧录到模块中。 串口烧录接线方式如下(安信可TB-02模块): [tr]串口模块[/tr]
烧录指令: make flash 其他指令: make erase_fw //擦除固件make erase_key //擦除Mesh相关数据make monitor //打开串口监控python3 ../../make/Telink_Tools.py -p /dev/ttyUSB0 burn_triad 1345 78da07fa44a7 221746e805ac0e6269bd4d3e55f1145c //烧录三元组参数 环境搭建(二) 这个环境主要是NRF24L01的编写环境,用keill或者其他的MCU平台都可以,主要实现的功能就是接收从TB02的串口出来的数据,识别成PWM的脉冲宽度调节输出,从而控制灯的亮度调节。 如下是MCU与TB02交互的AT指令: [tr]指令功能备注[/tr]
//串口接收函数 bit ReceiveString() { char * RecStr=buf_string; char num=0; unsigned char count=0; loop: *RecStr=SBUF; count=0; RI=0; if(num<14) //数据包长度为15个字符,尝试连续接收15个字符 { num++; RecStr++; while(!RI) { count++; if(count>130)return 0; //接收数据等待延迟 } goto loop; } return 1; } STC 15W408AS 芯片串口发送 while(1) { SendString("AT+GMR");//查询版本号 Int_To_String(TX_BUF,length); SendString("rn"); delay_ms(1000); } STC 15W408AS 芯片PWM调节输出 while(1) { do{ if(PWM!=0xff) {PWM++ ;delayms(10);} else Beep() ; } while(K1==0); do{ if(PWM!=0x02) {PWM-- ;delayms(10);} else Beep() ; } while(K2==0); } } 小结 好了,关于天猫精灵控制TB02蓝牙模块利用外接MCU控制灯原理以及快速对接流程就是这样,理解通了原理其实并不难,而且对于应用层的开发的话就都是通过串口输入做判断然后输出到灯上,相对于传统的蓝牙模块直接控制灯,增加了一步需要MCU控制的流程,使其更加灵活。 |
||
|
||
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1645 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1564 浏览 1 评论
992 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
691 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1610 浏览 2 评论
1871浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
542浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 01:51 , Processed in 1.085058 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号