- 2025-01-01
-
回复了主题帖:
【Follow me第二季第4期】Arduino Nano RP2040学习总结+FFT音频灯
Maker_kun 发表于 2025-1-1 10:59
FFT音频灯效果很不错,有时间也玩一下
对快速傅里叶分解也比较有利理解含义
-
回复了主题帖:
【Follow me第二季第4期】Arduino Nano RP2040学习总结+FFT音频灯
秦天qintian0303 发表于 2025-1-1 09:37
效果非常不错
买的2020封装的ws2812矩阵效果还是挺好的
- 2024-12-31
-
上传了资料:
Follow me第二季第4期
-
加入了学习《Follow me第二季第4期》,观看 Follow me第二季第4期
- 2024-12-22
-
回复了主题帖:
【2024 DigiKey创意大赛】职场提神法宝项目-作品提交
视频已经上传,上传链接:https://training.eeworld.com.cn/video/41988
- 2024-12-17
-
加入了学习《【2024 DigiKey创意大赛】职场提神法宝项目》,观看 【2024 DigiKey创意大赛】职场提神法宝项目
- 2024-12-05
-
发表了主题帖:
【Follow me第二季第4期】Arduino Nano RP2040学习总结+FFT音频灯
本帖最后由 eew_cT3H5d 于 2024-12-31 22:54 编辑
活动链接:https://www.eeworld.com.cn/huodong/digikey_follow_me_2024_04/
先放最后项目:FFT音频灯,然后在讲述【Follow me第二季第4期】Arduino Nano RP2040学习总结
扩展任务:FFT音频灯项目
项目效果演示:
[localvideo]b31be3fc659280112aee536df8c018ef[/localvideo]
效果展示:
程序代码:
程序流程图:
傅里叶FFT变换原理
硬件组成连接框图:
参考来源:https://gitee.com/adamhxx/arduino-open-source/blob/master/Arduino-Audio-Visualizer/Arduino-Audio-Visualizer-8x8/Arduino-Audio-Visualizer-8x8.ino
下面进行讲解【Follow me第二季第4期】学习过程
准备工作:
1)开发板介绍
2)安装开发板支持包
3)安装开发板WIFI支持包
4)板载负载驱动引脚
5)开发板数字I/O引脚
6)开发板相关通讯引脚
必做任务一:搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld!
程序代码:备注digitalWrite(!digitalRead())不能直接使用
#include <WiFiNINA.h>
void setup() {
Serial.begin(115200);
pinMode(LEDR,OUTPUT);
pinMode(LEDG,OUTPUT);
pinMode(LEDB, OUTPUT);
}
void loop() {
digitalWrite(LEDR, LOW);//0
digitalWrite(LEDG, LOW);//0
digitalWrite(LEDB, LOW);//0
Serial.println("Hello DigiKey & EEWorld!");
delay(200);
digitalWrite(LEDR, HIGH);//1
digitalWrite(LEDG, HIGH);//1
digitalWrite(LEDB, HIGH);//1
Serial.println("Hello DigiKey & EEWorld!");
delay(200);
}
点亮三色LED效果(红、绿、蓝构成白色):
串口接收数据:
程序流程图:
扩展:点亮ws2812数字全彩LED
下载库:
打开案例库:
选择GPIO5作为驱动引脚
程序代码:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define LED_PIN 5
// How many NeoPixels are attached to the Arduino?
#define LED_COUNT 64
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.
strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
strip.show(); // Turn OFF all pixels ASAP
strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
}
void loop() {
// Fill along the length of the strip in various colors...
colorWipe(strip.Color(255, 0, 0), 50); // Red
colorWipe(strip.Color( 0, 255, 0), 50); // Green
colorWipe(strip.Color( 0, 0, 255), 50); // Blue
theaterChase(strip.Color(127, 127, 127), 50); // White, half brightness
theaterChase(strip.Color(127, 0, 0), 50); // Red, half brightness
theaterChase(strip.Color( 0, 0, 127), 50); // Blue, half brightness
rainbow(10); // Flowing rainbow cycle along the whole strip
theaterChaseRainbow(50); // Rainbow-enhanced theaterChase variant
}
void colorWipe(uint32_t color, int wait) {
for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
strip.setPixelColor(i, color); // Set pixel's color (in RAM)
strip.show(); // Update strip to match
delay(wait); // Pause for a moment
}
}
void theaterChase(uint32_t color, int wait) {
for(int a=0; a<10; a++) { // Repeat 10 times...
for(int b=0; b<3; b++) { // 'b' counts from 0 to 2...
strip.clear(); // Set all pixels in RAM to 0 (off)
// 'c' counts up from 'b' to end of strip in steps of 3...
for(int c=b; c<strip.numPixels(); c += 3) {
strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
}
strip.show(); // Update strip with new contents
delay(wait); // Pause for a moment
}
}
}
// Rainbow cycle along whole strip. Pass delay time (in ms) between frames.
void rainbow(int wait) {
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
strip.rainbow(firstPixelHue);
strip.show(); // Update strip with new contents
delay(wait); // Pause for a moment
}
}
// Rainbow-enhanced theater marquee. Pass delay time (in ms) between frames.
void theaterChaseRainbow(int wait) {
int firstPixelHue = 0; // First pixel starts at red (hue 0)
for(int a=0; a<30; a++) { // Repeat 30 times...
for(int b=0; b<3; b++) { // 'b' counts from 0 to 2...
strip.clear(); // Set all pixels in RAM to 0 (off)
for(int c=b; c<strip.numPixels(); c += 3) {
int hue = firstPixelHue + c * 65536L / strip.numPixels();
uint32_t color = strip.gamma32(strip.ColorHSV(hue)); // hue -> RGB
strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
}
strip.show(); // Update strip with new contents
delay(wait); // Pause for a moment
firstPixelHue += 65536 / 90; // One cycle of color wheel over 90 frames
}
}
}
程序流程图:
驱动ws2812模块效果:
必做任务二:学习IMU基础知识,调试IMU传感器,通过串口打印六轴原始数据;
下载库LSM6DSOX
程序代码:
#include <Arduino_LSM6DSOX.h>
void setup() {
Serial.begin(115200); // 初始化串口
while (!Serial); // 等待串口连接
if (!IMU.begin()) {
Serial.println("无法初始化 LSM6DSOX IMU 传感器!");
while (1);
}
Serial.println("LSM6DSOX IMU 传感器已初始化");
}
void loop() {
float ax, ay, az; // 加速度
float gx, gy, gz; // 角速度
// 读取加速度值
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(ax, ay, az);
Serial.print("加速度 (m/s^2): X=");
Serial.print(ax);
Serial.print(" Y=");
Serial.print(ay);
Serial.print(" Z=");
Serial.println(az);
}
// 读取角速度值
if (IMU.gyroscopeAvailable()) {
IMU.readGyroscope(gx, gy, gz);
Serial.print("陀螺仪 (rad/s): X=");
Serial.print(gx);
Serial.print(" Y=");
Serial.print(gy);
Serial.print(" Z=");
Serial.println(gz);
}
delay(100); // 延迟 500 毫秒
}
程序流程图:
编译下载程序:
必做任务三:学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。
打开案例库:
编译程序:
程序流程图:
程序代码:
#include <PDM.h>
// default number of output channels
static const char channels = 1;
// default PCM output frequency
static const int frequency = 16000;
// Buffer to read samples into, each sample is 16-bits
short sampleBuffer[512];
// Number of audio samples read
volatile int samplesRead;
void setup() {
Serial.begin(9600);
while (!Serial);
// Configure the data receive callback
PDM.onReceive(onPDMdata);
// Optionally set the gain
// Defaults to 20 on the BLE Sense and 24 on the Portenta Vision Shield
// PDM.setGain(30);
// Initialize PDM with:
// - one channel (mono mode)
// - a 16 kHz sample rate for the Arduino Nano 33 BLE Sense
// - a 32 kHz or 64 kHz sample rate for the Arduino Portenta Vision Shield
if (!PDM.begin(channels, frequency)) {
Serial.println("Failed to start PDM!");
while (1);
}
}
void loop() {
// Wait for samples to be read
if (samplesRead) {
// Print samples to the serial monitor or plotter
for (int i = 0; i < samplesRead; i++) {
if(channels == 2) {
Serial.print("L:");
Serial.print(sampleBuffer[i]);
Serial.print(" R:");
i++;
}
Serial.println(sampleBuffer[i]);
}
// Clear the read count
samplesRead = 0;
}
}
/**
* Callback function to process the data from the PDM microphone.
* NOTE: This callback is executed as part of an ISR.
* Therefore using `Serial` to print messages inside this function isn't supported.
* */
void onPDMdata() {
// Query the number of available bytes
int bytesAvailable = PDM.available();
// Read into the sample buffer
PDM.read(sampleBuffer, bytesAvailable);
// 16-bit, 2 bytes per sample
samplesRead = bytesAvailable / 2;
}
串口打印数据:
选做任务一(非必做):通过RGB LED不同颜色、亮度显示PDM麦克风收到的声音大小;
参考内容:https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-microphone-basics/
演示效果:不同敲击显示不同颜色
程序代码:
#include <WiFiNINA.h>
#include <PDM.h>
bool LED_SWITCH = false;
// default number of output channels
static const char channels = 1;
// default PCM output frequency
static const int frequency = 20000;
// Buffer to read samples into, each sample is 16-bits
short sampleBuffer[512];
// Number of audio samples read
volatile int samplesRead;
void setup() {
Serial.begin(9600);
pinMode(LEDB, OUTPUT);
while (!Serial);
// Configure the data receive callback
PDM.onReceive(onPDMdata);
// Optionally set the gain
// Defaults to 20 on the BLE Sense and -10 on the Portenta Vision Shields
// PDM.setGain(30);
// Initialize PDM with:
// - one channel (mono mode)
// - a 16 kHz sample rate for the Arduino Nano 33 BLE Sense
// - a 32 kHz or 64 kHz sample rate for the Arduino Portenta Vision Shields
if (!PDM.begin(channels, frequency)) {
Serial.println("Failed to start PDM!");
while (1);
}
}
void loop() {
// Wait for samples to be read
if (samplesRead) {
// Print samples to the serial monitor or plotter
for (int i = 0; i < samplesRead; i++) {
if (channels == 2) {
Serial.print("L:");
Serial.print(sampleBuffer[i]);
Serial.print(" R:");
i++;
}
Serial.println(sampleBuffer[i]);
if (sampleBuffer[i] > 10000 || sampleBuffer[i] <= -10000) {
LED_SWITCH = !LED_SWITCH;
if (LED_SWITCH) {
Serial.println();
digitalWrite(LEDR, HIGH);
Serial.println("ON!");
Serial.println();
delay(100);
}
else {
Serial.println();
digitalWrite(LEDR, LOW);
Serial.println("OFF!");
Serial.println();
delay(100);
}
}
if (sampleBuffer[i] > 8000 || sampleBuffer[i] <= -8000) {
LED_SWITCH = !LED_SWITCH;
if (LED_SWITCH) {
Serial.println();
digitalWrite(LEDG, HIGH);
Serial.println("ON!");
Serial.println();
delay(100);
}
else {
Serial.println();
digitalWrite(LEDG, LOW);
Serial.println("OFF!");
Serial.println();
delay(100);
}
}
if (sampleBuffer[i] > 5000 || sampleBuffer[i] <= -5000) {
LED_SWITCH = !LED_SWITCH;
if (LED_SWITCH) {
Serial.println();
digitalWrite(LEDB, HIGH);
Serial.println("ON!");
Serial.println();
delay(100);
}
else {
Serial.println();
digitalWrite(LEDB, LOW);
Serial.println("OFF!");
Serial.println();
delay(100);
}
}
}
// Clear the read count
samplesRead = 0;
}
}
/**
Callback function to process the data from the PDM microphone.
NOTE: This callback is executed as part of an ISR.
Therefore using `Serial` to print messages inside this function isn't supported.
* */
void onPDMdata() {
// Query the number of available bytes
int bytesAvailable = PDM.available();
// Read into the sample buffer
PDM.read(sampleBuffer, bytesAvailable);
// 16-bit, 2 bytes per sample
samplesRead = bytesAvailable / 2;
}
程序流程图:
一 、3-5分钟短视频
视频链接:https://training.eeworld.com.cn/course/68912/learn?preview=1#lesson/42241
[localvideo]3a6ca03a2b4b6bd8d4d6eb01341c71de[/localvideo]
二、任务实现详情
本帖内容
项目总结:通过这次Follow me第二季第4期活动,熟悉Arduino编程环境搭建及开发板的使用,通过移植FFT音频LED加深对Arduino Nano RP2040了解。
三、可编译下载的代码
地址:https://download.eeworld.com.cn/detail/eew_cT3H5d/635478
- 2024-11-04
-
回复了主题帖:
【2024 DigiKey创意大赛】职场提神法宝项目-作品提交
Maker_kun 发表于 2024-11-2 11:00
这一套成本多少钱?
主要是传感器比较贵,可以找平替或者不要,成本可控制100元以内
-
回复了主题帖:
【2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6与Labview进行通讯
Jacktang 发表于 2024-11-3 08:27
看效果应该是可以的啊
灯光效果还不错的
- 2024-10-31
-
回复了主题帖:
【2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6驱动ws2812氛围灯
Maker_kun 发表于 2024-10-31 09:42
效果不错,期待成品
终于搞完了
-
上传了资料:
职场提神法宝项目代码
-
发表了主题帖:
【2024 DigiKey创意大赛】职场提神法宝项目-作品提交
职场提神法宝
作者:eew_cT3H5d
一、作品简介
本作品为解决办公环境对办公效率,而研发的一款改善办公环境及监测环境系统,系统有显示监测、智能控制、改善环境设备组成。1显示监测:通过手机app实时显示空气质量各种数据;2智能控制:采集各种传感器数据,控制多种设备,实时与智能手机进行通讯;3改善环境设备:负离子风、rainbow炫彩LED灯、加湿设备等。
图1:提神神器监测控制系统
该系统硬件部分有ESP32C6核心板、多种传感器、继电器控制、rainbow炫彩LED灯等组成,系统整体丰富
系统实现:通过获取二氧化碳、TVOC、光照、PM2.5、VOC、温湿度、噪音等传感器数据感知办公环境的优良,告知当前环境是否适宜办公。通过rainbow炫彩LED显示让人产生愉悦的感受改善视觉疲劳、通过控制负离子及风扇开启可以输出负离子风改善长期疲劳(负离子被誉为“空气维生素”改善环境空气质量)
二、系统框图
硬件系统构成
硬件部分有ESP32C6核心板、自制PCB扩展板(带继电器控制)、QWIIC传感器、串口传感器SEN44组成,硬件系统通过PCB及板载连接器连接外设传感器及设备提高硬件运行稳定性
图2:硬件系统框图
图3:硬件实物图
系统软件构成
为满足智能化控制及减少硬件成本将显示控制部分在手机APP进行开发,同时为丰富功能结合使用场景可连接电脑上位机进行更多功能控制:包括提醒喝水、提醒运动、眼保操等功能(还在开发中)
软件系统框架
软件运行效果
连接Labview上位机运行效果
三、各部分功能说明
1、硬件设计
1)原理图设计
原理图部分主要为引出ESP32-C6-DevKitC-1电源5V、3.3V控制引脚、传感器QWIIC接口、SEN44接口、ws2812 LED灯、继电器控制电路等。
2)PCB设计
PCB采用双面板设计,尺寸为71*51mm2,方便嵌入小尺寸空间中便于携带与放置,具体测试内容见帖子:https://bbs.eeworld.com.cn/thread-1296568-1-1.html
3)焊接成品
为方便集成及控制,将焊接后的成品连接传感器及各负载,首先确认电源是否短路再一一确认各项功能
2、电气连接图
电气连接图可以直观展示各项传感器负载与控制板PCB的连接,方便组装与维护,同时也能很好展现电气装置内部元件之间及其外部其他装置之间的连接关系。
3、软件设计
1)硬件部分:软件搭建使用Arduino IDE进行编程,需要安装Wire、Adafruit_SHT4x、Adafruit_SCD30、Adafruit_SGP30、Adafruit_LTR329_LTR303、SensirionUartSen44、Adafruit_NeoPixel等库
ESP32-C6-DevKitC-1在Arduino IDE开发板管理使用DFRobot Beetle ESP32-C6软件版本,主要原因ESP32-C6-DevKitC-1和该开发板主控类型一样,而且DFRobot Beetle ESP32-C6相关文件优化的比较稳定
软件调用大量第三方库文件,需要明确每个库文件的作用,以及执行代码的效果,程序每次上电复位执行代码如下流程图:
在进入LOOP循环函数时,需要有序判断各个事件的条件及执行内容,软件事件流程图可概括如下流程图:
软件框架如下图所示:程序主要为:ws2812控制、GPIO继电器控制、蓝牙接收发控制、获取传感器实时数据
2)手机APP:
APP开发采用 APP inventor平台进行开发,下图为开发UI界面
程序逻辑设计采用基于VisuelBasic和Scratch的可视化编程语言构建,类似搭积木进行编程
程序代码如下:主要是接收蓝牙数据显示处理和发送蓝牙指令等
3)Labview上位机开发:
Labview上位机可以读取控制器的传感器数据以及控制设备开启与关闭
4、测试
测试为了了解硬件设计是否有风险,更全面保证电路稳定运行
具体测试内容见帖子:https://bbs.eeworld.com.cn/thread-1297448-1-1.html
5、外壳选择
外壳选择透明上顶盖的158*90*60mm盒子,透明的顶盖可以很好地展示灯光效果
四、作品源码
代码链接:https://download.eeworld.com.cn/detail/eew_cT3H5d/634861
五、作品功能演示视频
视频演示:https://training.eeworld.com.cn/video/41988
六、项目总结
感谢EEWORL举办此次活动,让我不断学习进步,下面是我项目分享内容:
【2024 DigiKey创意大赛】职场提神法宝项目-开箱
【2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6编程环境搭建
【2024 DigiKey创意大赛】职场提神法宝项目-M5STACK_ATOMS3编程环境搭建
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6核心板的扩展板绘制
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6多协议获取传感器数据
2024 DigiKey创意大赛】职场提神法宝项目-硬件电路波形测试
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6与手机APP进行通讯
2024 DigiKey创意大赛】职场提神法宝项目-问题排查
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6获取空气质量传感器数据
【2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6驱动ws2812氛围灯
【2024 DigiKey创意大赛】职场提神法宝项目-IIC通讯总线获取多个传感器数据
【2024 DigiKey创意大赛】职场提神法宝项目-功能演示
【2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6与Labview进行通讯
七、其他
附件
项目背景:对于企业来说员工精神面貌状态的重要性关系到企业的整体效益和长期发展。对于优秀的企业来说良好的精神状态能够提升工作效率、增强团队合作,并促进组织的和谐氛围,同时影响员工的个人幸福感和长期健康。
良好的办公生活从员工的角度来看,精神健康直接影响到他们的工作表现和生活质量。研究表明,当员工在身体和精神上都呈现健康状态时,他们往往会有更加出色的表现,从而提高办公效率。此外,保持健康的生活方式,包括充足的睡眠、均衡的饮食和适量的运动,有助于提升情绪稳定性。通过愉快的放松方式来放松自己,可以帮助缓解紧张情绪,保持冷静。
1、色彩:研究表明不同的颜色对员工的情绪和心理状态有显著影响。例如,蓝色和绿色被认为能够缓解压力和焦虑,提升工作情绪。此外,明亮的色彩如黄色和橙色可以提升警觉性和活力,而柔和的色彩如粉色和绿色则有助于放松身心。因此,在办公室设计中合理运用这些颜色,可以改善员工的心情和工作效率。
2、空气维生素负离子:负离子在改善办公环境方面也起到了重要作用。负氧离子已被证明对人体有益,能够提高室内空气质量,使员工感到更加清新和舒适。研究表明,在办公室环境中引入负离子系统可以显著提升员工的清醒程度和健康感。此外,使用空气净化器或摆放能释放负离子的植物如吊兰、芦苇等,也是增加负离子浓度的有效方法。
3、温湿度:适当的环境温度和湿度对于保持员工的舒适度和精神状态至关重要。研究表明,环境温度、湿度和空气电离对人体造成的影响包括热舒适度、气闷程度以及清醒程度等。因此,通过调节办公室内的温湿度,可以有效提升员工的工作效率和舒适感。
4、改善室内空气质量,特别是降低PM2.5和二氧化碳浓度,可以显著提高办公室员工的认知功能和工作效率。以下是具体的方法和依据:
提高通风率:研究表明,增加办公室内的通风率能够有效改善空气质量,从而提升工作效率。例如,哈佛研究发现,当办公楼内通风率提高两倍时,每位员工每年的工作效率价值可增加6500美元。通过增大新风量,可以极大改善室内空气质量。
控制二氧化碳浓度:二氧化碳浓度的升高会显著影响员工的认知功能。研究指出,当二氧化碳浓度增加到约945 ppm(中等水平)和约1400 ppm(高水平)时,参与者的认知功能得分显著下降。因此,准确测量并控制室内二氧化碳浓度是维持员工认知能力的关键。
5、减少有害化学物质:除了PM2.5和二氧化碳外,挥发性有机化合物(VOCs)也是影响室内空气质量的重要因素。通过选择低污染的建筑材料和施工管理控制,可以减少建筑物内部的污染。
6、负离子的积极影响负离子(特别是负氧离子)对人体健康有多方面的积极影响。首先,负离子能够改善心情和缓解抑郁症状,因为它们可以增加大脑中神经传递素的分泌,从而提高情绪。此外,负离子还能增强记忆力和注意力,促进脑电波的Alpha波和Beta波,这有助于提高注意力聚集度和记忆编码。负离子还能提高免疫力,调节神经系统功能,促进血液循环,使人精力充沛,健康长寿。负离子还能改善呼吸系统的健康,通过清洁空气中的微粒如灰尘、花粉和细菌等,净化空气,改善呼吸系统的功能。负离子通过增加神经传递素分泌来改善心情和缓解抑郁症状的机制主要涉及以下几个方面:促进多巴胺和血清素的释放:多巴胺是一种与快乐和幸福感相关的神经递质,而血清素则与情绪稳定性和抑郁症状的缓解有关。负离子可以促进这些神经递质的释放,从而提高情绪,减轻抑郁症状。例如,负氧离子可以促进脑内多巴胺的分泌,有助于改善情绪,减少抑郁和焦虑。调节神经系统功能:负离子能够调节神经系统及大脑的功能状态,加强其抑制过程,从而振奋精神消除疲劳,并兴奋神经系统。这种调节作用有助于改善心情和缓解抑郁症状。增强酶活性和DHA形成:负离子可以增强酶活性,加速向亚麻酸的转化,从而保护神经,防治抑郁。DHA(二十二碳六烯酸)是大脑中的重要成分,对维持神经系统健康至关重要。提高警觉性和注意力:负离子还可以促进血液中β-内啡肽的释放,这种物质不仅能提高注意力和专注力,还能增强工作效率。此外,负离子还能增加警觉性和注意力,这有助于缓解压力、焦虑和抑郁症状。实验验证:研究表明,在高浓度负离子环境中的患者,抑郁症状显著减轻。例如,哥伦比亚大学的教授特曼发现,每天接受高浓度负离子治疗的患者,抑郁症状得以减轻了50%。
-
发表了主题帖:
【2024 DigiKey创意大赛】职场提神法宝项目-功能演示
本帖最后由 eew_cT3H5d 于 2024-10-31 17:27 编辑
功能演示:
[localvideo]5f6838e08027ff9a69c8abc8ed1bc4b7[/localvideo]
功能演示:
[localvideo]635bb697e0accb9fd2d41950b11d68c6[/localvideo]
- 2024-10-28
-
发表了主题帖:
2024 DigiKey创意大赛】职场提神法宝项目-问题排查
本帖最后由 eew_cT3H5d 于 2024-10-28 07:51 编辑
先说结论:淘宝买的电阻太不靠谱了,电阻开路导致驱动继电器电路异常
调试过程发现4号引脚驱动继电器电路无继电器吸合声音,说明继电器电路驱动异常:
逻辑分析仪测试ESP32C6开发板4引脚驱动信号:
逻辑分析仪测试驱动波形无异常:初步分析应该是硬件电路有问题
硬件焊盘没有出现短路问题:
查看原理图:分析原因
PCB硬件路径:
直接用条线连接到三极管的b集,确定是否是三极管异常
短接后,继电器驱动正常,短接R8电阻也正常驱动继电器,此时说明R8电阻开路造成继电器电路驱动异常
-
发表了主题帖:
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6与手机APP进行通讯
本帖最后由 eew_cT3H5d 于 2024-10-28 07:51 编辑
打开案例库:
修改增加传感器读取代码
String data = 'A' + String(temp.temperature) + 'B' + String(humidity.relative_humidity) + 'C' + String(scd30.CO2, 3)
+'D' + String(sgp.TVOC) + 'E' + String(massConcentrationPm2p5) +'F' + String(vocIndex) +'@';
if (deviceConnected) {
pTxCharacteristic->setValue(data);
pTxCharacteristic->notify();
txValue++;
delay(10); // bluetooth stack will go into congestion, if too many packets are sent
}
APP设计:
代码设计:
调试设计:
-
发表了主题帖:
2024 DigiKey创意大赛】职场提神法宝项目-硬件电路波形测试
本帖最后由 eew_cT3H5d 于 2024-10-28 07:49 编辑
硬件测试:测试需要覆盖硬件的各项功能,以验证其是否符合设计要求。其次,性能测试是评估硬件在不同工作条件下的表现,包括处理速度、数据传输速率、响应时间和吞吐量等;硬件测试还涉及兼容性测试,确保硬件与其他组件或系统能够良好地协同工作;硬件测试不仅是为了找出错误,更是为了通过分析错误产生的原因和分布特征来改进设计过程,并制定有针对性的检测方法。因此,硬件测试在整个产品生命周期中占据着重要地位
硬件示波器测试之前要进行校准
校准前波形
校准后波形:
1.继电器驱动电压:
2.继电器功率输出电路:有点异常
3.SPI驱动ws2812波形测试
4.串口波形测试
5.QWIIC通讯相关波形测试:
- 2024-10-26
-
回复了主题帖:
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6核心板的扩展板绘制
Maker_kun 发表于 2024-10-25 09:38
PCB棱角没有做倒角处理容易划到手
画的比较急,后面再修改一下
-
回复了主题帖:
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6核心板的扩展板绘制
Jacktang 发表于 2024-10-25 07:31
AD软件画的?
国产EDA
-
回复了主题帖:
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6核心板的扩展板绘制
秦天qintian0303 发表于 2024-10-25 13:26 覆铜上做这样的图案,不推荐
下次画小一点图案
- 2024-10-24
-
发表了主题帖:
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6核心板的扩展板绘制
本帖最后由 eew_cT3H5d 于 2024-10-24 23:58 编辑
原理设计:
PCB设计:
3D实物图:
绘制此次比赛专用log
实物焊接图: