258|0

18

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

【Follow me第二季第4期】任务提交帖 [复制链接]

  本帖最后由 Lucheni 于 2025-1-10 23:25 编辑

Hello大家好,我是Lucheni,很非常高兴能参加这次的活动,体验Arduino Nano RP2040 Connect开发板的乐趣。

本次活动我仅购买了单块Arduino Nano RP2040 Connect开发板,没有使用其他的模组。

本次我分别完成了任务一二三和选做一,接下来我会分别展示各个任务的实现过程。

任务一:搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld!

代码流程图如下

本次的开发我依旧使用了熟悉的Arduino开发环境,毕竟是Arduino官方版本的开发板,当然用Arduino更为合适。如上图,此块Arduino和经典nano开发板略有区别,led为三色led,所以使用常规blink例程驱动三色led会有问题。

参考开发板官方Tutorials文件(https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-01-technical-reference/),RGB led是连接在W-102模块上的,所以要控制led,需要先安装WiFiNINA库。

#include <WiFiNINA.h>

然后需要在初始化函数中定义LED控制管脚

pinMode(LEDR, OUTPUT);

pinMode(LEDG, OUTPUT);

pinMode(LEDB, OUTPUT);

打开和关闭像素代码如下:

digitalWrite(LEDR, HIGH); //RED

digitalWrite(LEDG, HIGH); //GREEN

digitalWrite(LEDB, HIGH); //BLUE

digitalWrite(LEDR, LOW); //RED

digitalWrite(LEDG, LOW); //GREEN

digitalWrite(LEDB, LOW); //BLUE

串口操作则和常规Arduino完全一致

最后项目主要代码如下:实现了三色依次切换亮起,并在串口输出亮起的灯,最后三色同时亮起,同时串口输出Hello DigiKey & EEWorld!

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(LEDR, OUTPUT);
  pinMode(LEDG, OUTPUT);
  pinMode(LEDB, OUTPUT);
  delay(1000);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LEDR, HIGH); //RED
  digitalWrite(LEDG, HIGH); //GREEN
  digitalWrite(LEDB, HIGH); //BLUE
  Serial.println("Hello DigiKey & EEWorld!");
  delay(1000);
  digitalWrite(LEDR, LOW); //RED
  digitalWrite(LEDG, LOW); //GREEN
  digitalWrite(LEDB, LOW); //BLUE
  Serial.println("RED ON!");
  digitalWrite(LEDR, HIGH); //RED
  delay(1000);
  digitalWrite(LEDR, LOW); //RED
  Serial.println("GREEN ON!");
  digitalWrite(LEDG, HIGH); //RED
  delay(1000);
  digitalWrite(LEDG, LOW); //GREEN
  Serial.println("BLUE ON!");
  digitalWrite(LEDB, HIGH); //RED
  delay(1000);
}

 

任务二:调试IMU传感器,通过串口打印六轴数据

同样参考Tutorials可知,本块开发板使用了STM的LSM6DSOXTR,这是一颗IMU(惯性测量单元),具有3D数字加速度计和3D数字陀螺仪。除其他功能外,它还具有机器学习核心,可用于任何运动检测项目,例如自由落体、计步器、计步器、计步器。同时该芯片还具有嵌入式温度传感器。

代码流程图如下

要连接LSM6DSOX模块的数据,Arduino官方提供了Arduino_LSM6DSOX库(

链接已隐藏,如需查看请登录或者注册
),在Arudino中可以直接通过库管理器安装。

库的安装和初始化代码如下

#include <Arduino_LSM6DSOX.h>

if (!IMU.begin()) {

    Serial.println("Failed to initialize IMU!");

    while (1);

  }

读取传感器数据可以使用如下代码:

加速度计数据:

float x, y, z;



  if (IMU.accelerationAvailable()) {

    IMU.readAcceleration(x, y, z);

  }

陀螺仪数据:

float x, y, z;



  if (IMU.gyroscopeAvailable()) {

    IMU.readGyroscope(x, y, z);

  }

温度数据:

if (IMU.temperatureAvailable())

  {

    int temperature_deg = 0;

    IMU.readTemperature(temperature_deg);



    Serial.print("LSM6DSOX Temperature = ");

    Serial.print(temperature_deg);

    Serial.println(" °C");

  }

因本次任务仅要求读取六轴数据,所以实际项目代码中并没有进行温度数据读取。

 

任务三+选做任务一:调试PDM麦克风,通过串口打印收音数据和音频波形,并体现在RGB LED上。

此开发板板载了MP34DT06JTR 麦克风,这是一款紧凑、低功耗的全向数字 MEMS 麦克风,带有 IC 接口。它具有 64 dB 的信噪比,能够感应声波,并且可以在 -40 °C 至 +85 °C 的温度下工作。

代码流程图如下

要从 MP34DT06JTR 访问数据,需要使用 Arduino Mbed OS Nano 板包中包含的 PDM 库。安装了主板包后,可以通过浏览文件 > 示例 > PDM > PDMSerialPlotter 找到PDM麦克风的工作示例。

Arudino官方为此麦克风单独写了一份Tutorial:https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-microphone-basics/

麦克风使用的主要代码如下:

static const char channels = 1;// 设置输出通道的数量。

static const int frequency = 20000;// 将采样频率设置为 20 KHz。

short sampleBuffer[512];// 读取样本,每个样本为 16 位。

PDM.begin(channels, frequency); 初始化 PDM 库。

Serial.print(sampleBuffer[i]);// 将样本打印到串行监视器/绘图仪。

选做任务一其实和任务三比较类似,任务三是将麦克风的数据输出,选做任务一则是通过led的颜色变化体现麦克风收到的声音大小。

代码中我使用了如下公式将声音大小转换为led亮度:

r=255-(abs(sampleBuffer[i])/10000)*255;

 

感谢DigiKey和EEWorld举办此次活动,让我有机会体验到Arduino官方开发板的乐趣!

Arudino为官方开发板开发的相关资料和教程非常细节和丰富,个人觉得这是国内相关厂商需要学习的。

 

代码下载链接如上:https://download.eeworld.com.cn/detail/Lucheni/635466

任务提交视频:https://training.eeworld.com.cn/video/42217

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
家庭电子 教您一招

1.电热水器应勤换镁棒 市售在1000元以下的电热水器的内胆一般采用镀锌铁板卷制而成,其焊缝与管 接头部分虽经涂敷处理,但在长 ...

IC设计领域介绍及工程师未来出路规划

一、 IC 设计领域简介 (一)模拟与混号讯号电路设计 IC 电路可分为为模拟 IC 与数字 IC 两大类,以及两者兼具的混合讯号等三种 ...

给初学者一个建议:不要简单贴源代码

初学者最重要的是学习解决问题的方法,思路在此是最重要的,求得简单的答案对自己的成长其实很不利,初学者应求渔而非鱼。初学者 ...

100个Webinar的PPT讲义

本帖最后由 dcexpert 于 2015-4-21 10:05 编辑 bg3.png给大家新年的第一个礼物,超过100个这几年Webinar网络研讨会的PPT讲义 ...

低频纹波、高频纹波、环路纹波、共模噪声、谐振噪声!

低频纹波 低频纹波是与输出电路的滤波电容容量相关。由于开关电源体积的限制,电解电容的容量不可能无限制地增加,导致输出低频 ...

【获奖名单】“泰”想开车 智能篇:智能网联汽车,实现无忧驾驶

活动详情:“泰”想开车 智能篇:智能网联汽车,实现无忧驾驶 领奖日期:请获奖者务必在2023年9月18日23:59前 ...

【正点原子RV1126 AI Linux开发板】SPI驱动ICM-20608六轴传感器测试

本帖最后由 TL-LED 于 2024-3-31 16:45 编辑 SPI驱动ICM-20608六轴传感器测试。 一、硬件电路部分 798882 ...

请问紫光同创盘古50K开发板完成一个逻辑分析仪功能,有什么好的思路吗

请问紫光同创盘古50K开发板完成一个逻辑分析仪功能,有什么好的思路吗

离网式双向逆变电源开发板

个人设计打样的离网式双向逆变电源开发板,集合多种电源拓扑,可配合单片机开发使用,也可以使用电源管理芯片学习使用,闲置在家 ...

还有3个小时祖国妈妈的生日就到了!

完全没心思,已经摆烂摸鱼,只想庆生了! 祝大家出行快乐!

关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表