一、硬件介绍

1、产品特点

Beetle RP2350【RP2350A_QFN60】是一款基于RP2350微控制器的高性能迷你开发板,双核双架构设计(支持 Arm Cortex-M33或Hazard3 RISC-V内核)为开发者提供灵活的性能配置。

双核双架构,性能自由切换

  • 采用Raspberry Pi RP2350高性能微控制器,支持Arm Cortex-M33Hazard3 RISC-V内核选择。
  • 主频高达150MHz,配备520KB RAM2MB Flash,可高效处理大量数据,满足高性能计算需求。

高度集成,硬币大小

  • 尺寸仅为25mm x 20.5mm,相当于一枚硬币大小,适合空间受限的应用场景。
  • 提供 11个IO接口BAT接口和3.3V电源接口,满足多样化连接需求。

锂电池管理与监测
集成 锂电池充电管理电池电压监测 功能,支持实时电量监控,确保设备在低电量时及时采取措施,确保持续运行。

易于编程与集成

  • 支持 C/C++ 和 MicroPython 编程

在这里插入图片描述

2、功能引脚示意图 / 原理图

板载LED灯

IO25引脚控制

充电指示灯

指示充电状态的绿色LED灯

通过三种方式指示充电状态:

1、充满电或未接入电源时熄灭;

2、充电时常亮;

3、USB供电,未连接锂电池时高频闪烁;

用户按键

使用QSPI_SS引脚控制该按钮

在这里插入图片描述

引脚号数字口模拟口UARTI2CSPI其它
0D0TX1
1D1RX1
4D4SDA
5D5SCL
8D8TX2
9D9RX2
16D16SPI0/MISO
18D18SPI0/SCK
19D19SPI0/MOSI
26D26A0
27D27A1
BAT锂电池输入接口,IO29为电池电压检测引脚
GND接地引脚
VCC该引脚接在USB电源引脚,作为输出时电压为USB电压,通常为5V
3V33.3V稳压电源输出

主要原理图:

在这里插入图片描述

3、外部硬件

1、雷达模块【CEM5861G-M11】

CEM5816G-M11 是一款高灵敏度 24GHz 毫米波 FMCW 人体存在检测雷达模块;
本模块主要特点是在传统人体感应雷达的功能基础上,同时具备检测人体呼吸等微小幅度的运动,来判断人体存在的功能;

模块采用 FMCW 调制,可以同时输出目标的距离。
模块可选带光敏,用户可根据环境光大小,对光敏门限进行设置;
在光照充足时关闭雷达,光照黑暗时开启雷达,实现照明感应的应用;

在这里插入图片描述

系统框架

在这里插入图片描述

特性:

参数典型值
频率24G-24.25GHz
调制方式FMCW
范围挂高安装:挂高 3m,静止人体检测半径 3m (可调), 移动检测半径 6m max(可调)
水平安装:直线 7 米运动检测,4 米存在检测
供电3.6 - 5.5V
电流22mA(平均值),80mA(峰值)
输出串口电平TTL(3.3V)
检测周期实时
数据格式UART
引脚定义

在这里插入图片描述

序号功能备注
1OUT有人输出高电平 3.3V,无人输出低电平 0V
2UART_TX串口发送
3UART_RX串口接收
4GND
5VCC供电 3.6 ~ 5.5V
数据格式说明

所有多字节参数,均采用大端格式传输

数据格式说明
帧头(2 字节)上位机发送,雷达接收: 0x55 0x5A
雷达发送,上位机接收: 0x55 0xA5
数据长度(2 字节,高字节在前,低字节在后)长度 = 功能码 + 命令码 + 数据 + 校验和
功能码(1 字节)读:0x0
写:0x1
被动上报:0x2
主动上报:0x3

读 / 写命令为上位机向雷达发送指令
上报命令为雷达向上位机发送信息
命令码(2 字节)命令码1:为功能分类
命令码2:表示具体功能
数据N字节
校验和(1 字节)为校验和之前所有数据按 uint8_t 格式相加之和的 低8位

1、上位机接收到雷达发送的数据

例:55 A5 00 0E 03 81 00 00 01 00 5E 00 00 00 00 01 78 64

