返回 登录
0

原型到产品:在Arduino上运行Python

阅读10424

原文:Prototype to production: Running Python with Arduino
作者:Jacob Beningo,嵌入式软件顾问(jacob@beningo.com)
翻译:赵屹华 审校:刘翔宇

我在上一篇文章《用Python在实时嵌入式系统中扮演的角色》里介绍了一些用Python做嵌入式开发的方式。读者们可能想到的一个问题就是是否可以将Python和Arduino结合,用它们快速地开发原型。我们就来探究一下可行性。

过去,“Arduino”的标签意味着使用的开发板上有一个Atmel处理器,并且使用Arduino软件库。现在不再如此。几乎每家微处理器制造商都基于Arduino板设计了一套开发工具,用到了它们自己的处理器和软件。在《原型到产品:专业化的Arduino》一文中,我提到Arduino给开发者提供的最重要特性就是硬件兼容,并且能用它们自己的软件。正在试图融合Python和Arduino优点的开发者需要寻找一款开发工具或是平台,符合硬件标准,能运行Python,但又不局限于使用Atmel处理器或是Arduino代码包。

在Arduino上运行Python的小技巧就是寻找一个兼容Arduino的开发工具,在上面运行Python。这个问题本质上就是寻找哪种型号的Arduino板子有Python端口。没有开发者会为了在单片机上运行Python而自己做迁移,尽管迁移Python很有趣,但是也非常耗费精力。当然还有其它的开发者,和开源的或者迁移的Python代码。

强大的谷歌搜索告诉我们几乎没有合适的选择。仅有的几个之一的选择是一款五年前的开源产品,名为Pymite。它使用的Python版本是2.5(不是最新的2.7版本),在过去两年里几乎没有更新。没有活跃社区的支持,Pymite也免不了落入开源项目的陷阱中。Pymite可以作为一个方案,但是在出现问题的时候会很无助。

**第二种选择是Micro Python。**Micro Python是一个Python 3的开源项目,针对单片机做了性能优化。(你可以阅读《Micro Python入门教程》来了解它)。Micro Python近期汇集了一些资源,目前支持许多硬件平台,包括CC3200、ESP8266、PIC16和STM32。粗略浏览Micro Python代码库(如图1)可以发现它对STM32家族的产品支持度要好于其它产品。

图片描述

图1 – Micro Python stmhal列表

但是,这些单片机开发工具包在盒子之外还支持Micro Python吗?对目前支持Micro Python的板子调研后发现,只有NETDUINO_PLUS_2和OLIMEX_E407有Arduino兼容的输出。OLIMEX_E407使用的处理器与PyBoard原产的405RG略有不同,但是Netduino Plus 2使用完全相同的处理器。不幸的是,Netduino Plus 2刚刚被淘汰。取而代之的是Netduino Plus 3,它的处理器性能远远好于405RG。这款新处理器目前还没有Micro Python的端口。因此,开发者只能使用Olimex板,或者能找到一块可用的Netduino Plus 2.

如果上述两种方案对开发者来说都无法实现,用Arduino板子运行Python的第三种方案就是在PyBoard板子和标准Arduino引脚板子之间连一块适配板。适配板也许是确保与原生Micro Python板以及将来更新相兼容的最佳方案。第四种方案就是基于405RG制作我们自己的Arduino兼容板子,不过这样我们的原型制作速度将大打折扣。

一个开发团队是有可能整合Arduino、硬件设备、Python编程的便捷性以及软件开发的优势。然而,目前并没有一种唾手可得的经验。开发者若想在Arduino上运行Python,可以先写好Python脚本,然后在Olimex 407或是Netduino Plus 2上轻易地跑起来。感兴趣的开发者们可以观看我在YouTube上发布的一系列视频

评论