电子工程师在什么时候可以使用Python?
发布时间:2019-05-17
分享到:
电子工程师在什么时候可以使用Python?
发布时间:2019-05-17
分享到:

在日常的工作中,电子工程师可以在哪些地方需要使用Python?相信很多只知道Python热门,但具体不知到在哪些应用或者哪些产品中可以使用Python,本文就给大家展示一些Python擅长的应用程序。在很早之前的一篇文章中,我们提出了一个问题: “Python vs. C/C++:电子工程师为什么要学Python?

现在,就让我们来讲讲Python到底可以用在哪些地方?哪些与电子工程师密不可分?

万能的电子工程师

相信很多工程师都深有体会,电子工程师不仅仅只是处理电路设计,我们还面临着一系列其他需要处理的任务。有固件编程,调试,测试原型硬件和软件,测试生产样品,致力于质量控制,以及看似永无止境的数据收集,评估和分析。

那Python如何帮助解决所有的这些问题?

Python非常擅长成为通用编程语言,像HDL(VHDL,Verilog等硬件描述语言)这样的语言可以做一些特定的事情,比如合成到硬件。而像C/C ++这些语言则运行精简,非常适合嵌入式编程。但是,在这之中,Python语言可以帮助完成这些通常的任务,而这些任务通常构成我们处理的大多数事情。

通常,这些任务可能是测试,数据收集或自动化等任务,它们占工程师时间的很大一部分。根据我的经验,设计只占工程师时间的5-10%,另外90%左右的时间用于研究,测试原型,调试,创建测试夹具和程序,生产测试,质量控制。

设计之前的许多事情(比如研究部件和实现以及提出系统架构)都无法实现自动化,这些任务使我们成为具有创造力的手工工程师。但是,一旦设计实施(即有趣的部分),仍然需要处理很多苦差事。

以下是一些苦差事类型的任务以及Python如何有效地帮助完成它们。

Gerber文件提交的文件处理

通常最需要自动化处理的应用程序之一是文件处理,这种类型的流程工作因软件,供应商,客户等而表现的不同,大多数情况下,这些工作流程包括以某种格式处理文件,PCB供应商要求我提交具有特定文件扩展名的Gerber文件,以便他们的工作人员能够解析,检查并确认它们是否符合设计要求。

由于我的PCB CAD工具不能以所需格式输出Gerbers,因此每次提交PCB时都需要更改文件扩展名。这不是一项艰巨的任务,但由于我每年都会迭代许多设计并进行设计修改,每次我向工厂提交设计时,都会在大约10个不同的文件上更改Gerber文件扩展名。

文件处理的一个更实际的例子是当你有一种格式的文件(例如,XML)而客户需要另一种格式的文件(例如,CSV)时,通常会是一个巨大的麻烦。但是使用一些库和一些简单的Python代码,可以在多种格式之间更改文本文件。

自动化测试设备

作为电子工程师,使用Python的一大优势是控制和自动化测试设备,寻找配备USB输出的低成本测试设备变得越来越普遍,这些设备可以收集数据并以CSV等常见格式存储它们。

Python最初是为文本解析而创建的,因此筛选大量文本数据以提取有用信息非常有用。例如,我在现场随身携带的一台便携式示波器Hantek DSO5202P数字存储示波器,它价格低廉,但比较可靠,可以输出波形作为原始CSV数据。

这意味着您可以实际捕获某些波形中的数据,解析,处理并绘制输出。这是你现在可以在计算机内部播放的实时物理数据,并了解它与数字滤镜的行为方式。更加值得一提的是,您可以对其进行格式化以馈送到任意波形发生器,并重新创建用于在电路上进行测试的精确波形。

如果您使用的是支持GPIB接口的测试设备,您还可以使用Python库(如pyVISA)来控制它们,你曾经需要购买NI设备来完成所有这些工作,这就需要一些财力雄厚的公司作为支持,不然这些仪器的价格就能让你个体望而生畏。但现在,你可以以计算机的价格和一些Python专有技术自动化测试设备设置。

一旦你可以自动化你的测试设备,你就会觉得自己像个魔术师,你可以设置闭环测试,例如使用任意波形发生器激励被测设备,并收集有关如何通过示波器,万用表或数据记录器响应的数据,可能性是无止境的,只有你想不到,没有做不到。

Flask,Python Microframework

不过,Python不仅仅停留在自动化测试设备上。如今,设计连接到某些互联网服务或通过REST API与之通信的产品变得越来越普遍。在开发硬件和编写测试固件时,您还可以使用Python来设置带有REST API的测试服务器以进行连接。

您不需要牛叉的Web开发人员或为此学习其它语言,因为使用Python/Flask框架设置REST API非常容易,你基本可以在一小时内逐步设置自定义REST API。

作为一名专业的电气工程师,您可能会在某些时候参与制造,所以拥有自动化生产测试的能力非常有用。测试越一致和彻底,对公司的产品线就会表现的越好,无论是为了降低更多的现场故障,或是更少的退货还是质量控制不良造成的声誉损害更少。

对于我的电路设计,我得通常用探针,线束和夹具多功能为一体的定制化测试夹具,这些测试夹具可以与Arduino或Raspberry Pi等定制板连接,并可通过计算机进行控制。我的标准生产测试系统包括类似的东西,线束连接到运行Firmata协议固件的Arduino。

这允许我使用pyFirmata在Python中与它进行通信,我可以将每个引脚设置为输入或输出,检查每个引脚的状态,记录所有数据,生成唯一的序列号,并输出大的PASS或FAIL消息,当电路板在工厂装配厂时,我只需要教一个人如何运行Python测试脚本,等待要么是PASS,要么是FAIL,并自动存储数据以及该生产运行的统计数据。

SQL:数据库管理语言

存储是一个永恒的主题,这让我想到了数据库的作用,实际上使用数据库是Python的一种乐趣,比如SQLite3,顾名思义,它是一个基于单个文件的轻量级数据库。

如果您希望选择将代码迁移到不同的数据库,尤其是基于服务器的数据库,那么我建议使用名为SQLAlchemy的库。这会使你可以连接到许多流行的关系数据库,如SQLite,PostgreSQL和MySQL,而无需更改代码。

那么问题来了,现在电子工程师该如何使用数据库?

好吧,在我前面提到的自动化测试设置中,测试系统输出了一个序列号以及其它数据,如统计数据,测试结果和其它注释,这些都可以存储在您创建的数据库中,因此会有一个日志跟踪每个生成的电路板的历史记录,当返回电路板时,可以查找序列号,并检查电路板的历史记录,也许它以前是为RMA返回的,或者它曾经一次测试失败,但在下次尝试时通过了。

小结

要说到Python的应用,我基本可以一直说下去,老实说,Python可以为电子工程师打开全新的世界。虽说电子工程师的基础工作仍旧是电子设计,但是,现在,纯粹在电子产品世界中生存变得越来越困难,我们还必须编写固件,执行测试,收集数据,参与生产并对退回或失败的产品进行排查。

如果把电子设计和C/C ++比作面包和黄油,那么了解Python可以帮助工程师完善他们的技能,并制作成精而美的美味蛋糕,从而在电路设计到整个产品生命周期中发挥重要作用。因此,我强烈建议还没有接触过Python的电子工程师趁闲暇之余好好了解下,这可能将在某个阶段对你产生巨大的帮助。

 

强烈推荐阅读:

加入微信技术交流群

技术交流,职业进阶

关注电路设计技能公众号

了解最新技术方案

加入电路城 QQ 交流群

与技术大牛交朋友

讨论