我的购物车
资讯分类
全部资讯
最新活动
商城公告
行业信息
新品推荐
元器件知识
资讯标签
艾为awinic(133) 艾迈斯欧司朗(126) iCEasy商城(93) 英伟达NVIDIA(93) 萤火工场(60) 飞腾派V3(37) 兆易创新(31) 罗彻斯特电子(28) 赛昉科技(StarFive)(26) Jetson Orin Nano Super 开发套件(19) 资料下载专区(16) 小华半导体(13) 灵动微电子(12) 芯佰微(12) Seeed矽递科技(11) 日清纺微电子(9) 飞腾派(8) 上海雷卯Leiditech(8) 微源半导体 LPSemi(8) 龙芯中科(7) GD32VW553-IOT(7) 物奇WuQi(7) 庆科(6) 日清纺微电子Nisshinbo(5) 航顺芯片(5) 开源口碑分享(4) 创捷电子(4) Geehy极海半导体(4) CEM5826-M11(4) TROQ创捷电子(4) 中国星坤(3) FTHR-G0001(3) 杭晶(HCI)(3) 罗彻斯特(3) GD32VW553-IOT-V2(3) MM32SPIN060G(3) 飞腾派eMMC(3) 峰岹科技(3) 国产开源硬件(2) 技术问答专区(2) 村田(2) 飞腾官网飞腾派(2) 芯佰微电子(2) 极海半导体(2) 飞腾派下载专区(2) 高通Qualcomm(2) 口碑评测(2) 极海(2) 英伟达初创加速计划(2) Mini-SPIN0230(2) 社区评奖活动(2) 小华EVB-HC32F4A0开发板(2) 华润微电子(2) EVB-L0130(2) BeagleBoard.org®(2) iCEsay商城(2) 启明云端(2) 英迪芯微(2) 野火(2) 弈安云(2) 一件免邮专区(1) 8月7日竞拍竞买(1) 内存(1) 618大促专区(1) VF202040-A0(1) 瑞隆源产品(1) JETSON_AGX_ORIN_64GB_DEVELOPER_KIT(1) Arduino(1) 微雪电子(1) 迈巨微电子品牌专区(1) 飞腾派专链(1) 小脚丫(1) BeagleBone Black快速入门指南(1) NVIDIA NIM(1) 飞虹半导体(1) 飞腾派调研问卷链接(1) 海凌科电子(Hi-Link)(1) Mini-F5333(1) 赛昉科技9折活动券(1) 萤火工场GD32VW553-IOT(1) 乐动机器人(1) 雷卯(1) 下载专区(1) 润石(1) 极海半导体(Geehy)(1) 中科云(1) CEM5825F(1) 海芯微(1) CEM5861G-M11(1) 天微电子商家页(1) CEK8902-S905D3(1) Arduino品牌页(1) 野火RK3566开发板(1) 龙芯教育派(1) 竞买活动(1) Jetson AGX Xavier(32GB)(1) 618大促(1) SFH 7018B(1) 飞腾派V3版本上新(1) 微碧半导体(1)

更直观的感受国产毫米波雷达模块!CEM5826-M11拓展OLED显示器。

发布时间:2024-12-25

国产毫米波雷达模块

CEM5826-M11 是萤火工场研发的一款高灵敏度国产24GHz 毫米波人体微动存在检测雷达模块。区别于传统雷达通过检测人体移动的大幅度动作或肢体动作来判断人体存在,本模块主要特点是在传统人体感应雷达的功能基础上,同时具备检测积累人体微动幅度的运动,来判断人体的存在的功能。因此相比传统多普勒雷达来说,具备一定范围内的存在检测,准确率更高。不易漏报。

玩家有话说

本文将基于串口打印雷达监测数据的研究,进一步扩展连接OLED屏幕,让CEM5826-M11的核心测试数据及灵敏度更直观的被观察。

显示框架

为了降低消耗,OLED屏幕采用局部刷新的方案。所需库函数Wire.h、Adafruit_GFX.h、Adafruit_SSD1306.h。

代码如下:

#include <Wire.h>#include <Adafruit_GFX.h>#include <Adafruit_SSD1306.h>#include "logo_128x64.h"#include "logo_95x32.h"

#define OLED_RESET 4Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);

void setup(){  Serial.begin(115200);  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)  display.clearDisplay(); // 清屏  display.drawBitmap(0, 0, logo, 128, 64, 1); //画出字符对应点阵数据  display.display();  delay(1000);  display.clearDisplay();  /*-------------------- Display picture and text ---------------------------*/  display.drawBitmap(16, 0, logo_small, 95, 32, 1);  display.setTextColor(WHITE);  //设置字体颜色  display.setTextSize(2);  //设置字体大小 1 is default 6x8, 2 is 12x16, 3 is 18x24  display.setCursor(0,33); //设置起始光标  display.print("v=");  display.setCursor(72,33); //设置起始光标  display.print("km/h");  display.setCursor(0,49); //设置起始光标  display.print("str=");  display.display();}

void loop()


数据显示设置

将串口打印数据与OLED显示框架结合,将v和str两数据分别填充至OLED屏预留位置,即可实现雷达监测数据的对应填充显示,包括速度v和信号强度str。

代码如下:

#include <Wire.h>#include <Adafruit_GFX.h>#include <Adafruit_SSD1306.h>#include "logo_128x64.h"#include "logo_95x32.h"

#define OLED_RESET 4Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);

String comdata = "";

void setup(){  Serial.begin(115200);  while (Serial.read() >= 0){}//clear serialbuffer  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)  display.clearDisplay(); // 清屏  display.drawBitmap(0, 0, logo, 128, 64, 1); //画出字符对应点阵数据  display.display();  delay(1000);  display.clearDisplay();  /*-------------------- Display picture and text ---------------------------*/  display.drawBitmap(16, 0, logo_small, 95, 32, 1);  display.setTextColor(WHITE);  //设置字体颜色  display.setTextSize(2);  //设置字体大小 1 is default 6x8, 2 is 12x16, 3 is 18x24  display.setCursor(0,33); //设置起始光标  display.print("v=");  display.setCursor(80,33); //设置起始光标  display.print("km/h");  display.setCursor(0,49); //设置起始光标  display.print("str=");  display.display();}

void loop(){  if (Serial.available() > 0)   {    char data = Serial.read();    comdata += data;    if (data == '\n')    {// type of comdata: v=1.0 km/h, str=10151      int separatorIndex = comdata.indexOf(','); // 假设分隔符为逗号      if (separatorIndex != -1)      {        String part1 = comdata.substring(0, separatorIndex); // 第一个部分        String part2 = comdata.substring(separatorIndex + 1); // 第二个部分        // 打印分割后的数据        //Serial.println(part1); // type of part1: v=1.0 km/h        //Serial.println(part2); // type of part2:  str=10151        /*------------ part1 : v=1.0 km/h ----------*/        int part1separatorIndex = part1.indexOf('='); //index of '='        if (part1separatorIndex != -1)        {          String vlc = part1.substring(part1separatorIndex + 1); // index of velocity, type of vlc is 1.0 km/h          // vlc: 1.0 km/h          int VLCseparatorIndex = vlc.indexOf(' '); // index of ' '          String v = vlc.substring(0, VLCseparatorIndex);// v only include number          float Vn = v.toFloat();          Serial.print(Vn); // print velocity number          Serial.print(',');          //display.setCursor(25,33); //设置起始光标          display.fillRect(25, 33, 60, 16, BLACK);          display.display();          display.setCursor(25,33); //设置起始光标          display.print(Vn);          display.display();        }        /*------------- part2 :  str=10151 ------------------*/        int part2separatorIndex = part2.indexOf('='); //index of '='        if (part2separatorIndex != -1)        {          String strng = part2.substring(part2separatorIndex + 1); // strng only include number          int Sn = strng.toInt();          Serial.print(Sn); // print strength number          Serial.println();          //display.setCursor(49,49); //设置起始光标          display.fillRect(49, 49, 79, 16, BLACK);          //display.setPixelColor();          display.display();          display.setCursor(49,49); //设置起始光标          display.print(Sn);          display.display();        }      }      comdata = "";    }  }}


成果展示

这里由于字体设置为2号,无法满��km/h单位��完整填充,因此被数据覆盖住一部分,可根据实际需求调整字体大小。