构建一个2.4GHz无线网络分析仪,可兼作远程(LoRa)收发器

news/2025/3/22 10:06:14/文章来源:https://www.cnblogs.com/linkstu/p/18786263

快速预览

呈现DualCast !我最新的(也是最先进的)项目。它是一种紧凑型无线设备,除了能够通过LoRa技术发送915MHz AES-128加密的远程命令外,还能够分析2.4GHz Wi-Fi网络上的实时流量。(默认设置下最高可达一公里!)

翻转180°以激活Wi-Fi模式。

此外,它还配备了许多传感器,如用于大气传感的BME280,用于方向检测的BMI323,以及用于快速精确测量0-6米距离的VL53L4CX激光雷达。(我只是想,“为什么不呢?”)

我对激光雷达印象非常深刻,因为它比我在智能手表项目中使用的激光雷达有了很好的升级。与室内卷尺相比,我已经能够得到基本相同的距离测量值。它还附带了许多额外的数据,以确保您拥有总测量精度所需的一切,例如环境光,公差等(所有来自ST VL53L4CX SDK的真实数据!)

该设备作为Wi-Fi-LoRa混合设备的双广播功能也使其能够在各种无线环境中发挥作用。在分析器模式下,您可以简单地扫描活动2.4GHz网络,然后选择您想要分析的网络。从那里,您可以监听实时信标或数据帧,以分析RSSI、活动设备mac、目标mac、帧长度和数据速率。

这在分析谁在与网络通信时非常有用(以防你担心邻居窃取了你的Wi-Fi),或者在识别网络流量以确定最快的网络时非常有用。如果你只是想在家里找到一个信号强度最好的地方来设置你的桌面,它也很有用。稍后我将详细介绍其工作原理。

完成后,只需将DualCast翻转180度(字面意思),使其进入LoRa模式。在这种模式下,您可以与自己的天气或其他传感器站,调度命令(锁/开锁,开/关灯等)或任何其他应用程序通信,其中独立的远程信号将是有用的。您可以将其视为物联网指挥中心,您可以在其中安全地与所有其他自定义设备进行通信。只需单击要发送的命令。(最多255!)

为了方便您,我还构建了一个定制的LoRa接收器(开源),用于解密由DualCast发送给它的AES-128远程信号,并执行您希望它执行的任何任务。但最好的部分是,您可以使用它,而无需触及源代码的一行!

默认情况下,这是通过基本gpio实现的。在DualCast(发射器)上,只需简单地发送一个号码。然后,这个数字将根据您输入的唯一密钥进行加密,以确保只有您可以发送命令。当接收方收到消息时,它将使用相同的密钥(您事先告诉它)对其进行解密,然后将相应的gpio设置为高(对应于您以二进制形式发送的数字)。从那里,只需将Arduino, ESP32 DevKit或其他任何东西连接到gpio,当该序列变高时,让它执行您的命令。EZPZ !我将在本文后面详细介绍它是如何工作的。这里是Arduino草图示例。

不过,如果你更喜欢直接使用接收器,那也完全没问题!出于这个原因,我已经为UART, I2C和PWM断开了引脚,以将其与您想要的任何接口连接。此外,如果你需要的话,它还可以很容易地连接到农村命令的电池上。

但是如果你想做一对多广播呢?不用担心,只需让您的其他接收器使用相同的键,并让每个接收器侦听它们正在等待的唯一命令。(例如:厨房里的监听器监听的是5,而卧室里的监听器监听的是28。)

经过一整天的发送命令/收集传感器数据和探索无线世界后,DualCast上内置的锂离子聚合物(LiPo)电池可以通过USB-C电缆安全轻松地充电,就像接收器上一样。

当然,像我所有的其他项目一样,如果您想根据自己的需求进行编辑,DualCast是完全开源的。出于这个原因,我还添加了一些额外的gpio,它们可以用于您可能需要的任何不同目的。

现在让我们来看看这个项目是如何工作的!

工作的概念

这个项目的大脑是一个STM32H563微控制器(MCU)。它的工作是与印刷电路板(PCB)上的所有各种传感器/ ic通信,将所有东西集成在一起,使设备工作。

为了使这更容易,STM32运行的是FreeRTOS,这是一个基于线程的操作系统,使管理一切更加直接和清晰。

