首页 > 应用 > 物联网

编程语言Python的应用

Christopher Wang 2019-07-08

之前提出了一个问题:“为什么工程师还要学习Python?”现在,让我们讨论一下Python如何与电子工程师的工作相关。VHO电子头条

 VHO电子头条

瑞士军刀工程师VHO电子头条

 VHO电子头条

电子工程师不只是处理电路设计。我们还面临着一系列其他需要处理的任务。有固件编程、调试、测试原型硬件和软件、测试生产样品、致力于质量控制以及看似永无止境的数据收集、评估和分析。Python如何帮助解决所有这些问题?VHO电子头条

 VHO电子头条

1.jpgVHO电子头条

输入Python,瑞士军刀语言VHO电子头条

 VHO电子头条

Pythonn非常擅长成为一种通用的编程语言。像HDL(VHDL、Verilog等硬件描述语言)这样的语言做一件特定的事情,比如合成到硬件。C / C ++运行精简,非常适合嵌入式编程。但是,在工具带中使用瑞士军刀语言可以帮助你完成一般用途的任务,这些任务通常是我们处理的大部分事情。VHO电子头条

 VHO电子头条

通常,这些任务可能是测试、数据收集或自动化等之类的,它们占工程师时间的很大一部分。根据我的经验,设计只占工程师时间的5-10%。另外90%左右的时间用于研究、测试原型、调试、创建测试夹具和程序、生产测试、质量控制,当然还有可怕的“D”字......文档。很多在设计之前发生的事情(比如研究部件和实现以及提出系统架构)都无法实现自动化。这些任务使我们成为有创造力的、有艺术性的工程师。但是,一旦设计得以实现(即有趣的部分),仍然需要处理许多繁重的工作。下面是一些繁重的任务,以及Python如何帮助有效地完成这些任务。VHO电子头条

 VHO电子头条

Gerber文件提交的文件处理VHO电子头条

 VHO电子头条

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

 VHO电子头条

由于我的PCB CAD工具不能以所需格式输出Gerbers,因此每次提交PCB时都需要更改文件扩展名。这不是一项艰巨的任务,但由于我每年都会迭代许多设计并进行设计修改,每次我向FAB提交设计时,都会在大约10个不同的文件上更改Gerber文件扩展名。文件处理的一个更实际的例子是当你有一种格式的文件(例如XML)而客户需要另一种格式的文件(例如CSV)时。这是一种常见的情况,如果不是某些客户的表现,通常会是一个巨大的麻烦。但是使用一些库和一些简单的Python代码,可以在多种格式之间更改文本文件。VHO电子头条

 VHO电子头条

自动化测试设备VHO电子头条

 VHO电子头条

作为电子工程师,使用Python的一大优势是控制和自动化测试设备。寻找配备USB输出的低成本测试设备变得越来越普遍,这些设备可以收集数据并以CSV等常见格式存储它们。Python最初是为文本解析而创建的,因此筛选大量文本数据以提取有用信息非常有用。我随身携带的一台便携式示波器就是一台值得信赖的旧式Hantek DSO5202P数字存储示波器。它价格低廉,可以输出波形作为原始CSV数据。VHO电子头条

 VHO电子头条

Python编程语言的应用程序VHO电子头条

带USB接口的Hantek DSO5202P数字存储示波器VHO电子头条

 VHO电子头条

这意味着你实际上可以从某个波形中捕获数据、分析、处理并绘制输出。这是实时的物理数据,你现在可以在计算机内部使用它,并查看它在数字滤波器中的表现。更好的是,你可以对其格式化以馈送到任意波形发生器,并重新创建用于在电路上进行测试的精确波形。VHO电子头条

 VHO电子头条

Python编程语言的应用程序VHO电子头条

Keysight数字万用表背面的GPIB接口。图片来自FarnellVHO电子头条

 VHO电子头条

如果你使用的是支持GPIB接口的测试设备,你还可以使用Python库(如pyVISA)来控制它们。你曾经需要购买NI设备来完成所有这些工作,将其限制在能够负担得起的大公司。现在,你可以以计算机的价格和一些Python专有技术自动化测试设备设置。一旦可以自动化你的测试设备,你就会觉得自己像个魔术师。你可以设置闭环测试,例如使用任意波形发生器激励被测设备,并通过示波器、万用表或数据记录器收集其响应的数据。VHO电子头条

 VHO电子头条

Flask,Python MicroframeworkVHO电子头条

 VHO电子头条

它不仅仅停留在自动化测试设备上。设计连接到某些互联网服务或通过REST API与之通信的产品变得越来越普遍。在开发硬件和编写测试固件时,你还可以使用Python来设置带有REST API的测试服务器以进行连接。你不需要优秀的Web开发人员或为此学习其他语言,因为使用Python / Flask框架设置REST API非常容易。你可以在一小时内逐步设置自定义REST API。VHO电子头条

 VHO电子头条

Python编程语言的应用程序VHO电子头条

 VHO电子头条

作为一名专业的电子工程师,你可能会在某些时候参与生产,并且自动化生产测试的能力非常有用。无论这些节省来自更少的现场故障,更少的退货还是质量控制不良造成的声誉损害更少,测试越一致和彻底,对公司的底线就越好。对于电路设计,我得到了使用钉床探针、线束和夹紧机构制成的定制测试夹具。这些测试夹具可以与Arduino或Raspberry Pi等定制板连接,并可通过计算机进行控制。我的标准生产测试系统由类似这样的东西组成,线束连接到运行Firmata协议固件的ArduinoVHO电子头条

 VHO电子头条

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

 VHO电子头条

SQL:数据库管理语言VHO电子头条

 VHO电子头条

提到过存储吗?这想到了数据库的主题。实际上使用数据库是Python的一种乐趣。它来自SQLite3,是一个基于单个文件的轻量级数据库。如果你希望选择将代码迁移到不同的数据库,尤其是基于服务器的数据库,那么我建议使用名为SQLAlchemy的库。这允许你在不需要更改代码的情况下,与许多流行的关系数据库(如sqlite、postgresql和mysql)进行交互。VHO电子头条

 VHO电子头条

Python编程语言的应用程序VHO电子头条

 VHO电子头条

目前电子工程师如何使用数据库?在我前面提到的自动化测试设置中,测试系统输出了一个序列号以及其他数据,如统计数据、测试结果和其他注释。这些都可以存储在你创建的数据库中,因此会有一个日志跟踪每个生成的电路板的历史记录。返回电路板时,可以查找序列号并检查电路板的历史记录。也许它以前是为RMA返回的,或者它曾经一次测试失败,但在下次尝试时通过了。或者甚至可能是运算放大器在板上出现故障,当简单搜索数据库时,发现这是特定运算放大器在本次生产运行中第五次出现故障。这样的洞察力提高了生产效率、底线和工程师对公司的价值。VHO电子头条

 VHO电子头条

总结VHO电子头条

 VHO电子头条

因为作为一名工程师,Python可以为你打开整个新世界。电子工程师的基础仍然是电子设计。但是,仅仅生活在电子世界里变得越来越困难。我们还必须编写固件、执行测试、收集数据、参与生产并对退回或失败的产品进行取证。除了电子产品和C / C ++外,Python的知识还可以帮助实践工程师从电路设计中把技能从整个产品生命周期中发挥出来。VHO电子头条