第一章:项目概述与环境搭建
1.1 万用表数据记录系统简介
说实话,做嵌入式这么多年,我见过太多工程师还在用手工记录万用表数据。拿个小本子,盯着屏幕读数,再抄下来。效率低不说,还容易出错。
这个项目要做什么?说白了,就是让万用表自己把数据吐出来,存到电脑里,还能自动打上时间戳。你想想看,做老化测试、温度漂移实验的时候,一测就是几个小时甚至几天。人工盯着?不现实。
我记得有一次帮客户做电源模块的长期稳定性测试,要求每5秒记录一次输出电压,连续测72小时。手工记录?那是不可能的。当时我就用这套思路,写了个简单的数据采集脚本,把万用表和电脑连起来,自动跑完了全程。客户看到数据曲线的时候,眼睛都亮了。
这套系统能做什么?我列几个典型场景:
- 产线批量测试:自动记录每块板子的电压、电流,生成报表
- 环境实验监测:配合温箱,记录不同温度下的参数变化
- 电池放电曲线:连续记录电压下降过程,分析电池性能
- 故障排查:捕捉异常瞬间的数据,帮你定位问题
核心价值:把重复劳动交给机器,让工程师专注于数据分析本身。
1.2 技术选型:为什么是 Python + PySerial + SQLite
选技术栈这事儿,我踩过不少坑。早期用 C# 写过类似工具,功能是没问题,但改起来太痛苦。后来换到 Python,嗯,真香。
Python:为什么选它?三个字——快、稳、省。开发速度快,生态稳定,省时间。你想想看,一个串口通信程序,Python 用 PySerial 十几行代码就能搞定。换别的语言?光配置环境就得折腾半天。
PySerial:这是 Python 操作串口的标配库。我在项目中用过不下十次,从简单的数据读取到复杂的多设备通信,它都能胜任。而且跨平台,Windows、Linux、macOS 通吃。
SQLite:有人问为什么不用 MySQL?杀鸡焉用牛刀。SQLite 是嵌入式数据库,不需要安装服务端,一个文件搞定所有数据。对于万用表这种单机应用场景,再合适不过了。
我曾经在一个项目里用 CSV 存数据,结果跑了三天,文件打开就卡死。换成 SQLite 之后,查询、导出、分析都变得丝滑顺畅。
| 技术组件 | 版本建议 | 用途 |
|---|---|---|
| Python | 3.8+ | 主程序语言 |
| PySerial | 3.5+ | 串口通信 |
| SQLite3 | 内置模块 | 数据存储 |
1.3 开发环境搭建
1.3.1 安装 Python
我个人习惯用 Python 3.10 或 3.11,稳定且兼容性好。去官网下载安装包,记得勾选「Add Python to PATH」。这一步很多人会忘,导致后面命令行找不到 python 命令。
注意:Windows 用户安装时,一定要勾选「Add Python to PATH」。我曾经帮同事排查了半天,最后发现就是这步没勾。
验证安装:打开命令行,输入:
python --version
pip --version
看到版本号就说明装好了。
1.3.2 安装 VSCode
编辑器我推荐 VSCode,轻量、插件丰富。装好之后,再装几个必备插件:
- Python:微软官方出品,语法高亮、智能提示
- Pylance:代码补全和类型检查,写代码快一倍
- Jupyter:调试数据的时候,用 Notebook 看曲线很方便
你可能会问,用 PyCharm 行不行?当然可以。但我个人觉得 VSCode 更轻快,启动快,不占内存。尤其是调试串口程序的时候,VSCode 的终端集成做得很好。
1.3.3 创建虚拟环境
虚拟环境这东西,我建议每个项目都建一个。为什么?避免包冲突。你想想看,项目 A 需要 PySerial 3.5,项目 B 需要 PySerial 3.0,装在一起就乱套了。
创建虚拟环境的步骤:
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境(Windows)
venv\Scripts\activate
# 激活虚拟环境(Mac/Linux)
source venv/bin/activate
激活后,命令行前面会出现 (venv) 字样,说明你已经在虚拟环境里了。
1.3.4 安装项目依赖
接下来安装我们需要的库:
pip install pyserial
pip install pandas # 数据分析时用
pip install matplotlib # 画图时用
验证安装:
python -c "import serial; print(serial.__version__)"
如果没报错,说明 PySerial 装好了。
小技巧:把依赖写进 requirements.txt 文件,下次换电脑直接 pip install -r requirements.txt 一键安装。
1.4 快速验证:连接万用表
环境搭好了,咱们来验证一下能不能和万用表通信。先写个最简单的脚本:
import serial
# 根据你的实际情况修改端口号
ser = serial.Serial('COM3', 9600, timeout=1)
# 发送查询命令(不同万用表命令不同)
ser.write(b'READ?\n')
# 读取返回数据
data = ser.readline()
print(f"读取到数据: {data.decode().strip()}")
ser.close()
运行后如果看到数据输出,恭喜你,通信成功了!
如果没反应,别急。检查这几项:
- 端口号对不对?Windows 在设备管理器里看,Linux 用
ls /dev/tty* - 波特率对不对?万用表说明书上会写,一般是 9600 或 115200
- 线接好了吗?USB 转串口线要装驱动
我曾经在一个项目里折腾了两小时,最后发现是 USB 线接触不良。嗯,硬件问题往往比软件问题更隐蔽。
1.5 本章小结
这一章我们做了三件事:
- 搞清楚了万用表数据记录系统能干什么
- 选定了 Python + PySerial + SQLite 这个技术组合
- 把开发环境搭好了,并且验证了通信
下一章,咱们开始写真正的数据采集程序。到时候你会看到,用 Python 做这件事有多爽。
对了,如果你在搭建环境时遇到问题,别硬扛。去查官方文档,或者看看社区里的帖子。做嵌入式开发,遇到问题才是常态,解决了就是成长。