本帖最后由 midu 于 2024-3-13 21:30 编辑
安信可 Rd-03E 雷达模组介绍
安信可新款雷达模组 Rd-03E 已经上市,该雷达采用高性能一发一收微带天线,包含极简化 24GHz 雷达传感器硬件 Rd-03E 和智能算法固件 RM01,而智能算法固件 RM01 采用 FMCW 波形和 S3 系列芯片专有的先进信号处理技术,可以实现精准的人体测距和运动/微动人体感应。
详细资料参考:
https://docs.ai-thinker.com/rd-03
这是一个很棒的尝试和实践
通过参与免费试用报名,你成功获取到了Rd-03E 雷达模组,对于java出生的我想要实现了雷达和LED灯光的联动控制,通过购买网关设备和io串口模块来解决LED灯联动控制的功能。
系统架构
技术路径:springboot+Vue3+MQTT
串口java代码实现
/**
* 串口初始化
*/
public static void initSerialPort(){
// 获取可用串口列表
SerialPort[] ports = SerialPort.getCommPorts();
if (ports.length == 0) {
System.out.println("没有可用的串口");
return;
}
// 选择第一个可用串口
SerialPort port = ports[0];
// 打开串口
if (!port.openPort()) {
System.out.println("无法打开串口");
return;
}
// 配置串口参数
port.setComPortParameters(256000, 8, 1, SerialPort.NO_PARITY);
// 创建串口数据监听器
port.addDataListener(new SerialPortDataListener() {
@Override
public int getListeningEvents() {
return SerialPort.LISTENING_EVENT_DATA_AVAILABLE;
}
@Override
public void serialEvent(SerialPortEvent event) {
if (event.getEventType() != SerialPort.LISTENING_EVENT_DATA_AVAILABLE)
return;
// 读取串口数据
byte[] newData = new byte[port.bytesAvailable()];
// 处理读取到的数据
isMove(newData);
}
});
}
static int moveFlag = 0;//0:初始 1:人来 2:人走
static int comeInCnt = 0;
static int comeOutCnt = 0;
private static void isMove(byte[] newData){
if(null != newData && newData.length > 0){
if(HexUtil.toHex(newData[0]).equals("ffffffaa") && HexUtil.toHex(newData[newData.length-1]).equals("55")){
byte[] distinctData = {newData[2],newData[1]};
long distinctDataValue = HexUtil.hexToLong(HexUtil.encodeHexStr(distinctData));
byte handValue = newData[3];
if(distinctDataValue > 0){
comeInCnt ++;
comeOutCnt = 0;
} else {
comeOutCnt ++;
comeInCnt = 0;
}
if(comeInCnt >= 20){
comeInCnt = 0;
if(moveFlag != 1 ){
moveFlag = 1;
RdMessageDTO rdMessageDTO = new RdMessageDTO();
rdMessageDTO.setHandMoveFlag(handValue==1);
rdMessageDTO.setInFlag(true);
sendChangeMsg(rdMessageDTO);
}
}
if(comeOutCnt >= 20){
comeOutCnt = 0;
if(moveFlag != 2 ){
moveFlag = 2;
RdMessageDTO rdMessageDTO = new RdMessageDTO();
rdMessageDTO.setHandMoveFlag(handValue==1);
rdMessageDTO.setInFlag(false);
sendChangeMsg(rdMessageDTO);
}
}
}
}
}
/**
* 发送mqtt数据
* @param rdMessageDTO
*/
private static void sendChangeMsg(RdMessageDTO rdMessageDTO){
DeviceMqttJSONMessageDTO deviceMqttJSONMessageDTO = new DeviceMqttJSONMessageDTO();
deviceMqttJSONMessageDTO.setNo("05");
deviceMqttJSONMessageDTO.setData(rdMessageDTO);
MqttMessage mqttMessage = new MqttMessage(JSONUtil.toJsonStr(deviceMqttJSONMessageDTO).getBytes());
try {
String readTopic = "/midu/0002/properties/reply";
SpringUtil.getBean(MqttClient.class).publish(readTopic, mqttMessage);
} catch (MqttException e) {
e.printStackTrace();
}
}
展示视频
雷达RD03E |