55 A5 00 0E 03 CMD[1] CMD[2] Data[0] ~ Data[9] SUM

帧头(55 A5):上位机接收到雷达发送的数据;

数据长度(0x0E / 14):功能码(1) + 命令码(2) + 数据(10) + 校验和(1);

功能码(0x03):主动上报;

命令码(81 00)

数据:检测到运动目标,目标距离为 0.94 米,信号强度为 376

目标 ID:0x00

运动状态:0x01(检测到运动目标)

目标距离:0x00 0x5E(转换成十进制为:94cm)

速度 / 方位角度 / 俯仰角度:0

目标信号强度:0x01 0x78(转换成十进制为:376)

校验和:0x64(转换成十进制为:100)

2、Data 数据说明

Data[0]说明
Data[0]目标ID号:8位无符号整型
Data[1]目标状态:8位无符号整型;
0:无目标;1:表示移动;2:表示存在
Data[2]、Data[3]距离:16位无符号整型(cm)
Data[4]、Data[5]速度:16位有符号整型(cm/s)
Data[6]方位角度:8位有符号整型(°度)
Data[7]俯仰角度:8位有符号整型(°度)
Data[8]、Data[9]信号强度:16位无符号整型
雷达功能参数配置

16 进制收发,支持在线修改和保存参数:

波特率:115200、字宽: 8、停止位: 1、奇偶校验: none

使用串口工具(USB-TTL)连接至模块,并打开串口调试工具,可进行以下功能的配置;

参数功能读取指令
OTA 在线升级发送:55 5A 00 04 01 20 01 D5
接收:55 A5 00 04 02 20 01 21
恢复到默认参数发送:55 5A 00 04 01 20 02 D6
接收:55 A5 00 04 02 20 02 22
将所有参数保存到 flash 中发送:55 5A 00 04 01 20 04 D8
接收:55 A5 00 04 02 20 04 24
获取软件版本号发送:55 5A 00 04 00 00 01 B4
接收:55 A5 00 11 02 00 01 DATA1~DATA13 SUM
1米内运动检测阈值(默认值:200)读取:55 5A 00 04 00 80 03 36
设置:55 5A 00 06 01 80 03 DATA1 DATA2 SUM
接收:55 A5 00 06 02 80 03 DATA1 DATA2 SUM
1米外运动检测阈值(默认值:120)读取:55 5A 00 04 00 80 04 37
设置:55 5A 00 06 01 80 04 DATA1 DATA2 SUM
接收:55 A5 00 06 02 80 04 DATA1 DATA2 SUM
1米内存在检测阈值(默认值:300)读取:55 5A 00 04 00 80 09 3C
设置:55 5A 00 06 01 80 09 DATA1 DATA2 SUM
接收:55 A5 00 06 02 80 09 DATA1 DATA2 SUM
1米外存在检测阈值(默认值:300)读取:55 5A 00 04 00 80 0A 3D
设置:55 5A 00 06 01 80 0A DATA1 DATA2 SUM
接收:55 A5 00 06 02 80 0A DATA1 DATA2 SUM
最小检测距离(默认值 10cm)读取:55 5A 00 04 00 80 0C 3F
设置:55 5A 00 06 01 80 0C DATA1 DATA2 SUM
接收:55 A5 00 06 02 80 0C DATA1 DATA2 SUM
运动最大检测距离(默认值 :600cm)读取:55 5A 00 04 00 80 0D 40
设置:55 5A 00 06 01 80 0D DATA1 DATA2 SUM
接收:55 A5 00 06 02 80 0D DATA1 DATA2 SUM
存在最大检测距离(默认值: 450cm)读取:55 5A 00 04 00 80 0E 41
设置:55 5A 00 06 01 80 0E DATA1 DATA2 SUM
接收:55 A5 00 06 02 80 0E DATA1 DATA2 SUM
VO输出电平维持时间(默认值: 20000ms)读取:55 5A 00 04 00 80 14 47
设置:55 5A 00 06 01 80 14 DATA1 DATA2 SUM
接收:55 A5 00 06 02 80 14 DATA1 DATA2 SUM
VO指示模式(0x00:高电平指示有人;0x01:低电平指示无人)读取:55 5A 00 04 00 80 15 48
设置:55 5A 00 05 01 80 15 DATA1 SUM
接收:55 A5 00 05 02 80 15 DATA1 SUM
停止串口发送数据设置:55 5A 00 05 01 80 11 00 46
接收:55 A5 00 05 02 80 11 00 01
开启串口发送数据设置:55 5A 00 05 01 80 11 01 47
接收:55 A5 00 05 02 80 11 01 01
串口数据间隔时间(10ms / 以10倍率设置)读取:55 5A 00 04 00 20 06 D9
设置:55 5A 00 06 01 20 06 DATA1 DATA2 SUM
接收:55 A5 00 06 02 20 06 DATA1 DATA2 00

