房间规划可能成为一项挑战——无论是在家里还是在公司。因此可能会发生,两个房间将共用一面墙......虽然一个房间被要求保持安静,而在另一个房间里发生了一些更多的动作,例如父母的卧室在孩子的房间旁边 - 或者,就像最初的原因对于这个项目,由于建筑物的重建,新的自助餐厅区域位于会议室旁边。更糟糕的是,在休闲室里有一个桌上足球,这基本上阻止了任何会议 - 但反之亦然吗?
根据会议室的占用情况(由 PIR 或雷达传感器检测到),灯板应通知并要求人们保持沉默或在没有会议时允许玩桌上足球。
为了便于安装,应使用无线通信。
英飞凌的 60GHz 雷达传感器非常适合,因为它允许将传感器离散地安装在任何正面后面,而 PIR 传感器总是在房间内通过其典型的白色塑料圆顶不美观地可见。
XENSIV ™ BGT60LTR11AIP雷达防护罩以自主模式运行(另请参见“电子组装”),从而减少了实施工作。不需要复杂的知识,因为两个信号直接告知目标的检测和可选的阶段(接近或离开)。目前的目的不需要后者。任何类型的微控制器都可以通过至少一个或两个 GPIO 读取传感器的状态。
对于通信,低功耗蓝牙 (BLE) 就足够了,因为我们只需要跨过一堵墙和几米。因此,决定采用基于CYBLE-416045-02的CY8CPROTO-063-BLE套件,其中包括板载晶体振荡器、跟踪天线和与蓝牙 5.0 兼容的免版税 BLE 堆栈。
来自英飞凌(前赛普拉斯)的该套件随附 KitProg,这是一种编程器和调试器,在软件开发时非常有用,但可以在之后断开以减小电路板尺寸。如果套件仍然太大,也可以单独订购和单独使用符合蓝牙 5.0 标准的单模 BLE 模块(4mm × 18 mm × 2 mm)。
如前所述,雷达传感器屏蔽提供自主操作模式,需要通过移除 R3 来选择。详情可在英飞凌的AN608中找到。
注意:不幸的是,R3 是从最小的 SMD 尺寸之一中选择的,需要最高浓度和特殊的 SMD 焊接工具才能去除。当心!
雷达模块有 4 个城堡形孔,几乎可以安装在微控制器套件的 I/O 接头之间。但是,为了避免对镀孔造成任何损坏并使安装更加牢固,如下图所示,使用小面包板PCB作为中间适配器以更好地固定。为了更好地隔离,使用了胶带。
对于给定的软件,雷达模块安装在针脚 5.2 和 5.3 上,以及另一侧的 9.4 和 9.5 上。雷达信号TD(目标检测)将由软件处理,端口引脚9.4(GPIO驱动高电平)和9.5(GPIO驱动低电平)为传感器供电。使用 GPIO 为模块供电可简化连接,因为无需手动接线。
一个黑色的 3D 打印外壳被设计为“隐藏”该系统。
组装灯板非常简单,因为它只使用基于 WS2812B 类型的 LED 灯条。在我们的例子中,我们驱动 62 个 LED(“Let's play Soccer”、“Please Quiet”)。但是,只需要一个输出引脚(P9.0),因此相关引脚 9.0、VDD 和 GND 以及其余的由软件处理。
注意:VDD 仅提供 3.3V 电压电源。虽然 WS2812B 指定为 5V,但在 3.3V 下工作正常,而且 LED 面板的亮度不是问题。还要注意板载AP7365-WG-7允许的最大电流(定义为 600mA)。因此,我对这个 Maker 项目闭上了眼睛 ;-) 很高兴它有效!
已经建立了两个项目来开发每个部分的固件。对于英飞凌(以前的赛普拉斯)PSoC6 微控制器,ModusToolbox IDE 将来会取代以前的PSoC Creator 。由于 Modus 是基于 Eclipsed 的,因此许多开发人员都喜欢它,但这种方法与以前的 GUI (如设计输入)有部分不同。但是,由于软件部分并不太复杂和简单,因此请执行以下操作:
这些项目可以立即使用,并且可以构建和编程到专用的 CY8CKIT-063-BLE。
在下文中,我将给出一些提示,如果需要进行修改,如何配置这两个项目。
该项目在雷达检测到目标时发送 BLE 广告包。
雷达的引脚分配由设备配置器 -> 引脚完成。当前分配:
使用蓝牙配置器调整 BLE 广告包。目前定义了地址为“00A050-C011AB”的设备名称“RoomRadar”。注意:BLE 扫描器只使用给定的地址,而不证明名称。
在 main.c 内部,RADAR_PD 引脚被轮询并相应地激活 BLE 广告。
for(;;)
{
if ( ( u32BleAdvOn == 0 )
&& ( (0 == cyhal_gpio_read(RADAR_TD)) || (0 == cyhal_gpio_read(USERBTN)) )
&& ( CY_BLE_ADV_STATE_ADVERTISING != Cy_BLE_GetAdvertisementState() )
)
{
u32BleAdvOn = 1;
u32TimeDelay = 25;
Cy_BLE_GAPP_StartAdvertisement
(CY_BLE_ADVERTISING_FAST, CY_BLE_PERIPHERAL_CONFIGURATION_0_INDEX);
}
else
if ( ( u32BleAdvOn == 1 )
&& ( 1 == cyhal_gpio_read(RADAR_TD) )
&& ( 1 == cyhal_gpio_read(USERBTN) )
)
{
u32BleAdvOn = 0;
Cy_BLE_GAPP_StopAdvertisement();
}
} // for(;;)
该项目在空中扫描广告包。当它找到雷达(发件人)的给定地址时,它控制 WS2812B LED 以红色显示相关消息(“请安静”),否则显示绿色消息(“让我们踢足球”)。
发件人的地址在 main.c 中编码
cy_stc_ble_gap_bd_addr_t PeripheralDeviceCollaboratorRoom =
{ {0xAB, 0x11, 0xC0, 0x50, 0xA0, 0x00 } };
当接收到匹配的广告包时,在 BLE 状态机内部会设置一个延迟 ( )。u32TimeDelay
这是一种滞后,以避免 LED 面板的任何闪烁导致我的雷达检测中断。此处将最大延迟设置为 200,即当前代表 20 秒。
void BleStackEventHandler(uint32_t event, void *eventParam)
{
case CY_BLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
advReport = *( cy_stc_ble_gapc_adv_report_param_t *)eventParam;
if (AddressCompare(PeripheralDeviceCollaboratorRoom, advReport.peerBdAddr))
{
u32TimeDelay = u32TimeDelay + 50;
if (u32TimeDelay>200)
{
u32TimeDelay = 200;
}
}
}
在 systick 定时器中断服务例程中,显示会根据延迟变量 ( )的值每 100 毫秒刷新一次。u32TimeDelay
void mySystick_ISR()
{
if (u32TimeDelay)
{
u32TimeDelay = u32TimeDelay - 1;
cyhal_gpio_write(LED_G, 0);
DisplayPlease(RED);
DisplayLetsPlay(BLACK);
DisplayQuiet(RED);
DisplaySoccer(BLACK);
DisplayRahmen(RED);
StripLights_Trigger(1);
}
else
{
cyhal_gpio_write(LED_G, 1);
DisplayPlease(BLACK);
DisplayLetsPlay(GREEN);
DisplayQuiet(BLACK);
DisplaySoccer(GREEN);
DisplayRahmen(GREEN);
StripLights_Trigger(1);
}
}
同样,用于连接 LED 灯条的引脚分配可以通过 Device Configurator -> Pins 完成。当前任务:
在第一次测试中,功能在表上进行测试
在将每个系统安装到预定位置之前。
通过使用CY8CPROTO-063-BLE和新的XENSIV™ BGT60LTR11AIP 60GHz 雷达传感器,可以快速实现一个有趣且有用的应用,并且只需处理纯 BLE 广告数据包即可建立简单的通信。该系统非常开放,可以适应许多其他场景。雷达系统相对于已知的 PIR 传感器的最大优势在于它可以隐藏在一个外壳中,这样安装也更加美观(比这个示例项目粗略显示的)。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !