显微镜下的BLE(24-52链接)

图片


显微镜下的BLE(24-52链接)



几年来,NORDIC一直在生产nRF52系列的新晶体。但是,许多仍然使用较旧的nRF24系列。今天,我将向您展示如何在广告渠道上组织它们之间的双向通信。另外,利用nRF52晶体的能力来测量RSSI电平,我们将其绘制在图形上。



连接选项



在阅读北欧论坛有关新老家庭之间的无线功能时,我发现有两种可能性。这是ESB(增强电击爆发)协议,也是它的附加组件-Gazell协议。这当然很好,但是有很多困难。在nRF24端,这仅是nrf24le1和nrf24lu1模块(nRF24L01套件+微控制器)在nRFgo_SDK_2.3.0中的来源。但是,在业余无线电爱好者中,这种没有控制器的模块更加普及。



图1

图片从nRF52的侧面看,并非一切都十分顺利。在SDK中,ESB和Gazell协议以现成的,已编译模块的形式给出,这不是冰。我们将在最底层链接它们,直接使用寄存器。在他的第三篇文章中我已经描述了如何使用nRF51822制作信标。阅读该出版物也将很有趣



首先,关于我们将要构建的系统的几句话。我们将以BLE数据包格式在广告频道上进行接收和传输。这将允许使用手机和NRF Connect程序(AndroidiOS)空中观看我们的包裹。这将极大地帮助我们,并使我们能够将原始任务分解为多个阶段。我们将在nRF24L01上有一个带有无线电频道的主机,在m / c nRF52832上有一个设备。而且,由于 nRF24L01只是一个无线电频道,它将需要一个控制器。我们将立即以ST公司不同的m / c创建两个项目。主机每秒将广播广播数据包几次。设备将接收它,测量RSSI级别并发回一个响应包,其中将包含其值。收到回复消息后,主机将向RSS端口输出具有RSSI级别的一个字节。为了直观地跟踪接收电平的变化,我编写了一个小型图形程序



主机Nrf24L01 + Stm8L152



因此,让我们从Nrf24L01 + Stm8L152链接上的主机开始。为此,我拍摄了Nrf24L01模块和STM8L-DISCOVERY,STM8L-DISCOVERY是基于STM8L152C6T6的调试板,上面提供了照片。以下是nRF24L01模块的引脚排列。



图2

图片



STM8L-DISCOVERY的引脚排列
#define LED_PORT GPIOC

#define LED_PIN GPIO_Pin_7

#define IRQ_PORT GPIOE

#define IRQ_PIN GPIO_Pin_0

#define CE_PORT GPIOD

#define CE_PIN GPIO_Pin_1

#define SPI_CLK_PORT GPIOE

#define SPI_CLK_PIN GPIO_Pin_4

#define SPI_MISO_PORT GPIOE

#define SPI_MISO_PIN GPIO_Pin_2

#define SPI_MOSI_PORT GPIOE

#define SPI_MOSI_PIN GPIO_Pin_5

#define SPI_CSN_PORT GPIOD

#define SPI_CSN_PIN GPIO_Pin_0



图3

图片

要将数据输出到COM端口,使用了m / s cp2102的USB适配器连接到PC2和PC3支脚。可以在此处获取其驱动程序。最后,这就是发生的事情。



图4

图片



在nRF24L01模块上,您可以在电源引脚之间看到一个焊接的电解电容器。建议将其设置为使模块稳定运行。完整的项目和固件可在此处此处找到... 您可以使用IAR for Stm8开发环境打开它。我们闪烁m / c并启动它。STM8L-DISCOVERY板上的蓝色LED每秒将闪烁2次,表明正在发送包裹。现在是时候启动NRF Connect程序了,看到如图5a所示的图片。祝贺您,如果您成功,则前半部分任务已完成。



图5a ________________________________图5b _______________________________图5c ______________________________

图片



主机Nrf24L01 + stm32F103



为了不远离主机的工作,我们将对stm32F103 m / c重复相同的操作。为此,我拿了一个“蓝色药丸”,上面装有USB连接器。这样就可以不使用适配器,而可以使用这些驱动程序将数据直接输出到USB端口我在STM32CubeMx中为stm32F103编写了一个项目。



蓝色药丸一侧的引脚排列
#define SPI_CE_PORT GPIOB

#define SPI_CE_PIN GPIO_PIN_4

#define SPI_IRQ_PORT GPIOB

#define SPI_IRQ_PIN GPIO_PIN_5

#define SPI_MISO_PORT GPIOB

#define SPI_MISO_PIN GPIO_PIN_6

#define SPI_CLK_PORT GPIOB

#define SPI_CLK_PIN GPIO_PIN_7

#define SPI_MOSI_PORT GPIOB

#define SPI_MOSI_PIN GPIO_PIN_8

#define SPI_CSN_PORT GPIOB

#define SPI_CSN_PIN GPIO_PIN_9



图6

图片



项目本身和固件可在此处此处获取您可以使用IAR for Stm32开发环境打开它。任何编程器均可用于对STM32F103进行编程。我用了这个。



图7我们

图片



连接了电源,并尝试查看广告频道上的包装。图片将与图5a相同。该板上没有任何指示灯闪烁,两个LED一直亮着。我无法恢复PC13腿上的绿色LED。发送频率高于带有stm8L152的板上的频率,为10 Hz。所有这些参数都可以在项目中轻松更改。



设备Nrf52832



因此,我们将假定带有主机的系统的第一部分正在为我们工作。现在,我们将启动设备。这可以在NORDIC PCA10040的合适的KIT上完成。



图8

图片



您也可以使用任何带有m / c nRF52832的板。我将使用旧设计的电路板。但是我检查了PCA10040套件,它也启动了。项目和固件在这里这里。它使用旧的SDK12.3.0在Keil uVision4环境中构建,可在此处获取...为了使项目顺利构建,必须将其文件夹放置在nrf52832_workspace_SDK12 \ examples \ peripheral \目录中。事实是,NORDIC的任何项目都包含大量相关链接,因此不会在任何地方收集它。要刷新nRF52832,可以使用nRFgoStudionRF Connect for Desktop程序



启动Device项目时,我建议先这样做。因为设备在侦听模式下工作,它不会在空中发送无线电数据包。从主机接收到数据包后,这仅会作为响应发生。因此,您必须首先检查设备是否处于活动状态。为此,您需要注释掉项目中的BleListen()函数,并取消对BleRadioTransaction()的注释。如下所示。



图片



在这种情况下,设备本身将开始广播无线电数据包。可以在电话上看到它们。在图5b中示出了示例图片。如果一切正常,我们将一切都转回去并打开主机和设备设备。在电话上,我们应该都看到它们,如图5c所示。这意味着设备看到了主机的消息并发送了自己的消息作为响应。如果主机又收到了具有RSSI级别的响应消息,则它将此值设置为COM端口。现在,如果我们在Windows上运行LevelRssi程序并选择正确的端口,我们将看到RSSI级别如何随设备的不同相对位置而变化。



结论



当我有另外一个想法时,我几乎快完成了这篇文章的准备。我决定使用一种更常见的设备作为设备,即基于nRF52840 m / cpca10059软件狗。这是他的照片。



图9

图片

幸运的是,我有两个这样的板。重建项目后,我遇到了将固件上传到其中的问题。我知道我需要使用nRF Connect for Desktop执行此操作,但并没有立即弄清楚如何使加密狗进入DFU(固件更新)模式。这是操作方法。重置后,我们立即进入DFU模式。您必须首先将加密狗插入USB连接器,然后使用水平推动器按复位按钮(距离处理器最远)。加密狗上的红色LED开始闪烁。打开nRF Connect程序,然后单击“编程器”部分中的“安装”按钮。下载所需的软件后,单击“打开”按钮。



图10

图片



程序员窗口将在您面前打开。



图11

图片



在左上方,选择所需的COM端口。您将看到类似下图的内容。



图12

图片



在左侧,我们将看到控制器内存中的内容。通过单击“添加十六进制文件”按钮,您可以在右侧添加要填充的文件。这里也有一些问题。我们无法使用“全部擦除”和“擦除并写入”按钮。事实是,加密狗没有编程器,因此使用引导加载程序来加载程序。我们通过MBR部分进行介绍。如果我们删除这些部分,那么将无法通过DFU模式进行固件。从理论上讲,您只需要在屏幕的右半边添加固件,然后按“写入”按钮即可。一切似乎都是正确的,但将无法正常工作。我们的程序从FLASH存储器中的地址零开始,并且该地址已被MBR分区占用。如何处理此问题可以在本教程中阅读。... 如果您阅读了很长时间,我将使用Keil的示例在图片中进行解释。这是一个为非堆栈项目分配了微控制器内存的项目的图片。



图13

图片



必须将FLASH-a指针移至0x1000,将RAM移至0x20000008,然后重新编译项目。



图14

图片



之后,您已经可以使用nRF Connect for Desktop程序。仅此而已。您可以在下面的视频中看到我的工作。



yadi.sk/i/BGQQnga1HeN50A

yadi.sk/i/d8A9pU82kBcTMw

yadi.sk/i/XGac8xwpksVX7g



凯撒卫星集团公司员工

Pecherskikh Vladimir



All Articles