- 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的多人实时人脸识别功能。该系统可用于办公楼、小区等场景,实现对进出人员的快速识别和权限管理,提升安全性和便利性。