
1清单STM32F103C8T6DC01红外PM2.5传感器0.96寸4针IIC接口OLED显示屏万用板2接线注意红外粉尘传感器RXD和TXD下载代码后再接线如果在下载代码之前接线可能会导致代码下载出错。STM32F103C8T6DC01红外PM2.5传感器0.96寸4针IIC接口OLED显示屏3.3V3.3V5V5VGNDGNDGNDB6SCLB7SDAA9RXTA10TXD3实现功能显示颗粒物值程序下载完成使用5V电压。4程序#include Arduino.h #include U8g2lib.h #include Wire.h // 引脚定义 #define I2C_ADDR 0x3C // OLED I2C地址 #define I2C_SDA_PIN PB7 // I2C SDA引脚 #define I2C_SCL_PIN PB6 // I2C SCL引脚 // OLED屏幕尺寸 #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 // 全局变量 U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, I2C_ADDR); // 传感器数据 struct SensorData { uint16_t concentration 0; uint16_t calibratedConcentration 0; } sensorData; // 状态变量 struct SystemState { bool dataValid false; bool initialized false; } systemState; // 串口接收缓冲区 byte uartBuffer[4] {0}; int receiveIndex 0; // 函数声明 void initOLED(); void processUARTData(); void updateDisplay(); void setup() { // 初始化硬件 Serial.begin(9600); // 初始化OLED initOLED(); delay(2000); // 显示启动信息2秒 } void loop() { // 处理串口数据 processUARTData(); // 更新显示 updateDisplay(); delay(2000); // 主循环延迟2秒 } void initOLED() { Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN); u8g2.begin(); u8g2.setFont(u8g2_font_ncenB14_tr); u8g2.setPowerSave(0); u8g2.enableUTF8Print(); // 启用UTF-8支持 Serial.println(OLED初始化完成); } void processUARTData() { while (Serial.available() 0) { byte incomingByte Serial.read(); if (receiveIndex 4) { uartBuffer[receiveIndex] incomingByte; } else { // 数据溢出重置接收状态 receiveIndex 0; memset(uartBuffer, 0, sizeof(uartBuffer)); } if (receiveIndex 4) { byte featureByte uartBuffer[0]; byte dataHigh uartBuffer[1]; byte dataLow uartBuffer[2]; byte checksumReceived uartBuffer[3]; if (featureByte 0xA5 ((featureByte dataHigh dataLow) 0x7F) checksumReceived) { uint16_t concentrationHigh dataHigh 0x7F; uint16_t concentrationLow dataLow 0x7F; sensorData.concentration concentrationHigh * 128 concentrationLow; sensorData.calibratedConcentration sensorData.concentration * 0.417; systemState.dataValid true; } else { systemState.dataValid false; } // 重置接收索引和缓冲区 receiveIndex 0; memset(uartBuffer, 0, sizeof(uartBuffer)); } } } void updateDisplay() { u8g2.clearBuffer(); // 显示颗粒物浓度 u8g2.setFont(u8g2_font_lunar); u8g2.setCursor(0, 45); u8g2.print(颗粒物: ); if (systemState.dataValid) { u8g2.print(sensorData.calibratedConcentration); u8g2.print(ug/m³); } else { u8g2.print(--); } u8g2.sendBuffer(); }附录STM32简介STM32 是意法半导体 (STMicroelectronics) 推出的 32 位 ARM Cortex-M 内核微控制器系列根据 ST 海外官网信息该系列涵盖从入门级到高性能的多种型号支持多种通信接口和外设广泛用于嵌入式开发 。发展历史意法半导体STMicroelectronics集团于1987年6月成立是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。1998年5月SGS-THOMSON Microelectronics将公司名称改为意法半导体有限公司意法半导体是世界最大的半导体公司之一。从成立之初至如今ST的增长速度超过了半导体工业的整体增长速度。自1999年起ST始终是世界十大半导体公司之一。据最新的工业统计数据意法半导体STMicroelectronics是全球第五大半导体厂商在很多市场居世界领先水平。例如意法半导体是世界第一大专用模拟芯片和电源转换芯片制造商世界第一大工业半导体和机顶盒芯片供应商而且在分立器件、手机相机模块和车用集成电路领域居世界前列。意法半导体STMicroelectronics整个集团共有员工近50000名拥有16个先进的研发机构、39个设计和应用中心、15主要制造厂并在36个国家设有78个销售办事处。公司总部设在瑞士日内瓦同时也是欧洲区以及新兴市场的总部公司的美国总部设在德克萨斯州达拉斯市的卡罗顿亚太区总部设在新加坡日本的业务则以东京为总部中国区总部设在上海负责香港、大陆和台湾三个地区的业务。ST超低功耗ARM Cortex™-M3微控制器STM32L系列产品基于超低功耗的ARM Cortex-M4处理器内核采用意法半导体独有的两大节能技术130nm专用低泄漏电流制造工艺和优化的节能架构提供业界领先的节能性能。该系列属于意法半导体阵容强大的32位STM32微控制器产品家族该产品家族共有200余款产品全系列产品共用大部分引脚、软件和外设优异的兼容性为开发人员带来最大的设计灵活性。ST超低功耗ARM Cortex™-M0微控制器STM32F0系列产品基于超低功耗的ARM Cortex-M0处理器内核整合增强的技术和功能瞄准超低成本预算的应用。该系列微控制器缩短了采用8位和16位微控制器的设备与采用32位微控制器的设备之间的性能差距能够在经济型用户终端产品上实现先进且复杂的功能。 [2]互联型全新STM32互联型Connectivity系列微控制器增加一个全速USBOTG接口使终端产品在连接另一个USB设备时既可以充当USB主机又可充当USB从机还增加一个硬件支持IEEE1588精确时间协议PTP的以太网接口用硬件实现这个协议可降低CPU开销提高实时应用和联网设备同步通信的响应速度。全新互联型系列还是STM32家族中首款集成两个CAN2.0B控制器的产品让开发人员能够研制可连接两条工业标准CAN控制器区域网总线的网关设备。此外新系列微控制器还支持以太网、USB OTG和CAN2.0B外设接口同时工作因此开发人员只需一颗芯片就能设计整合所有这些外设接口的网关设备。STM32互联型系列产品强化了音频性能采用一个先进的锁相环机制实现音频级别的I2S通信。结合USB主机或从机功能STM32可以从外部存储器U盘或MP3播放器读取、解码和输出音频信号。设计人员还可以在新系列微控制器上开发人机界面HMI功能如播放和停止按键以及显示器界面。这个功能使其可用于各种家庭音响设备如音响底座系统、闹钟/音乐播放器和家庭影院。新系列产品整合先进的面向连接的外设标准的STM32外设包括一个PWM定时器高性能的32位ARM Cortex-M3 CPU这些特性使开发人员可以在设备上如家电、楼宇或工业自动化整合多种功能如马达控制、用户界面控制和设备互连功能。其它目标应用包括需要联网、数据记录或USB外设扩展功能的系统如病患监视、销售终端机、自动售货机和保安系统。包括新的互联型系列在内的STM32系列微控制器具有多种配套软件和开发工具其中包括意法半导体免费提供的软件库以及第三方工具厂商的广泛支持。意法半导体还将推出一个新的评估板正在向大客户提供STM32F105和STM32F107互联型系列的样片。STM32 有啥特点和用途核心特点STM32 基于 ARM Cortex-M0/M0/M3/M4/M7/M33/M55 等多种内核架构具有高性能、低功耗、低成本的优势工作电压范围通常为 1.7V 至 3.6V。性能范围广主频从 32MHz 到 500MHz 不等Flash 容量从 16KB 到 2MBSRAM 从 4KB 到 1MB。低功耗设计提供休眠、停止、待机等多种低功耗模式待机电流可低至 2μA。外设丰富集成 ADC、DAC、定时器、USART、SPI、I2C、USB、CAN 等多种外设接口 。主要应用领域工业控制电机驱动、生产线控制、机械臂操作等 。物联网设备智能传感器、电燃气表、血糖仪等医疗设备 。消费电子智能家居中枢、可穿戴设备、家电控制等 。汽车电子车身控制、车载信息系统等 。产品系列分类主流系列STM32F0/F1/F3/G0/C0性价比高适合通用控制场景 。超低功耗系列STM32L0/L4/L5/U5适合电池供电设备 。高性能系列STM32F4/F7/H7/H5/N6支持 AI 加速和复杂计算 。无线系列STM32WB/WBA/WL集成蓝牙、Zigbee、LoRa 等无线功能 。微处理器系列STM32MP1/MP2支持 Linux 系统适合边缘计算 。开发 STM32 用啥软件官方开发工具链STM32CubeMX图形化配置工具可设置引脚、时钟、外设参数自动生成初始化代码 。STM32CubeIDE集成开发环境基于 Eclipse支持代码编辑、编译、调试一体化 。STM32CubeProgrammer用于代码烧写和固件升级 。ST-LINK 调试器官方在线调试和编程工具从 V2 发展到 V3 系列 。第三方开发环境Keil MDK-ARM老牌 ARM 开发工具社区资源丰富 。IAR Embedded Workbench商业 IDE优化性能好 。PlatformIO开源跨平台开发工具支持 VS Code 集成 。Arduino (STM32duino)适合初学者快速上手 。操作系统支持FreeRTOS轻量级实时操作系统广泛使用 。Zephyr RTOS开源物联网操作系统 。LinuxSTM32MP 系列可运行 OpenSTLinux、Android 等系统 。国产替代方案情况国产 MCU 品牌兆易创新 (GigaDevice)GD32 系列与 STM32F1/F3/F4 等引脚兼容是国内出货量较大的替代方案。华大半导体HC32 系列覆盖低功耗和通用控制场景。雅特力AT32 系列主打高性能和高性价比。国民技术N32 系列注重安全加密功能。兼容性说明多数国产 MCU 在引脚排列、外设功能上与 STM32 保持高度兼容代码迁移成本较低。但寄存器细节、时钟配置、中断优先级等可能存在差异需参考具体型号数据手册。开发工具链方面部分国产芯片支持 STM32Cube 工具部分需使用厂商自有工具。选择建议如果对供应链安全有要求可优先考虑国产方案。如果项目依赖 STM32 特定生态如官方库、社区资源建议继续使用 STM32。新设计可评估国产芯片的供货稳定性和技术支持能力。本次主要使用到的模块型号是STM32F103C8T6引脚图如下0.96寸4针IIC接口OLED显示屏简介4 针 IIC OLED 屏幕通过VCC/GND 供电、SCL/SDA 双线同步通信由主控发送指令与显存数据驱动芯片如 SSD1306解析后控制有机像素自发光成像 。核心工作机制物理层连接4 引脚分别为VCC3.3V/5V 电源、GND共地、SCL时钟线主控提供时序、SDA数据线双向传输命令/图像数据总线采用开漏输出 上拉电阻结构空闲时为高电平 。通信协议流程主控发起起始信号SCL 高时 SDA 由高变低→ 发送7 位从机地址 读写位OLED 通常为 0x78 写/0x79 读→ 发送控制字节区分命令或数据→ 传输8 位数据每字节后需从机 ACK 应答→ 停止信号SCL 高时 SDA 由低变高结束 。显示驱动逻辑驱动芯片接收命令配置寄存器如对比度、扫描方向、内存模式随后将数据写入GDDRAM图形显示数据 RAM芯片内部扫描电路按行列时序读取 GDDRAM 内容驱动对应有机二极管通电发光实现像素级控制 。关键特性与注意事项自发光原理无需背光像素通电即亮断电即灭纯黑对比度极高功耗与显示内容相关黑底省电。地址配置常见 7 位基地址为 0x3C总线地址 0x78部分模块可通过硬件跳线切换至 0x3D总线地址 0x7A。时序依赖IIC 为同步通信SCL 频率通常 100kHz标准模式或 400kHz快速模式软件模拟时需严格遵循建立/保持时间 。数据模式支持命令模式配置参数与数据模式写入显存写入数据时通常需指定控制字节如 0x40 表示后续为数据。DC01红外PM2.5传感器产品基础信息产品名称DC01红外PM2.5传感器核心用途灰尘浓度检测、细小颗粒物雾霾监测基础特性产品体积小、功耗低、测量范围宽、响应时间短、应用方便快捷产品原理与核心特点工作原理该灰尘传感器产品利用光学照射的原理通过光路与电路的转换测量出检测范围内的灰尘浓度可灵敏检测直径为1μm以上灰尘颗粒物直接应用单片机进行UART通信。核心特点低成本体积小、功耗低精度高响应时间短数字信号输出品质卓越应用方便快捷应用范围可适配空调、空气净化器、除湿器、便携检测仪、其它家用电器、汽车空气净化、新风系统、智能检测仪等场景。规格参数参数项详情检测范围5~2000 ug/m³精度0.1微克/立方米检测精度±20 ug/m³ 或 ±20%50μm50km/h风速上电稳定时间≤3s工作电压DC 5V供电纹波50mV以下输出方式UART物理接口4Pin 2.54mm间距工作条件-20℃~70℃0~95%RH非凝结存储条件-40℃~85℃0~95%RH非凝结外形尺寸60 * 34 * 18.1mm长×宽×高产品参数细节接口定义引脚序号引脚名称定义引脚功能描述引脚电气特性Pin 1GND电源负无反接保护Pin 2VCC电源正5V-Pin 3RXD模块UART接口的RXD脚TTL电平Pin 4TXD模块UART接口的TXD脚TTL电平开漏输出内部有上拉电阻连到电源正参考电路标注了灰尘传感器D01与HOST MCU的接线对应关系传感器TXD/PWM接主机RXD/IO、传感器RXD接主机TXD、传感器VCC接主机VCC、传感器GND接主机GND。串口数据流格式模块采用标准UART串口通信在应用过程中只需接收灰尘浓度数据模块默认状态下为持续工作UART串口每间隔1秒钟自动上传检测数据串口数据解码后得到灰尘浓度值单位为 ug/m3。UART 配置波特率9600bps数据位8停止位1校验位无串口输出一帧数据包括4个字节数据格式如下特征字节数据字节1数据字节2校验字节0xA5DATAHDATALSUM各字段说明特征字节固定值0xA5。数据字节DATAH为浓度值的高7位DATAL为浓度值的低7位。校验字节校验字节之前所有字节累加和的低7位。浓度值计算公式浓度值 DATAH(bit[6:0]) × 128 DATAL(bit[6:0])注用户读取到的灰尘传感器原始PM2.5灰尘度需要参照TSI仪器光度法标定一个K值系数一般建议0.4。计算示例串口输出4字节数据为0xA5 0x01 0x2C 0x52则DATAH 0x01 1DATAL 0x2C 44浓度值 1 × 128 44 172微克/立方米注意事项模块应安装于空气流通的位置保持进气口通风模块尽量安装于背光处防止外界光从通气孔射入模块内部造成模块误差增大模块壳体为导电材料并且与电路GND连接防止模块GND管脚接入高于人体安全电压的系统中模块避免接触有机溶剂不要在有机气体和可燃气体的环境使用模块避免接触到水雾水雾会使模块数据出现异常波动溅上水或浸到水中会造成传感器敏感特性下降或损坏。避免振动模块受到剧烈震动会造成测量误差增大运输及组装过程中频繁、过度振动会导致光电器件错位影响原始标定数据。避免强电磁干扰模块尽量远离高频高压发生源强电磁环境防止对模块造成干扰传感器具有一定的抗干扰性能但仍应避免强电磁环境。使用无线通信模块(如WiFi、蓝牙、GPRS等)时应与传感器保持足够远的距离具体安全距离请用户自行验证。长期贮存密封袋密封保存避免接触腐蚀性气体损伤电路板和光学器件。