设置雷达参数

例: 雷达的移动感应距离设置为 5 米,存在距离 4 米,感应后输出高电平延时时间 5 秒

设置完成后,发送指令 55 5A 00 04 01 20 04 D8 进行保存,否则掉电会失效。

1、运动最大检测距离

串口发送:55 5A 00 06 01 80 0D 01 F4 38

串口返回信息:55 A5 00 06 02 80 0D 01 F4 84,表示移动检测距离已设置为 5 米

2、存在最大检测距离

串口发送:55 5A 00 06 01 80 0E 01 90 D5。

串口返回信息:55 A5 00 06 02 80 0E 01 90 21,表示存在检测距离已设置为 4 米

3、VO输出电平维持时间

串口发送:55 5A 00 06 01 80 14 13 88 E5。

串口返回信息:55 A5 00 06 02 80 14 13 88 31,表示感应输出高电平维持时间设置为 5 秒

上位机使用

上位机软件下载

1、连接好模块后,点击串口检测—串口选择—打开串口,此时显示界面会显示距离值及状态。
在这里插入图片描述
在这里插入图片描述

2、点击设置界面窗口,进入参数设置界面。可对模块的灵敏度,检测距离,串口延时,IO 延时等做配 置,在指令框中直接输入数值并点击写,即可修改模块参数。
灵敏度设置栏中,近距离运动/存在灵 敏度对应 1 米内设置,中距离运动 / 存在灵敏度对应 1 米外设置,修改完参数后点击保存按钮进行保存。

3、点击距离统计窗口,会实时显示距离及信号强度曲线。距离统计窗口上方曲线是实时距离曲线
色曲线代表静止目标的距离绿色曲线代表运动目标的距离

下方窗口显示的是实时信号强度曲线红色曲线代表静止目标的能量值,绿色曲线代表运动目标的能量值

在这里插入图片描述

2、喇叭模块【GSPK2307P-8R1W】

在这里插入图片描述

项目规格条件
额定阻抗8 Ohm±15%1kHz 1.0 V
额定输入功率0.5W2.0 V
最大输入功率1.0W2.0V
最低共振频率1700±20% Hz1.0 V Input
灵敏度88±3dB0.1m 0.1W
有效频率范围F0~20KHz-
谐波失真≤5% at 1kHz-

二、硬件连接

模块与开发板引脚之间的连接方式如下:

RP2350开发板VCCGNDTX2RX2A1A0
雷达模块VCCGNDRXTX--
喇叭模块-GND--VCC-
LED模块-GND---VCC

实物效果搭建如下:

在这里插入图片描述

三、项目功能实现思想

【人体运动感应警报系统】

实现效果:

实时检测判断人体运动 / 静止状态等相关信息;
处于运动时,输出此时的距离相关信息,并在不同距离范围内时,触发不同的警报效果;
处于静止时,绿色LED亮起,直到重新处于运动状态时才熄灭;

上位机串口输出相关数据信息;

四、功能实现主要步骤

主要相关代码

1、LED控制部分

#define LED_Pin A0
bool ledState = false;   void Led_Control(){ledState = true;Count = 0;
}...if(ledState) digitalWrite(LED_Pin, HIGH);
elsedigitalWrite(LED_Pin, LOW);

2、警报声音控制部分

