csdn_article
南京邮电大学电子装配实习:从原理图到实物,全流程实战记录
📅 实习时间:2026年春季
🏫 学校:南京邮电大学
📂 项目:数据中心温湿度监测系统(ESP8266 + DHT11 + OLED)
👨🏫 指导:电子实训创新实践教研室
一、实习概述
本次电子装配实习以**“数据中心温湿度监测”**为主线,贯穿了从方案设计 → 电路原理图绘制 → PCB设计 → 硬件焊接 → 固件开发 → 功能测试的全流程。
核心任务:
- 使用ESP8266作为主控芯片
- 通过DHT11温湿度传感器采集数据
- 将数据实时显示在0.96寸 OLED 屏幕上
二、方案设计
2.1 项目背景
随着数据中心规模的扩大,温湿度监控成为基础设施运维的重要环节。本项目设计一个基于 ESP8266 的温湿度采集终端,实时采集并显示机房环境数据。
2.2 系统架构
整个系统分为三个核心模块:
┌─────────────────────────────────────────────┐ │ ESP8266 主控芯片 │ │ │ │ ┌──────────┐ ┌──────────┐ ┌─────────┐ │ │ │ DHT11 │ → │ 采集与 │ → │ OLED │ │ │ │ 传感器 │ │ 数据处理 │ │ 显示屏 │ │ │ └──────────┘ └──────────┘ └─────────┘ │ │ ↑ ↑ │ │ 采集信号 显示数据│ └─────────────────────────────────────────────┘2.3 关键器件选型
| 模块 | 器件 | 说明 |
|---|---|---|
| 主控 | ESP8266 | 国产物联网芯片,带WiFi,GPIO丰富 |
| 传感器 | DHT11 | 数字温湿度传感器,单总线通信 |
| 显示 | 0.96寸 OLED (SSD1306) | I2C接口,128×64分辨率 |
| 电源 | USB 5V → 3.3V | 通过 BL1117 LDO 转换 |
2.4 信号转换原理
电路只能处理电信号,温湿度不是电信号,如何转换?
传感器(Transducer/Sensor)——一种检测装置,感受被测量的信息,并按一定规律变换成电信号输出。
传感器的应用举例:
- 🔓自动门:利用人体红外微波感应开关
- 🔥烟雾报警器:利用烟敏电阻测量烟雾浓度
- 📷手机摄像头:利用光学传感器捕获图像
三、电路设计(嘉立创EDA)
3.1 开发工具
使用嘉立创EDA(立创标准版)进行原理图和PCB设计:
- 官网:
https://pro.lceda.cn/ - 特点:免费使用,自带元器件库,支持原理图→PCB一站式设计
3.2 新建工程
文件 → 新建 → 工程 → 工程标题:学号+姓名3.3 原理图设计要点
模块一:ESP8266最小系统
关键电路包括:
- 电源电路:USB 5V → BL1117 → 3.3V,为ESP8266供电
- 串口电路:USB转UART(CH340),用于程序烧录和调试
- 复位电路:RST按键
- BOOT选择电路:GPIO0通过按键接地选择烧录模式
模块二:DHT11接口
DHT11 (4针): VCC → 3.3V GND → GND DATA → GPIO5 (可自定义)模块三:OLED接口
OLED SSD1306 (4针, I2C协议): VCC → 3.3V GND → GND SCL → GPIO14 (I2C时钟) SDA → GPIO2 (I2C数据)3.4 PCB设计要点
布局原则(遵循"先大后小,先难后易")
- 核心控制芯片(ESP8266)居中放置
- 接口连接器靠边布置,便于接线操作
- 电源滤波电容紧靠芯片VCC引脚
- 走线尽可能短、直
布线规则
- 布线顺序:信号线 → 电源线 → 地线
- 线宽选择:GND线 > 电源线 > 信号线
- GND线:20mil
- 电源线:15mil
- 信号线:10mil
- 双面板布线:通过快捷键
B(底层)/T(顶层)切换走线层
常见错误⚠️
| 错误类型 | 说明 |
|---|---|
| 未完成连接 | 导线未连接到目标焊盘 |
| 走线交叉 | 同一层走线相互跨越 |
| 元器件堆叠 | 器件投影重叠 |
四、开发板焊接
4.1 元器件识别
直插元器件
电阻(色环法读值):
| 色环 | 黑 | 棕 | 红 | 橙 | 黄 | 绿 | 蓝 | 紫 | 灰 | 白 | 金 | 银 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 数值 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0.1 | 0.01 |
读取方法:找到误差环(与其他四环间距较大,放在最右边),从左到右依次读值
电容容值计算(3位数码表示法):
222 = 22 × 10² PF = 2.2nF = 0.0022μF 104 = 10 × 10⁴ PF = 100nF = 0.1μF贴片元器件
贴片电阻读值:
- 三位数字法:
472→ 4700Ω,151→ 150Ω - 含小数:
2R4→ 2.4Ω,R15→ 0.15Ω
IC芯片引脚识别:
壳体有凹陷圆点,该圆点为起点,按逆时针方向递增计数各引脚。
4.2 焊接步骤
焊接顺序(先低后高)
- ESP8266芯片(最关键,先焊)
- BL1117 LDO
- 贴片电阻(注意方向)
- 贴片电容(注意正负极)
- 按键开关
- 三极管
- 发光二极管(注意正负极)
- 连接器
- 直插电容(注意极性)
贴片焊接技巧
1. 其中一个焊盘先加锡 2. 用镊子将元器件推到焊盘上固定 3. 焊接元器件另一端 4. 最后回来补焊第一端4.3 焊接完成检查
✅ 找指导老师打分
✅ 用签字笔在开发板上写上学号和姓名
✅ 正面拍照留档
五、固件开发(MicroPython)
5.1 开发环境
| 项目 | 软件/工具 |
|---|---|
| 编程语言 | MicroPython(Python 3精简版) |
| 开发工具 | uPyCraft |
| 驱动 | CH340(USB转串口) |
| 固件 | ESP8266 MicroPython固件 |
5.2 固件烧录步骤
- 安装CH340驱动(
ch341ser.exe) - 打开uPyCraft,选择正确的COM口
- 点击烧录固件,选择ESP8266芯片
- 等待烧录完成
5.3 基础测试程序
LED闪烁
importtimefrommachineimportPin led=Pin(4,Pin.OUT)# 建立LED对象,与GPIO4连接whileTrue:led.value(1)# 设置GPIO4为高电平time.sleep(0.5)# 延时0.5秒led.value(0)# 设置GPIO4为低电平time.sleep(0.5)# 延时0.5秒ESP8266可用GPIO口:4、5、12、13、14
⚠️ GPIO16用于DeepSleep唤醒,有特殊限制
OLED显示
frommachineimportPin,I2Cimportssd1306# 初始化I2C,OLED连接在GPIO14(SCL)和GPIO2(SDA)oled=ssd1306.SSD1306_I2C(128,64,I2C(scl=Pin(14),sda=Pin(2)))# 显示"Hello World"oled.fill(0)# 清屏oled.text("Hello World",10,10)oled.show()读取温湿度
importdht dht11=dht.DHT11(Pin(5))# DATA引脚连接GPIO5dht11.measure()# 执行测量print(dht11.temperature())# 获取温度(℃)print(dht11.humidity())# 获取湿度(%)5.4 WiFi功能
连接WiFi热点
importnetwork wlan=network.WLAN(network.STA_IF)# 创建Station接口wlan.active(True)# 激活接口wlan.connect('WiFi名称','密码')# 连接WiFiprint('网络配置:',wlan.ifconfig())# 打印IP地址等信息设置WiFi热点
importnetwork ap=network.WLAN(network.AP_IF)# 创建AP接口ap.active(True)# 激活接口ap.config(essid='ETC',password='12345678')# 设置热点名称和密码六、PWM应用——舵机控制
6.1 PWM基本概念
PWM(Pulse Width Modulation)——脉冲宽度调制,通过改变一个周期内高电平的持续时间比例,来控制输出电压的平均值。
占空比(Duty Ratio)= 高电平时间 / 整个周期时间
┌─────────────────────┐ │ 占空比 = 50% │ → 平均电压 = 3.3V × 50% = 1.65V │ ████████████░░░░░░ │ └─────────────────────┘ ┌─────────────────────┐ │ 占空比 = 25% │ → 平均电压 = 3.3V × 25% = 0.825V │ ██████░░░░░░░░░░░░ │ └─────────────────────┘6.2 舵机控制原理
舵机利用PWM脉冲驱动:
| 参数 | 值 |
|---|---|
| 脉冲周期 | 20ms(50Hz) |
| 高电平0.5ms | → 0° |
| 高电平1.5ms | → 90° |
| 高电平2.5ms | → 180° |
6.3 舵机控制代码
frommachineimportPin,PWM# 创建PWM对象,频率50Hzservo=PWM(Pin(5),freq=50)# 占空比与角度的关系式(需要实测标定)# 0°: duty=40左右, 90°: duty=115左右, 180°: duty=215左右defangle_to_duty(angle):return40+int(angle*175/180)# 控制舵机旋转到指定角度servo.duty(angle_to_duty(0))# 旋转到 0°servo.duty(angle_to_duty(90))# 旋转到 90°servo.duty(angle_to_duty(180))# 旋转到 180°七、温湿度监测完整代码
# main.py - 数据中心温湿度监测系统importdhtfrommachineimportPin,I2Cimportssd1306importtime# ============ 初始化 ============# DHT11 温湿度传感器,DATA连接GPIO5dht11=dht.DHT11(Pin(5))# OLED 显示屏,I2C接口# SCL=GPIO14, SDA=GPIO2i2c=I2C(scl=Pin(14),sda=Pin(2))oled=ssd1306.SSD1306_I2C(128,64,i2c)# ============ 主循环 ============defmain():whileTrue:try:# 读取温湿度dht11.measure()temp=dht11.temperature()hum=dht11.humidity()# OLED显示oled.fill(0)oled.text("Data Center",0,0)oled.text("Monitor v1.0",0,12)oled.text("-----------",0,24)oled.text("Temp:",0,36)oled.text(str(temp)+" C",50,36)oled.text("Hum:",0,48)oled.text(str(hum)+" %",50,48)oled.show()print("温度: {} C, 湿度: {} %".format(temp,hum))exceptOSErrorase:print("传感器读取错误:",e)time.sleep(2)# 每2秒刷新一次# 执行main()八、实习总结
8.1 知识点回顾
| 阶段 | 核心技能 |
|---|---|
| 方案设计 | 系统架构设计、传感器原理、GPIO分配 |
| 电路设计 | 嘉立创EDA使用、原理图绘制、PCB布局布线 |
| 硬件焊接 | 直插/贴片焊接技巧、元器件识别 |
| 固件开发 | MicroPython编程、GPIO控制、I2C通信 |
| 功能测试 | 传感器读取、OLED显示、PWM舵机控制 |
8.2 经验总结
💡经验1:PCB布局时,核心芯片放中间,接口放边缘,走线最短优先。
💡经验2:焊接贴片芯片时,先固定一个引脚,再逐个焊接其余引脚,避免虚焊。
💡经验3:ESP8266的GPIO16有特殊限制,不支持普通PWM,需注意引脚分配。
💡经验4:MicroPython固件烧录失败时,先检查COM口选择和芯片型号设置。
8.3 拓展创新方向
- 🌐 增加WiFi连接,实现数据上云(MQTT协议)
- 📱 开发手机APP,远程查看温湿度数据
- 📈 增加历史数据存储(SD卡或Flash)
- 🔔 设置温湿度阈值报警功能
九、附录
常用快捷键(嘉立创EDA)
| 功能 | 快捷键 |
|---|---|
| 放置导线 | W |
| 放置网络标签 | N |
| 切换到底层 | B |
| 切换到顶层 | T |
| 修改线宽 | Tab |
引脚连接汇总
| 外设 | GPIO | 说明 |
|---|---|---|
| DHT11 DATA | GPIO5 | 温湿度传感器 |
| OLED SCL | GPIO14 | I2C时钟 |
| OLED SDA | GPIO2 | I2C数据 |
| LED(板载) | GPIO4 | 板载蓝色LED |
| 串口TX | GPIO1 | 程序烧录/调试 |
| 串口RX | GPIO3 | 程序烧录/调试 |
📝声明:本文为南京邮电大学电子装配实习个人记录,内容基于课堂PPT和实际操作经验整理,供学习交流参考。如有疏漏,欢迎指正。
