Lucheni

  • 2024-12-29
  • 上传了资料: Followme4-2代码

  • 发表了主题帖: 【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库(https://github.com/arduino-libraries/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

  • 2024-11-01
  • 回复了主题帖: 【2024 DigiKey 创意大赛】LED立方体

    秦天qintian0303 发表于 2024-11-1 11:19 这个看着效果听炫酷的,这要是六面都带显示屏是不是会更好 目前是六面都是8*8的led,都是显示屏的话也行,不过tft屏幕亮度暗,可能效果反而不好

  • 2024-10-31
  • 发表了主题帖: 【2024 DigiKey 创意大赛】LED立方体

    LED桌面立方体 作者:Lucheni   一、作品简介 本作品为led桌面立方体,类似的作品其实之前在中文互联网上出现过很多,但大多没有框架或需要外接电源。 如图左,骰子为6片pcb焊接而成,优点是集成了电池,但单面led密度仅为3*3,同时焊接的连接方式较为麻烦,若量产需要专门定制治具,外漏的金属焊接点也易与桌面的物品碰撞导致短路。 图右使用了6片RGB LED点阵屏,屏幕本身有塑料框架,屏幕间使用角码固定,使用树莓派驱动,优点为led密度高,但因为功耗大(全套设备最大功耗近60w),使用外部供电,led立方体只能固定在底座上(电源集成在底座内) 本次作品解决了一些上述的问题,基于ESP32 S3/C6,实现了6面8*8密度的立方体,体积仅为3.5*3.5cm,内置电池,可当骰子在柔软的表面扔着玩,也可放置于桌面当桌面RGB摆件。基于ESP32的WiFi功能无需重复烧录代码,通过Adafruit IO云平台即可实现显示内容更改。当然还有一些问题等待后续改进。 二、系统框图 项目流程图如上,主控为QT PY ESP32S3,板对板焊接了一片锂电池充电管理板,用于实现设备开关及锂电池充电管理功能。开发板外接了一片LIS3DH 3轴加速度传感器,用于判断姿态。项目实现过程中也测试了ICM20948,但LIS3DH成本更低,目前选择采用这款传感器。6片led屏幕分为3组,顶面和底面单独控制,中间的四面为一组串级控制。 三、各部分功能说明 代码基于CircuitPython实现,使用了如下cpy库 其中adafruit_io用于实现开发板与adafruit云平台的数据交互,adafruit_led_animation及adafruit_dotstar实现了led矩阵屏的显示控制,adafruit_lis3dh用于姿态解算。 while True: x, y, z = lis3dh.acceleration oriented = orientation(x, y, z) 主循环开始后先进行姿态判断,根据姿态选择当前的显示模式。 if oriented == orientations[5]: # "back" side cube.clear_cube(True) continue if oriented == orientations[1]: upside_down = True else: upside_down = False 若立方体被翻转,则显示翻转内容。 if not upside_down: if cube.done_scrolling: update_data() cube.update(CUBE_WORD, TOP_PIXELS_COLOR, TOP_PIXELS_ON) cube.scroll_word_and_update_top() 若正常放在桌面上,正常重Adafruit IO上更新数据,并显示。 四、作品源码 https://download.eeworld.com.cn/detail/Lucheni/634868 五、作品功能演示视频 https://training.eeworld.com.cn/video/41503 六、项目总结 感谢得捷电子和EEWORLD举办的本次活动,让我有动力实现这个想了很久的创意,后续我也会继续改进这套硬件,让他更易用。 七、其他 本次项目最大的缺点有两个 充电及下载代码需要打开顶面led板,使用type-c接口连接主控板进行充电。 成本高,使用的是带时钟信号的rgb led,成本约为0.5元一颗,全套设备用了近400颗led,光物料成本就冲着200去了 充电方式我还在试着想办法改进,led面板已经重新绘制,使用普通ws2812 led,成本会降低到100附近,同时因为项目需要的主控性能不强,目前也实现了基于esp32 c3及c6的控制,后续找到更好的充电方式后会发帖一起更新。

  • 上传了资料: LED立方体代码

  • 2024-08-23
  • 回复了主题帖: 【2024 DigiKey 创意大赛】物料开箱

      后续补发商品已收到(手快先用了一个)

  • 2024-08-15
  • 回复了主题帖: 【2024 DigiKey 创意大赛】物料开箱

    sipower 发表于 2024-8-15 09:25 购买的4片esp32 c6模组,这是要做分布式网络吗 没有没有,一个创意的物联网设备吧,然后原项目是基于s3的,想做到c6然后改点功能而已,c6板子要重画就备了几个

  • 回复了主题帖: 【2024 DigiKey 创意大赛】物料开箱

    Jacktang 发表于 2024-8-15 07:27 发货发错还不常见,给得捷联系一下吧 联系了,然后又遇到了bug,要提交附件但是文件不能超过4m,我提交了俩图片一个excel超了然后邮件一直被退回,刚刚打客服电话才搞清楚

  • 2024-08-14
  • 发表了主题帖: 【2024 DigiKey 创意大赛】物料开箱

    感谢EEWORLD和Digikey联合举办的 【2024 DigiKey 创意大赛】,7/30公布名单两周后的今天,我终于收到了本次活动的使用物料 不过这次收到后发现物料寄错了,本来购买的4片esp32 c6模组给我发了别人订单的保险丝座(图片最右边),目前正在联系得捷官方看是补货还是作退货处理。      

最近访客

< 1/1 >

统计信息

已有8人来访过

  • 芯积分:3
  • 好友:--
  • 主题:7
  • 回复:11

留言

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


现在还没有留言