嵌入式职场
在Matlab、Python、C/C++和Go等多种编程语言方面都有丰富的经验,专注于智能优化算法、工业人机交互界面设计、物联网、服务端开发等众多领域。
展开
-
【UWB】第13篇 基于 AOA 算法定位
算法是通过已知两个点的坐标值,并且知道它与被测点的角度关系,通过两个参考点与被测点的方程关系式,列出方程组求解,即可得到被测点坐标。所以,通过两个参考点就可以使用 AOA。、角度测量误差引起的。原创 2024-06-17 14:57:18 · 408 阅读 · 0 评论 -
【UWB】第12篇 三边定位法
个点不能在同一条直线上。结合参考点的位置来测量待测点的位置并且估计三边的距离,通过关系方程组来计算位置。的测距依赖于严格的时钟同步,这一点大大增加了定位设备实现的复杂度。通过上述公式可以计算出节点的坐标,从而获得较高的定位精度。三边定位法是测量在同一平面的。个参考点之间的距离,其中,这。原创 2024-06-17 14:52:35 · 197 阅读 · 0 评论 -
【UWB】第11篇 分析 TREK 演示交互过程中的消息时间
19和Final = 44。如果我们取最长的消息,110 kbps模式的总帧持续时间为4.929 ms,6.81Mbps模式为0.214 ms。6.81 Mbps数据速率,128前导码长度和16 MHz PRF,使用8个符号的标准SFD。110 kbps数据速率,1024前导码长度和16 MHz PRF,使用非标准SFD为64。上面各部分所示的消息长度(以字节为单位)是: Poll = 13、原创 2024-06-08 10:05:45 · 66 阅读 · 0 评论 -
【UWB】第10篇 TWR交互协议详解
在实际的802.15.4网络中,PAN ID可以作为与网络关联的一部分进行协商,或者它可能是基于应用程序定义的常量。在双向范围中使用了三条消息:轮询消息、响应消息和最终消息。这些消息遵循IEEE消息编码约定,但这些消息不是标准化的RTLS消息。关于基于IEEE 802.15.4 UWB的RTLS系统中使用的标准化消息格式的详细信息,读者可参考IEO/IEC24730-62国际标准。最终消息在收到锚点的响应消息后由TAG发送。最后的消息的长度是44个八度字节。表5列出并描述了“最终消息”消息中的各个字段。原创 2024-06-08 09:46:14 · 107 阅读 · 0 评论 -
【UWB】第9篇 AoA 设计指南 - 两个接收天线之间的相位差
建议将天线阵列打印在与芯片相同的PCB上,或者使用qorvo在芯片附近的SMA连接器,并像Qorvo的PDoA评估试剂盒中所做的那样。应注意避免射频路径中的不连续、阻抗步骤和耦合,这可能导致不希望的反射或辐射。如果天线以0.6λ(-)间隔更远,随着相位连续缠绕,对于小于-180°或大于+180°相位差的测量值存在模糊性。这种影响是非常不可取的,并且天线的设计必须确保在垂直轴上的总范围小于360°。建议的天线元件间距为0.45λ(-),以考虑相位测量误差和噪声,并在不牺牲太多分辨率的情况下避免PDoA封装。原创 2024-05-27 13:54:02 · 428 阅读 · 0 评论 -
【UWB】第8篇 详解DW3000中的dwt_setcallbacks 函数
当TX、RX或SPI错误事件发生时,将调用这些回调函数,并调用dwt_isr()来处理这些事件(有关事件和相关回调函数的更多详细信息,请参阅下面的dwt_is()描述)。在接收数据时,如果超过了预定的时间却没有接收到完整的数据帧,就会触发超时,此时可以执行相应的超时处理逻辑。SPI(串行外设接口)是一种常见的外设通信接口,此回调可以用于处理SPI通信时出现的错误情况。: 当接收操作出现错误时,将调用此回调函数。函数用于设置一系列回调函数,以便在特定的事件发生时执行相应的操作。分别表示不同类型的回调函数。原创 2024-04-23 08:12:12 · 102 阅读 · 0 评论 -
【UWB】第7篇 基于STM32开发板的TOF多基站多信标无限
链接:https://pan.baidu.com/s/1tswphFWTq4X7mp76WDMnVA?原创 2024-04-22 20:05:24 · 287 阅读 · 0 评论 -
【UWB】第6篇 基于载波相位的到达角估计和定位方法
1、基于载波相位的到达角估计和定位方法利用UWB的载波相位测量功能,结合阵列天线和阵列信号处理技术,可以获取到达信号的角度信息,从而进行终端位置的估计,实现定位功能。原创 2024-04-22 18:37:48 · 470 阅读 · 0 评论 -
【UWB】第5篇 UWB超宽带芯片厂商/方案商汇总
DW3000芯片组具有良好的可集成性,可以方便地集成到各种设备中,如传感器、标签、无人机等。DW3000芯片组具有高精度的定位能力,能够实现厘米级别的定位精度。这使其在需要高精度定位的应用场景中具有广泛的应用前景,如工业自动化、智能交通、物联网等领域。DW3000芯片组采用了低功耗设计,能够在保持高精度定位的同时,实现较低的能耗。DW3000芯片组广泛应用于室内定位、室外定位、物联网、智能交通、工业自动化等领域,为这些领域的应用提供了高精度、低功耗的定位解决方案。原创 2024-04-22 14:32:07 · 104 阅读 · 1 评论 -
【UWB】第4篇 UWB定位系统中常见的通信机制简介
UWB定位系统中常见的通信机制可以分为三大类:基于时间的获取方式,比如常见的TDOA定位;基于信号强度的获取方式比如常见RSSI信号值模型;基于信号到达角度的获取方式比如比较新颖的AOA角度定位、PDOA定位等。目前UWB定位这块,普遍商用的多是基于时间的通信机制方式。UWB定位系统中常见的通信机制分三大类:基于时间获取方式,常见的TDOA定位;基于信号强度的获取方式比如常见RSSI信号值模型;基于信号到达角的获取方式比如比较新颖的AOA角度定位、PDOA定位等。第一类:基于时间的通信机制。原创 2024-04-22 14:26:04 · 172 阅读 · 0 评论 -
【UWB】第3篇 三边测量法的原理与计算方法
UWB(Ultra-Wideband)定位系统的三边定位算法是一种常用的定位方法,它利用三个或更多的已知位置的锚点(anchor)和一个未知位置的目标节点(tag)之间的距离测量来确定目标节点的位置。由于各个节点的硬件和功耗不尽相同,所测出的距离不可能是理想值,从而导致上面的三个圆未必刚好交于一点,在实际中,肯定是相交于一个小区域,因此利用此方法计算出来的(X , Y)坐标值存在一定的误差。:根据距离测量结果,将目标节点与三个锚点之间的距离作为三角形的三条边,构建出一个或多个可能的三角形。原创 2024-04-22 11:53:03 · 245 阅读 · 0 评论 -
【UWB】第2篇 TWR测距与数据标定方法
TOF(Time Of Fight)是指直接完成对飞行时间的测量,UWB定位系统中的TOF测距方式是指通过双向通信完成两个节点间的距离测量,即。该测距方式直接完成节点间距离测量,并进而可以实现节点间的时钟同步,是UWB定位系统中常用的一种测距方案。TWR测距的基本原理是,发送设备从一个确定的时刻开始发射无线信号,接收设备在接收到信号后记录下接收到信号的时刻。总结来说,TWR测距是一种通过测量无线信号的飞行时间来计算距离的技术,可以广泛应用于无线通信、室内定位和雷达系统等领域。SS-TWR的过程如下图所示。原创 2023-11-06 09:22:29 · 351 阅读 · 0 评论 -
【UWB】第1篇 时差计算技术:TOF定位技术原理
但是在实际情况下,由于所有的节点和基站是共享信道的,因此节点到各个基站之间的 TOF 必然是依次测量的,如果在和各个基站进行往返测距的过程中,节点的位置发生了快速移动,定位就会发生较大的偏差如果在和各个基站进行往返测距的过程中,节点的位置发生了快速移动,定位就会发生较大的偏差,如下图所示。两个标签节点不能互相通信,但是基站 3 和基站 4 同时需要参与两个标签节点的测距,由此会带来竞争,需要专门的协议来处理这一问题,无论采用什么样的协议,先不论其复杂程度,最终导致节点测距刷新率降低却是确定无疑的。原创 2023-11-03 17:26:32 · 292 阅读 · 0 评论 -
【Nats】构建nats.c报错 error: Could not find libprotobuf-c packag
,它会寻找 libprotobuf-c 库。如果没有找到,则会打印一条消息并且构建过程失败。当 cmake 第一次运行时(或者删除。在构建具有流支持的库时,NATS 库使用。根据实际情况进行打开或者关闭。原创 2024-07-01 10:26:59 · 78 阅读 · 0 评论 -
【Nats】连接到指定的 NATS 服务器
如果服务器在不同的地址或端口上,需要在命令中提供正确的地址。命令行工具连接到非默认的 NATS 服务器,可以通过指定。选项来指定服务器地址。默认情况下,NATS 服务器监听在。要将消息发布到指定的 NATS 服务器,请使用。要从指定的 NATS 服务器订阅消息,请使用。原创 2024-08-20 13:44:33 · 125 阅读 · 0 评论 -
【nats】第5篇 剖析 jetstream 键/值存储演练
键值存储是一种用于存储、检索和管理键值对数据的数据库系统或存储引擎。KV桶的概念提供了一种方式来将相关的数据项进行逻辑上的分组和管理,使得在处理大规模数据时更加便捷和高效。不同的键值存储系统可能对KV桶的实现和管理有所不同,但通常来说,KV桶可以帮助用户更好地组织和管理他们的键值数据集合。"KV桶"可以被视为在键值存储系统中创建的一个逻辑容器,用于组织和存储一组相关的键值对数据。在一些分布式键值存储系统(如NoSQL数据库)中,数据通常被组织成多个KV桶,每个KV桶可以独立地进行管理、备份和调优。原创 2023-11-15 11:35:21 · 176 阅读 · 0 评论 -
【nats】第4篇 一篇文章详解 JetStream 演练
基于 NATS 协议:JetStream 是构建在 NATS 协议之上的,因此能够继承 NATS 的简单性、高性能和可伸缩性等特点,同时还能够与现有的 NATS 生态系统集成。订阅者启动后发布的消息,这是正常的,也是预期的基本的“核心 NATS”消息传递。为了接收流中包含的所有消息(包括过去发布的消息)的“重播”,我们现在将创建一个“消费者”。消息重放和历史消息查询:JetStream 允许消费者按时间范围查询历史消息,并支持消息重放功能,这对于需要分析历史数据或者重新处理消息的场景非常有帮助。原创 2023-11-15 11:06:15 · 428 阅读 · 0 评论 -
【nats】第3篇 队列组(Queue Groups)
如果有新的订阅者加入队列组,或者已存在的订阅者离开队列组,NATS 会重新计算分发策略,确保消息能够均匀地分发给订阅者。消息发布:当有消息发布到该主题时,NATS 会按照一定的策略将消息发送给队列组中的一个订阅者。订阅者加入队列组:多个订阅者可以选择加入同一个队列组,并订阅相同的主题(Subject)。消息可以被多个订阅者共享,但每条消息只会被队列组中的一个订阅者接收和处理。总之,NATS 的队列组允许多个消费者共享订阅,并且通过负载均衡的方式处理消息,从而提高系统的可靠性和性能。原创 2023-11-15 09:37:39 · 209 阅读 · 0 评论 -
【nats】第2篇 详解NATS的请求-回复(Request-Reply)模式
NATS的请求-回复模式通过利用发布/订阅模式和回复主题,为客户端和服务端之间的通信提供了一种简单而有效的机制,使它们能够进行消息交换并实现简单的RPC调用。服务端发送响应:服务端在处理完请求后,向客户端指定的回复主题发送响应消息(Reply Message),并包含了对请求的处理结果或其他相关信息。服务端接收请求:服务端订阅了客户端发送请求的主题,并接收到请求消息后进行处理。客户端接收响应:客户端订阅了用于接收响应的回复主题,并在接收到响应消息后进行相应的处理,例如处理响应结果或执行后续操作。原创 2023-11-15 08:58:57 · 354 阅读 · 0 评论 -
【nats】第1篇 初识 nats 入门讲解
NATS(NATS Messaging System)是一个开源的、轻量级的和高性能的消息传递系统,用于构建分布式和可扩展的应用程序。NATS通过提供基于发布/订阅模式(pub/sub)和请求/响应模式(req/rep)的消息传递机制,使得不同组件和服务之间可以进行可靠的通信。轻量级和高性能:NATS被设计为非常轻量级并且具有很高的性能,适用于在各种规模的应用中部署。简单性:NATS提供了简单的API,易于使用和集成到现有的应用程序中。原创 2023-11-15 08:31:44 · 158 阅读 · 0 评论 -
【nats】第0篇 安装、运行和部署 NATS 服务器
1、1、安装、运行和部署 NATS 服务器NATS 服务器经过高度优化,其二进制文件非常紧凑(小于 20 MB)。NATS 服务器可以集群在一起以提供容错和可扩展性。NATS 服务器可以作为叶节点运行,连接到集群,透明地代理并将 NATS 和 JetStream 服务扩展到任何位置,无论是 VPC、VLAN、远程办公室、家庭中的单台计算机,甚至是具有部分连接的边缘位置。不同区域或云提供商中的 NATS 集群可以通过网关连接在一起,过滤不需要的流量,并允许灾难恢复和具有地理位置关联的排队分布式处理。原创 2023-11-15 14:47:50 · 337 阅读 · 0 评论 -
【Edgex】设备服务 Configuration Properties(configuration.yaml)
所有服务都有一个名为 redisdb 的 Redis DB 凭证默认条目。管理数据库连接和要使用的数据库类型的配置。虽然并非所有服务都需要数据库连接,但大多数服务都需要,因此这已包含在通用配置文档中。如果服务使用 -cp/--configProvider 标志运行,则可以在服务运行时动态更改配置的可写部分中的条目。配置的 MessageBus 部分中的条目允许连接到内部 MessageBus 并定义公共基本主题前缀。报告当前正在收集和启用的指标的时间间隔(以秒为单位)。日志条目严重性级别。原创 2023-11-14 09:25:20 · 85 阅读 · 0 评论 -
【EdgeX】详解 edgex-compose 存储库中不同yml的含义
安装 Docker 和 Docker Compose 后,需要一个 EdgeX Docker Compose 文件。EdgeX Foundry 有十多个微服务,每个服务都部署在自己的 Docker 容器中。该文件是所有要运行的 EdgeX Foundry 微服务的清单。每个 EdgeX 微服务都有一个对“ping”HTTP 请求的内置响应。来检查网络资源的可达性。EdgeX 使用相同的概念来检查微服务的可用性或可达性。检查 EdgeX 服务日志通常会指示服务是否正常运行或出现错误。查看完日志内容后,选择。原创 2023-10-23 09:52:27 · 111 阅读 · 0 评论 -
【EdgeX】实践演练 edgex-go v3.0.0 - Minnesota 部署运行
Docker 可以识别内部主机名edgex-core-command,但是当从 Docker 外部调用该服务时,您必须使用localhost来访问它。将 Int16 值设置为 42 并禁用随机化后,对 Int16 设备的 Random-Integer-Device 操作的 GET 调用将始终返回值 42。通过命令服务对 Int16 设备的 Random-Integer-Device 操作的 GET 调用会导致设备以 JSON 格式生成下一个随机值。,每个设备随机生成各种类型且在可配置参数范围内的数据。原创 2023-10-20 16:49:14 · 141 阅读 · 0 评论 -
【Neuron】数据从南向设备管理到北向应用,然后发布到mqtt-broker中
目录1、neuron介绍2、neuron安装教程3、添加南向设备和北向应用南向设备注意事项北向应用注意事项docker中拉取安装nanomq4、MQTTX订阅1、neuron介绍Neuron 是运行在各类物联网边缘网关硬件上的工业协议网关软件,旨在解决工业 4.0 背景下设备数据统一接入难的问题。通过将来自繁杂多样工业设备的不同协议类型数据转换为统一标准的物联网 MQTT 消息,实现设备与工业物联网系统之间、设备彼此之间的互联互通,进行远程的直接控制和信息...原创 2022-05-25 17:48:53 · 1030 阅读 · 0 评论 -
【Neuron】解决“neuron process failed enable core dump, ignore”与“can‘t create persister”问题
1、logs信息错误信息如下:2022-05-25 16:02:05 [24835] ERROR [neuron] src/main.c:150: neuron process failed enable core dump, ignore2022-05-25 16:02:05 [24835] INFO [neuron] src/main.c:153: neuron process, daemon: 02022-05-25 16:02:05 [24835] INFO [neur原创 2022-05-25 16:47:35 · 200 阅读 · 0 评论 -
【EdgeX】基于sdk-c随机数设备服务发布数据到MQTT消息总线上,并在MQTTX上订阅
1、构建device-sdk-c1.1 前期准备需要安装下面文件,并且确保cmake的版本至少为3。libmicrohttpd libcurl libyaml libcbor paho libuuid hiredis1.2 依赖文件安装cmake版本查看cmake --version其余依赖文件安装:sudo apt-get install libcurl4-openssl-dev libmicrohttpd-dev libyaml-dev libc.原创 2022-05-25 14:59:20 · 605 阅读 · 0 评论 -
【EdgeX】redis通过topic订阅消息总线上的数据
目录1、消息总线上的数据2、通过docker启动edgex3、redis通过topic订阅消息总线上的数据通过subscribe订阅通过psubscribe订阅1、消息总线上的数据服务(如设备服务)和其他系统可以将传感器数据放在消息总线主题上,并且可以将核心数据配置为订阅该主题。这是将数据获取到核心数据的默认方式。任何服务(如应用程序服务或规则引擎服务)或第三系统也可以订阅相同的主题。如果传感器数据不需要在本地持久化,核心数据就不必订阅消息总线主题——这使得核心数原创 2022-05-11 17:58:03 · 836 阅读 · 0 评论 -
【EdgeX】设备服务与core-data、core-command的交互
1、运行EdgeX服务docker-compose up -d查看正在运行的微服务:docker-compose ps2、edgex-device-virtual 虚拟设备连接设备(从设备读取数据)edgex-device-virtual :虚拟设备服务虚拟设备(也称为虚拟设备)服务已经是作为默认 EdgeX 配置的一部分提取和运行的服务。可以在edgex-ui-go微服务上可视化界面上看出虚拟设备:读取数据值:您可以通过在 EdgeX 核心..原创 2022-05-10 17:56:30 · 411 阅读 · 0 评论 -
【EdgeX】自定义设备服务device-simple启动流程
1、从 ./res/configuration.toml 加载服务配置;2、使用文件中的本地配置;3、Web 服务器启动 (localhost:59992);4、使用 AuthMode='usernamepassword' 和 SecretName='redisdb" 设置安全 MessageBus 选项;5、连接到 redis 消息总线 @redis://localhost:6379 在 'edgex/events/device' 前缀主题上发布, AuthMode='usernamepa原创 2022-03-28 15:59:24 · 1113 阅读 · 0 评论 -
【EdgeX】edgex-go边缘设备、系统计算理解
目录1、edgex-go微服务之间的关系consul讲解微服务运行配置服务微服务入口1、edgex-goedgex-go是EdgeXFoundry下边缘侧系统的软件架构,以go语言开发,代码量大概6w行左右,包含13个微服务。edgex-go南向对设备有API,北向也有对云的API。可以基于API进行开发,但这种开发就和edgex-go本身没太大关系了。https://github.com/edgexfoundry/edgex-gohttps://github....原创 2022-05-12 09:20:26 · 677 阅读 · 0 评论 -
【EdgeX】EdgeX Foundry 框架整体入门(详解)
目录1、EdgeX Foundry 介绍2、框架介绍设备服务层核心服务层支持服务层应用服务层3、EdgeX工作原理基于消息总线的消息传输(从南侧到北侧)基于消息总线的消息传输(从北侧到南侧)1、EdgeX Foundry 介绍EdgeX Foundry 是一个开源、供应商中立、灵活、可互操作的软件平台,位于网络边缘,可与、设备、传感器、执行器和其他物联网对象的物理世界进行交互。简单来说,EdgeX 是边缘中间件 — 服务于物理传感和执行“事物”与我们的信息原创 2022-05-10 14:34:30 · 3135 阅读 · 0 评论 -
【EdgeX】安装Docker和Docker Compose,并运行EdgeX
1、安装Dockersudo apt-get updatesudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-releasecurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "deb原创 2022-03-15 13:51:01 · 1767 阅读 · 2 评论 -
【Mqtt】学习MQTT利器 之 Mosquitto服务器的开源实现
Mosquitto 是 MQTT 协议 5.0、3.1.1 和 3.1 版本的服务器的开源实现。它还包括一个 C 和 C++ 客户端库,以及用于发布和订阅的实用程序。原创 2022-09-07 10:19:26 · 671 阅读 · 0 评论 -
【Mqtt】基于paho.mqtt.c库的mqtt客户端实现
MQTT C 客户端库的源代码。此代码构建的库使应用程序能够连接到代理以发布消息,以及订阅主题和接收已发布的消息。支持同步和各种异步编程模型。原创 2022-09-30 11:26:15 · 896 阅读 · 0 评论 -
【TCP】TCP滑动窗口与回退N针协议与TCP的可靠性如何保证
同时接收方也维持一组连续的允许接收的帧序号,称为接收窗口。在发送端,收到一个确认帧,发送窗口就向前滑动一个帧位置,当发送窗口没有可以发送的帧时,发送方就停止发送。后退N帧协议 发送窗口大于1,接收窗口等于1.在后退N帧中,发送方不需要收到上一帧的ACK后才能发送下一帧,而是可以连续发送帧。当接收方检测出失序信息帧后,要求发送方重发最后一个正确接收的帧之后的所有未被确认的帧。接收方因为窗口为1,所以必须按序接收数据帧,如果某个序大于当前所期望的序号时就会连续发送3个ACK确认帧,要求客户端重传失序帧。原创 2023-03-16 22:09:45 · 274 阅读 · 0 评论 -
【TCP】为什么会采用三次握手,若采用二次握手可以吗?
如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到客服端重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。原创 2023-03-16 21:55:23 · 74 阅读 · 0 评论 -
【TCP】为什么四次挥手,主动方要等待2MSL后才关闭连接?
那么Server就会在超时之后继续发送FIN,此时由于Client已经CLOSED了,就找不到与重发的FIN对应的连接,最后Server就会收到RST而不是ACK,Server就会以为是连接错误把问题报告给高层。所以,Client不是直接进入CLOSED,而是要保持2MSL,如果在这个时间内又收到了server的关闭请求时可以进行重传,否则说明server已经受到确认包则可以关闭.一、保证TCP协议的全双工连接能够可靠关闭. 主要为了确保对方能受到ACK信息.原创 2023-03-16 22:03:32 · 285 阅读 · 0 评论 -
TCP的三次握手与四次挥手过程,各个状态名称与含义,TIMEWAIT的作用
1、三次握手2、四次挥手3、TCP协议图解原创 2023-03-16 21:54:50 · 67 阅读 · 0 评论 -
详解Http服务器返回给客户端的状态码
HTTP状态码是由服务器返回给客户端的三位数字代码,用于表示服务器对请求的处理结果。这些状态码提供了关于请求是否成功、失败以及出现的特定问题的信息。请注意,在实际开发中,可能还会根据不同的状态码进行更详细的错误处理和日志记录,以便更好地调试和定位问题。类的构造函数接受一个整数参数,用于表示错误码。2xx 成功:表示请求已成功被服务器接收、理解和处理。5xx 服务器错误:表示服务器在处理请求时发生了错误。4xx 客户端错误:表示服务器无法处理请求。的值来确定具体的错误码,并将其传递给。原创 2024-01-30 11:12:25 · 207 阅读 · 0 评论