iexplore123 发表于 2024-11-24 18:56

【Follow me第二季第4期】搭建环境+点灯+串口打印

# 【Follow me第二季第4期】 搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld!



## 关于我

大家好,这里是iex123。一眨眼,距离上次参加第一期的活动已经过去两个月了,对技(bai)术(piao)的热情一直没有减退,这次我再次参加第四季的活动,希望能够和大家一起学习和进步。

这次活动的主角是Arduino® Nano RP2040 Connect,这是一款基于Raspberry Pi RP2040微控制器的开发板,它集成了U-blox® Nina W102模块,可以通过Wi-Fi和蓝牙与其他设备进行通信。这款开发板的特点是小巧轻便,集速度计、陀螺仪、RGB LED和麦克风于一体,可玩性很高。

### 认识Arduino® Nano RP2040 Connect

Arduino® Nano RP2040 Connect搭载了功能强大的Raspberry Pi RP2040微控制器,拥有133MHz的32位双核Arm® Cortex®-M0+处理器和264kB的片上SRAM,支持高达16MB的外置Flash存储器。它还配备了U-blox® Nina W102模块,支持Wi-Fi和蓝牙4.2通信。



> 图片来源:(https://docs.arduino.cc/resources/pinouts/ABX00053-full-pinout.pdf)

其他资料:
> 开发板电路原理图:(https://docs.arduino.cc/resources/schematics/ABX00053-schematics.pdf)
> 开发板手册(英文):(https://docs.arduino.cc/resources/datasheets/ABX00053-datasheet.pdf)

#### 板载外设

- RGB LED:一个三色LED,电路部分是共阳极连接到NINA W102模块的GPIO引脚。
- ST LSM6DSOXTR 6轴惯性测量单元(IMU):一个六轴传感器,包含一个三轴加速度计和一个三轴陀螺仪,常用于运动检测和姿态跟踪。
- ST MP34DT06JTR MEMS麦克风:64dB信噪比的PDM麦克风,效果还可以。
- Microchip® ATECC608A加密协处理器:用于安全存储密钥和加密数据,没接触过,看看其他大佬怎么玩的。

此外,开发板还提供了14个数字引脚和8个模拟引脚,支持UART、SPI和I2C接口,方便DIY项目的扩展和开发。

RP2040特有的PIO(Programmable I/O)引脚可以自己实现I/O时序控制,支持SD卡、I2S、VGA等外设,非常灵活。

### 开发环境搭建

我个人比较喜欢使用Visual Studio Code进行Arduino开发,因此我选择使用作为VSC插件支持的PlatformIO IDE进行开发,其他开发环境搭建方法可以参考[官方文档](https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-01-technical-reference/)。

#### 安装PlatformIO IDE

使用快捷键`Ctrl+P`打开VSC命令面板,输入`ext install platformio.platformio-ide`安装PlatformIO IDE:


#### 新建项目

打开PlatformIO Home,点击`Open`打开一个项目,选择`New Project`,选择`Arduino Nano RP2040 Connect`开发板,点击`Finish`创建项目:


> 注意:建立项目时Platformio会自动从`registry.platformio.org`源下载`Platforms`中的`Raspberry Pi RP2040`开发环境包(包含gcc编译工具链),由于网络原因可能会下载失败,可以尝试多次下载或者使用代理。

PlatformIO自带库管理器,可以方便地搜索和安装库,麦克风和IMU的库都可以在这里找到。


### 开启第一步:Blink三色LED / 串口打印Hello DigiKey & EEWorld!

#### 三色LED

三色LED的引脚分别连接到NINA W102模块的GPIO引脚,我们可以通过控制引脚输出高低电平来控制LED的亮灭。

> 三色LED的引脚分别是GPIO 25、GPIO 26和GPIO 27, 共阳极连接,在WIFININA库中定义了宏`LEDR`, `LEDG`和`LEDB`, 分别对应三色LED的红、绿、蓝引脚。

```cpp
#include <Arduino.h>
#include <WiFiNINA.h>

void setup() {
// 初始化三色LED引脚
pinMode(LEDR, OUTPUT);
pinMode(LEDG, OUTPUT);
pinMode(LEDB, OUTPUT);
}

void loop() {
// 交替点亮三色LED
digitalWrite(LEDR, HIGH);
delay(500);
digitalWrite(LEDR, LOW);
digitalWrite(LEDG, HIGH);
delay(500);
digitalWrite(LEDG, LOW);
digitalWrite(LEDB, HIGH);
delay(500);
digitalWrite(LEDB, LOW);
}
```

#### 串口打印

串口打印是调试程序的重要手段,我们可以通过串口打印输出调试信息,查看程序运行状态。
> Arduino Nano RP2040 Connect的串口可以直接通过USB连接到计算机,可以使用`Serial`对象进行串口通信。

```cpp
#include <Arduino.h>

void setup() {
// 初始化串口
Serial.begin(9600);
}

void loop() {
// 串口打印Hello DigiKey & EEWorld!
Serial.println("Hello DigiKey & EEWorld!");
delay(1000);
}
```

#### 结合三色LED和串口打印

我们可以将三色LED的点亮状态和串口打印结合起来,再加上一点小细节。

```cpp
#include <Arduino.h>
#include <WiFiNINA.h>

void setup() {
// 初始化三色LED引脚
pinMode(LEDR, OUTPUT);
pinMode(LEDG, OUTPUT);
pinMode(LEDB, OUTPUT);
// 初始化串口
while (!Serial);// 等待串口连接
Serial.begin(115200); // 串口波特率设置为115200
Serial.println("Hello DigiKey & EEWorld !"); // 初次连接到串口时打印欢迎信息
}

// 将三色LED点亮封装成一个函数
void BlinkLED(int pin, int delay_ms) {
digitalWrite(pin, HIGH);
delay(delay_ms);
digitalWrite(pin, LOW);
}

void loop() {
// 交替点亮三色LED
BlinkLED(LEDR, 500);
BlinkLED(LEDG, 500);
BlinkLED(LEDB, 500);
// 在循环中串口打印Hello DigiKey & EEWorld!
//Serial.println("Hello DigiKey & EEWorld!");
}
```

#### 效果展示


1c315b247abf97706ed2f600e39697c8<br/>
### 其他要说明的内容

PlatformIO IDE下载的Arduino Nano RP2040 Connect开发环境实际上是arduino-mbed-os,这是一个基于Mbed OS的Arduino核心,支持Arduino库和Mbed OS库。

`platformio.ini`文件中的`lib_deps`字段用于指定项目依赖的库,可以通过`lib_deps`字段下载指定版本的库,也可以通过`lib_deps`字段下载指定GitHub仓库的库。
例如,下载WiFiNINA库和Arduino_LSM6DSOX库:

```ini

platform = raspberrypi
board = nanorp2040connect
framework = arduino
lib_deps =
    arduino-libraries/WiFiNINA@^1.8.14
    arduino-libraries/Arduino_LSM6DSOX@^1.1.2
    ; arduino-libraries/ArduinoSound@^0.2.1; 注释掉的库
```

## 任务进度

- 搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld!
- [ ] 学习IMU基础知识,调试IMU传感器,通过串口打印六轴原始数据。
- [ ] 学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。
- [ ] 通过RGB LED不同颜色、亮度显示PDM麦克风收到的声音大小。(选做)
- [ ] 通过IMU数据结合机器学习算法,识别运动状态,并通过串口打印。(选做)
页: [1]
查看完整版本: 【Follow me第二季第4期】搭建环境+点灯+串口打印