#define Sound_Pin A1
bool soundState = false;
static unsigned long Stop = 0;// 在不同范围内 触发不同警报声音 1s
void Sound_Control(){if(soundState){if(dis <=200){    // 2米内tone(Sound_Pin, 1500); // 1.5 kHz}else if(dis > 200 && dis <=400){  // 2~4mtone(Sound_Pin, 1000); }else if(dis >400){   //4米外noTone(Sound_Pin);}}else{noTone(Sound_Pin);}if(millis() - Stop > 1000){Stop = millis();soundState = !soundState;}
}

3、雷达控制部分

#define COUNT 10 static byte buffer[18]; //存储数据
static byte Count = 0; 
static uint16_t  dis; //距离//雷达数据处理函数 
void Radar_Control(){//数据处理if(Serial2.available()){int header = Serial2.read();// 数据 18byteif(header == 0x55){int len = Serial2.readBytes(buffer,17);// 逐个字节 打印十六进制格式数据//A5 00 0E 03 81 00 00 02 00 67 00 00 00 00 25 B0 32  (17byte)for (int i = 0; i < len; i++) {if (buffer[i] < 0x10) Serial.print("0");Serial.print(buffer[i], HEX);Serial.print(" ");}Serial.println();//打印运动状态if(buffer[7] == 0x01){Serial.print("处于运动状态   ");if(Count>0){Count = 0;ledState = false;}}else{Serial.print("处于静止状态   ");Count++;//超过统计次数时 点亮LEDif(Count >= COUNT) Led_Control();      }//打印当前距离 cmdis = (buffer[8] << 8) | (buffer[9] & 0XFF);Serial.printf("当前距离为: %dcm\r\n",dis);Serial.println();Sound_Control();}}
}

完整代码

#define LED_Pin A0
#define Sound_Pin A1
#define COUNT 10 bool ledState = false;
bool soundState = false;static unsigned long Stop = 0;
static byte buffer[18]; //存储数据
static byte Count = 0; 
static uint16_t  dis; //距离void Led_Control(){ledState = true;Count = 0;
}// 在不同范围内 触发不同警报声音 1s
void Sound_Control(){if(soundState){if(dis <=200){    // 2米内tone(Sound_Pin, 1500); // 1.5 kHz}else if(dis > 200 && dis <=400){  // 2~4mtone(Sound_Pin, 1000); }else if(dis >400){   //4米外noTone(Sound_Pin);}}else{noTone(Sound_Pin);}if(millis() - Stop > 1000){Stop = millis();soundState = !soundState;}
}//雷达数据处理函数 
void Radar_Control(){//数据处理if(Serial2.available()){int header = Serial2.read();// 数据 18byteif(header == 0x55){int len = Serial2.readBytes(buffer,17);// 逐个字节 打印十六进制格式数据//A5 00 0E 03 81 00 00 02 00 67 00 00 00 00 25 B0 32  (17byte)for (int i = 0; i < len; i++) {if (buffer[i] < 0x10) Serial.print("0");Serial.print(buffer[i], HEX);Serial.print(" ");}Serial.println();//打印运动状态if(buffer[7] == 0x01){Serial.print("处于运动状态   ");if(Count>0){Count = 0;ledState = false;}}else{Serial.print("处于静止状态   ");Count++;//超过统计次数时 点亮LEDif(Count >= COUNT) Led_Control();      }//打印当前距离 cmdis = (buffer[8] << 8) | (buffer[9] & 0XFF);Serial.printf("当前距离为: %dcm\r\n",dis);Serial.println();Sound_Control();}}
}void setup() {//串口初始化Serial.begin(115200);Serial2.begin(115200);while (!Serial);pinMode(Sound_Pin, OUTPUT);pinMode(LED_Pin, OUTPUT);analogWrite(Sound_Pin,0);analogWrite(LED_Pin,0);}void loop() {Radar_Control();if(ledState) digitalWrite(LED_Pin, HIGH);elsedigitalWrite(LED_Pin, LOW);
}

五、实现现象

上位机串口打印距离、运动状态等相关信息,并处于不同距离范围内时,触发不同的警报声音效果;
处于静止时,LED点亮,重新处于运动时,LED熄灭;

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

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

相关文章

高通Android 13 开机黑屏问题深度剖析与解决方案

1. 问题概述 在 Android 13 系统定制化开发过程中&#xff0c;开机流程的调试与优化颇具挑战性。一个典型问题是&#xff1a;当开机动画播放完毕后&#xff0c;设备会先出现数秒黑屏&#xff0c;然后才进入锁屏界面。本文基于开机日志分析&#xff0c;结合实际项目经验&#x…

腾讯推出AI CLI工具CodeBuddy,国内首家同时支持插件、IDE和CLI三种形态的AI编程工具厂商

2025年9月9日&#xff0c;腾讯正式推出自研AI CLI工具CodeBuddy code&#xff0c;成为国内首家同时支持插件、IDE和CLI三种形态的AI编程工具厂商。这一创新不仅填补了国内市场在全形态AI编程工具领域的空白&#xff0c;更以编码时间缩短40%、AI生成代码占比超50%的硬核数据&…

零基础学习QT的第二天-组件基础知识

组件声明以及设置属性 所有的组件的基类为&#xff1a;QtObject&#xff0c;在c中名称为&#xff1a;QObject。 在qml和c名称有所区别&#xff0c;例如在Qml中QtObject&#xff0c;在C会省略一个t(QObject) 声明组件的方式&#xff1a; 组件名 {属性名:值}在实际应用中&#xf…

像素图生成小程序开发全解析:从图片上传到Excel图纸

像素图生成小程序开发全解析&#xff1a;从图片上传到Excel图纸 前言 在数字化创作和工艺设计领域&#xff0c;像素图生成工具具有广泛的应用价值&#xff0c;无论是十字绣设计、LED灯阵布置还是复古游戏美术创作。本文将详细解析一个功能完整的像素图生成小程序的开发过程&…

mac-intel操作系统go-stock项目(股票分析工具)安装与配置指南

1. 项目基础介绍 go-stock 是一个基于Wails和NaiveUI开发的AI赋能股票分析工具。旨在为用户提供自选股行情获取、成本盈亏展示、涨跌报警推送等功能。它支持A股、港股、美股等市场&#xff0c;能够进行市场整体或个股的情绪分析、K线技术指标分析等功能。所有数据均保存在本地…

spring-单例bean是线程安全的吗

其中可修改的成员变量有线程不安全问题&#xff0c;不可修改的无状态的 userService是没有线程安全问题的 spring框架中有一个 Scope注解&#xff0c;默认的值就是singleton&#xff0c;单例的。 不是线程安全的&#xff0c;一般来说&#xff0c;我们在bean中注入的对象都是无状…

CM1033系列 3串锂电池保护IC - 高精度±25mV 内置延时 多型号可选(含铁锂)

1. 核心亮点 高精度多重保护&#xff1a;专为3串电池组设计&#xff0c;提供过充、过放、三级过流&#xff08;含短路&#xff09;、充电过流及断线检测等全方位保护&#xff0c;电压检测精度高达25mV。超低功耗&#xff1a;工作电流典型值仅7μA&#xff0c;休眠电流低至4μA&…

【第23话:定位建图】SLAM后端优化方法详解

SLAM 后端优化方法详解 SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;后端优化是SLAM系统中的关键环节&#xff0c;负责对前端输出的传感器数据进行全局一致性优化&#xff0c;消除累积误差。后端通常基于图优化框架&#xff08;如g2o、GTSAM&#xff09…

MongoDB 备份与恢复终极指南:mongodump 和 mongorestore 深度实战

MongoDB 备份与恢复终极指南&#xff1a;mongodump 和 mongorestore 深度实战引言&#xff1a;数据守护者的使命第一部分&#xff1a;基础概念与核心原理1.1 逻辑备份 vs. 物理备份&#xff1a;根本性的区别1.2 核心工具介绍第二部分&#xff1a;mongodump 备份实战详解2.1 基础…

鸿蒙的“分布式架构”理念:未来操作系统的关键突破

一、引言&#xff1a;为什么需要分布式架构&#xff1f; 随着移动互联网的发展&#xff0c;智能设备不断普及。用户身边可能同时拥有 手机、平板、PC、电视、手表、耳机、智能音箱、车机 等多种终端设备。 但现实中&#xff0c;我们常遇到以下问题&#xff1a; 不同设备系统割…

MySQL 事务管理与锁机制:解决并发场景下的数据一致性问题

前言在电商下单、金融转账、库存扣减等并发业务场景中&#xff0c;若不控制数据操作的原子性与隔离性&#xff0c;极易出现 “超卖”“重复扣款”“脏读数据” 等问题。MySQL 的事务管理与锁机制是解决这些问题的核心技术&#xff0c;也是后端开发者必须掌握的生产环境能力。本…

MySQL集群高可用架构

一、MySQL高可用之组复制&#xff08;MGR&#xff09;1.1 组复制核心特性与优势MySQL Group Replication&#xff08;MGR&#xff09;是基于分布式一致性协议&#xff08;Paxos&#xff09;实现的高可用集群方案&#xff0c;核心特性包括&#xff1a;自动故障检测与恢复&#x…

判别模型 VS 生成模型

1. 判别模型&#xff08;Discriminative Models&#xff09;判别模型直接学习输入特征&#xff08;X&#xff09;与输出标签&#xff08;Y&#xff09;之间的映射关系&#xff0c;即直接对条件概率P(Y|X)进行建模。判别模型关注于如何区分不同类别的数据。特点&#xff1a;直接…

代码随想录算法训练营第三十一天 | 合并区间、单调递增的数字

合并区间&#xff1a; 这里还是先对左区间进行排序&#xff0c;判断重叠区间&#xff0c;首先判断是否存在元素&#xff0c;存在那么就将元素的第一个放到结果中&#xff0c;那么判断重叠就是当前元素的左区间和结果集里的最后元素的右区间进行判断&#xff0c;如果重叠&#x…

EXCEL VBA 清空Excel工作表(Sheet)的方法

1. 删除所有内容&#xff0c;但保留格式和对象 这种方法只会清除单元格的内容&#xff0c;不会影响格式和嵌入的图表或对象。 Sub ClearSheetContents()Worksheets("Sheet1").Cells.ClearContents End Sub2. 删除所有内容和格式&#xff0c;但保留对象 这种方法会删除…

智能客户服务支持智能体

超越传统客服机器人。智能体可以深度查询知识库、调用订单系统API、甚至根据客户情绪灵活处理退货、退款、升级投诉等复杂流程。 案例&#xff1a; 客户说&#xff1a;“我上周买的鞋子尺码不对&#xff0c;想换货但是找不到订单页面了。” 智能体行动&#xff1a; ① 通过用户…

【MySQL|第四篇】DQL语句(二)——数据查询语言

4、排序分页&#xff1a;&#xff08;1&#xff09;排序&#xff1a;查询数据的时候进行排序&#xff0c;就是根据某个字段的值&#xff0c;按照升序或者降序的情况将记录显示出来语法&#xff1a; select col_name,... from tb_name order by col_name [asc|desc]注意事项&…

百度文心X1.1发布!实测深度思考能力!

文章目录背景模型实测效果事实性指令跟随智能体模型技术解读基准测试文心飞桨携手共进总结背景 9月9日&#xff0c;WAVE SUMMIT深度学习开发者大会上&#xff0c;百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰正式发布了文心大模型X1.1深度思考模型&#xff…

基于Java+SpringBoot的B站评论系统架构设计与实践深度解析

基于JavaSpringBoot的B站评论系统架构设计与实践深度解析 前言 作为国内领先的视频分享平台&#xff0c;B站的评论系统承载着海量用户的实时互动需求。本文将从架构师角度&#xff0c;基于JavaSpringBoot技术栈&#xff0c;深度解析评论系统的技术实现方案、核心难点及扩展性设…

赋能数字孪生:Paraverse平行云实时云渲染平台LarkXR,提供强大的API与SDK用于二次开发和深度集成

在数字孪生渗透千行百业的今天&#xff0c;构建一个高保真、实时交互、可大规模访问的虚拟孪生世界已成为核心需求。然而&#xff0c;对于开发者而言&#xff0c;从零开始构建实时云渲染、海量模型加载、数据双向互通、多端适配、网页嵌套&#xff0c;平台定制化等底层技术难关…