- 2024-11-12
-
回复了主题帖:
【2024 DigiKey创意大赛】+智慧焊接工作台
这个ESP32开发板功能比较强大,对于提高软硬件能力有很大帮助
-
加入了学习《【2024 DigiKey创意大赛】+智慧焊接工作台》,观看 智慧焊接工作台
- 2024-11-08
-
加入了学习《2024DigiKey创意大赛二月柳絮大作战项目》,观看 2024DigiKey创意大赛二月柳絮大作战项目
- 2024-11-07
-
加入了学习《PFC电源设计与电感设计计算》,观看 2.1 (二) 常见PFC电路和特点(1)
-
加入了学习《PFC电源设计与电感设计计算》,观看 1.1 (一) 课程概览
- 2024-11-04
-
回复了主题帖:
【2024 DigiKey 创意大赛】二月柳絮大作战项目——作品提交
1851409468@qq.c 发表于 2024-11-4 21:30
感觉这个作品挺好的,解决鼻炎患者的大问题
净化空气设备可以通过继电器控制,这一点就没有详细写了
- 2024-11-03
-
上传了资料:
2024DigiKey创意大赛二月柳絮大作战项目代码
-
发表了主题帖:
【2024 DigiKey 创意大赛】二月柳絮大作战项目-08项目演示效果
本帖最后由 Maker_kun 于 2024-11-4 00:47 编辑
系统组成:
[localvideo]8ec0f47a4cd3935fba5eff9e0bb43d5f[/localvideo]
花粉检测:
[localvideo]5fdbb2ebc32d313320b9aa69ea2099c1[/localvideo]
PM2.5烟雾检测:
[localvideo]c912e483604640356ef4580fc84b94c1[/localvideo]
因为项目出点问题,耽搁几天,虽然效果和预期有点差异,但基本功能都已经实现
-
发表了主题帖:
【2024 DigiKey 创意大赛】二月柳絮大作战项目-07控制外设I/O的输出控制
本帖最后由 Maker_kun 于 2024-11-3 14:45 编辑
查看原理图可以得到扩展IO引脚分布及注意事项:
EX_IO4、EX_IO5、EX_IO6、EX_IO7可以无条件使用
打开案例库:ESP32_IO_Expander
IIC引脚为IO47、IO48
修改代码如下:
#include <Arduino.h>
#include <ESP_IOExpander_Library.h>
#define EXAMPLE_CHIP_NAME TCA95xx_8bit
#define EXAMPLE_I2C_NUM (0)
#define EXAMPLE_I2C_SDA_PIN (47)
#define EXAMPLE_I2C_SCL_PIN (48)
#define _EXAMPLE_CHIP_CLASS(name, ...) ESP_IOExpander_##name(__VA_ARGS__)
#define EXAMPLE_CHIP_CLASS(name, ...) _EXAMPLE_CHIP_CLASS(name, ##__VA_ARGS__)
ESP_IOExpander *expander = NULL;
void setup()
{
expander = new EXAMPLE_CHIP_CLASS(EXAMPLE_CHIP_NAME,
(i2c_port_t)EXAMPLE_I2C_NUM, ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_000,
EXAMPLE_I2C_SCL_PIN, EXAMPLE_I2C_SDA_PIN);
expander->init();
expander->begin();
expander->pinMode(4, OUTPUT);
expander->pinMode(5, OUTPUT);
expander->multiPinMode(IO_EXPANDER_PIN_NUM_6 | IO_EXPANDER_PIN_NUM_7, OUTPUT);
expander->digitalWrite(4, LOW);
expander->digitalWrite(5, LOW);
expander->multiDigitalWrite(IO_EXPANDER_PIN_NUM_6 | IO_EXPANDER_PIN_NUM_7, LOW);
}
void loop()
{
expander->digitalWrite(4, HIGH);
expander->digitalWrite(5, HIGH);
expander->digitalWrite(6, HIGH);
expander->digitalWrite(7, HIGH);
delay(500);
expander->digitalWrite(4, LOW);
expander->digitalWrite(5, LOW);
expander->digitalWrite(6, LOW);
expander->digitalWrite(7, LOW);
delay(500);
}
让EX_IO4、EX_IO5、EX_IO6、EX_IO7不断切换开关状态
效果演示:
- 2024-11-02
-
回复了主题帖:
【2024 DigiKey创意大赛】职场提神法宝项目-作品提交
这一套成本多少钱?
- 2024-10-31
-
回复了主题帖:
【2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6驱动ws2812氛围灯
效果不错,期待成品
- 2024-10-29
-
发表了主题帖:
【2024 DigiKey 创意大赛】二月柳絮大作战项目——作品提交
二月柳絮大作战
作者:Maker_kun
一、作品简介
二月柳絮大作战主控板使用乐鑫科技ESP32-S3-LCD-Ev-Board,该开发板集成ESP32S3WiFi模块,同时开发板具备480*480的LCD液晶屏幕,对于用户界面设计非常友好;传感器使用sensrion公司的SPS30激光颗粒物传感器,可以感知PM2.5PM10以及颗粒物粒子大小,传感器可连续工作6年之久;空气状态显示采用ws2812LED构成8*8构成的点阵屏幕,可以直观通过颜色展示当前空气质量;负载采用继电器模块进行控制,比如开启净化器、开窗通风等设备。
二、系统框图
对于柳絮、花粉尘螨、真菌、动物皮屑都能存在空气中,影响空气质量,从而引起鼻炎等过敏症状。故检验空气中颗粒物是非常重要的,从空气颗粒物进行分析常见有PM2.5和PM10两种指标,PM2.5指颗粒物尺寸在2.5um及以下颗粒物,常见PM2.5能够长时间悬浮在大气中,并且可以被远距离传输,而PM10 是指10微米的颗粒物通常会较快地沉降下来,不易进行远距离传输,故对于检测PM2.5、PM10是非常重要的,本项目传感器使用瑞士Sensrion的SPS30,精度高寿命长。该系统有三部分组成:1、ESP32-S3-LCD-Ev-Board,负者采集传感器数据、显示数据、处理通讯、控制设备运行等2、传感器部分采用SPS30激光颗粒物传感器,采集空气中质量浓度数据3、控制部分,采用是4路继电器控制用电设备运行,如净化设备、通风设备、加湿设备等,同时控制部分带有显示空气质量状态的点阵LED,可以直观显示控空气质量状态。系统框架如下:
三、各部分功能说明
1、ESP32-S3-LCD-Ev-Board,作为该系统处理、显示、通讯、控制部分,采用成熟的乐鑫开发板解决方案,开发板内置ESP32S3、LCD触摸屏、IO Expander、TYPEC电源通讯接口,对于该项目控制引脚选择尤为重要。
通过SUB液晶屏接口可以获得I/O引脚的使用情况,这些被占用的引脚是无法使用的,尽量避免该引脚的使用。
用户可以使用的引脚为下图:I/O19、I/O20、I/O4、I/O47、I/O48,以及通过IIC芯片扩展的I/O接口,本项目使用I/O19、I/O20作为SPS30传感器的IIC通讯接口,I/O4作为驱动ws2812全彩LED的引脚,I/O47、I/O48作为扩展EX_OUT_ I/O引脚
IIC芯片扩展的I/O接口,使用的芯片为TCA9554,需要通过IIC(I/O47、I/O48)指令即可控制读取扩展I/O的状态
ESP32_IO_Expander可参考:https://bbs.eeworld.com.cn/thread-1296937-1-1.html
2、传感器SPS30,SPS30传感器是一款由Sensirion AG生产的空气传感器,主要用于监测和控制空气质量。该传感器采用激光散射技术进行颗粒物(PM)测量,并结合了Sensirion的创新抗污染技术,确保了测量的精准性和设备的耐用性。SPS30支持I²C和UART输出类型,具有10μg/m³的灵敏度,工作电压范围为4.5V至5.5V,工作温度范围为-10°C至60°C。此外,SPS30已通过MCERTS认证,适用于暖通空调和室内空气质量应用。
SPS30采用激光散射原理检测精度高,输出结果一致性好,而且寿命可连续工作6年之久
SPS30传感器通过激光器发射激光束,当空气中的颗粒物进入传感器内部时,这些颗粒物会散射激光束。传感器内的光敏元件会检测到这些散射光,并将其转换为电信号。通过分析这些信号,可以计算出空气中颗粒物的浓度和大小分布
根据颗粒物浓度可将空气化成不同等级,告知客户当前空气质量状态
详细内容可见帖子讲解:https://bbs.eeworld.com.cn/thread-1296929-1-1.html
3、ws2812、及继电器驱动
WS2812是一种智能外控集成LED光源,其控制电路与RGB芯片集成在一个5050封装的元器件中,构成一个完整的外控像素点。这种设计使得每个WS2812灯珠可以独立控制其颜色和亮度,支持RGB无极调色,并且每个像素点能够实现256级亮度显示,完成16777216种颜色的全真色彩显示。
WS2812的特点包括:
1)单线串行接口:WS2812采用单线串行通信协议,通过一根信号线即可完成数据的接收与解码,简化了外部接口的设计。
2)内置信号整形电路:每个像素点收到信号后,经过波形整形再输出,确保线路波形畸变不会累加,从而保证信号传输的稳定性和一致性。
3)内置上电复位和掉电复位电路:这些电路确保了设备在电源恢复时能够正确初始化。
4)高亮度和高一致性:WS2812的每个像素点可以实现256级亮度显示,提供高度一致的色彩照明。
5)低功耗和长寿命:WS2812具有低驱动电压、环保节能、高亮度、大散射角、良好一致性、低功耗和长寿命等优点。
6)级联能力:WS2812支持通过单线级联端口传输信号,可以在任意两点间距离不超过5米时无需增加任何电路即可传输信号,且在刷新率为30fps时,级联数量不少于1024个像素点。
7)WS2812广泛应用于LED全彩发光字灯串、LED全彩模组、LED全彩软灯条硬灯条、LED护栏管、LED点光源、LED像素屏、LED异形屏以及各种电子产品和电器设备的跑马灯等
4、软件搭建
1)软件搭建使用Arduino IDE进行搭建,使用的库有ESP_Panel_Conf、lvgl、sps30、Adafruit_NeoPixel等
开发板使用默认ESP32S3 Dev Module开发板作为项目开发的软件开发板
程序编译完成界面:
具体内容可参考帖子:https://bbs.eeworld.com.cn/thread-1295552-1-1.html
2)液晶屏幕驱动
开发板采用的480*480液晶屏幕自带触摸芯片,只需要安装lvgl进行相关设置即可,这部分花费时间较多,出现问题也较多,不过最后都解决了
具体内容可参考帖子:https://bbs.eeworld.com.cn/thread-1295552-1-1.html
3)传感器驱动
具体内容可参考帖子:https://bbs.eeworld.com.cn/thread-1296929-1-1.html
4)ws2812驱动
板载内置一颗ws2812,驱动引脚I/O4
驱动效果:板载ws2812LED成功显示
具体内容可参考帖子:https://bbs.eeworld.com.cn/thread-1293230-1-1.html
5)扩展IO继电器控制
EX_IO4、EX_IO5、EX_IO6、EX_IO7,需要配置IIC驱动
#define EXAMPLE_CHIP_NAME TCA95xx_8bit
#define EXAMPLE_I2C_NUM (0)
#define EXAMPLE_I2C_SDA_PIN (47)
#define EXAMPLE_I2C_SCL_PIN (48)
具体内容可参考帖子:https://bbs.eeworld.com.cn/thread-1296937-1-1.html
四、作品源码
程序源码:https://download.eeworld.com.cn/detail/eew_TKwwQ7/634884
五、作品功能演示视频
视频链接:https://training.eeworld.com.cn/video/41509
六、项目总结
该项目使用Arduino IED进行ESP32-S3-LCD-Ev-Boar相关LVGL开发,很多资料不全面,没有参考成功案例作为参考,需要自己花时间进行验证相关功能,花费一定时间进行开发,整个过程比较坎坷,同时在使用传感器过程由于SPS30传感器对默认IIC有影响,需要修改SPS30底层驱动代码,这个过程不仅深入了解Arduino架构,而且对自己能力提升有很大帮助
【2024 DigiKey 创意大赛】二月柳絮大作战项目——物料开箱
【2024 DigiKey 创意大赛】二月柳絮大作战项目-01点亮板载全彩灯
【2024 DigiKey 创意大赛】二月柳絮大作战项目-02获取ESP32-S3-LCD-Ev-Board触摸参数
【2024 DigiKey 创意大赛】二月柳絮大作战项目-03失败点亮ESP32-S3-LCD-Ev-Board液...
【2024 DigiKey 创意大赛】二月柳絮大作战项目-04驱动ESP32-S3-LCD-Ev-Board液晶屏
【2024 DigiKey 创意大赛】二月柳絮大作战项目-05获取传感器SPS30传感器数据
【2024 DigiKey 创意大赛】二月柳絮大作战项目-06传感器数据显示在液晶屏上
【2024 DigiKey 创意大赛】二月柳絮大作战项目-07控制外设I/O的输出控制
【2024 DigiKey 创意大赛】二月柳絮大作战项目-08项目演示效果
七、其他
- 2024-10-25
-
回复了主题帖:
2024 DigiKey创意大赛】职场提神法宝项目-ESP32-C6核心板的扩展板绘制
PCB棱角没有做倒角处理容易划到手
- 2024-10-24
-
发表了主题帖:
【2024 DigiKey 创意大赛】二月柳絮大作战项目-06传感器数据显示在液晶屏上
本帖最后由 Maker_kun 于 2024-11-3 14:46 编辑
成功获取传感器数据后,即可进一步操作LCD屏幕相关参数
lvgl初始化成功
成功传感器获取数据
下面进行lvgl相关操作:
创建两个标签显示传感器数据
static void lv_example_label(void) {
label_PM25 = lv_label_create(lv_scr_act());
/* 创建PM2.5数据显示标签 */
lv_label_set_text(label_PM25, ""); /* 设置文本 */
/* 设置标签位置 */
lv_obj_align(label_PM25, LV_ALIGN_TOP_MID, 0, 100);
}
static void lv_example_label2(void) {
label_PM = lv_label_create(lv_scr_act());
/* 创建PM颗粒物尺寸数据显示标签 */
lv_label_set_text(label_PM, ""); /* 设置文本 */
/* 设置标签位置 */
lv_obj_align(label_PM, LV_ALIGN_TOP_MID, 0, 80);
}
更新传感器相关数据显示
lv_label_set_text_fmt(label_PM25, " PM25 : %.2f ", m.mc_2p5); /* 更新PM2.5数据 */
lv_label_set_text_fmt(label_PM, " PM_size : %.2f ", m.typical_particle_size); /* 更新颗粒物尺寸数据 */
获取传感器数据演示:
参考资料:
https://blog.csdn.net/Teminator_/article/details/141742778
http://lvgl.100ask.net/9.0/examples.html#a-very-simple-hello-world-label
https://blog.csdn.net/qq_24629659/article/details/142819364
-
发表了主题帖:
【2024 DigiKey 创意大赛】二月柳絮大作战项目-05获取传感器SPS30传感器数据
本帖最后由 Maker_kun 于 2024-11-3 21:07 编辑
SPS30传感器是Sensirion公司推出的一款光学颗粒物(PM)传感器,代表了该领域的一项技术突破。其测量原理基于激光散射,并结合了Sensirion的创新抗污染技术,确保了从首次使用到超过八年使用寿命期间的准确测量。
SPS30传感器具有以下特点:
高精度和长期稳定性:SPS30传感器利用先进的算法和抗污染技术,使其在长期使用过程中保持高精度和稳定性。 多接口支持:该传感器提供UART和I2C两种通信接口,适用于不同的应用场景。对于超过20厘米的连接电缆,建议使用UART接口以增强抗电磁干扰能力。
小型化设计:SPS30传感器体积小巧,尺寸仅为41 x 41 x 12 mm³,适合用于空间受限的应用场景,如壁挂式或紧凑型空气质量检测设备。
应用广泛:SPS30传感器被广泛应用于空气净化器、暖通空调设备、需求控制通风系统、空调、空气质量和环境监测器以及智能家居和物联网设备等领域。
认证与环保:SPS30传感器通过了MCERTS认证,并符合欧盟最新的环保标准,如ROHS和REACH指令,确保其绿色环保无污染。
SPS30传感器凭借其卓越的测量性能、长期稳定性、灵活的接口选择和广泛的应用领域,成为空气质量监测和控制领域的重要工具。
PM2.5即细颗粒物,是指空气动力学当量直径小于或等于2.5微米的颗粒物。这种颗粒物能够较长时间悬浮在空气中,并对空气质量及能见度产生重要影响。PM2.5的来源可以分为自然源和人为源。自然源包括风扬尘土、火山灰、森林火灾和海盐等;人为源则包括一次颗粒物(如燃煤烟尘、工业排放)和二次颗粒物(通过气体前体物的化学反应形成)。 PM2.5的化学成分复杂,主要包括可溶性粒子(如F-, Cl-, Br-, NH4+, Na+, K+等)、无机元素(如自然尘、金属元素)以及含碳物质(如有机碳OC、元素碳EC和多环芳香烃等)。这些成分使得PM2.5具有较高的毒性,长期暴露于高浓度PM2.5环境中会增加呼吸道疾病、心血管疾病和肺癌的风险。 在测量PM2.5时,常用的方法有重量法、β射线吸收法、微量振荡天平法和光散射法。其中,光散射法因其测量速度快、灵敏度高而被广泛应用。 PM2.5对健康的影响主要体现在其能够深入肺部并进入血液系统,从而影响呼吸系统和心血管系统。它还可能吸附有机污染物和重金属,增加致癌和基因突变的风险。因此,控制PM2.5的浓度对于改善空气质量及保护公众健康至关重要。
SPS30颗粒物激光散射检测工作原理:
将不同颗粒转换不同电信号:
一致性超级强:
不同PM2.5的特性:
空气质量与PM2.5颗粒物的关系:
欧洲标准:
美国标准:
官方库使用wire IIC通道,但是如果使用wire会占用LCD屏幕驱动
void sensirion_i2c_init()
{
Wire.begin();
}
void sensirion_i2c_release(void)
{
}
int8_t sensirion_i2c_read(uint8_t address, uint8_t *data, uint8_t count) {
uint8_t readData[count];
uint8_t rxByteCount = 0;
// 2 bytes RH, 1 CRC, 2 bytes T, 1 CRC
Wire.requestFrom(address, count);
while (Wire.available()) { // wait till all arrive
readData[rxByteCount++] = Wire.read();
if (rxByteCount >= count)
break;
}
memcpy(data, readData, count);
return 0;
}
int8_t sensirion_i2c_write(uint8_t address, const uint8_t *data,
uint8_t count) {
Wire.beginTransmission(address);
Wire.write(data, count);
Wire.endTransmission();
return 0;
}
#endif /* SPS30_USE_ALT_I2C */
需要进一步修改官方库,进行wire1通道,修改官方库确实需要很多精力和时间
需要将wire更换成wire1即可
获取传感器数据:
参考文献:
https://news.eeworld.com.cn/medical_electronics/2018/ic-news08168920.html
https://ehs.uci.edu/enviro/air-quality/current-air-quality.php
https://www.zhihu.com/question/20173158/answer/2001770330?utm_campaign=shareopn&utm_content=group2_Answer&utm_medium=social&utm_psn=1832705139284262913&utm_source=wechat_session
- 2024-10-12
-
回复了主题帖:
EEWorld邀你来拆解(第14期)——智能电动口罩综合拆解测评
用料还是比较实在的
- 2024-10-09
-
发表了主题帖:
【2024 DigiKey 创意大赛】二月柳絮大作战项目-04驱动ESP32-S3-LCD-Ev-Board液晶屏
本帖最后由 Maker_kun 于 2024-10-30 22:26 编辑
需要安装lvgl、ESP32_Display_Panel,具体可参考:
【2024 DigiKey 创意大赛】二月柳絮大作战项目-02获取ESP32-S3-LCD-Ev-Board触摸参数 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn)
打开案例库出现错误:
根据提示需要打开官方教程:
打开官方案例库可以发现相应指导说明:
如何使用:
选择配置开发板:
根据开发板类型选择和驱动参数:
提示需要安装LVGL版本不超过8.3.9
需要手动配置相关库文件:
配置完成即可打开案例库进行编程:
添加代码:
代码如下:
lv_obj_t* chart;
chart = lv_chart_create(lv_scr_act()); // 创建Chart对象
lv_obj_set_size(chart, 300, 300); // 设置大小
lv_obj_center(chart); //居中显示
lv_chart_set_type(chart, LV_CHART_TYPE_LINE); /*Show lines and points too*/
/*Add two data series*/
lv_chart_series_t* ser1 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y); // 创建第1条chart series,设置红色
lv_chart_series_t* ser2 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_GREEN), LV_CHART_AXIS_SECONDARY_Y); // 创建第1条chart series,设置绿色
/*Set the next points on 'ser1'*/
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 10);
lv_chart_set_next_value(chart, ser1, 30);
lv_chart_set_next_value(chart, ser1, 70);
lv_chart_set_next_value(chart, ser1, 90);
/*Directly set points on 'ser2'*/
ser2->y_points[0] = 90;
ser2->y_points[1] = 70;
ser2->y_points[2] = 65;
ser2->y_points[3] = 65;
ser2->y_points[4] = 65;
ser2->y_points[5] = 65;
ser2->y_points[6] = 65;
ser2->y_points[7] = 65;
ser2->y_points[8] = 65;
ser2->y_points[9] = 65;
lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_Y, 5, 2,3 ,2, true, 40); // y轴tick显示,显示3个刻度值
lv_chart_refresh(chart); /*Required after direct set*/
项目文件:
仿真界面:
实物照片:
项目代码:
- 2024-10-06
-
回复了主题帖:
【Follow me第二季第2期】Arduino UNO R4 WiFi全部任务汇总学习+Labview+自己扩展项目
zxcvbnm751120 发表于 2024-10-5 17:04
正在进行电路开发设计中,学习参考借签,不错,感谢分享!
Arduino Uno R4开发板确实很强大,功能很丰富
-
回复了主题帖:
【2024 DigiKey 创意大赛】进度分享,86面板开发指南
能分享一下工程文件吗?按照你的方法,还是报错:Sad:
- 2024-10-04
-
回复了主题帖:
【Follow me第二季第2期】Arduino UNO R4 WiFi全部任务汇总学习+Labview+自己扩展项目
lijinlei 发表于 2024-10-4 09:16
LabVIEW工程不错啊,要是能采集波形保存下来就好了。另外HomeAssistant镜像下载国内可以参考How to run Hom ...
在labview波形图右击有选项可以保存数据的,HA的搭建确实参考这个案例,很有用