本<安信可ble mesh蓝牙模组TB-02模组专题>系列博客学习由官方博客 CSDN安信可博客 潜心所力所写。如有不对之处,请留言,我们及时更改。
1、BLE MESH开发环境linux版搭建,点亮一盏LED灯。
2、简单学习如何对接天猫精灵语音控制的过程;
3、微信小程序蓝牙通讯 Ble 蓝牙Mesh TB02模组;
4、如何在Android开发低功耗蓝牙ble控制 TB-02 模块,代码工程全部开源!
5、微信小程序通讯TB02 模块控制 STM32 LED灯;
6、天猫精灵语音控制通讯TB02 模块控制 51 单片机LED灯,就是这么简单;
大家好,今天我又给大家带来点东西,灯控设备的一些技术分享。一些朋友应该了解到了市面上有一种天猫精灵控制的蓝牙灯,这个灯的话是蓝牙mesh的,我们可以语音控制他的亮灭和灯的亮度等,所以这篇文章就是来介绍和教会大家来开发制作一个自己的灯控设备,过程也非常简单。
此环境主要用来对TB02进行代码编写以及三元组的烧录。
目前仅测试了linux及Mac OS系统,Windows系统仅提供了编译工具链,需自行设置环境变量
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)
git clone https://github.com/Ai-Thinker-Open/Telink_SIG_Mesh.git
进入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模块):
串口 | 模块 |
---|---|
VCC | 3V3 |
GND | GND |
TX | RX |
RTS | RST |
DTR | PA1 |
注意:PA1为boot选择引脚,为低电平进入下载模式,为高电平进入运行模式
烧录指令:
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的脉冲宽度调节输出,从而控制灯的亮度调节。
指令 | 功能 | 备注 |
---|---|---|
AT | 测试AT | |
AT+GMR | 查询版本号 | |
AT+RST | 复位模块 | |
AT+RESTORE | 恢复出厂设置 | |
AT+STATE | 查询配网状态 | |
AT+SLEEP | 深度睡眠 | 暂未实现 |
AT+NETNAME | 查询NetKey | |
AT+PASWORD | 查询AppKey | |
AT+ADDR | 查询模块地址 | |
AT+SEND | ||
+DATA: | 收到数据 |
//串口接收函数
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;
}
while(1)
{
SendString("AT+GMR");//查询版本号
Int_To_String(TX_BUF,length);
SendString("\r\n");
delay_ms(1000);
}
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控制的流程,使其更加灵活。
编译环境
AT源工程地址