第一章:项目概述与环境搭建

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 本章小结

这一章我们做了三件事:

  1. 搞清楚了万用表数据记录系统能干什么
  2. 选定了 Python + PySerial + SQLite 这个技术组合
  3. 把开发环境搭好了,并且验证了通信

下一章,咱们开始写真正的数据采集程序。到时候你会看到,用 Python 做这件事有多爽。

对了,如果你在搭建环境时遇到问题,别硬扛。去查官方文档,或者看看社区里的帖子。做嵌入式开发,遇到问题才是常态,解决了就是成长。