209|1

1

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

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

  本帖最后由 xinz 于 2024-12-29 23:27 编辑

下载附件  保存到相册

7 天前 上传

 

电脑(ubuntu20.04)

 

数据线

 

必做任务一

任务介绍

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

设计思路:首先在ubuntu上搭建arduino环境;然后在开发板点亮led,顺便串口打印过程信息,通过上位机监控。

软件流程图

Created with Rapha毛l 2.1.2开始设置LED的GPIO,模式为输出串口初始化,波特率为9600串口输出"Hello DigiKey & EEWorld!"蓝灯亮,串口打印"blue!",延时1s红灯亮,串口打印"red!",延时1s绿灯亮,串口打印"green!",延时1s

主要代码片段、功能展示及图文说明

搭建开发环境

最近装了一台ubunru电脑,刚好拿到任务,遂决定在ubuntu上体验一下开发arduino。

在ubuntu上安装arduino:官网下载了AppImage文件,勾选允许文件作为程序执行后双击,即可使用。

连接板子和电脑,找到串口,识别出板子,安装库,打开实例,点灯成功!工作里的单片机环境一个个老难伺候,arduino就是丝滑啊,管它占用 管它底层,好用就成!工程师的时间就不是成本吗?!看着小灯bulingbuling得闪还是很有意思的。再翻个串口的例程,编译,上传,打印!稍微改改,加上

Serial.println("Hello DigiKey & EEWorld!");

再把前面小灯的代码加上,上传!(编译也不用了,上传会自动编译的)好好好,第一个任务已经完成了,这。。(目瞪狗呆表情包)

到设置里改改,改成中文,字体调大,加上编译上传的输出信息,顺便看到了编译快捷键是Ctrl+r,上传快捷键是Ctrl+u,好好好,这下更舒服了,看着上传的进度条,赏心悦目。

看到还有RGB灯,遂想着把它也驱动。

安装库:驱动RGB需要安装一个库wifinina,详情可参考官方文档。安装库的时候可能会因为网络原因安装失败或者特别慢,我在这儿卡住了,安好久;尝试挂梯子改代理,失败;听闻网友拿手机有线共享网络给电脑可以,遂尝试,成功!前人的完成任务情况

下载附件  保存到相册

7 天前 上传

必做任务二:

任务介绍

项目简介:学习IMU基础知识,调试IMU传感器,通过串口打印六轴原始数据;

设计思路:设计思路分为五步:初始化串口和 I2C 通信,验证传感器连接及 ID,配置加速度计和陀螺仪的量程与采样率,循环读取三轴数据(加速度与角速度),并通过串口输出调试信息。代码采用模块化设计,提供硬件错误检测与调试功能。

软件流程图

Created with Rapha毛l 2.1.2启动程序初始化串口通信 115200初始化 I2C 通信设置 I2C 时钟为 400kHz初始化 LSM6DSOX 传感器加速度计和陀螺仪是否启用成功?打印设备 ID 是否正确?打印设置加速度计量程设置陀螺仪量程设置加速度计采样率设置陀螺仪采样率进入循环是否有新的加速度数据?读取加速度数据打印加速度数据是否有新的陀螺仪数据?读取陀螺仪数据打印陀螺仪数据延时打印打印yesnoyesnoyesnoyesno

主要代码片段、功能展示及图文说明

代码如下:

#include "LSM6DSOXSensor.h"

LSM6DSOXSensor lsm6dsoxSensor = LSM6DSOXSensor(&Wire, LSM6DSOX_I2C_ADD_L);

void setup() {
  Serial.begin(115200);
  Wire.begin();
  Wire.setClock(400000);
  lsm6dsoxSensor.begin();
  if (lsm6dsoxSensor.Enable_X() == LSM6DSOX_OK && lsm6dsoxSensor.Enable_G() == LSM6DSOX_OK) {
    Serial.println("Success enabling accelero and gyro");
  } else {
    Serial.println("Error enabling accelero and gyro");
  }
  uint8_t id;
  lsm6dsoxSensor.ReadID(&id);
  if (id != LSM6DSOX_ID) {
    Serial.println("Wrong ID for LSM6DSOX sensor. Check that device is plugged");
  } else {
    Serial.println("Receviced correct ID for LSM6DSOX sensor");
  }
  lsm6dsoxSensor.Set_X_FS(2);
  lsm6dsoxSensor.Set_G_FS(125);
  lsm6dsoxSensor.Set_X_ODR(208.0f);
  lsm6dsoxSensor.Set_G_ODR(208.0f);
}

void loop() {

  // Read accelerometer
  uint8_t acceleroStatus;
  lsm6dsoxSensor.Get_X_DRDY_Status(&acceleroStatus);
  if (acceleroStatus == 1) { // Status == 1 means a new data is available
    int32_t acceleration[3];
    lsm6dsoxSensor.Get_X_Axes(acceleration);
    // Plot data for each axis in mg
    Serial.print("AccelerationX="); Serial.print(acceleration[0]); Serial.print("mg, AccelerationY="); Serial.print(acceleration[1]); Serial.print("mg, AccelerationZ="); Serial.print(acceleration[2]); Serial.println("mg");
  }

  // Read gyroscope
  uint8_t gyroStatus;
  lsm6dsoxSensor.Get_G_DRDY_Status(&gyroStatus);
  if (gyroStatus == 1) { // Status == 1 means a new data is available
    int32_t rotation[3];
    lsm6dsoxSensor.Get_G_Axes(rotation);
    // Plot data for each axis in milli degrees per second
    Serial.print("RotationX="); Serial.print(rotation[0]); Serial.print("mdps, RotationY="); Serial.print(rotation[1]); Serial.print("mdps, RotationZ="); Serial.print(rotation[2]); Serial.println("mdps");
  }
  delay(500);
}

串口打印图片:

必做任务三

 

任务简介:学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。

软件流程图

Created with Rapha毛l 2.1.2启动程序初始化串口通信 9600等待串口初始化完成设置 PDM 数据回调函数初始化 PDMPDM 是否初始化成功?进入主循环是否有新的音频样本?处理音频样本循环打印采集到的音频样本清除样本计数打印yesnoyes

主要代码片段、功能展示及图文说明

声音波形:

 

代码如下:
#include <MRI.h>
#include "LSM6DSOXSensor.h"

// Declare LSM6DSOX sensor. Sensor address can have 2 values LSM6DSOX_I2C_ADD_L (corresponds to 0x6A I2C address) or LSM6DSOX_I2C_ADD_H (corresponds to 0x6B I2C address)
// On Adafruit lsm6dsox sensor, LSM6DSOX_I2C_ADD_L is the default address
LSM6DSOXSensor lsm6dsoxSensor = LSM6DSOXSensor(&Wire, LSM6DSOX_I2C_ADD_L);

void setup() {
  Serial.begin(115200);
  Wire.begin();

  // Default clock is 100kHz. LSM6DSOX also supports 400kHz, let's use it
  Wire.setClock(400000);

  // Init the sensor
  lsm6dsoxSensor.begin();

  // Enable accelerometer and gyroscope, and check success
  if (lsm6dsoxSensor.Enable_X() == LSM6DSOX_OK && lsm6dsoxSensor.Enable_G() == LSM6DSOX_OK) {
    Serial.println("Success enabling accelero and gyro");
  } else {
    Serial.println("Error enabling accelero and gyro");
  }

  // Read ID of device and check that it is correct
  uint8_t id;
  lsm6dsoxSensor.ReadID(&id);
  if (id != LSM6DSOX_ID) {
    Serial.println("Wrong ID for LSM6DSOX sensor. Check that device is plugged");
  } else {
    Serial.println("Receviced correct ID for LSM6DSOX sensor");
  }
  lsm6dsoxSensor.Set_X_FS(2);
  lsm6dsoxSensor.Set_G_FS(125);
  lsm6dsoxSensor.Set_X_ODR(208.0f);
  lsm6dsoxSensor.Set_G_ODR(208.0f);


}

