- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
让开源硬件的选择不再成为难题
●pinpong库的起源
1.开源硬件大盘点
据不完全统计,目前市场上有一百多种开源硬件,其中在中小学市场占有率较高的有Arduino、micro:bit、掌控板等,这些开源硬件支持的编程语言和工具如表1所示。
从表1中会发现,树莓派、虚谷号、拿铁熊猫和pcDuino等开源硬件,因为都采用了性能较好的芯片,能够运行标准的Linux操作系统,所以能够支持Python语言,支持Pythonidle之类任何一款能够运行Linux的PythonIDE。而Arduino、micro:bit和掌控板这三种市场占有率最高的开源硬件,都不支持Python。这些硬件中共同支持的编程工具,只有ArduinoIDE。
Arduino的兴起,是因为其采用了标准的编程规范,简化了单片机的开发难度,毕竟创客教育面向的是非专业人群。但是ArduinoIDE采用的是C/C++,在开发难度上比Python要高很多。当中小学的主流编程转向Python后,大家不得不重新寻求一种新的解决方案。因而,MicroPython一出现,就很快成为开源硬件编程语言中的热点。micro:bit和掌控板的一夜成名,MU、BXY和mPython等工具的先后面世,并且写入国家教材,正是因为其顺应了中小学编程语言发展的潮流。
2.选择开源硬件难在哪里
不同的开源硬件采用了不同的芯片,其支持的编程语言和编程工具也各自不同,甚至连引脚编号和支持的扩展模块也不同。Arduino的优势在于其外部扩展资源多,掌控板的优势在于它能够便捷联网,虚谷号的优势在于它支持标准的Python,那么究竟是选择Arduino、micro:bit还是选择掌控板、虚谷号呢?
除了ArduinoIDE外,有沒有一种编程语言,用统一的编程规范来控制不同的开源硬件?答案肯定是有的,那就是新兴的Mind+、Kittenbot等图形化编程工具。因为类似Scratch、Blockly的图形化代码最终会“转化”为相应的代码,如Arduino代码或者MicroPython代码。这样就降低了编程的门槛,同样的代码规范,在不同的硬件上都通用。
3.开发pinpong库的可行性分析
笔者为什么选择用开发Python库的形式,而不是开发一个全新的编程语言,主要有如下几点理由。
(1)Python已经成为中小学主流编程语言
Python虽然古老,但因为开源而与时俱进。作为一个为非专业用户设计的编程语言,Python类似Shell,让用户不需要过多关注算法之外的细节,淡化了界面设计,成为培养学生计算思维的最好工具之一。可以肯定,接下来从初中开始,主流的编程语言一定是Python。那么用扩展库的方式,让Python又多了一项功能,是最主流也是最合理的一种选择。
(2)用Python控制开源硬件已经有一定的基础
(3)能运行Python的开源硬件将越来越普及
继树莓派之后,越来越多的“派”系列产品被设计出来,如pcDuino、香蕉派和香橙派等,这些开源硬件的价格越来越亲民,因此,与其想方设法用MicroPython的方式去兼容单片机,还不如直接用Python代码去控制开源硬件。这样一来,Python的各种“无所不能”的库都可以用起来。
●pinpong库的规划
如何设计一个Python库?笔者首先确定了这个库的第一目标人群是中小学生,是初学者。其次,考虑到micro:bit和掌控板都支持MicroPython,那这个库要兼容它们的语法。因此,这个库需要具备代码简洁、语法灵活和使用简单三大特点。
1.工作原理
pinpong库选择的方案是使用标准的Python代码来控制开源硬件,这和MicroPython的做法不一样。MicroPython是借用了Python的语法风格,最终会编译为C语言。而Python中大量的库都要经过重新编写才能使用。
那么,如何通过pinpong来控制开源硬件呢?笔者借助了一个通用的串口通信协议Firmata。开源硬件会输入一个特定的固件,计算机发送命令给开源硬件,开源硬件执行命令后再反馈信息给计算机,这个过程的速度很快,如同直接控制开源硬件一样。
2.支持硬件
从表1可以看出,开源硬件的品牌虽然很多,但基本上可以分为Arduino(涵盖了拿铁熊猫和虚谷号等)、ESP32(包括ESP8266和掌控板等)、micro:bit和树莓派(涵盖了pcDuino和banana派等)这四个类别。笔者给这些开源硬件分别起了一个“别名”,即board_name,如下页表2所示。目前,pinpong库已经支持Arduino、虚谷号和掌控板,其他的开源硬件支持已经在规划中。
3.基本用法
如何让代码更加简洁,并且容易理解?以ArduinoUNO为例,下页表3中的代码将点亮Arduino板载的LED灯
文档评论(0)