多功能桌面环境监测站:嵌入式单片机电路设计

/ 0评 / 0

摘要

本文介绍一个多功能桌面环境监测站的整体方案,聚焦嵌入式单片机选型、电路设计、传感器接入、供电管理与调试验证流程。

本文是本人用来联系嵌入式单片机和电路设计的第一个练手项目,项目由AI设计,我本人来实际优化并完成该项目。

首先介绍了项目具体的设计方案,以及需要用到的材料、元件。然后介绍了如何进行电路设计,由于本人模电水平欠佳,部分电路并非自己设计,但为了完成项目,介绍了如何从网上找各个元件的参考电路,并拼在一起,使得总体的系统有用。然后介绍了AD软件的使用以及PCB的绘制,最终的成品+代码。

产品设计

核心功能与硬件选型

模块名称推荐型号选型理由
主控 MCUSTM32F103C8T6经典的 ARM Cortex-M3 核心,引脚适中(48脚),封装(LQFP-48)非常适合练习焊接和 PCB 布线 , 10]。
电源输入USB Type-C (6P/16P)现代主流接口。学习如何处理 Type-C 的 CC 引脚(需加 5.1k 下拉电阻) 。
稳压电路AMS1117-3.3将 USB 的 5V 转为单片机用的 3.3V。学习 LDO(线性稳压器)的滤波电容配置 。
温湿度传感器AHT20 或 DHT11AHT20 采用 I2C 协议,体积小,适合练习表贴封装布线;DHT11 适合单总线练习 。
光敏检测** GL5516(5-10) 光敏电阻**模拟信号输入。学习分压电路设计及单片机 ADC(模数转换)功能。
显示模块HS96L03W2C03 0.96寸 OLED (I2C)好用
串口调试CH340C内置晶振的 USB 转串口芯片。学习如何实现一键下载电路(DTR/RTS 控制) 。
交互/提示按键 + LED + 有源蜂鸣器基础 GPIO 控制,学习三极管驱动电路(驱动蜂鸣器) 。

具体实现方案

整个系统的工作流程如下:

  1. 供电:通过 Type-C 接入 5V 电源,经 AMS1117 降压至 3.3V 为全板供电。
  2. 采集:MCU 通过 I2C 总线读取 AHT20 的温湿度数据,通过 ADC 引脚读取光敏电阻的分压值。
  3. 处理:MCU 对数据进行转换,判断环境光线是否过暗(触发 LED 或蜂鸣器报警)。
  4. 显示:将数据实时刷新到 OLED 屏幕上。
  5. 调试:通过 CH340C 芯片,可以直接用一根 USB 线连接电脑进行程序烧录和串口打印 。

以上设计由Gemin 3 Flash给出,我看了感觉蛮合理的,成本也不算太高,可以实现。

电路原理图设计

此部分我认为是一个难点

USB Type-C 供电电路

在网上找到了一个这个参考电路:

image.png

实战中其实可以问AI(开启联网功能):如何用这个模块(USB Type-C)进行供电,具体的电路原理图怎么设计?帮我在网上找一个电路原理图并给我原贴链接。

image.png

不过我又寻思,我单片机都用stm32了,其实可以会直接用stm32来供电,不需要另设usb接口。实际上,stm32也有USB-C接口

## AMS1117-3.3 稳压电路

这个我是直接谷歌搜索得到的:

image.png

来源:https://www.ic-components.tw/blog/ams1117-3.3-features,applications,and-wiring-guide-for-stable-voltage-regulation.jsp

可能是某个元件原理图的参考网站。我感觉这种网站蛮有价值的,值得总结一下。

AHT-20 温度湿度传感器模块

其实要查找典型应用电路的话,直接看产商的这个元件数据手册也是不错的选择。这个元件我就是直接上嘉立创搜索这个元件的数据手册,然后查看

image.png

可以看到内容非常详细,引脚定义和典型应用图给出了

image.png

可以看出这就是一个典型的I2C通信协议。非常适合让我们用来学习总线和该通信协议。

数据手册非常的好,也给出了时序图。其实就是I2C的时序。

当然也可以直接把pdf丢给AI读,让它告诉我们这个模块具体的数据读取方法(当然前提是自己掌握了I2C通信协议)

image.png

有了基本的电路图后,其实可以把这些电路图一起发给AI让AI参考这些单个模块的电路原理图,来给你设计总的电路架构图。

image.png

我这边这样提问其实是加入了自己的想法,AI既然说没问题那就这么的做了。

GL5516(5-10) 光敏电阻

这个其实是一个模拟信号元件,并非数字信号的。所以涉及了模数转换。

首先我们还是需要这个元件的数据手册,依旧上嘉立创搜索该元件,并下载。可以看到手册pdf也是非常的详细。pdf中已经给出了电阻阻值随光照强度变化的曲线。

image.png

我们希望设计一个电路来通过这个光敏电阻来测量环境的光强,然后通过模拟信号值(如电压或电流)来反映。这个模拟信号要转换成数字信号,并用stm32来进行处理,最终输出到我们的显示屏上。这是我的一个基本思路。

这部分pdf中倒是没有参考电路,不过因为电路也是比较简单,AI直接查到了基本的电路,如下:

image.png
image.png

可以看到,模拟信号转数字信号的过程是直接发生在STM32内部。直接把模拟信号接入到STM32 ADC引脚即可。

具体实现原理是,STM32 的 ADC 会将电压转换为一个 12 位的数字,调用stm封装好的函数 HAL_ADC_GetValue() 获取原始值 ad_val 。则 ad_val 越大 →→ 电压越高 →→ 光线越强。

可以简单地将 0-4095 映射为 0-100% 的光照强度,如果想算出具体的 Lux(勒克斯)值,需要用到规格书中的 $\gamma$ 值(GL5516 为 0.6)。公式比较复杂:$R = R_{10} \times (10/E)^\gamma$。但对于大多数练手项目,直接使用 ADC 原始数值进行区间判断(如:0-1000 为黑夜,1000-3000 为白天)就已经足够实用且稳定了。

AI还给出了抗干扰优化方案:在 PCB 设计时,建议在 ADC 引脚与 GND 之间并联一个 0.1μF (104) 的贴片电容。这个小电容能滤除环境中的高频噪声,防止 OLED 屏幕上的光照数值来回抖动。这也是合理的。

HS96L03W2C03 OLED屏幕

这个就比较简单了,嘉立创数据手册。也是I2C协议。

image.png

典型的4引脚,正常接入即可。

本节总结

至此我们基本完成了每个模块的认识,以及基本电路的设计,接下来进行总电路的设计。

(2026.2.9 编至此)

(未完待续……)

发表回复