1清单
STM32F103C8T6 | DHT22温湿度传感器 | 0.96寸4针IIC接口OLED显示屏 |
万用板 | ||
2接线
STM32F103C8T6 | DHT22温湿度传感器 | 0.96寸4针IIC接口OLED显示屏 |
| 3.3V | 3.3V | |
| 5V | 5V(图中接的是3.3V建议接5V) | |
| GND | GND | GND |
| B6 | SCL | |
| B7 | SDA | |
| B9 | DAT |
3实现功能
显示温湿度值(程序下载完成,使用5V电压)。
4程序
#include <Arduino.h> #include <U8g2lib.h> #include <Wire.h> #include "DHT.h" // 引脚定义 #define DHTPIN PB9 // DHT 传感器引脚 #define DHTTYPE DHT22 // DHT22 传感器类型 #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 // 全局变量 DHT dht(DHTPIN, DHTTYPE); // 初始化 U8G2 库 U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, I2C_ADDR); // 传感器数据 struct SensorData { float temperature = 0.0; float humidity = 0.0; } sensorData; // 函数声明 void initOLED(); void readDHTData(); void updateDisplay(); void setup() { // 初始化硬件 Serial.begin(9600); // 初始化 OLED initOLED(); // 初始化 DHT 传感器 dht.begin(); delay(2000); // 显示启动信息 2 秒 } void loop() { // 读取 DHT 传感器数据 readDHTData(); // 更新显示 updateDisplay(); delay(2000); // 主循环延迟 2 秒 } void initOLED() { Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN); u8g2.begin(); u8g2.setPowerSave(0); u8g2.enableUTF8Print(); // 启用 UTF-8 支持 u8g2.setFont(u8g2_font_lunar); Serial.println("OLED 初始化完成"); } void readDHTData() { // 读取湿度 sensorData.humidity = dht.readHumidity(); // 读取温度(摄氏度) sensorData.temperature = dht.readTemperature(); // 检查是否有读取失败 if (isnan(sensorData.humidity) || isnan(sensorData.temperature)) { Serial.println("无法从 DHT 传感器读取数据!"); return; } } void updateDisplay() { u8g2.clearBuffer(); u8g2.setFont(u8g2_font_lunar); // 显示温度 u8g2.setCursor(0, 15); u8g2.print("温度: "); u8g2.print(sensorData.temperature, 1); u8g2.print("℃"); // 显示湿度 u8g2.setCursor(0, 35); u8g2.print("湿度: "); u8g2.print(sensorData.humidity, 1); 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)系列微控制器增加一个全速USB(OTG)接口,使终端产品在连接另一个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 到 2MB,SRAM 从 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:开源物联网操作系统 。
- Linux:STM32MP 系列可运行 OpenSTLinux、Android 等系统 。
国产替代方案情况
- 国产 MCU 品牌:
- 兆易创新 (GigaDevice):GD32 系列与 STM32F1/F3/F4 等引脚兼容,是国内出货量较大的替代方案。
- 华大半导体:HC32 系列覆盖低功耗和通用控制场景。
- 雅特力:AT32 系列主打高性能和高性价比。
- 国民技术:N32 系列注重安全加密功能。
- 兼容性说明:
- 多数国产 MCU 在引脚排列、外设功能上与 STM32 保持高度兼容,代码迁移成本较低。
- 但寄存器细节、时钟配置、中断优先级等可能存在差异,需参考具体型号数据手册。
- 开发工具链方面,部分国产芯片支持 STM32Cube 工具,部分需使用厂商自有工具。
- 选择建议:
- 如果对供应链安全有要求,可优先考虑国产方案。
- 如果项目依赖 STM32 特定生态(如官方库、社区资源),建议继续使用 STM32。
- 新设计可评估国产芯片的供货稳定性和技术支持能力。
本次主要使用到的模块型号是STM32F103C8T6
引脚图如下
DHT22温湿度传感器简介
AM2302湿敏电容数字温湿度模块(DHT22)是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有较高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个高精度NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比比较高等优点。每个传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在单片机中,传感器内部在检测信号的处理过程中要调用这些校准系数。标准单总线接口,使系统集成变得简易快捷。较小的体积、较低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的较佳选择。产品分为3引线(单总线接口),和4引线连接方便,可自由选择任何一种总线方式。特殊封装形式可根据用户需求而提供。
产品特色
超低能耗
传输距离远
全部自动化校准
采用电容式湿敏元件
完全互换
标准数字单总线输出
卓越的长期稳定性
采用高精度NTC
应用范围
暖通空调、除湿机、测试及检测设备、消费品、汽车、自动控制、数据记录器、家电、湿度调节器、医疗、气象站、及其他相关湿度检测控制等。
产品参数
| 型号 | AM2302 |
| 供电电压 | DC: 3.3-5.5V |
| 测量范围 | 温度:-40~+80℃ 湿度:0~99.9%RH |
| 精度 | 温度:±0.5℃ 湿度:±2%RH (25℃) |
| 分辨率 | 温度:0.1℃ 湿度:0.1%RH |
| 衰减值 | 温度:<0.1℃/年 湿度:<0.5%RH/年 |
| 传感器 | 电容式湿度传感器 |
| 输出信号 | 单总线数字信号 |
| 外壳材料 | PC塑料 |
传感器性能
温度特性表
| 参数 | 条件 | min | typ | max | 单位 |
|---|---|---|---|---|---|
| 分辨率 | 0.1 | ℃ | |||
| 16 | bit | ||||
| 精度 | ±0.5 | ±1 | ℃ | ||
| 量程范围 | -40 | 80 | ℃ | ||
| 重复性 | ±0.2 | ℃ | |||
| 互换性 | 可互换 | ||||
| 响应时间 | 1/e(63%) | <10 | S | ||
| 漂移 | ±0.3 | ℃/yr | |||
25℃时相对湿度的最大误差
| 参数 | 条件 | min | typ | max | 单位 |
|---|---|---|---|---|---|
| 分辨率 | 0.1 | %RH | |||
| 量程范围 | 0 | 99.9 | %RH | ||
| 精度¹ | 25℃ | ±2 | %RH | ||
| 重复性 | ±0.3 | %RH | |||
| 互换性 | 可互换 | ||||
| 响应时间² | 1/e(63%) | <5 | S | ||
| 迟滞 | <0.3 | %RH | |||
| 漂移³ | 典型值 | <0.5 | %RH/yr | ||
直流特性
| 参数 | 条件 | min | typ | max | 单位 |
|---|---|---|---|---|---|
| 供电电压 | 3.3 | 5 | 5.5 | V | |
| 功耗 | 休眠 | 10 | 15 | μA | |
| 测量 | 500 | μA | |||
| 平均 | 300 | μA | |||
| 低电平输出电压 | 0 | 300 | mV | ||
| 高电平输出电压 | Rp<25 kΩ | 90% | 100% | VDD | |
| 低电平输入电压 | 下降 | 0 | 30% | VDD | |
| 高电平输入电压 | 上升 | 70% | 100% | VDD | |
| Rpu | VDD = 5V, VIN = VSS | 30 | 45 | 60 | kΩ |
| 输出电流 | 开 | 8 | mA | ||
| 三态(关) | 10 | 20 | μA | ||
| 采样周期 | 2 | S |
引脚说明
0.96寸4针IIC接口OLED显示屏简介
4 针 IIC OLED 屏幕通过VCC/GND 供电、SCL/SDA 双线同步通信,由主控发送指令与显存数据,驱动芯片(如 SSD1306)解析后控制有机像素自发光成像 。
核心工作机制
物理层连接:4 引脚分别为VCC(3.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 表示后续为数据)。