为了处理这个项目的无线分析仪方面,我还包括一个ESP32-C6,它通过UART与STM32通信。基本上,发生的事情是STM32将首先启用ESP32,然后发出请求。ESP32完成请求,然后将结果发送回STM32。从那里,STM32重新禁用ESP32,然后处理和显示数据。

如果您想知道为什么ESP32不只是整体运行而不是STM32,这是因为ESP32比STM32更耗电,所以最好不要一直运行它。也只是没有足够的引脚在ESP32上能够处理一切。

对于通过LoRa发送和接收,我使用SX1262,这是一个很酷的Sub-GHz LoRa收发器。为了与它通信,我使用SPI,因为它本身支持它。这就是使DualCast能够进行超远距离独立传输的原因!

为了执行加密,我使用AES-128-CBC,它代表具有Cypher块链的高级加密标准(128位)。

其工作原理是为每个设备(发送器和接收器)分配相同的16字节长的私钥。(这通常是随机生成的,然后预编程到接收器中,然后在接收器中输入DualCast。)在发送消息之前,将为每条消息随机生成一个公共的16字节IV(初始化向量),然后用于进一步加密消息,确保每次的唯一性。然后,加密的消息将与唯一的IV一起发送。接收方随后接收该消息,从消息中提取唯一的IV,然后使用该消息和私钥解密负载。

不用说,通过暴力破解加密基本上是不可能的,有2^128种不同的可能性(3.402e+38)。这是一个很大的数字!(假设你的16字节加密密钥在不经意间被人提起后不会泄露出去。)

为了帮助保持这个秘密,DualCast也默认隐藏在LCD上。这样,无论何时你只是想发送一些东西,而不是主动地弄乱钥匙,你都不必担心有人在路过时看到它,或者有人在你周围录音。

我这次使用的酷显示器是通过SPI通信的ST7789VI 2.4“TFT LCD(液晶显示器)。为了管理它,我运行了LVGL,这是一个基于C编程语言的很棒的图形库。

DualCast如何分析网络

因此,我在前面提到,DualCast可以识别活跃的网络用户(以及许多其他功能)。这是真的!无线网络的工作原理是利用你的设备和路由器之间的持续通信流。这种以“数据包”形式来回传递的通信,除了数据长度等其他信息外,总是包含一些识别发送和接收设备的信息(它们的MAC地址)。

DualCast利用这些信息来收集和统计活动的网络用户,方法是监听这些数据包,并在听到它们(它们唯一的MAC地址)时进行记录。有了这些信息,您就能够确定谁以及有多少人正在与网络交换数据。此外,您还将获得一些有用的信息,例如它们相对于您的RSSI(信号强度)和它们的帧长度(每个数据包发送的数据量)。虽然,就像我说的,设备被记录为它们的MAC地址,这意味着你只能看到它们的具体地址。(你不会看到“约翰·史密斯在iPhone 10上很活跃。”)然而,这也有很多好处。

首先,大多数连接到熟悉网络(WPA2+)的用户将始终使用相同的MAC地址(固定Wi-Fi地址是iphone的默认设置)。这引入了许多有趣的应用程序,例如确定某人在哪里(但不是以一种不好的方式)。比如说,你开了一家咖啡店,想要确定你有多少回头客。当顾客连接到你的咖啡店Wi-Fi网络时,他们将与它交换通信,他们的地址可以被听到。然后你可以通过听这个来了解有多少客户是回头客,他们在不同的日子听到了相同的MAC地址。很整洁!不过,他们的MAC地址后面总是有一层安全保护,所以你永远不会知道他们是谁,只知道他们在那里。(除非你把他们所有人的手机都拿走,查一下他们的MAC地址。)

在此基础上,从iOS 11开始,即使是iphone /扫描仪应用程序也不允许显示设备MAC地址。但DualCast可以!如果你的邻居偷了你的Wi-Fi怎么办?好吧,如果你注意到你的网络上有一个奇怪的MAC地址,你可以去他们家,要求看他们手机的“Wi-Fi地址”(MAC)。不过,这个奇怪的MAC也有可能是一个智能烘干机或使用Wi-Fi的东西,所以也许不要走得太远,哈哈。如果你有一个孩子,想知道他们是否在睡觉后还在使用手机,那么一个更好的应用程序可能是。你所要做的就是在获取设备MAC地址之前的某个时间去他们手机上的“About”,然后如果你看到过多的数据包从该MAC地址发送出去,你就会知道出了什么事。

因此,到目前为止我一直提到的是数据帧(包含在设备和路由器之间来回发送的数据的数据包)。但是DualCast也可以分析信标帧!信标帧是仅由路由器发出的数据包,它宣布设备可以连接到一个网络。

信标帧不那么令人兴奋,但有一个非常有用的应用程序。因为是路由器将这些数据包发送出去,所以接收到的RSSI(信号强度)将与路由器相关。这意味着你将能够使用它们来确定最佳信号强度的位置,这对于找到设置桌面的完美位置非常有用!(或者其他什么。)

你可以做的另一个很酷的实验是在你的手机或个人电脑上产生一些网络流量,然后使用DualCast来检查它。例如,在这样做的过程中,我了解到一些有趣的信息,比如什么时候发送和持有数据包,以及发送的数量是多少。例如,像一个简单的网络页面这样的东西可能并不总是触发一个数据包被“嗅探”(检测),但我通常在加载YouTube视频或流媒体音乐时总能看到一堆数据包。

甚至有一次,我在播放YouTube时没有看到任何网络流量,因为我的电脑声称它连接到我选择分析的网络。虽然,事实证明我的电脑对我撒谎,实际上连接到一个不同的网络,只是显示错误的SSID。有趣!

使用DualCast,我还注意到数据帧只有在缓冲新视频(小灰色条)时才会被发送到YouTube上,而且通常是大量的。考虑到在使用Spotify这样的音乐服务时,数据帧几乎是不断发送的,我认为这非常简洁。

了解硬件

这是完整的项目原理图供您参考。

DualCast:

LoRa接收机:

让我们来分析一下。我将只讨论主要的DualCast原理图,因为接收器基本上只是一些小改动的副本。

要设置STM32H563或任何MCU,您应该首先查看数据表。从那里,您可以导航到电源部分,找出哪里需要哪种去耦电容器,然后进入晶体规格页面。在我的情况下,一个8MHz晶体工作得很好,因为它在建议的范围内。除此之外,我还在I2C线路上添加了一些上拉电阻(必需的),并在BOOT和RST引脚上添加了所需的上拉/下拉电阻,以确定默认启动状态。USB引脚上的0欧姆电阻只有在上传到STM32时才能放置,因为USB也与ESP32-C6共享。

说到ESP32-C6,让我们看看下一个!

和前面一样,第一步是检查数据表。然而,pressif (ESP32背后的公司)也有这个神奇的开发页面,详细介绍了原理图所需的一切。在设计布局时也有一个PCB设计指南页面。也就是说,我不会在这里解释太多,因为所有需要的东西都包含在这些链接中。你应该去看看!

由于这个复杂的匹配网络,SX1262的原理图可能是最困难的。在数据表中,提到了一个匹配的网络,但没有真正的大小或具体,因为它取决于你广播的频率(基于地区的变化)。为了获得您所在位置的正确值(在我的情况下,在美国为915MHz),我查找了SX1262文档页面。

从那里,有大量的信息。为了避免通读所有内容,我对参考设计说明、PCB设计指南和915MHz参考设计示例最感兴趣。根据示例(因为它与我的区域匹配),我复制了所有内容,并使用包含的BOM对组件进行了大小调整。

太棒了!在验证我正确移动了所有东西之后,我只是为50欧姆天线添加了天线pi匹配网络(因为参考设计无法预测我使用的天线),一个额外的ESD保护二极管,并连接了引脚。更多关于匹配的信息请点击这里。

现在让我们继续剩下的。

我对USB-C连接器电路做了一个小小的改变,我现在使用的是这个很酷的ESD保护IC,而不是单个的二极管(它们很小)。这只是使它更容易组装。

对于LiPo充电电路,我只是使用了BQ24的典型设置。工作好了!R14和R15设置充电终止和速度,R16有一个热敏电阻,以防电池太热。然后只是一对去耦电容器,以确保稳定的电压。

对于激光雷达,我同样有一些去耦电容(数据表推荐的尺寸),然后是两个上拉电阻,一个用于设置设备默认启用,另一个用于设置设备默认启用。右边的两个连接器只是因为它需要垂直安装到PCB上,因此需要单独连接。

我还应该注意到,在这里,激光雷达的测量不是在一条直线上采取像可能暗示的激光!这种激光雷达利用表面视场(FOV)来探测被发送回它的红外光,以便进行距离测量。(激光只是辅助瞄准。)这意味着激光雷达最适合测量物体的距离,在这个物体上可以容纳完整的视场。我还应该提到环境光在距离测量精度中起作用,所以我可能不会推荐它在阳光明媚的日子里在室外使用,因为传感器将很难区分发射的红外光和太阳的红外光。

BMI323, BME280和TPS稳压器不需要太多解释,我基本上只是连接引脚并添加推荐的去耦电容器,以确保稳定的电源。我还应该提到,内部BME280在通电一段时间后会由于周围组件而加热一些,所以我建议只相信第一次打开它时的温度测量。(准确来说,是在它有时间加热之前。)

对于打开/关闭瞄准辅助激光和触觉电机,我只是使用两个mosfet,每个mosfet上都有一个下拉电阻,以确保它们在不主动驱动时完全关闭。这只是作为一个更强大的开/关,因为当MCU引脚走高时,它将允许电流从负载流向地。

优化LoRa

在这里,我将进一步解释DualCast上的LoRa功能是如何工作的,以及如何最大化其范围。

如前所述,LoRa传输由SX1262处理,其默认有效载荷大小为915MHz时的80字节。(64B用于密文,16B用于IV. 915MHz是美国的亚千兆赫无线电频段,无需许可。)

LoRa的基本参数如下:

SF9:扩展因子决定有多少个符号代表一个数据符号。较低的SF (SF7)可以让您发送更多的数据,但在较短的范围内,而较高的SF(如SF12)以较低的数据速率和较长的空中时间为代价增加范围和灵敏度。(发送和接收东西需要更长的时间。)

BW125:设置通道带宽(125 kHz)。更宽的带宽允许更高的数据速率,但通常会降低灵敏度。

CR4/5:编码速率用于FEC (Forward Error Correction)。它表示对于每4位有用数据,额外增加一位用于纠错(4/5)。更高的FEC(更多的错误位)提高了噪声条件下的可靠性,但降低了数据吞吐量。

LDRO:当符号持续时间较长时,通过补偿时钟漂移使用低数据速率优化。在这种情况下,它被禁用,因为125 kHz带宽的当前设置(SF9)不需要它。(在没有必要的情况下已经足够快了。)这可能应该打开任何高于SF10的东西。

作为默认设置,我使用SF9和上面的其他设置,因为它们是范围和播出时间之间的一个很好的折衷。如果在发送和接收内容之间有多秒的延迟,那么DualCast就不会那么酷了。

图表来自Absar Ahmar的ResearchGate研究。

单独计算80字节。

452ms最终有点短(消息在最后被切断),所以我最终使用了475ms,我觉得这对于等待时间来说是合理的,同时也保持了一些稳定的范围。

(475ms接收命令,475ms接收回执。所以如果你说的是往返,就像从传感器请求数据一样,这是950毫秒。)

Albert Potsch的语义学者研究图。注意:这些范围值将根据您发送的位置而改变很多!(如果你在农村或城市等地)

这些数据在DualCast上得到了验证,因为我在一个城市试验时得到了类似的值。虽然,我认为如果你在一个安静的地区(没有干扰信号),在接收器的视线范围内使用它,你可能会达到~5公里。

然而,也就是说,也许您希望将数据进一步发送到您构建的传感器集线器,或者475ms对于您所需的快速通信来说太长了。不用担心,只要更新这些设置,但你认为适合最大化的范围和数据速率为您的应用程序!源代码可以在这里找到。只需要知道您需要更新接收器以匹配!

如果您想进一步探索设置,也可以在这里找到SX1262数据表。

DualCast 5 ghz

如果你喜欢这个项目,但对它不能分析5GHz的Wi-Fi网络(只有2.4GHz)感到失望,我有一些好消息。该项目使用了ESP32-C6,因为它是速讯发布的最新Wi-Fi soc之一,尽管他们目前还没有任何具有5GHz功能的芯片。

然而,随着ESP32-C5将于今年晚些时候向市场发布,这种情况将在未来发生变化,ESP32-C5将包含5GHz功能。

如果你想让我做这个项目的第二个版本,能够用ESP32-C5分析5GHz网络,除了一些其他很酷的功能,如集成的蓝牙和基于Wi-Fi的命令发送,请考虑支持这个项目,因为它会激励我继续追求它。你可以通过成为Plus会员来支持我的工作(在那里你也会得到所有这些额外的津贴),或者从我的商店购买DualCast设备。这当然有很长的路要走,因为我不使用广告,这些项目的原型制作可能非常昂贵和耗时。非常感谢您的支持!

为了让这个项目工作,我们做了一些不同的修改:

构建电路板

来看看pcb吧!(印刷电路板)

左下角的小PCB被断开,并在顶部重新定位用于激光雷达。

为此,我用KiCad(免费)做了一个四层的设计:

•信号

•地面

•电源

•信号

我还在顶部和底部信号层添加了额外的地面倾泻物,它们可以帮助隔离各种信号并增加耦合。

DualCast板的Gerber/制造文件可以在这里找到。

接收板的Gerber/制造文件可以在这里找到。(点击“下载原始文件”。)

可编辑的STEP和KiCad PCB文件在这里提供给plus订阅者。想成为付费用户吗?只要5美元,我将非常感谢您的支持!

零件清单(BOM)的DualCast与指示符可以在这里找到,并提供CPL,如果需要。

接收器的BOM可以在这里找到。

像往常一样,我知道订购零件看起来很痛苦,但实际上并没有那么糟糕,因为您从一个项目订购的几乎所有零件都可以重复使用。想想你会从一些实践经验中学到多少东西!

如果您有兴趣了解更多关于嵌入式系统(PCB设计),请查看YouTube上的Robert Feranec和Phil 's Lab。他们是很棒的设计师,我从他们身上学到了很多东西。

为了实际构建DualCast和接收器,我们需要PCB制造商来生产电路板。为此,我使用了PCBWay!

他们总是有出色的质量,还提供许多其他服务,如CNC加工,3d打印和PCB组装。它们还具有九种不同的阻焊颜色可供选择和三种不同的丝印,这非常适合定制。(我甚至相信他们现在有多色阻焊板!)我选择我的是蓝色的,因为我喜欢这个颜色,它提供了一个纤细的阻焊间隙,但你可以自由地选择你的是任何你喜欢的颜色!

因为我是用KiCad设计的,我甚至不需要离开我的设计软件来检查,这要感谢他们方便的插件!如果没有,你可以去PCBWay.com,点击快速订购PCB,并上传电路板的Gerber文件。或者,你也可以去这里,我保存在我的收藏夹栏里。我建议在结帐时点击模板选项,使手工组装更容易!

其他所有内容都可以保留为默认值,除非您想要进行任何特定的调整。(如:无铅表面光洁度、去除产品编号等)

注意:您需要为主DualCast PCB和接收器执行此操作!

大约一周半后,pcb到达时,它们看起来棒极了!

作为一个必须经过多次修改才能最终获得正确设计的人,我总是看到它们到达时感到特别兴奋。

要组装它,首先将PCB胶带下来,然后使用模板应用锡膏。

有了一个好的粘贴层(如果需要尝试几次也没关系),你就可以开始放置组件了。BOM包含部件标识符,可作为参考表使用。

注意:确保所有部件(特别是ic)的方向是正确的,因为pin1并不总是在这个设计的左上角。寻找PCB上的星号作为引脚标记。如果你看不出来,你可以用这张纸。(这个是给接收者的。)此外,确保STM32正确对齐,因为它是凹孔,标记pin1,而不是文本方向!

完成后,您可以轻轻地将PCB放在加热板上以熔化浆糊。我通常在取下之前让我的加热到225摄氏度(取决于你的锡膏的熔化温度)。

史诗!如果您想使用LoRa功能,您也必须为接收器执行此操作。

之后,弹出所有的通孔(THT)组件,如天线连接器,按钮,电源开关和触觉电机,并焊接它们。

之后,小心地断开激光雷达并将其焊接在顶部。尽量使其垂直于板,以获得最理想的性能。

太棒了!

这就是PCB组装的全部内容!不过,在组装其余部分之前,我建议首先上传代码(下面的编程说明)作为测试,以确保一切正常工作。如果一切如预期(LCD亮起等),那么您可以继续进行组装部分。

编程

在本节中,我将解释如何编程DualCast和接收器,以便您可以开始在项目中使用它们。正如我之前提到的,我在这里用C编程,使用CubeIDE编写STM32,使用ESP-IDF编写ESP32。这主要是因为需要编写大量代码,我希望能够利用FreeRTOS、LVGL和其他基于c的驱动程序。

这就是说,然而,我也知道你们中的许多人可能不熟悉这些开发框架,所以我想我应该解释一种更简单的方法来编程板,而不必进入“包含”混乱,这将从ide本身闪烁。

如果您想走这条路,您只需闪烁预编译的elf/bin文件,这将是最终代码的精确副本(这很好)。然而,我应该注意的是,这并不意味着您的接收方加密密钥将不是唯一的,因为它将是默认的。这对DualCast来说无关紧要,因为UI允许您自己输入它,但您将输入它以匹配默认的接收方键。对于大多数应用程序来说,这应该没问题,也会工作得很好,但要知道,这确实意味着,如果有人真的想要,他们可以通过使用默认密钥来破解加密,如果你身边的其他人也使用默认密钥,可能会有一些串扰。(注意:任何从我的商店购买的DualCast接收器都会自动设置一个唯一的密钥供您使用,该密钥将随接收器一起发送。)

如果您想避免这种情况,您也可以安装CubeIDE并复制接收器源代码。然后,将加密密钥更改为唯一的密钥(位于main.c中)。再次强调,这只适用于接收方!预编译的代码对于DualCast本身来说是很好的。如果您有包含错误,只需右键单击未包含的文件,然后单击“添加/删除包含路径”,然后同时选择“调试”和“发布”,单击“确定”。要上传代码,点击绿色的“播放”按钮。(我还将在不久的将来发布一个如何使用CubeIDE的STM32完整教程。)如果你有迫切的问题,网上也有很多关于使用CubeIDE的信息。注意:您还需要一个ST-Link来上传,我将在本节后面解释连接它。

好的,现在我将解释如何上传DualCast本身的预编译代码,如果您愿意,也可以上传接收器。(不过请注意我刚才说的!)

重要提示:请确保在没有连接指定天线的情况下,不要发送任何无线命令(Wi-Fi或LoRa) !如果你告诉任何一个IC在没有连接天线的情况下发送一些东西(上传后你开始点击按钮),仔细计算的阻抗将会混乱,你可能会因为反射射频而损坏无线电,导致更小的范围和更差的无线性能。出于这个原因,我建议现在连接两个天线,以防你上传后误按了什么。(左上角为LoRa的黄色波段915MHz;紫色波段2.4GHz的Wi-Fi在右下角。)

要上传到DualCast,您需要CubeProgrammer和ESP32 flash下载工具。您需要这两个,因为DualCast使用STM32和ESP32,需要分别上传。

关于安装和使用CubeProgrammer的所有必要信息都可以在我的OpenTemp项目中找到。唯一的区别是您需要刷新DualCast。.elf文件(点击“下载原始文件”),而不是opentempp .elf。此外,您还需要确保PCB上的STM32连接了USB跳线!这可以用一个0欧姆电阻来完成,或者只是用一些焊料桥接它。

要闪烁到ESP32,你所需要做的就是去这里下载expressf最新的Flash下载工具。然后,点击可执行文件(.exe),输入芯片信息。(如果您感兴趣,我也有一个ESP-IDF教程。)

之后,下载这四个预构建文件:(单击“下载原始文件”)。

•bootloader.bin

•partition-table.bin

•app-template.bin

然后将flash_args文件中的地址复制到flash工具中。(你的和我的一样。)

确保它们像上面一样被选中并且是绿色的!

太棒了!然后将ESP32置于引导加载程序模式(按住BOOT >按RST >释放BOOT),选择COM端口,然后点击启动。

作为一个重要的注意事项:现在您需要确保通过放置0欧姆电阻或用焊料桥接连接在PCB上选择ESP32的跳线。ESP32的USB线需要连接,而STM32的USB线不需要连接。此外,ESP32仅在DualCast处于Wi-Fi模式时启用!这意味着您需要在上电时将PCB颠倒,然后通过USB连接。

现在已经成功设置了DualCast,让我们回到上传到接收器的问题。

正如我之前所说,要上传到它,你需要一个ST-Link。这基本上只是一个调试器/上传器,所有stm32都支持。这里需要它,因为在STM32U0上默认检查NBOOT_SEL位,这意味着您不能使用USB进行第一次上传。

不用担心,st - link非常便宜且易于访问,如果您想在将来的项目中进行调试,无论如何都必须获得一个。我个人使用的是ST-Linkv3,但也有更便宜的版本,也可以很好地工作。

