×

远程房间雷达开源分享

消耗积分:0 | 格式:zip | 大小:0.11 MB | 2022-10-27

旧念

分享资料个

描述

房间规划可能成为一项挑战——无论是在家里还是在公司。因此可能会发生,两个房间将共用一面墙......虽然一个房间被要求保持安静,而在另一个房间里发生了一些更多的动作,例如父母的卧室在孩子的房间旁边 - 或者,就像最初的原因对于这个项目,由于建筑物的重建,新的自助餐厅区域位于会议室旁边。更糟糕的是,在休闲室里有一个桌上足球,这基本上阻止了任何会议 - 但反之亦然吗?

这个想法

根据会议室的占用情况(由 PIR 或雷达传感器检测到),灯板应通知并要求人们保持沉默或在没有会议时允许玩桌上足球。

为了便于安装,应使用无线通信。

poYBAGNYgrCAYmcUAAEOmNy5H58370.jpg
框图
 

设置

英飞凌的 60GHz 雷达传感器非常适合,因为它允许将传感器离散地安装在任何正面后面,而 PIR 传感器总是在房间内通过其典型的白色塑料圆顶不美观地可见。

pYYBAGNYgrKAESi5AACbQjblZlo850.jpg
60GHz 雷达屏蔽 XENSIV™ BGT60LTR11AIP(来源:英飞凌)
 

XENSIV ™ BGT60LTR11AIP雷达防护罩以自主模式运行(另请参见“电子组装”),从而减少了实施工作。不需要复杂的知识,因为两个信号直接告知目标的检测和可选的阶段(接近或离开)。目前的目的不需要后者。任何类型的微控制器都可以通过至少一个或两个 GPIO 读取传感器的状态。

对于通信,低功耗蓝牙 (BLE) 就足够了,因为我们只需要跨过一堵墙和几米。因此,决定采用基于CYBLE-416045-02的CY8CPROTO-063-BLE套件,其中包括板载晶体振荡器、跟踪天线和与蓝牙 5.0 兼容的免版税 BLE 堆栈。

poYBAGNYgrWAf_s0AAI7jKNf5Mc798.jpg
CY8CPROTO-063-BLE,包括编程器/调试器“KitProg”(来源:英飞凌)
 

来自英飞凌(前赛普拉斯)的该套件随附 KitProg,这是一种编程器和调试器,在软件开发时非常有用,但可以在之后断开以减小电路板尺寸。如果套件仍然太大,也可以单独订购和单独使用符合蓝牙 5.0 标准的单模 BLE 模块(4mm × 18 mm × 2 mm)。

电子组装(雷达系统 - 会议室)

如前所述,雷达传感器屏蔽提供自主操作模式,需要通过移除 R3 来选择。详情可在英飞凌的AN608中找到

poYBAGNYgreAXnA_AAGE06uIq7Q225.jpg
移除 R3 以实现自主操作模式。(来源:英飞凌)
 

注意:不幸的是,R3 是从最小的 SMD 尺寸之一中选择的,需要最高浓度和特殊的 SMD 焊接工具才能去除。当心!

雷达模块有 4 个城堡形孔,几乎可以安装在微控制器套件的 I/O 接头之间。但是,为了避免对镀孔造成任何损坏并使安装更加牢固,如下图所示,使用小面包板PCB作为中间适配器以更好地固定。为了更好地隔离,使用了胶带。

poYBAGNYgryAS69UAAkaoQ_rVZ0182.jpg
在 CY8CPROTO-063-BLE 上安装 XENSIV™ BGT60LTR11AIP 雷达
 

对于给定的软件,雷达模块安装在针脚 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 以及其余的由软件处理。

pYYBAGNYgr-ATt7KAASCYxOTh7U198.jpg
连接 P9.0 驱动的 WS2812B LED 灯条的排针
 

注意:VDD 仅提供 3.3V 电压电源。虽然 WS2812B 指定为 5V,但在 3.3V 下工作正常,而且 LED 面板的亮度不是问题。还要注意板载AP7365-WG-7允许的最大电流(定义为 600mA)。因此,我对这个 Maker 项目闭上了眼睛 ;-) 很高兴它有效!

软件

已经建立了两个项目来开发每个部分的固件。对于英飞凌(以前的赛普拉斯)PSoC6 微控制器,ModusToolbox IDE 将来会取代以前的PSoC Creator 由于 Modus 是基于 Eclipsed 的,因此许多开发人员都喜欢它,但这种方法与以前的 GUI (如设计输入)有部分不同。但是,由于软件部分并不太复杂和简单,因此请执行以下操作:

  • 将两个项目 zip 文件提取到一个本地文件夹中,即工作区文件夹,例如:c:\myProjects\RemoteRoomRadar\c:\myProjects\RemoteRoomRadar\RemoteRoomRadar-BleAdv-Radarc:\myProjects\RemoteRoomRadar\RemoteRoomRadar-BleScan-LED
  • 打开 ModusToolbox 并选择工作区文件夹(例如:c:\myProjects\RemoteRoomRadar)
  • 文件 -> 导入... ModusToolbox -> 应用程序导入... 例如:c:\myProjects\RemoteRoomRadar\RemoteRoomRadar-BleAdv-Radar
  • 文件 -> 导入... ModusToolbox -> 应用程序导入... 例如:c:\myProjects\RemoteRoomRadar\RemoteRoomRadar-BleScan-LED
  • 单击项目 RemoteRoomRadar-BleScan-LED
  • 从快速面板打开库管理器,然后单击更新按钮。完成后,然后关闭。
  • 以同样的方式更新 RemoteRoomRadar-BleAdv-Radar 项目

这些项目可以立即使用,并且可以构建和编程到专用的 CY8CKIT-063-BLE。

在下文中,我将给出一些提示,如果需要进行修改,如何配置这两个项目。

RemoteRoomRadar-BleAdv-Radar(发送方)

该项目在雷达检测到目标时发送 BLE 广告包。

雷达的引脚分配由设备配置器 -> 引脚完成。当前分配:

  • P5[4]:雷达_TD
  • P5[5]:雷达_PD
  • P6[2]:雷达_GND
  • P9[6] : RADAR_VIN

使用蓝牙配置器调整 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(;;)

RemoteRoomRadar-BleScan-LED(接收器)

该项目在空中扫描广告包。当它找到雷达(发件人)的给定地址时,它控制 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 完成。当前任务:

  • P9[0]:WS2812B

示范

在第一次测试中,功能在表上进行测试

 
 
 
poYBAGNYgsKAFl3KAAHjZA9M4j0778.jpg
 
1 / 2假设会议室未被占用(至少雷达未检测到物体)
 

在将每个系统安装到预定位置之前。

 

概括

通过使用CY8CPROTO-063-BLE和新的XENSIV™ BGT60LTR11AIP 60GHz 雷达传感器,可以快速实现一个有趣且有用的应用,并且只需处理纯 BLE 广告数据包即可建立简单的通信。该系统非常开放,可以适应许多其他场景。雷达系统相对于已知的 PIR 传感器的最大优势在于它可以隐藏在一个外壳中,这样安装也更加美观(比这个示例项目粗略显示的)。

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !