哈哈哈,原谅我也成了标题党。不过还是希望您能将这篇文章转发给做电子工程师的朋友看看,或许真的对他是有帮助的。
前一段时间有一篇很火的文章叫《Python正向硬件圈杀来!》,文章中谈论到了很多python在硬件中的应用,但是讲的非常泛泛。今天我就以我的实际经验来讲一下python在我的日常工作中到底有了哪些应用,我到底是怎么做的。最后还会简单讲一下作为一个硬件工程师要怎么去学python。
前一段时间我在部门内部会议室上就向大家展示了python在我的工作中有哪些应用。今天我就在这个基础上添加一些最近的研究。
1.单片机开发
Python也可以用来做单片机开发了,Micropyhon可以应用在stm32上,我自己是在ESP32上使用的。
case1:
使用ESP32 和阿里云搭建了一个简单的物联网平台,系统框图如下。这套框架全部使用python实现,比我了解到的绝大多数物联网方案要简单很多。
这个我已经写成文章了,链接如下https://www.jianshu.com/p/f6b1936d6052具体细节烦请移步阅读。
case2:
使用MicroPyhon来完成硬件模块的开发。下面这是两个实例:
《使用ESP32驱动电子墨水屏》 https://www.jianshu.com/p/776693227423
《语音识别模块LD3320的MicroPython驱动 https://www.jianshu.com/p/3f20433fd310
case3:
也有使用Micropython来做一些小应用的:
《在墨水屏上显示任意汉字》 https://www.jianshu.com/p/994c8da32d3a
《如何吹灭LED》 https://www.jianshu.com/p/fc583c733674
2.FPGA开发
关于FPGA开发就是大家可能都知道的PYNQ了,最近的一些探索都已经写成文章发布出来了。还在继续搞,应该会有更多的东西发出来。
《使用PYNQ进行FPGA开发》https://www.jianshu.com/p/3e2558582dfa
《给我儿子做个自动读故事的机器》https://www.jianshu.com/p/56df82bd4dbb
《使用CFFI为PYNQ嵌入C语言》https://www.jianshu.com/p/3fd5721f89e5
3.测试自动化
case1:
前段时间做一款气路模块的开发,需要监测不同温度下传感器的输出值变化,以确定其温度特性。实验的设计是让chamber每个一小时自动升温5度,在每个温度值下需要控制气源输出10个不同的流量值并让sensor读回,计算平均值。整套测试大概需要8个小时,记录并计算上万个数据,不可能由人去完成。于是我大概花了一天时间完成测试脚本,完成数据处理采集、存储、计算,所有的数据和结果都记录在excel表格里面。最终只需要进行简单的数据处理就绘制除了各个流量点随温度变化的曲线。
case2:
我们曾经发现一款sensor 存在输出值随着时间漂移的现象,为了获取数据,设计了一个长期监测实验,每天测量一次各个输出点位的实际值,连续监测两周。这个工作可以由人来完成,但是太过耗费时间,每天大约需要花费两个小时的时间,而且需要工程师自己去做。在编写好测试脚本后,只需要每天运行一下就可以了。脚本还有一个额外的好处就是可以连续读取多个数据,计算平均值,所以结果更准确,消除了短期漂移和噪声因素。
使用python来做测试自动化构建速度非常快,能够极大地提升测试效率,并构建好的测试模块可以很方便的重新使用,比如上面连个案例中几乎共用了所有的数据采集和存储模块。
4.数据处理
曾经针对气路模块进行PID参数调整,会记录不同PID参数在不同工作点位的表现,我使用Python建立脚本,自动向测试模块写入PID参数,读取各个点位的输出值存储到Excel。在获取数据后,我建立了一个新的脚本,对各个PID参数加各个点位数据进行计算,得到峰峰值、噪音均方值。然后根据这些数据来选择所需的PID参数。
Python非常适合用来做数据处理,但是我的工作中用的并不多,如果你的工作中有大量的测试数据需处理的话,Python将是一个非常有力的帮手,有效降低你工作出错概率和工作强度。
5.定制常用工具
case1:
我参与设计的模块经常需要修改一个参数,一般是通过命里行工具,使用telnet连接到机器后,使用机器内部的指令来修改参数,有一个非常恶心的地方是输入这个命令的过程中不允许输错。
这个修改非常频繁,而且每次修改的参数都需要去找一个表格来查找。python的message box库就可以用来开发简单的界面程序,所以我就写了下面的小工具。
用它可以用来快速连接机器,完成配置,并通过查表的方式来设置和查询参数。避免到人工操作容易出错的问题。这个小工具很简单其实一共也就100多行代码。就是界面丑了些,但是都是内部使用的工具,不好看也得给我忍着,就是这么强势,哈哈哈。
case2:
我们的机器在质量部进行测试的时候,需要操作人员使用ssh登录连续输入一串指令,指令其实并不复杂,但是这个实验需要经常做。于是我就花了不到半个小时,将这ssh登录和指令操作放到脚本里面,然后打包成一个exe文件,每次只需要运行这个exe然后输入一些机器的IP地址就可以完成一些列操作,总体来说简化不少操作。其实代码真的很简单就像下面这样,有效代码不到20行。
python做界面不是很美观,据说用pyqt会好一些,我也看过一个micropython的开发工具就是用pyqt写的,感觉比自己以前用vc 做的好好看。
其实Python在工作还有其他的应用,只是太细碎,不方便整理出来。也还有很多方面可以去探索,比如用Python来控制我们常用的仪器,比如示波器信号源什么的,能让我们进行一些高级的测试,比如语音控制你的示波器万用表的什么的,相信每个EE都应该体会过测试的时候两只手根本不够用的情况。我想相信在将来,Python甚至能帮助我们完成电路设计。Python在人工智能领域有很广泛的应用,我也学过一些例子,但是目前还没有和我的工作发生关联,所以没有放到这篇文章中。
Pyhon不光对电子工程师很有帮助,只要你的工作中存在大量重复的工作也许都有机会用python来帮助你,只不过很多人没有变成基础,学习和应用起来比较困难。工作之外我还用python写过脚本来获取黄金和股票的报价信息,然后进过简单处理,给我发出买入和卖出信息,当然我并没有真的去买哈。
关于pyhon的学习
我可以非常肯定地说,对于一个硬件工程师来说,python语言没有门槛。硬件工程师哪有不会两门编程语言的,C语言是最起码的吧,只要你会C,我觉得你学python 都不用先看教程,也别去买什么书,浪费钱。
不过我还是可以推荐大家看一个教程,是廖雪峰的。把链接放在这里
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
你可以先扫一遍教程,不需要仔细去学,只需要简单地知道python是怎么回事就行了。
然后,你需要到网上下个python安装包。Python原则上不需要IDE,如果要用的话我推荐PyCharm。环境搭建完成后,就可以去实践一下廖雪峰教程中的小例子了。
学习一个新的技术,最重要的是应用,找到你工作中的需求,做起来就有动力了。遇到问题就去谷歌一顿搜,网上用python的屌丝一大把。