应该注意的是,这些是接收器上相应的引脚,您将连接到ST-Link:

•SWC -串行线时钟(SWCLK)

•串行线数据输入/输出(SWDIO)

•SWO—串行线输出(通常用于打印语句和实时值)

•RST -复位

•3V3 - 3.3V参考电压

•GND -接地

当一切都连接好后,可以使用CubeIDE和源代码上载带有自定义加密密钥的代码(如本节开头所讨论的),或者使用带有默认密钥的预编译.elf文件上载代码。如果您选择使用预编译文件,请遵循与上传到DualCast时相同的步骤,只是选择ST-Link而不是USB并使用DualCast- rx。精灵文件。在使用ST-Link时,你也不需要按住任何按钮,所以一旦连接上,你就可以继续上传程序。如果你想要额外的保护,以防有人试图读取/逆向工程的密钥从接收器的闪存,你也可以启用RDP,这将锁定内存。

这是它!

就像我之前提到的,如果您想要进行任何编辑、验证安全性等,也可以在空闲时随意翻查源代码,以使这个项目完全符合您的愿望。您甚至可以添加一个解锁pin,以增加安全性万一你失去了它。

使用接收器

在这里,我将进入一些细节,设置接收器的多功能用途,无论你想要使用这个项目!

注意:如果你想要添加存在检测,gpio上面的6个引脚是用于连接激光雷达的。

正如我前面提到的,这个接收器所做的就是接收从DualCast发送的信号(一个数字),然后将相应的gpio设置为高电平以匹配二进制信号。由于有5个gpio,这个范围从0-31(2^5 - 1),这意味着可能有31个不同的命令可以接收(不包括0)。如果你不熟悉二进制,可以在这里找到十进制数字的二进制等效列表。

因此,使用接收器所需要做的就是将接收器上的5个gpio连接到您熟悉的任何使用(Arduino UNO, ESP32等),然后监视这些引脚以获取相应的命令。当您正在寻找的命令被接收时,您可以让它在Arduino IDE中做任何事情,这可能比在CubeIDE中使用C更舒适(尽管如果您愿意,您可以直接修改接收器源代码)。为了帮助简化这个过程,我还创建了一个基本的Arduino接收器草图供参考。

有了这个,你将能够使用LoRa接收器的任何自定义项目,你想要和它很容易地与您的DualCast通信!

使用DualCast

在这里,我将解释所有不同的按钮做什么,以及如何像专业人士一样使用DualCast !如果你刚到这里,使用接收器的信息在上面^。我将继续标记按钮如下,使一切更容易解释。

好吧,重要的先说。在直立时打开DualCast(如上所述)将使其进入LoRa模式。在这里,您有以下按钮选项:

按钮1将显示您的加密/解密密钥并迭代所选的十六进制字符。

按钮2将显示您的加密/解密密钥,并更改当前选择的十六进制字符。

使用这两个按钮来更新您的密钥,每次选择并更改一个字符。

按钮4将添加4到底部的所有数字命令。这两个用于更改要发送给接收者的号码(作为命令)。例如,如果接收器正在监听2、8或12等,您可以在这里更新范围。

按钮5-8只会发送上面的数字。例如,如果按钮5上面有一个1,当你按下按钮5时,它将发送一个1。

这两个用于更改要发送给接收者的号码(作为命令)。例如,如果接收器正在监听2、8或12等,您可以在这里更新范围。

打开Wi-Fi模式!要将其置于此模式,只需关闭DualCast,将其翻转180度,然后再打开即可。

要启动Wi-Fi扫描,只需选择任何TOP按钮(1-4)。如果你选择一个底部的,程序将崩溃,你需要电源循环重置它。我还应该注意到,如果你开始扫描,几秒钟后什么也没有显示,那么这意味着周围没有2.4GHz的网络可以分析。试着搬到别的地方,再试一次。作为一个很好的测试,如果你有一部iPhone,你可以打开一个热点,选择“最大兼容性”(使其兼容2.4GHz),它将在DualCast上可见。从那里,你可以用你的电脑连接到热点,然后看到你的电脑或其他设备发送的所有数据帧,这非常简洁。(产生一些流量!)

开始扫描后:

按钮5将向上滚动一个网络。

按钮6将向下滚动一个网络。

按钮7将选择您当前滚动到的网络(顶部的网络)。