void loop() {

  // Read accelerometer
  uint8_t acceleroStatus;
  lsm6dsoxSensor.Get_X_DRDY_Status(&acceleroStatus);
  if (acceleroStatus == 1) { // Status == 1 means a new data is available
    int32_t acceleration[3];
    lsm6dsoxSensor.Get_X_Axes(acceleration);
    // Plot data for each axis in mg
    Serial.print("X="); Serial.print(acceleration[0]); Serial.print("mg, Y="); Serial.print(acceleration[1]); Serial.print("mg, Z="); Serial.print(acceleration[2]); Serial.println("mg");
  }

  // Read gyroscope
  uint8_t gyroStatus;
  lsm6dsoxSensor.Get_G_DRDY_Status(&gyroStatus);
  if (gyroStatus == 1) { // Status == 1 means a new data is available
    int32_t rotation[3];
    lsm6dsoxSensor.Get_G_Axes(rotation);
    // Plot data for each axis in milli degrees per second
    Serial.print("X="); Serial.print(rotation[0]); Serial.print("mdps, Y="); Serial.print(rotation[1]); Serial.print("mdps, Z="); Serial.print(rotation[2]); Serial.println("mdps");
  }

  delay(500);

}

所有代码可到我的下载中心查看:https://bbs.eeworld.com.cn/my/home.php?cur=myhome&act=download

心得体会

习惯了裸开发单片机,猛得用arduino有种眩晕感:这就好了?虽然屏蔽了很多底层的细节,但是可以很快地验证一个方案是否可行,有舍有得吧,感觉还是值得的。想学一些新东西的时候,完全可以先调库爽一爽找找感觉,边用边学,再慢慢在其他板子上扣细节和底层。


最新回复

需要配置加速度计和陀螺仪的量程与采样率,循环读取三轴数据加速度与角速度,是这样   详情 回复 发表于 6 天前
点赞 关注
 
 

回复
举报

6749

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

需要配置加速度计和陀螺仪的量程与采样率,循环读取三轴数据加速度与角速度,是这样

 
 
 

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

活动 更多>>
开源项目 更多>>
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

热门标签
相关文章 更多>>
推荐帖子
采用 PLL 技术的合成频率源设计

摘要: 介绍分频锁相频率合成技术。通过对锁相环工作过程及相位噪声等的基本原理的分析, 采用PLL技术成功设计了 1.8 GH ...

智能车资料整理

本帖最后由 paulhyde 于 2014-9-15 03:22 编辑 5231752317:)主要是论文,也包含一些程序,有红外的、GPS的、电机的等。 依据红 ...

简单但你却不一定能说得通的JTAG接口

JTAG接口 1JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测 ...

EK_LM3S811学习资料集锦

不可否认的是,David_Lee是个善于规整的家伙,所以本次资料集锦,就以给网友的一个回复开头了: 如果你是个初学者,不妨先仔 ...

【TI荐课】#[高精度实验室] 运算放大器 : 8 噪声#

//training.eeworld.com.cn/TI/show/course/1944

手机和电脑的文件传输,哪种无线方法最快?

当手机和电脑有线连接之后,文件传输是最快的,直接移动手机文件夹的文件到电脑的文件夹,速度惊人,可以说是1G也不需要多少秒? ...

典型吸尘器/扫地机器人BMS拓扑

本帖最后由 qwqwqw2088 于 2021-12-17 10:27 编辑 近年来,无绳吸尘器和扫地机器人越来越普及,给人们的生活带来了极大的便利 ...

ST NUCLEO-U083RC 移植RT-Thread实现按键控制led亮灭和控制sg90电机动作

本帖最后由 crz_21 于 2024-6-13 20:15 编辑 1、实验准备 需要一个SG90的舵机 2、工程搭建 首先从github上 ...

使用circuitpython的赛博朋克风格挂表

一款可以看时间、看图片、显示文字移动、显示 Gif 动画的挂表。 868575 代码和pdf https://github.com/Yakroo ...

新帖速递
关闭
站长推荐上一条 1/5 下一条

 
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
快速回复 返回顶部 返回列表