当前位置: 首页 > news >正文

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设计要点

布局原则(遵循"先大后小,先难后易")
  1. 核心控制芯片(ESP8266)居中放置
  2. 接口连接器靠边布置,便于接线操作
  3. 电源滤波电容紧靠芯片VCC引脚
  4. 走线尽可能短、直
布线规则
  • 布线顺序:信号线 → 电源线 → 地线
  • 线宽选择:GND线 > 电源线 > 信号线
    • GND线:20mil
    • 电源线:15mil
    • 信号线:10mil
  • 双面板布线:通过快捷键B(底层)/T(顶层)切换走线层
常见错误⚠️
错误类型说明
未完成连接导线未连接到目标焊盘
走线交叉同一层走线相互跨越
元器件堆叠器件投影重叠

四、开发板焊接

4.1 元器件识别

直插元器件

电阻(色环法读值):

色环绿
数值01234567890.10.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 焊接步骤

焊接顺序(先低后高)
  1. ESP8266芯片(最关键,先焊)
  2. BL1117 LDO
  3. 贴片电阻(注意方向)
  4. 贴片电容(注意正负极)
  5. 按键开关
  6. 三极管
  7. 发光二极管(注意正负极)
  8. 连接器
  9. 直插电容(注意极性)
贴片焊接技巧
1. 其中一个焊盘先加锡 2. 用镊子将元器件推到焊盘上固定 3. 焊接元器件另一端 4. 最后回来补焊第一端

4.3 焊接完成检查

✅ 找指导老师打分
✅ 用签字笔在开发板上写上学号和姓名
✅ 正面拍照留档


五、固件开发(MicroPython)

5.1 开发环境

项目软件/工具
编程语言MicroPython(Python 3精简版)
开发工具uPyCraft
驱动CH340(USB转串口)
固件ESP8266 MicroPython固件

5.2 固件烧录步骤

  1. 安装CH340驱动(ch341ser.exe
  2. 打开uPyCraft,选择正确的COM口
  3. 点击烧录固件,选择ESP8266芯片
  4. 等待烧录完成

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 DATAGPIO5温湿度传感器
OLED SCLGPIO14I2C时钟
OLED SDAGPIO2I2C数据
LED(板载)GPIO4板载蓝色LED
串口TXGPIO1程序烧录/调试
串口RXGPIO3程序烧录/调试

📝声明:本文为南京邮电大学电子装配实习个人记录,内容基于课堂PPT和实际操作经验整理,供学习交流参考。如有疏漏,欢迎指正。

http://www.jsqmd.com/news/674536/

相关文章:

  • Coze对接飞书多维表格:内容数据每日自动同步系统开发指南
  • 【C++】queue(二)
  • Python 封神技巧:1 行代码搞定 90% 日常数据处理,效率直接拉满
  • SegNet 彻底吃透:编码器-解码器架构封神,语义分割边界精度卷到极致!
  • 医疗电爪安全规范详解,2026年优质医疗自动化电爪品牌甄选 - 品牌2026
  • LeetCode 热题 100-----4. 移动零
  • Anthropic新品频发“斩杀”传统软件公司,AI与SaaS是取代还是融合?
  • JVM执行模式解析:解释、编译与混合优化
  • 千问 LeetCode 1575.统计所有可行路径 public int countRoutes(int[] locations, int start, int finish, int fuel)
  • 嵌入式C语言高级编程之依赖注入模式
  • Cursor Skill 概念、编写与接入指南
  • 【C++】手撕日期类——运算符重载完全指南(含易错点+底层逻辑分析)
  • 《每个女孩都是生活家》
  • 如何利用智能照明控制器实现城市照明的“零扰民”运维?
  • ML:数据集、训练集与测试集
  • Ubuntu服务器Docker安装后必做的三件事:换源、装Portainer、设自启(避坑实录)
  • Meta烧Token成KPI,OpenClaw引发AI成本结构重塑:不拼算力拼效率
  • LeetCode热题100-单词拆分
  • 1.7k stars!Mozilla 出手了!开源 AI 客户端 Thunderbolt,让企业真正掌控自己的 AI!
  • 质子成像诊断随机磁场技术
  • 了解新能源电爪产线适配性,专业新能源汽车制造电爪厂家挑选 - 品牌2026
  • 别再用`yum install gcc`了!手把手教你源码编译安装GCC 11.2.0,打造专属开发环境
  • 2026年专业伺服电爪厂商甄选指南:伺服电爪精准控制解析 - 品牌2026
  • 利用层次聚类来提升知识检索的性能
  • SQL练习题及答案与详细分析
  • 告别网页版卡顿!手把手教你用BLAST+在Ubuntu上搭建本地序列比对环境(附批量建库脚本)
  • Dify工业知识库冷启动难题破解:仅需3人·2天·1台国产服务器,完成某汽车零部件集团全厂知识纳管
  • Go语言的文件处理操作
  • 可学习上采样方法改进YOLOv5特征图恢复:从原理到实战全解析
  • Display Driver Uninstaller终极指南:5步彻底解决显卡驱动安装难题