作为一个有用的标识符,屏幕右上方的数字是当前设置要选择的网络。

在使用按钮7选择给定的网络之后,DualCast将被过滤为仅侦听来自该网络的数据包。现在唯一仍然活动的按钮是按钮8,您可以使用它在数据帧和信标帧之间进行切换。

太棒了!现在唯一的东西就是激光雷达了。它很容易选择,你所要做的就是按住按钮4,然后按住按钮3,同时按住它(并在LoRa模式/垂直方向下)打开VL53L4X激光雷达。在这种模式下,您可以获得当前测量的距离以及一些额外的数据,以确保测量精度,如环境光,公差,最小和最大。

要退出激光雷达模式,只需循环电源。如果你忘记了这些按钮的作用,在DualCast上还有一个内置的QR码,可以很容易地通过按住按钮4和按住按钮2来访问(在LoRa模式下),类似于激活激光雷达(但左边有一个按钮)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/903373.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 关闭vueDevTools工具

1、文件 vite.config.ts 2、注释

SecureCRT SecureFX 9.6.2 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输

SecureCRT & SecureFX 9.6.2 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输SecureCRT & SecureFX 9.6.2 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输 rock-solid terminal emulation & flexible secure file transfer for com…

deepseek模型部署到本地使用+投喂数据训练

近期,由于国外大量攻击,导致 DeepSeek 经常无法使用;另外,许多朋友希望在本地搭建自己的知识库,以保护自己的资料不被外泄。因此,越来越多的人希望能够在本地部署 DeepSeek,但对于技术难度有所担忧。别担心,这篇教程将为你扫清所有障碍!从环境搭建到模型运行,每一步都…

Axure RP上使用 Font Awesome 图标库

Axure RP 可以使用 Web Fonts,这让置入 Font Awesome 变得非常方便。Font Awesome 是一种字体,只是主要针对图标使用,而非我们所熟知的中文/西文字体。 进行简单的几步设置,就可以在自己项目上面使用 Font Awesome 的 1609 个免费图标。图标覆盖广泛,风格也相对统一。 一、…

读DAMA数据管理知识体系指南27文件和内容管理概念(上)

读DAMA数据管理知识体系指南27文件和内容管理概念(上)1. 文件和内容管理 1.1. 文件和内容管理是指针对存储在关系型数据库之外的数据和信息的采集、存储、访问和使用过程的管理 1.2. 重点在于保持文件和其他非结构化或半结构化信息的完整性,并使这些信息能够被访问 2. 业务驱…

(Windows11)如何自编译Aseprite(像素画软件) - 1.3.12版本

如何自编译Aseprite(像素画软件)-windows-以1.3.12版本为例 1. Aseprite说明开源像素画软件,自带调色板 Steam也可购买:steam购买2. 官方编译说明(Windows系统下) 官方库提供了win、mac以及Linux编译方式 文档地址:https://github.com/aseprite/aseprite/blob/main/INSTAL…

BUAA_OO_Unit1总结

Unit1 总结 1. 程序结构分析 1.1 代码结构(类图)1.2 类的度量统计类名 属性个数 方法个数 方法名 方法规模(代码行) 控制分支数目 类总代码规模(行)Function 4 6 Function 5 0 85sort 10 1 (双重循环)getCan 20 3 (条件+循环嵌套)huanCan 15 2 (条件替换逻辑)prework 15 …

永久免费!支持视频号下载,2025最新版本

在昨天的推文中给大家分享了一款非常不错的 Ai 工具,含有 Ai 一键抠图、Ai 无损放大等功能,对于设计和作图的小伙伴来说,非常的有帮助这款Ai 合集工具,内容丰富,且使用简单,纯在线使用,不消耗本地电脑硬件内存,有需要的小伙伴可以点击下方链接体验 一键Ai抠图、无损放大…

AbstractAutoProxyCreator#postProcessBeforeInstantiation

一、定义 postProcessBeforeInstantiation 是 Spring AOP 动态代理的核心扩展点,通过提前创建代理对象优化性能,并支持丰富的自定义逻辑(如事务、安全) 二、代码分析 public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws Be…

Day20_javascanner_struct

Java JavaDoc javadoc命令是用来生成自己API文档的 参数信息: @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @return 返回值情况 @throws 异常抛出情况 /*** @author XXX* @version 1.0* @since 1.8*/public class Doc {String name;/*** …