ylyfxzsx

  • 2024-12-24
  • 发表了主题帖: 跨越时间的长河,Chroma POWER ANALYZER

    闲来无事,去本地的废品站溜达,看到这么一个老爷爷,提溜回来研究,顺手来个拆解给大伙儿观摩,看看我们的弯弯厂20几年前的仪器设备制造手艺,大厂在PCB布局和原件排列上还是相当不错的。 话不多说,大伙儿看图吧。                                                        

  • 发表了主题帖: 日本菊水PLZ334电子负载拆解

    外资厂里处理示波器,处理报废仪器设备,我提溜回来研究,不过这个没有惨遭毒手,功能外观完好,就是有点灰,拿风机吹一下,还是很不错的,顺手来个拆解给大伙儿观摩,大厂在PCB布局和原件排列上还是相当不错的。 话不多说,大伙儿看图吧。                                

  • 发表了主题帖: 安捷伦DSO5034示波器拆解

    外资厂里处理示波器,手欠的货把好好个示波器拿电钻把主板搞了物理破坏,我提溜回来研究,顺便来个拆解给大伙儿观摩,大厂在PCB布局和原件排列上还是相当不错的。 话不多说,大伙儿看图吧。                                    

  • 发表了主题帖: 泰克TDS3012B示波器拆截图

    最近把示波器拿出来清灰除尘,顺便来个拆解给大伙儿观摩,大厂在PCB布局和原件排列上还是相当不错的。话不多说,大伙儿看图吧。                        

  • 2024-12-23
  • 发表了主题帖: 分享个简易的ARM汇编入门教程

    https://azeria-labs.com/writing-arm-assembly-part-1/ 打开后看右侧列表,一共做了7期   末尾他们还提供了一个ARM汇编指令高清壁纸 https://www.armbbs.cn/forum.php?mod=viewthread&tid=121001 最后附PDF下载

  • 2024-12-15
  • 回复了主题帖: 防反接电路,两个PMOS接在电源的正极,同时两个PMOS的G极受Q5的控制,D4、D5、Q5...

    如果你不接,就把R6 R8接地,这样通电就MOS就导通,相当于给低电平,注意的是MOS就不受控了,通电正确就导通,你上面的电路是通过Q5来控制MOS的,高电平MOS打开,低电平MOS关闭,通过Q5的导通控制MOS的栅极。

  • 2024-11-10
  • 回复了主题帖: STM32和无源蜂鸣器播放声音的问题

    如下图所示,是蜂鸣器与STM32连接的电路图,程序中的“PBeep”就是图中的“BEEP”IO口的宏定义,一般在头文件中进行定义: #define PBeep PBout(8)     先上网找个谱子,仔细看看,搞定两个数组,一个音调,一个音长。 查看乐谱,如下:        真到了转换简谱到数组的时候,这时就能发现选择儿歌的好处了,所有的音调都在tone[]数组中,也就是说,在低音7到高音5之间。让我们再看一遍这个数组:       //             低7  1   2   3   4   5   6   7  高1 高2  高3 高4 高5 不发音     uc16 tone[] = {247,262,294,330,349,392,440,494,523,587,659,698,784,1000};//音频数据表   #include "beep.h" int melody[] = {50, 50, 50, 50, 200, 200, 200, 400, 400, 500, 500, 500}; void BEEP_Init(void) {        GPIO_InitTypeDef  GPIO_InitStructure;     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);     //使能A端口时钟     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //推挽输出     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz     GPIO_Init(GPIOB, &GPIO_InitStructure);      //初始化GPIOD3,6     GPIO_SetBits(GPIOB,GPIO_Pin_5);     } void Sound(u16 frq) {     u32 time;     if(frq != 1000)     {         time = 500000/((u32)frq);         PBeep = 1;         delay_us(time);         PBeep = 0;         delay_us(time);     }else         delay_us(1000); } void Sound2(u16 time) {     PBeep = 1;     delay_ms(time);     PBeep = 0;     delay_ms(time); } void play_successful(void) {     int id=0;     for(id = 0 ;id < 12 ;id++)     {         Sound2(melody[id]);     } } void play_failed(void) {     int id=0;     for(id = 11 ;id >=0 ;id--)     {         Sound2(melody[id]);     } } void play_music(void) {     //              低7  1   2   3   4   5   6   7  高1 高2 高3 高4 高5 不发音     uc16 tone[] = {247,262,294,330,349,392,440,294,523,587,659,698,784,1000};//音频数据表     //红尘情歌     u8 music[]={5,5,6,8,7,6,5,6,13,13,//音调                 5,5,6,8,7,6,5,3,13,13,                 2,2,3,5,3,5,6,3,2,1,                 6,6,5,6,5,3,6,5,13,13,                 5,5,6,8,7,6,5,6,13,13,                 5,5,6,8,7,6,5,3,13,13,                 2,2,3,5,3,5,6,3,2,1,                 6,6,5,6,5,3,6,1,                     13,8,9,10,10,9,8,10,9,8,6,                 13,6,8,9,9,8,6,9,8,6,5,                 13,2,3,5,5,3,5,5,6,8,7,6,                 6,10,9,9,8,6,5,6,8};         u8 time[] = {2,4,2,2,2,2,2,8,4, 4, //时间                 2,4,2,2,2,2,2,8,4, 4,                  2,4,2,4,2,2,4,2,2,8,                 2,4,2,2,2,2,2,8,4 ,4,                  2,4,2,2,2,2,2,8,4, 4,                  2,4,2,2,2,2,2,8,4, 4,                  2,4,2,4,2,2,4,2,2,8,                 2,4,2,2,2,2,2,8,                 4, 2,2,2, 4, 2,2,2, 2,2,8,                 4, 2,2,2,4,2,2,2,2,2,8,                 4, 2,2,2,4,2,2,5,2,6,2,4,                 2,2 ,2,4,2,4,2,2,12};         u32 yanshi;     u16 i,e;     yanshi = 10;     for(i=0;i<sizeof(music)/sizeof(music[0]);i++){         for(e=0;e<((u16)time)*tone[music]/yanshi;e++){             Sound((u32)tone[music]);         }         } }   #ifndef __BEEP__H #define __BEEP__H #include "sys.h" #include "stdlib.h"       #include "delay.h" //定义GPIOB的位地址变量宏,位输入宏,输出宏 #define PBeep PBout(5) void BEEP_Init(void); void Sound(u16 frq); void Sound2(u16 time); void play_music(void); void play_successful(void); void play_failed(void); #endif  

  • 2024-10-22
  • 回复了主题帖: 【2024 DigiKey 创意大赛】室内空气质量监测新风系统

    秦天qintian0303 发表于 2024-10-22 09:12 你这模块用的是最多的,怎么没有选择个带屏的开发板啊,还可以显示多好啊 没有仔细了解模块的PDF,计划不如变化,现在看来当初选择ESPP32带屏的主控板是最合适的,没有想到博世的IAQ库不能用Keil

  • 2024-10-13
  • 发表了主题帖: 【2024 DigiKey 创意大赛】室内空气质量监测新风系统

    室内空气质量监测新风系统 作者:ylyfxzsx   [localvideo]765a0661cd170e16b595b997e6d90051[/localvideo]   首先,很荣幸入选参加这次活动,有机会能展示自己的想法和成果。感谢EE论坛与得捷电子合作举办的这次活动,感谢上海得捷电子的慷慨赞助! 这次我带来的是一款带室内环境空气质量监测的新风系统方案解决产品   一.需求分析:   我们通常所说的,室内环境一般泛指家庭、办公室、工厂、影院、餐厅、商场等密闭或半密闭环境。由于室内或室外存在连续或间歇性排放的空气污染源,在通风不良的条件下,污染物会在密闭空间累积,达到一定的程度会造成对人体的危害,甚至致人死亡的可能性。 随着社会环境的越来越都市化的改变,越来越多的人们告别乡村,选择进城务工和生活。据不完全统计,每人每天约 90%的时间处于室内的环境中,室内空气质量之良莠,直接影响生活质量及工作效率,因而室内空气污染物正逐渐受到人们的重视。 有效监测室内空气质量,进行危害风险评估,积极采取相关措施,势在必行。   二.室内环境空气污染的主要来源与危害 主要来源可以分为:化学污染、物理污染、生物污染三个方面。   1.化学污染 人造板材、各种油漆、涂料、粘合剂及家具等其主要污染物是甲醛、苯、二甲苯等有机物和氨、一氧化碳、二氧化碳等无机物   2. 物理污染 主要来源于建筑物本身、花岗岩石材、部分洁具及家用电器等,其主要污染物是放射性物质和电磁辐射,噪声等。   3. 生物污染   室内来源人们在室内的生活和活动;人体排出的微生物:现代家居中空调的使用;   室外来源由于大气环境的日益恶化,生活污水、乱扔的垃圾以及工厂排放的废弃物也能产生出大量的微生物,并伴随通风与空调送风进入室内;室外微生物还可以通过人员的流动而进入室内。   三. 室内空气污染治理的措施   1消除和控制室内污染源 2增加新风量、发挥新风效应 3优化设计对微生物污染的控制,强调对室内相对湿度控制及采取相应的技术措施。设备选择和管道的设计、安装的重点在于尽量减少尘埃污染和微生物污染,如减少污染源、防止尘埃和湿气的积累建筑设计要遵循生态环境的设计原理   根据上面的简报,这里我们可以得到一个最简单的结论就是,改善普通的办公和居住室内环境一个最简单有效的方法就是,保持通风换气,其最简单的办法就是开窗通风。 然而在实际的工作和生活环境中,空气质量没到非常恶劣令人难以忍受的程度,都不会想着去加以主动改善,或者因为缺乏必要的检测和警示设备,往往被人们忽略。 那么设计一款带室内环境监测系统的新风系统,可广泛用于大厅、会议室、商场等人员较密集的场所以及办公室、酒店等人员停留时间较长的场所,进行主动检测,自动控制新风系统设备运行,对人员环境的空气质量予以改善。 可以实时监测甲醛、粉尘、温度等信息,所获数据真实、准确,再根据检测的数据,在达到预置的警告数据时自动控制风机进行通风排气,或者控制其他改善室内环境空气净化设备运行,即可为改善室内工作生活环境的空气质量而保驾护航和提供科学依据。   四.室内空气监测新风系统方案物料简介   本次设计中,最开始我是打算采用F411或者L476作为主控芯片的,后来经过比较采用了SC20100S FEZ-ARM® Cortex®-M7 MPU评估板来实现这个方案。因为该评估板采用了ST的M7芯片,更快的性能和速度及大容量的FLASH空间为后续的功能扩展和升级提供了更多的可能。 其板载的WIFI模块,更是如虎添翼,为后续通过软件更迭,升级,整个系统通过互联网设置参数,远程控制等提供了硬件保障。 本次设计方案的主角清单:   1.SC20100S FEZ-ARM® Cortex®-M7 MPU评估板    厂商:GHI Electronics  得捷料号:SCC-FTHR-B   2.BME680气体,湿度,压力,温度传感器Qwiic,STEMMA QT平台评估扩展板   厂商:        Adafruit  得捷料号:3660   3.SGP30-气体,湿度,室内空气质量(IAQ)评估板   厂商:        Adafruit  得捷料号:3709   可以看到,本次选用的物料,已经包含了主要的MCU控制器和基础的传感器套件,只需附加上显示和简单的外围控制电路即可组成一个带室内环境监测系统的新风系统解决方案,下面对所选的物料做一个详细的了解:   BME680气体,湿度,压力,温度传感器Qwiic,STEMMA QT平台评估扩展板     BME680是一个集成的环境传感器,专为移动应用和可穿戴设备而开发,其大小和低功耗是关键需求。扩大博世Sensortec现有的环境传感器系列。 BME680集成了独立的高线性和高精度传感器,用于气体、压力、湿度和温度。   它由一个8针的金属盖子3.0x3.0x0.95 mm3 LGA包组成,根据具体的操作模式、长期稳定性和高EMC鲁棒性设计为优化消费。   BME680内的气体传感器可以探测到广泛的气体,以测量个人油井的室内空气质量,BME680可以检测到的气体包括:挥发性有机化合物(挥发性有机化合物),从油漆(如甲醛)、喷漆、油漆剥离器、清洁用品、家具、办公设备、胶水、粘合剂和酒精。   湿度传感器具有最佳的响应时间,支持对新兴应用程序的性能需求,例如上下文感知,以及在广泛的温度范围内的高精度压力传感器是一种absolute气压传感器,在很低的噪音下具有极高的精度和分辨率。   该集成式温度传感器已经过优化,噪音低,分辨率高。它主要用于气体、压力和湿度传感器的温度补偿,也可用于估计环境温度。BME680支持一套完整的操作模式,这为优化设备的功耗、分辨率和过滤性能提供了大的灵活性。   新兴应用如家庭自动化、室内导航、个性化气象站和创新运动和健身工具,需要一个具有快速响应时间的气体传感器,具有较高相对精度和低TCO的压力传感器,结合快速响应、高准确度、相对湿度和环境温度测量。BME680是适合这种气压计应用的设备特性优良的相对精度±0.12 hPa(相当于±1米高度差)和一个偏移量温度系数(TCO)只有1.5 Pa/K(相当于12.6厘米/K)   BME680 环境传感器 集成气体传感器 空气质量传感器应用: 室内空气质量测量 个性化的气象站 语境意识,如皮肤水分检测、空间变化检测 健康监测/幸福 警告有关干燥或高温 体积和气流的测量 家庭自动化控制(如空调) GPS增强(如time-to-first-fix改进,航迹推算,斜率检测) 室内导航(地板的变化检测、电梯检测) 高度跟踪和体育活动消耗的热量   BME680 环境传感器 集成气体传感器 空气质量传感器传感器操作:BME680支持I2C和SPI(3线/4线)数字、串行接口。   该传感器可在三种功率模式下运行:睡眠模式、正常模式和强制模式。在正常模式下,传感器会自动在测量和待机时间之间循环。当使用BME680内置的IR过滤器时,建议使用这种模式,当短期干扰(例如吹入传感器)需要过滤。 在强制模式下,传感器在请求上执行单个测量,然后返回睡眠模式。这种模式适用于需要低采样率或基于主机的同步的应用程序。 为适应用户需求,对数据率、噪声、响应时间和电流消耗进行调整;可以选择多种采样模式、滤波模式和数据速率。通过应用几个短期干扰滤波器设置,传感器可以以一种很灵活的方式进行编程,以适应应用程序和电源管理的要求。 BME680 环境传感器 集成气体传感器 空气质量传感器软件:BME680完全校准了所有传感器组件。对于压力计算,BoschSensortec的高度内容。提供商ACP2.0软件作为BME680的软件包。它以好的精度计算高度。ACP2.0软件采用海平面气压来计算海拔高度,通过地质校正来补偿地球的非球性,并将其高度与GPS模块提供的当前海拔高度进行比较。 BME680 环境传感器 集成气体传感器 空气质量传感器系统的兼容性:BME680的设计初衷是为了适应现代移动消费电子设备。除了小排量和低功耗外,BME680还为VDD和VDDIO供应电压提供了很广泛的范围。 博世Sensortec的BME680将广泛的经验和可性结合在了消费者应用上。   SGP30-气体,湿度,室内空气质量(IAQ)评估板     SGP30是一款环境传感器,由瑞士的Sensirion公司开发。它是一种多功能气体传感器,可以测量室内空气中的二氧化碳(CO2)和挥发性有机化合物(VOCs)浓度。SGP30使用了先进的传感器技术,能够提供准确的空气质量监测数据。它可以应用于室内空气质量监测、智能家居、室内空气净化等领域。   SGP30传感器的工作原理基于电化学气体传感技术和光学测量技术。对于二氧化碳(CO2)浓度的测量,SGP30传感器采用了电化学气体传感技术。它包含一个电化学传感器元件,该元件具有一个氧化物电极和一个参比电极。当空气中的CO2分子进入传感器,并与氧化物电极上的电解质发生反应时,会产生电流变化。通过测量这种电流变化,可以确定CO2浓度的值。   对于挥发性有机化合物(VOCs)浓度的测量,SGP30传感器利用了光学测量技术。它包含一个光敏元件,该元件能够感知特定波长的光线。当空气中的VOCS分子进入传感器,并与传感器内部的氧化剂发生反应时,会产生氧化反应产物。这些产物会吸收特定波长的光线,导致光敏元件接收到的光信号发生变化。通过测量这种光信号的变化,可以确定VOCs浓度的值。 SGP30传感器通过对CO2和VOCs浓度的测量,结合内部的算法和校准数据,可以提供准确的空气质量监测数据。它还具有低功耗、快速响应和长寿命等特点,适用于各种应用场景。   数据范围:   TVOC: 0~60000 ppb 氧化碳:400~60000ppm   主要特点:   1.多功能传感器:SGP30可以同时测量室内空气中的二氧化碳(CO2)和挥发性有机化合物(VOCs)浓度。这使得它在空气质量监测和室内环境控制方面非常有用。 2.高精度测量:SGP30传感器采用先进的传感器技术,能够提供准确的测量结果。它具有较低的测量误差和良好的重现性,可以满足对精度要求较高的应用。 3.快速响应时间:SGP30传感器具有快速的响应时间,能够迅速检测到空气中的CO2和VOCs浓度变化。这使得它在实时监测和控制环境中非常有效。 4.低功耗设计:SGP30传感器采用低功耗设计,能够在节能模式下工作,减少能源消耗。这对于需要长时间运行的应用非常重要。 5.长寿命:SGP30传感器具有长寿命,能够在持续使用的情况下保持稳定的性能。这使得它在长期监测和控制应用中非常可靠。 6.简单集成:SGP30传感器具有简单的接口和通信协议,易于与其他设备和系统集成。它支持标准的I2C接口,可以方便地与微控制器和其他电子设备连接。   典型应用:   1.室内空气质量监测:SGP30可以监测室内空气中的VOC和CO2浓度,帮助人们了解室内空气的质量,并采取相应的措施来改善室内环境。 2.智能家居系统:SGP30可以集成到智能家居系统中,通过监测室内空气质量,自动调节通风系统、空气净化器等设备,以提供更舒适和健康的居住环境。 3.室内空气净化器:SGP30可以与空气净化器结合使用,根据监测到的VOC和CO2浓度,自动调节净化器的工作模式和风速,以提高净化效果。 4.呼吸器健康监测:SGP30可以用于监测呼吸器设备中的CO2浓度,帮助人们了解呼吸器的工作状态和效果并及时采取措施进行调整。 5.室内空气质量报警系统:SGP30可以与报警系统结合使用,当监测到室内空气中的VOC或CO2浓度超过安全范围时,系统会发出警报,提醒人们采取相应的措施。   SC20100S FEZ-ARM® Cortex®-M7 MPU评估板  这款开发板采用了STM32H743VIT6作为主芯片,该系列产品集成了工作频率高达480 MHz的Arm® Cortex®-M7内核(具有双精度浮点单元)。与 STM32F7 产品线相比,其动态功耗效率提升了两倍(运行模式下)。在 400 MHz 的 CPU主频 下,从 Flash 执行程序时,STM32H750 超值系列能够实现 2020 CoreMark/856 DMIPS 的性能,利用其 L1 缓存实现了零等待执行。DSP 指令集和双精度 FPU 扩大了其应用范围。得益于 L1 缓存(16 KB + 16 KB 的指令缓存和数据缓存),即使使用外部存储器也不会带来性能损失。 可以看到,该开发板性能足够强大,1M的RAM,2M的FLASH空间,且GPIO引出也足够使用,此外还附带了一个WIFI模块,非常适合后期扩展功能。STM32H743/753 系列产品线拥有 Cortex-M7 内核(带双精度浮点单元)性能,运行频率高达 480 MHz。与 STM32F7 产品线相比,其动态功耗   BH1750光照传感器模块   1、简介  BH1750是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化。BH1750的内部由光敏二极管、运算放大器、ADC采集、晶振等组成。对应广泛的输入光范围(相当于1-65535lx),最小误差变动在土20%,而且受红外线影响很小。   2.工作原理   BH1750的内部由光敏二极管、运算放大器、ADC采集、晶振等组成。PD二极管通过光生伏特效应将输入光信号转换成电信号,经运算放大电路放大后,由ADC采集电压,然后通过逻辑电路转换成16位二进制数存储在内部的寄存器中(光照越强,光电流越大,电压就越大)。   3.产品特点   >支持I2CBUS接口 >接近视觉灵敏度的光谱灵敏度特性 >输出对应亮度的数字值 >对应广泛的输入光范围。(相当于1-65535lx) >通过降低功率功能,实现低电流化。 >通过50Hz/60Hz除光噪音功能实现稳定的测定。 >支持1.8v逻辑输入接口。 >无需其他外部件。 >光源依赖性弱。 >有两种可选的I2Cslave地址。 >可调的测量结果影响较大的因素为光入口大小。 >使用这种功能计算1.1lx到100000lx马克斯/分钟的范围。 >最小误差变动在±20%。 >受红外线影响很小。     DS3231实时时钟模块   DS3231是低成本、高精度I2C实时时钟(RTC),具有集成的温补晶振(TCXO)和晶体。该器件包含电池输入端,断开主电源时仍可保持的计时。集成晶振提高了器件的长期度,并减少了生产线的元件数量。DS3231提供商用级和工业级温度范围,采用16引脚300mil的SO封装。RTC保存秒、分、时、星期、日期、月和年信息。少于31天的月份,将自动调整月末的日期,包括闰年的修正。时钟的工作格式可以是24小时或带/AM/PM指示的12小时格式。提供两个可设置的日历闹钟和一个可设置的方波输出。地址与数据通过I2C双向总线串行传输。精密的、经过温度补偿的电压基准和比较器电路用来监视VCC状态,检测电源故障,提供复位输出,并在必要时自动切换到备份电源。另外,/RST监视引脚可以作为产生μP复位的手动输入。     五.硬件实物连接图    由于在选型时没做好功课,光奔着M7去了,结果到手后发现该板子和我好像有点水土不服,在去官方页面一番了解后。发现这个评估板,又自己一套独特的玩法,查看原理图后,发现其JTAG引脚啥的都没有引出来。本身自己作为硬件出身的,我也懒得研究他们的一套打法了,干脆一不做二不休,就着芯片自己画个板子得了。   如图所示,当然我不是说这个TinyCLROS不好,因为要去啃一大堆文档啥的,然后还要去费心劳神的琢磨,还是用STM32CubeMX香,回头慢慢研究他们的系统也是可以的   于是乎花了一天时间,自己画了个板子,这样用起来更舒服,顺道感谢下嘉立创,一个月2款免费的板子,可以打样,连快递费都包了。       花了两天时间,板子就打回来,就下来就是移花接木,焊接原件了。           连接好STLINK,打开STVP,来个全片擦除试一试,连接板子成功,一切正常,接下来就可以愉快的码代码了。为了方便调试和读数,我连接了一个SPI接口的128x64x显示屏。   然而经过采用连接模块测试后,我发现了一个非常悲催的问题就是,BME680的IAQ库好像对Keil很不友好,通过网络查询,好像是说博世的IAQ不支持Keil环境下开发使用,如果不能使用IAQ算法库,这个BME680就算是浪费材料了。然后博世的SDK包我下载后发现其ESP8266可以直很好的使用,官方的例程包中就直接是支持ESP8266的。   正好手头有ESP8266 NODEMCU的板子,经过考虑,干脆采用ESP8266做传感器集合进行数据采集,通过Blynk手机端APP做远端控制和手机显示各项数据,然后串口发送数据到H743做更进一步处理也不是未尝不可。经过一番忙碌,又找了BH1750和DS321 RTC模块,来了一个大杂烩,下图是搭建起来的效果,I2C复用,经过测试完全OK。       硬件搭建完毕,那么说一下接下来就是进行代码编写和硬件调试。 采用ESP8266(Node MCU  ),搭配BME680传感器并使用Bosch BSEC空气质量算法库来获取温湿度、气压以及空气质量信息IAQ,通过SGP30传感器获取TVOC CO2数据,使用BH1750获得室内光照度信息,ESP8266通过WIFI连接后,发送数据到服务器端,然后通过手机端的APP Blynk显示传感器数据。 简单来说,Blynk 就是一个与硬件无关的IOT物联网平台,使用起来简单便捷,仅需通过简单的拖拽组件即可创建漂亮的 APP 界面,再加上少量代码就能够完成一个物联网项目的开发,可谓是最简单的物联网平台之一。 因为篇幅原因,这里不对Blynk其做过多概述,需要详细了解的可以自行网络查询。 需要着重说明的是,这里我没有采用官网的网址,由于某些原因,官网经常出现连接不了和打不开网页的现象,所以我的手机端APP,和ESP8266上传的数据端采用网友免费提供的Blynk服务器,感谢这个无私的网友。   六.部分DEMO代码测试 演示效果 在Arduino开发环境下,ESP8266开发非常友好和方便,各种传感器的库也是非常齐全,添加之后就可以直接使用,非常方便。全部模块经过测试,均可以正常工作,各项数据都能正常输出,见下图,顺便手机端的APP也一起 制作完成。经过测试,达到预期的效果,即使不通过H743进行更一步处理,也依旧可以组成一个完整的采集,显示,控制系统。 初始化各传感器模块 /***************************************************************************   Initialize RTC DS3231         */   //Initialize RTC DS3231   rtc.begin();   delay(1000);   /****************************************************************************    Initialize BH1750 sensor       */   Wire.begin();   lightMeter.begin();   delay(1000);   /****************************************************************************    Initialize SGP30 sensor       */   Serial.print("BEGIN:\t");   Serial.println(SGP.begin());   Serial.print("TEST:\t");   Serial.println(SGP.measureTest());   Serial.print("FSET:\t");   Serial.println(SGP.getFeatureSet(), HEX);   SGP.GenericReset();     Serial.print("DEVID:\t");   SGP.getID();   for (int i = 0; i < 6; i++) {     // ÏD looks like: 00.00.01.9B.57.23     if (SGP._id < 0x10) Serial.print(0);     Serial.print(SGP._id, HEX);   }   Serial.println();   /***************************************************************************   初始化bme680             */   iaqSensor.begin(0x77, Wire);   output = "\nBSEC library version " + String(iaqSensor.version.major) + "." + String(iaqSensor.version.minor) + "." + String(iaqSensor.version.major_bugfix) + "." + String(iaqSensor.version.minor_bugfix);   Serial.println(output);   checkIaqSensorStatus();     bsec_virtual_sensor_t sensorList[13] = {     BSEC_OUTPUT_IAQ,     BSEC_OUTPUT_STATIC_IAQ,     BSEC_OUTPUT_CO2_EQUIVALENT,     BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,     BSEC_OUTPUT_RAW_TEMPERATURE,     BSEC_OUTPUT_RAW_PRESSURE,     BSEC_OUTPUT_RAW_HUMIDITY,     BSEC_OUTPUT_RAW_GAS,     BSEC_OUTPUT_STABILIZATION_STATUS,     BSEC_OUTPUT_RUN_IN_STATUS,     BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,     BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY,     BSEC_OUTPUT_GAS_PERCENTAGE   };     iaqSensor.updateSubscription(sensorList, 13, BSEC_SAMPLE_RATE_LP);   checkIaqSensorStatus();     // Print the header   //output = "Timestamp [ms], IAQ, IAQ accuracy, Static IAQ, CO2 equivalent, breath VOC equivalent, raw temp[°C], pressure [hPa], raw relative humidity [%], gas [Ohm], Stab Status, run in status, comp temp[°C], comp humidity [%], gas percentage";   Serial.println(output); 程序编译上传后,通过串口进行打印,各项输出数据正常     下面,加入继电器模块,通过APP控制ESP8266对应的GPIO引脚输出高低电平,来控制相应的继电器吸合和释放,达到控制外部设备的目的。这里我设置了四路输出,分别实现四路功能的开关功能。   /*********************************************************************** 设置SPI引脚为普通GPIO模式,给继电器提供驱动信号输出。 */   pinMode(D5, OUTPUT);  //设置GPIO14为  风扇控制继电器   pinMode(D6, OUTPUT);  //设置GPIO12为  负离子控制继电器   pinMode(D7, OUTPUT);  //设置GPIO13为  灯光控制继电器   pinMode(D8, OUTPUT);  //设置GPIO15为  音乐控制继电器   手机APP的显示控制,达到预期效果      八.整体测试视频 见附件   九.文档.源码.原理图.PCB文件     H743开发板文件 ESP8266 Arduino 源代码      

  • 2024-09-12
  • 发表了主题帖: 【2024 DigiKey 创意大赛】Adafruit Industries LLC 3660-BME680模块分享

      话说在选型时,看到BME680这个标题时就被吸引到了,BME680 气体,湿度,压力,温度 传感器 Qwiic,STEMMA QT 平台评估扩展板。在通过查阅网页的介绍资料后,对BME680的功能有了更加深入的了解。BME680环境传感器是一款由博世推出的四合一MEMS环境传感器,可测量VOC(挥发性有机物)、温度、湿度、气压这四个参数,非常适用于监测空气质量,用于空气质量相关的应用方面是非常不错的。 https://www.digikey.cn/zh/products/detail/adafruit-industries-llc/3660/7915571   在模块到手后查阅资料及官方的Github,发现只能获取温度、湿度、气压等数据,而空气质量需要搭配Bosch BSEC空气质量算法库后才能输出。原本我打算是用STM32H743直接驱动该模块的,在折腾了几天后湿度温度气压等数据倒是好弄,但那个IAQ的lib库非常磨人。在查看BSEC的SDK包时发现其直接就支持ESP8266,正好手上有ESP8266(Node MCU 0.9),遂决定采用该模块来搭配BME680传感器使用Bosch BSEC空气质量算法库来获取温湿度、气压以及空气质量信息(IAQ、CO2 Equivalent、Breath VOC Equivalent)。     BSEC相关的文档,库,等资料,不得不说做的真的是非常的详尽 https://www.bosch-sensortec.com/software-tools/software/bme680-software-bsec/   BME680简介   BME680环境传感器是一款四合一MEMS环境传感器,可测量VOC(挥发性有机物)、温度、湿度、气压这四个参数,非常适用于监测空气质量。由于采用了MEMS技术,该传感器体积小、功耗低,因此也适用于低功耗场合,如可穿戴等。 DFRobot Gravity BME680环境传感器采用Gravity I2C接口,即插即用,连线简单方便;板载电源稳压芯片和电平信号转换芯片,兼容性好,可直接兼容3.3V和5V系统;预留了SPI接口,方便做扩展。本产品集成度高,可同时检测四个环境参数,是气象站、智能家居、物联网、可穿戴等场景的理想选择。 使用本产品,可迅速搭建出一套空气质量检测仪。当今空气污染越来越严重,有毒物质超标的家具屡屡出现,因此是时候为自己的健康把关了。 技术规格 •   输入电压:3.3V-5.0V •   工作电流:5mA(开启VOC测量后,工作电流为25mA) •   通信接口:I2C •   预留接口:SPI •   温度测量范围:-40℃~+85℃ •   温度测量精度:±1.0℃(0~65℃) •   湿度测量范围:0-100%r.H. •   湿度测量精度:±3%r.H.(20-80% r.H.,25℃) •   气压测量范围:300-1100hPa •   气压测量精度:±0.6hPa(300-1100hPa,0~65℃) •   IAQ(室内空气质量)范围:0-500(值越大,空气质量越差) IAQ(室内空气质量)对照表   ESP8266开发板与BME680的硬件连接图,BME680模块和ESP8266板子正常连接后,将进入Arduino IDE配置工作。     一.Arduino IDE准备工作   GitHub - esp8266/Arduino:   ESP8266 core for Arduino https://github.com/esp8266/Arduino   BSEC_Software_Library v1.8.1492   https://github.com/BoschSensortec/BSEC-Arduino-library?tab=readme-ov-file#installation-and-getting-started   二.Arduino IDE开发板配置   1.在Arduino IDE中,转到“文件”>“首选项”;   2.在“附加开发板管理器网址”中输入下图所示地址,然后,单击“好”按钮;   http://arduino.esp8266.com/stable/package_esp8266com_index.json   3.回到Arduino主页,转到“工具”>“开发板”>“开发板管理器”;   4.搜索ESP8266,选择版本后点击安装按钮;   5.等待下载与安装。   6.下载完成后,回到Arduino主页,转到“工具”>“开发板”>“ESP8266 Boards(3.1.2)”;   7.选择NodeMCU 0.9(ESP-12 Module)         三.安装BSEC库并配置     1.要从BME680传感器获取IAQ读数,我们将使用BSEC_Software_Library库 。 BSEC 库的概念是为 BME680 提供更高级别的信号处理和融合,该库从传感器 API 接收补偿后的传感器值,由该库进行处理 BME680 信号并输出数据。 按照以下步骤在Arduino IDE中安装该库:     2.打开Arduino IDE,进入“工具”>“管理库”,等待下载库索引及更新; 3.在库管理搜索框中搜索“BSEC Software Library”并选择1.8.1492版本并安装。   在安装好库之后,我们可以直接来使用库中自带的示例代码,来新建工程     BME680环境传感器可以选择使用I2C接口或者SPI接口,在不同的接口模式及下各个引脚的定义及功能有一些差别。其具体分配及定义如下所示:从下表中我们可以知道当CSB引脚接高电平VDDIO时,采用的是I2C接口。此时I2C的设备地址的最后一位由SDO引脚的电平决定。所以设备地址计7位为0x76或0x77,计8位则是0xEC或0xEE。 当CSB引脚用作片选信号时,则使用SPI接口。SPI接口支持模式0(CPOL=0,CPHA=0)和模式3(CPOL=1,CPHA=1)。同时支持3线SPI和4线SPI。控制字节的最高位为0时表示写,为1时表示读。   打开basic的示例代码后,示例代码默认的是SDO接入低电平,由上面的列表可知,I2C模式下SDO电平状态决定设备地址。所以这里需要将I2C的地址改一下(0x77),不改的话,需要将SDO接入GND(0x76)。   修改完成后,检查所使用的开发板和COM端口是否与实际一致,并点击“验证”。 当验证成功,出现“Executable segment sizes:”,即可进行烧录,点击“上传”。 当成功上传到开发板后,以 115200 波特率打开串口监视器,在终端上看到先是打印BSEC库版本,其次打印数据标签,最后打印数据。   上传代码,串口开始输出数据   15个数据的对应关系:              

  • 2024-08-20
  • 发表了主题帖: 【2024 DigiKey 创意大赛】室内空气质量监测新风系统--硬件搭建分享

    本帖最后由 ylyfxzsx 于 2024-8-20 21:14 编辑     话说我本打算用F411或者L476评估板做主控板的,然后进行购物选型的时候我贪上了M7的芯片,下单了这个SC20100S FEZ-ARM® Cortex®-M7 MPU评估板 ,然后到手了发现该板子和我预想的有点偏差,就是有点水土不服的感觉,在去官方页面一番了解后。发现这个评估板,有自己一套独特的玩法,且在查看原理图后,发现其JTAG引脚啥的都没有引出来。     因为硬件出身的,我也懒得研究他们的一套打法,干脆一不做二不休,就着芯片自己画个板子得了。于是乎花了一天时间,自己画了个板子,这样用起来更舒服。顺带感谢嘉立创,一个月2款免费的板子,打样连快递费都包了,回想起以前走上社会刚开始学画PCB的时候50一次样板,简直以前不敢想,哈哈。 如图,我把该芯片的所有GPIO全部引出,并且给BME680模块和SGP30模块单独做了GPIO输出脚,并且做上了FMC接口,TYPEC接口一应齐全,该板子也可以作为H743的多功能开发评估板使用,感兴趣的小伙伴们可以下载我后续发布的PCB源文件自行打板。             花了两天时间,板子就打回来,移花接木,焊接好元器件的效果。       把BME680和SGP30传感器模块的插针焊接好,然后杜邦线连接到主板    连接好STLINK,打开STVP,来个全片擦除试一试,连接板子成功,一切正常,接下来就可以愉快的码代码了。为了方便调试和读数,我连接了一个SPI接口的128x64x显示屏。   接下来,通过STM32CubeMX构造好基本的工程框架,然后添加添加一个点亮LED的代码,跑一下程序试试。   下载运行,LED开始闪烁起来,至此,硬件搭建完成,下一步就是编写剩余的代码和加上继电器模块,开始软硬件联调了。 [localvideo]7fb621d57f9df227a876f486d8caa99a[/localvideo]        

  • 回复了主题帖: 心脏标志物检测仪拆解赏析(可能是国内独家拆解 德国制造?)

    wangerxian 发表于 2024-8-19 16:45 这个设备是用来做什么的?从名称上还是不理解干什么用的。 我估计哈,是从心脏部位取出部分组织细胞,然后放到试纸上,用这个机器的传感器来检测分辨,病理情况,因为在下面那个部分我看到了一个类似于摄像头的镜片东西,你仔细看拆解

  • 2024-08-18
  • 发表了主题帖: 心脏标志物检测仪拆解赏析(可能是国内独家拆解 德国制造?)

        话说这上面带个生化物标志,好像还能正常使用,电子地摊上好奇捡回来玩的,拆开后发现里面非常复杂和精密,所谓独乐乐不如众乐乐,于是拍照和发上来和大家一起观摩吧。发现这货是德国制造,而且貌似使用也不简单,按次收费的?                                    

  • 2024-08-10
  • 发表了主题帖: 【2024 DigiKey 创意大赛】SC20100S FEZ-ARM® Cortex®-M7 MPU评估板 开箱贴

      首先,很荣幸入围参加这次活动,有机会与大伙儿一起展示自己的想法和创意,感谢EE论坛与得捷电子合作举办的这次活动,感谢上海得捷电子的慷慨赞助! 这次活动我选择了, SC20100S FEZ-ARM® Cortex®-M7 MPU评估板,BME680,SGP30传感器来参加本次活动。 下面就展示一下收到的物料,虽然漂洋过海,但整个下单和收到物料的过程非常迅速。接下来就是如何充分利用好这些物料,完成作品了。在此,也预祝一起入围参加活动的小伙伴们带来精彩的作品,取得优异的成绩,祝大赛取得圆满成功!                          

  • 2024-05-13
  • 发表了主题帖: 【2023 DigiKey大赛参与奖】开箱帖 STLINKV3

      不管怎么样,客套话还是要先说的,感谢EE论坛,感谢 DigiKey,大赛不光给了大伙儿一个发光发热的舞台,还真金白银的给予了实物和奖金的赠予,祝贺大赛取得圆满成功!    手头的项目一直在用ST的单片机,一直用的是STLINKV2,借着这次机会就下单了一个STLINK V3回来,等待了几天,今天顺丰小哥送货上门,与大家一起分享开箱的喜悦。     

  • 2024-01-17
  • 回复了主题帖: EEWorld 社区 2023年度人物颁奖

    很荣幸能得到EEWORLD的肯定,个人信息确认,谢谢

  • 2024-01-10
  • 发表了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】多功能环境气象数据采集站

    作品名称:多功能环境气象数据采集站 作者:ylyfxzsx   作品简介   理想中的这款多功能气象数据采集站,设想的功能是可以通过网络获取设定的本地天气预报数据,然后通过各种传感器模块,远程采集发送给主控器数据,获得本地的空气指标(如PM2.5,甲醛等数据),温度湿度,噪音,光照等,然后通过可选的,有条件的可以接入GPS数据获取高精度时钟数据,可选的网络NTP同步获取时间数据等。加入本地高精度RTC模块,真人语音模块,可扩展实现语音播报实时气象信息,附加报时,万年历功能。   系统各个模块及组件可实现较强的拆分,自由组合功能。   由于时间紧迫,开发的周期比较短,根据申请到的物料,在这里就简单的实现一个由BADGER 2040 +STEVAL-STLKT01V1 实现的无线数据显示组件功能。   得益于墨水屏技术的卓越省电性能,墨水屏显示器只在刷新时消耗电能,而在静态显示时几乎不消耗电能,在这里用作显示屏是极好的。   BADGER 2040 参数及资源链接 : Badger 2040 下载 (circuitpython.org)   2.9 英寸黑白电子墨水®显示屏(296 x 128 像素)由 RP2040 提供支持(双 Arm Cortex M0+,运行频率高达 133Mhz,具有 264kB SRAM)2MB QSPI闪存,支持XiP五个前置用户按钮重置和启动按钮(启动按钮也可以用作用户按钮)白光LED USB-C 连接器,用于电源和编程。用于连接电池的 JST-PH 连接器(输入范围 2.7V - 6V)用于电池电量监控的高精度基准电压源。     考虑到低功耗特性,这次设计的主控部分,采用的是来自意法微公司的STEVAL-STLKT01V1传感器模块,板载STM32L476系列低功耗的芯片及蓝牙芯片。 这块传感器板子的资源丰富,其实更适合是做音频系列的开发应用,一起看看有哪些资源   资源链接 : STEVAL-STLKT01V1 - SensorTile development kit - STMicroelectronics    STM32L476xx器件是基于高性能Arm Cortex-M4 32位RISC内核的超低功耗微控制器,工作频率高达80 MHz。Cortex-M4 内核具有浮点单元 (FPU) 单精度,支持所有 Arm 单精度数据处理指令和数据类型。它还实现了一整套 DSP 指令和存储器保护单元 (MPU),从而增强了应用安全性。STM32L476xx器件嵌入了高速存储器(高达1 MB的闪存,高达128 KB的SRAM)。   MP34DT05-A 是一款超紧凑、低功耗、全向数字 MEMS 麦克风,内置电容式传感元件和 IC 接口。   LSM6DSM是一种系统级封装,具有 3D 数字加速度计和 3D 数字陀螺仪,在高性能模式下以 0.65 mA 的电流运行,并支持始终在线的低功耗功能,为消费者提供最佳运动体验。LSM303AGR是一款超低功耗、高性能系统级封装,具有 3 轴数字线性加速度传感器和 3 轴数字磁传感器,具有 ±2g/±4g/±8g/±16g 的满量程线性加速度和 ±50 高斯的磁场动态范围。   LPS22HB是一款超紧凑的压阻式绝对压力传感器,可用作数字输出气压计,采用全模制带孔 LGA 封装 (HLGA)。保证工作温度范围为-40 °C至+85 °C。   BlueNRG-MS 是一款超低功耗蓝牙低功耗 (BLE) 单模网络处理器,符合蓝牙规范 v4.2。BlueNRG-MS同时支持多种角色,可以同时作为蓝牙智能传感器和集线器设备。       设计思路:   Badger2040显示模块,主要就是用到其显示功能,牵扯到数据输入部分,显示模块的板子带一个串口和I2C通讯接口,那么进入显示模块的数据,就采用2.4G的串口通讯模块即可与主板板子进行通讯即可,这里Badger2040显示模块就相当于是一个独立的无线串口显示屏模块,可自定义通讯协议数据格式即可完美与主控MCU交换数据。后期扩展考虑再用物联网(Zigbee)网络集群来实现各类传感器模块的扩展和接入。   STEVAL-STLKT01V1传感器模块主要就用到MCU和气压计部分,模块其他的硬件部分暂时搁置。由STM32L476负责主控部分,通过模块的I2C接口部分采集SHT20温度湿度传感器的数据,然后和模块的气压计数据一起通过无线串口模块发送到BADGER 2040模块进行实时显示,为了省电,一小时更新一次数据即可,预想的设计框图和本次设计实现的框图(蓝色部分)       预备的部分传感器模块,温度湿度模块,PM2.5激光尘埃检测模块,H2O气体检测模块,实时时钟模块,WIFI模块,GPS定位模块,语音模块等,部分模块图片      Badger2040显示模块集成了RP2040的芯片,和树莓派Pico的开发板是一样的,那么这里我们可以参考树莓派Pico的引脚图。使用Badger2040的串口与电脑通信,可以看到上面有UART的引脚,UART又分为TX和RX。UART是串口的一种,可以用来通信,包括单片机和电脑,单片机和单片机,单片机和其它带串口的外设,UART是全双工的,也就是说发送的发送的同时可以接收数据,UART需要三根线,一根TX(发送),一根RX(接收)和一根GND(共地)。   由于现在的电脑都几乎不带串口了,所以这里需要一个USB转串口模块来给电脑增加串口能力,就是我们常用的USB转TTL模块,如图所示,网上很容易买到这样的USB转串口模块,只需几块钱,这里我用的是FT232芯片的模块,使用比较稳定,当然其他的也是可以的。将模块插入电脑的USB口,如果电脑没有安装驱动,会提示一个感叹号的黄色未识别设备。网络搜索安装对应的驱动程序即可,安装完成后,在我的电脑设备管理器出现新的串口设备。将USB转串口的另一头的引脚通过杜邦线连接Badger2040模块的TX和RX引脚,GND连接GND,VDD不需要连接,总共三根线。         接下来,可以测试下模块是否正常工作,打开串口调试助手,在里面选择自己的串口号,点击打开,连接完成后给Badger2040编写串口通信代码。以下测试代码实现了板载LED闪烁,屏幕显示文字和通过串口发送helloworld的功能实现,下一步就是实现其通过串口接收模块接收数据并显示在屏幕指定区域的功能即可。             树莓派RP2040入门的网站的很多,我这里主要是参考了以下两个网站:   Badger 2040 入门 (pimoroni.com)       Raspberry Pi Pico入门 (pimoroni.com)   考虑到时间紧迫,并没有太多的时间来深入熟悉开发了。我的计划是打算简单入门后,把Badger2040作为一个无线串口显示屏来使用,周边设备通过的LORA模块进行(透明传输的数据完全透明,发射端模块串口输入的发射数据与接收端模块串口输出的接收数据一致。   透明传输可以实现一个模块与一个或多个模块之间的无线数据传输,只要各个模块的配置的设备地址、信道和空中速率参数相同,那么这些模块之间就能够进行数据通讯)多对一进行数据交换,通过专有协议发送数据到RP2040处理,解析协议数据后10S更新一次显示屏信息。这种架构可以很方便的进行外围扩展以及方便修改代码。虽说有点大材小用了,不过符合快速上手。   这里使用的LORA模块采用了正点原子的LORA模块ATK-LORA-01       将Badger2040与LORA模块通过杜邦线连接起来       STEVAL-STLKT01V1 这个模块已经自带了L476的MCU芯片,可惜前期没考虑周到,下单的时候没把扩展板一起下单了,这个核心板要么是用飞线连接,要么是只能画一块扩展板进行开发了,这里我用万能板直接先飞线伺候了。把L476的串口与LORA模块通过杜邦线连接,然后整个硬件平台就构建完成。接下来就可以把L476自带的气压模块数据通过LORA模块发送给Badger2040模块进行数据显示,在后面更富裕的时间里,可以扩展更多的外设进行数据显示。         开始搭线,这里用了一个小尺寸的洞洞板,安排好各种接口         逐渐成型,到搭建完成           采用STEVAL-STLKT01V1 内置的LPS22HB气压数据通过LORA模块发送到BADGER 2040进行显示       项目总结 由于时间关系,其他的模块只能后续再添加上,这次没有实现全部功能,但总的来说达到了预期的设想,完成了基础的硬件构架。   BADGER 2040电子墨水屏模块是一个非常好用,且省电的显示屏,非常容易上手,适用于需要低功耗刷新不频繁的场合。但是在对实时性显示要求较高的场合,采用这个显示屏制作时钟之类的应用时,不是非常的合适。由于墨水屏的特性,刷新的频率比较高也就是不断要更新显示内容时,会产生拖尾,鬼影的现象,需要注意。 BADGER 2040模块可以使用Python语言编写代码,能很快上手,对初学者比较友好。   TEVAL-STLKT01V1 这款模块用在可穿戴设备上是非常合适的,用在我这个项目中没有充分发挥这个模块的潜力,有点吕布骑狗的感觉了,这次评测是赶不及了,后期尽可能的挖掘其剩余价值,物有所用吧。   最后感谢EE论坛的组织和得捷电子的慷概赞助,祝本次大赛取得圆满成功!   [localvideo]9e8efbcbae4121d6983e7491e0d79adc[/localvideo]    

最近访客

< 1/6 >

统计信息

已有648人来访过

  • 芯积分:293
  • 好友:4
  • 主题:158
  • 回复:243

留言

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


355203432 2021-12-10
你好,飞思卡尔那个TAP下载器还在吗,谢谢。
chineseboyzxy 2019-12-9
那个STM8的板子还有没有了,单片机有没有,能不能也给我一个,单独买一个不够运费的。。。
查看全部