ShallGoing

  • 2024-12-28
  • 发表了主题帖: 【Follow me第二季第4期】任务汇总

    本帖最后由 ShallGoing 于 2024-12-28 21:53 编辑 # 前言 最近参加了一个followme的活动,活动的任务是ardunio rp2024 connect的板子,主要完成三个任务: 1. 搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld!; 2. 学习IMU基础知识,调试IMU传感器,通过串口打印六轴原始数据; 3. 学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。 视频[链接](https://training.eeworld.com.cn/course/68895/learn?preview=1#lesson/42208)     ![image-20241115163958320](https://raw.githubusercontent.com/Peter-JiY/pictures/main//image-20241115163958320.png) 纯新手,朋友介绍过来玩的硬件。啥也不会,一边学一边玩吧。 干啥第一件事肯定就是搭环境。 先去ardunio的[官网](https://www.arduino.cc/en/software),找安装包,安装ardunio的ide。 ![image-20241119164041020](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119164041020.png) 现在板子到日本了,估计过两天就到了。 ![image-20241115170520745](https://raw.githubusercontent.com/Peter-JiY/pictures/main//image-20241115170520745.png) --- 今天终于到了。开箱!!! ![IMG_7019](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/IMG_7019.JPG) ![IMG_7020](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/IMG_7021.JPG) ![IMG_7022](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/IMG_7022.JPG) 由于手头没有mirco的线,先用这个转换头看看。 --- # 尝试 ## 1.配置开发环境 - [x] 安装ardunio2.3.3 IDE - [x] 安装板包   搜索开发板的名字 **arduino nano rp2040 connect** ![image-20241119170555726](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119170555726.png) ## 2.点灯 ![image-20241119171504358](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119171504358.png) 在上述的情况下已经完成安装的操作,我们的板子在连接的时候就一直闪烁。表现为一个红灯间接闪烁,一个灯变色间接闪烁,一个绿灯常亮。 ![IMG_7024](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/IMG_7024.JPG) ---- 下面开始点灯的操作 ![image-20241119172019132](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119172019132.png) 选择Blink,然后点击上传按钮 ![image-20241119172347916](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119172347916.png) 我们可以看到,板子的灯也变了 ![IMG_7027](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/IMG_7027.JPG) ## 恭喜你完成了点灯的操作!!!😘 # 任务一:搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld!; ## 1.查看官方的引脚图 ![image-20241119192609010](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119192609010.png) 可以看到我们刚才点灯调用的是LED_BUILTIN的引脚。找到我们本次任务的采用的RGBLED的引脚。 ![image-20241119192825570](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119192825570.png) --- 因为之前没搞过硬件不太懂,想当然的认为这里的引脚是RGB LED ![image-20241119193050448](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119193050448.png) 一片红灯,我得试试是不是刚才引脚图里面的LEDR/LEDG/LEDB。 ![image-20241119193251279](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119193251279.png) 得偿所愿,也是一排红灯。但是有提示,提示这个pin脚在WIFININA的库里面才能使用。我又去[官网](https://docs.arduino.cc/hardware/nano-rp2040-connect/#features)找到开发文档,相见恨晚!! --- ![image-20241119193748581](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119193748581.png) 内置的LED。得调库才行。早点发现开发文档就好了。 ## 2.安装WIFININA库 好了开始装库WIFININA。 ![image-20241119194537477](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119194537477.png) ## 3.成功点亮 ![image-20241119195814100](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119195814100.png) 运行成功。代码如下: ```cpp #include void setup() {   // put your setup code here, to run once:   Serial.begin(115200);   pinMode(LEDR,OUTPUT);   pinMode(LEDG,OUTPUT);   pinMode(LEDB,OUTPUT); } void loop() {   // put your main code here, to run repeatedly:   //串口打印   Serial.println("Hello DigiKey & EEWorld!");   //亮红灯   digitalWrite(LEDR, HIGH);     delay(1000);                        digitalWrite(LEDR, LOW);      delay(1000);                        //亮绿灯   digitalWrite(LEDG, HIGH);     delay(1000);                        digitalWrite(LEDG, LOW);      delay(1000);                     //亮蓝灯   digitalWrite(LEDB, HIGH);     delay(1000);                        digitalWrite(LEDB, LOW);      delay(1000);    } ``` ![IMG_7028](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/IMG_7028.JPG) ![IMG_7029](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/IMG_7029.JPG) ![IMG_7030](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/IMG_7030.JPG) ##  任务一完成 # 任务二:学习IMU基础知识,调试IMU传感器,通过串口打印六轴原始数据 要学习 IMU (惯性测量单元) 的基础知识,并通过 Arduino IDE 调试 IMU 传感器以通过串口打印六轴原始数据,可以按照以下步骤操作: --- ## **1. 什么是 IMU?** IMU 是一种集成传感器模块,通常包含以下传感器: - **加速度计 (Accelerometer)**:用于测量线性加速度 (单位:g)。 - **陀螺仪 (Gyroscope)**:用于测量角速度 (单位:°/s 或 rad/s)。 有些 IMU 还包含磁力计 (Compass) 和温度计,但基础的六轴 IMU 只包含加速度计和陀螺仪。 查阅官方文档可知,Arduino Nano RP2040 Connect 板载 IMU 是 **LSM6DSOX**,它是一个六轴传感器: - **加速度计 (Accelerometer)**:测量线性加速度 (单位:m/s²)。 - **陀螺仪 (Gyroscope)**:测量角速度 (单位:°/s)。    ## 2.安装Arduino_LSM6DSOX库 ![image-20241119201744973](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119201744973.png) 新建一个开始新的任务。 ![image-20241119202208888](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119202208888.png) 根据官方文档的函数,我们可以得到如下代码: ```cpp #include // 引入 LSM6DSOX 库 void setup() {   // put your setup code here, to run once:   Serial.begin(115200);   // 初始化 IMU   if (!IMU.begin()) {     Serial.println("无法检测到 LSM6DSOX 传感器!");     while (1); // 停止运行   }   Serial.println("LSM6DSOX 初始化成功!"); } void loop() {   // put your main code here, to run repeatedly:   // 检测加速度和陀螺仪是否可用   if (IMU.accelerationAvailable() && IMU.gyroscopeAvailable()) {     // 读取加速度数据 (单位:m/s²)     IMU.readAcceleration(Ax, Ay, Az);     // 读取陀螺仪数据 (单位:°/s)     IMU.readGyroscope(Gx, Gy, Gz);     // 打印加速度数据     Serial.print("加速度 (m/s²): ");     Serial.print("X = ");     Serial.print(Ax);     Serial.print(", Y = ");     Serial.print(Ay);     Serial.print(", Z = ");     Serial.println(Az);     // 打印陀螺仪数据     Serial.print("陀螺仪 (°/s): ");     Serial.print("X = ");     Serial.print(Gx);     Serial.print(", Y = ");     Serial.print(Gy);     Serial.print(", Z = ");     Serial.println(Gz);     Serial.println(); // 空一行   }   delay(100); // 延时,控制数据刷新频率 } ``` ## 3.查看结果 运行查看串口结果: ![image-20241119203202884](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119203202884.png) # 任务三:学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。 ## 1.准备工作 **PDM 麦克风** 使用脉冲密度调制技术输出数字音频数据,其输出信号需要经过解码转换为 PCM(脉冲编码调制)数据,才能被处理为音频信号。 **板载麦克风型号**:Nano RP2040 Connect 上的 PDM 麦克风型号为 **MP34DT06JTR**。 PDM的库在安装IDE的集成在里面了 ## 2.撰写代码 ```cpp #include // 定义缓冲区大小(可以调整以适应需求) #define BUFFER_SIZE 512 // 缓冲区存储麦克风数据 short buffer[BUFFER_SIZE]; // 记录是否有新数据的标志 volatile  int bytesRead;; // 初始化采样率和通道数 const int sampleRate = 16000; // 16 kHz 采样率 const int numChannels = 1;    // 单声道 void setup() {   // 初始化串口   Serial.begin(115200);   while (!Serial) {     delay(10); // 等待串口就绪   }   Serial.println("PDM 麦克风初始化中...");   // 初始化 PDM 麦克风   if (!PDM.begin(numChannels, sampleRate)) {     Serial.println("PDM 麦克风初始化失败!");     while (1); // 停止程序   }   // 设置缓冲区大小   PDM.setBufferSize(BUFFER_SIZE);   // 注册音频数据回调函数   PDM.onReceive(onPDMData);   Serial.println("PDM 麦克风初始化成功!"); } void loop() {   // 检查是否有新数据   if (bytesRead) {     // 打印音频数据到串口监视器     for (int i = 0; i < bytesRead; i++) {       Serial.println(buffer); // 打印到串口监视器或绘图器     }   }   // 延迟以防止串口拥堵   delay(10); } // 回调函数:处理音频数据 void onPDMData() {   int bytesAvailable = PDM.available(); // 获取数据字节数   // 确保缓冲区足够大以存储数据   PDM.read(buffer, bytesAvailable); // 从 PDM 读取数据   bytesRead =  bytesAvailable /2; } ``` ## 3.查看串口 ![image-20241119215201949](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119215201949.png) ![image-20241119215227032](https://raw.githubusercontent.com/Peter-JiY/pictures/main//2024/image-20241119215227032.png) # 个人心得 本次开发板的任务对新手很友好,门槛也很低,我也是第一次玩开发板,通过阅读官方的开发文档也对该板子有一定的了解,感应器很多值得玩耍。 -#------------

  • 加入了学习《followme第四期结果展示》,观看 followme第二季第四期结果展示

  • 上传了资料: followme第四期代码汇总

  • 2024-12-27
  • 加入了学习《直播回放: DigiKey FollowMe 第二季 第4期 Arduino Nano RP2040 Connect 任务讲解》,观看 Arduino Nano RP2040 Connect 任务讲解

  • 2024-11-21
  • 回复了主题帖: 入围名单公布:嵌入式工程师AI挑战营(进阶)的挑战者们,领取板卡啦

    个人信息已确认,领取板卡,可继续完成任务。

  • 2024-11-18
  • 回复了主题帖: 嵌入式工程师AI挑战营(进阶):在RV1106部署InsightFace算法的多人实时人脸识别实战

    跟帖申请; 申请理由: 我对人脸识别和嵌入式系统开发有浓厚的兴趣,希望通过在RV1106开发板上部署InsightFace算法,深入学习人工智能在嵌入式设备上的应用,实现技能的提升和知识的拓展。 了解的InsightFace及部署思路: InsightFace是一套基于深度学习的人脸分析工具,包括人脸检测、识别和表征等功能,具有高精度和高效率的特点。要在RV1106上部署InsightFace,可先将模型进行轻量化处理,如量化和剪枝,然后使用RV1106支持的推理引擎进行部署。通过优化算法和合理利用硬件加速,可以实现多人实时人脸识别。 计划部署的应用: 我计划在RV1106 Linux开发板上开发一套智能门禁系统,集成InsightFace的多人实时人脸识别功能。该系统可用于办公楼、小区等场景,实现对进出人员的快速识别和权限管理,提升安全性和便利性。

最近访客

< 1/1 >

统计信息

已有6人来访过

  • 芯积分:28
  • 好友:--
  • 主题:1
  • 回复:2

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言