[i=s] 本帖最后由 小小鸟 于 2025-4-4 20:39 编辑 [/i]
项目简介
本项目通过PB-03F kit完成了远程控制家中的设备,比如风扇、灯光、插座电源等等。配置PC上位机,可以实时查看设备的状态以及完成控制。
项目参数
使用的是PB-03F Kit开发板,使用的是安信可的模组 - PB-03F模块,其内置了64KB SRAM,256KB flash,96 KBROM,256bit efuse,采用的芯片是 M0 核,支持二次开发开发,本工程就是通过Keil二次进行了开发。
下面是这模组的一些特点:
- 支持协议:蓝牙5.2
- 发射功率:10dBm
- 接收电流:9.4mA
- 发送电流:11.5mA
- 接收灵敏度:-93dBm
- 硬件加密加速器支持AES算法
- 蓝牙速率支持:125Kbps、500Kbps、1Mbps、2Mbps
硬件说明
下面是使用到的继电器模块的主要原理图(enmmm,下面的演示暂时还没有用起来,验证了一下方案的可行性,下周等我的220V的灯到了,将PB-03F和灯一起装进天花板中,我补一个)


软件代码
PB-03F使用的是官方提供的keil工程上修改而来的(bleUart_AT),通过不断的定位最后发现BUP_data_BLE_to_uart_send在这个函数中,会接收到蓝牙发送过来的数据,所以想要完成交互,就可以在这添加一个数据处理函数rec_pro,根上位机的协议对应起来就可以完成控制和返回状态的逻辑了
int BUP_data_BLE_to_uart_send(void)
{
BUP_ctx_t* pctx = &mBUP_Ctx;
if(pctx->tx_state != BUP_TX_ST_IDLE && pctx->tx_size)
{
// run at cmd.
if((pctx->tx_size) == 2 && \
(pctx->tx_buf[0] == 'a') && \
(pctx->tx_buf[1] == 't'))
{
at_at(0,NULL);
pctx->tx_state = BUP_TX_ST_IDLE;
pctx->tx_size = 0;
return PPlus_SUCCESS;
}
// run at+reset cmd.
else if(pctx->tx_size == 8)
{
bool flag = true;
for(int i=0; i<8; i++)
{
if(pctx->tx_buf[i] != ptcmd[i])
{
flag = false;
break;
}
else
continue;
}
if(flag)
at_reset(0,NULL);
}
//AT_LOG("buf:%s",pctx->tx_buf);
//AT_LOG("size:%s",pctx->tx_size);
//FF 00 00 00 00 00 01 FF
rec_pro(pctx->tx_bu);
hal_uart_send_buff((UART_INDEX_e)g_uart_idx, pctx->tx_buf, pctx->tx_size);
pctx->tx_size = 0;
pctx->tx_state = BUP_TX_ST_SENDING;
return PPlus_SUCCESS;
}
LOG("BUP_data_BLE_to_uart_send: incorrect state\n");
return PPlus_ERR_INVALID_STATE;
}
实物验证过程
一开始使用3V3V来远程驱动灯管,来确保方案的可行性和安全性,下面是灯管熄灭和点亮的状态。


验证可以正常使用,就可以开干了,将天花板上无法点亮的嵌入式LED灯具拆下里一探究竟。
这是暴露在外面的灯具的参数,上面贴牌写着170~240V,额定频率是50/60Hz,那应该是交流驱动的吧
但是上一级连接了一块PCB,通过查看这是SOP-8芯片的丝印,可以看到差不多的原理图,这是一个高精度PSR LED恒流驱动芯片。


这就有点奇怪了,原来头顶上的灯是这样的运行,也不晓得当初是如何安装的,并且能正常使用的。。
经过排查发现直接12V给灯具是可以正常点亮的,还没试过标牌上220V/50Hz来试试,怕突然就过年放鞭炮了。那应该估计是AC-DC模块的问题了。
算了,那就直接换新的220V灯具吧,通过PB-03F远程控制继电器来控制灯具的亮灭,但马上又遇到的新的问题,可能这是中间的灯具,线缆还需要连接到后级吧,不是直接连接出L、N两根线,拿杜邦线这种细线放在这用总感觉有点危险

还是拆下来灯亮它吧,大家在玩220V交流电的时候要注意安全啊!!!
实物演示

可以购买多个模组放置需要控制的设备里,那么一套蓝牙智能家居也就组成了
