随着中小学创客教育的推进,开源硬件逐步被教育工作者所了解并进入了中小学课堂。从一开始的小规模应用到区域级别的大规模推广,开源硬件因为其价格低廉、性能强大和资源丰富,加上扩展性好,越来越得到教师们的认可,短短数年间,不同价位不同功能的开源硬件如雨后春笋般先后面世。从Arduino到 mixly,再到Mind+和mPython,开源硬件的编程工具也越来越多,越来越好用。

自教育部发布《普通高中信息技术课程标准(2017年版)》后,计算思维成为课程核心素养的重要组成部分,新编写的高中和初中教材也大都选择了Python 作为编程语言。这给开源硬件的教学带来了新的挑战,因为Arduino并不支持 Python,micro:bit和掌控板也仅仅支持MicroPython。中小学应该如何选择开源硬件?在图形化编程工具之后,能不能用Python给不同的开源硬件进行编程, 以达到编程规范的统一?

在这一期的专题中,本刊特约撰稿人、“虚谷计划”联合发起人、全国知名创客教师谢作如老师为上述问题带来了解决方案。他联合蘑菇云创客空间的创客们,开发了一个名叫pinpong的Python库,实现了用统一的Python代码给不同的开源硬件进行编程。pinpong库的出现,让开源硬件的选择不再成为难题,还为物联网、人工智能和互动媒体等领域提供了新的思路。

课程开发者的对话:

新技术如何真正走进中小学课堂2.0

对话嘉宾:

谢作如  浙江省温州中学教师,“虚谷计划”联合发起人;

刘正云 江苏省南通大学附属中学教师,“虚谷物联”项目核心人员。

困难所在

《中国信息技术教育》:无论是开发课程还是编写教材,都非常复杂,不仅要梳理课程的各种知识, 还要综合考虑实施过程中的种种问题。两位老师在开发课程和编写教材的过程中,遇到了哪些问题?

谢作如:

因为我关注的是新技术,所以如何选择一款适合中小学的软件或者硬件,是最核心的工作。往往困难也就在这里。以《开源硬件项目设计》为例,《开源硬件项目设计》编写工作的启动是在2016年年初,那时候国内最流行的开源硬件是Arduino,其次是树莓派。因为树莓派的使用门槛太高, 当时绝大多数的应用案例,都是把树莓派作为一台计算机,要外接显示器、键盘鼠标来工作。我们认为这样的教学场景是难以推广的, 所以一开始就否定了树莓派。但是Arduino的编程语言是C/C++, 或者用Ardu Blcok和Mixly,这也让我们为难。因为教材的其他模块都用Python,到了这个模块用C/C++,且不说学生的编程基础如何落实,就从整体的角度看, 也有些“不搭”。用M ixly之类的图形化编程工具,又有“矮化”学生之嫌。

刘正云:

受谢老师的影响,我也一直专注于开源硬件,当然很希望把这方面的“新技术”真正落地到中小学课堂中去。以清华大学出版 社《物联网与智能家居》教材为例, 物联网技术不算“新”,在中小学教材中也屡有出现,但是如何让物联网技术与当下流行的Python语言打通,使其在中小学课堂里重焕“新”机,则是比较大的困难。我们在编写教材的时候,遇到的最大的困难,也可以说是最大的挑战,就是如何设计和新技术相关,并让学生能真正动手完成各种经典实验的新技术课程。

学生动手实践的前提是学校愿意并且有能力采购本教材所使用的物联网套件。如果成本太高,肯定会有部分学校没有能力实施;如果技术难度太高,教师又没办法上课。采取什么样的编写策略,使得我们的教材既能打破之前教材的瓶颈,又能兼顾到个别学校的实际情况,也是我们在编写的过程中不断思考的问题。

解决方案

《中国信息技术教育》:从两位的介绍中我们可以了解到,选择一款合适的平台(硬件或者软件),是课程能够落地的重点所在。那么, 种种困难最后是如何解决的?

谢作如:

我想只有两条路,一条是不断去找,满世界找。例如, 在写高中信息技术教材的时候,在第一个版本中,我们在智能终端方面选择了用Arduino。大概过了半年,我意外发现micro:bit居然支持MicroPython。经过研究后,我向几位主编提出一个很大胆的想法——把教材中的Arduino换成 micro:bit。

再如,人工智能中的神经网络实验,一开始大家都很犹豫,说TenserFlow太难,但是我们很快发现了还有Keros,其代码简洁并且容易理解。第二条路是自己想办法去解决。例如,当时我们选择micro:bit是有风险的。因为国内还没有厂商支持micro:bit,其外围电路和扩展模块都得不到保障。于是我就一一去说服国内的几家关系比较密切的创客企业,请他们为micro:bit设计扩展板。再通过猫友汇、STEAM教育大会等平台,组织micro:bit的培训,并编写课程。因为有市场后,就会有各种支持。结果我们的教材还没有正式出版, micro:bit在国内的创客教育圈子中已经“火”起来了。

在开发《Arduino创意机器人》之前,ArduBlcok非常不好用,我和刘正云等同学重新整理了细节,请新车间的何琪辰重新开发了ArduBlcok教育版。一开始, micro:bit的代码编写工具并不成熟,官方仅仅提供了在线编写的方式,在教材中没办法用。为此, 我建议DFRobot开发了一款开源的小工具,叫做BXY。目前BXY是micro:bit、掌控板最好用的代码编写工具之一,初中和高中的教学中非常需要。

追溯“虚谷计划”的起源,其实就是我们一线教师因为找不到好的软硬件平台而最后想出的一种办法。掌控板的设计是为了解决物联网的终端问题,虚谷号是为了解决人工智能教学的问题。

刘正云:

值得高兴的是,随着时间的推移,新技术落地的时机也会越来越成熟。在开源硬件的选择上,编写教材时也可以使用成本较低的Arduino和掌控板作为学生操作的主要对象。Arduino是国内最为流行的开源硬件,大众接受度比较高;掌控板是国内开发的一款用于普及STEAM创客教育、人工智能教育、编程教育的开源智能硬件,小巧精致,功能强大。掌控板在开发之初就提供了Python的精简版本——MicroPython作为其编程语言之一;而Arduino一直以来都只使用“块语言”编程或者“类C 语言”进行编程,但在2020年春,虚谷计划和上海蘑菇云的创客们开发了pinpong库,让Arduino也支持 Python编程。

pinpong库是一个Python硬件控制库。其原理是给智能终端烧录一个特定的固件,使智能终端可以通过串口与计算机通信,执行各种命令。目前pinpong库支持Arduino、掌控板和micro:bit、虚谷号等。借助于pinpong库,直接用Python代码就能给各种常见的智能终端编程。pinpong库的设计,是为了让开发者在开发过程中不用被繁杂的硬件型号束缚,而将重点转移到软件的实现。也就是说,硬件已经不重要了,选择什么都可以,软件才是核心。

当软件和硬件得到很好的解决后,编写教材的主要任务就是如何设计活动,设计让学生动手实践的活动。对我来说,需要解决的是要对涉及活动的难易程度、趣味性以及成本进行综合考虑。例如,我们把活动分为体验、实验和实践三类。“体验活动”可由教师进行演释,可由学生根据活动资源包的步骤亲身体验,也可录制视频供学生观看,可选择性较多,因此体验活动在设计的时候会较多关注活动的趣味性;而“实验活动”和“实践活动”是需要学生经历实验和实践的过程,为了大班教学的顺利进行,在选择具体活动时,会考虑所用器材的成本,在设计具体活动时,会考虑活动难度的循序渐进。

教材编写思路

《中国信息技术教育》:能否以某个课程为例,简单介绍一下两位开发课程的思路或者核心理念?

谢作如:

我以《开源硬件项目设计》为例来介绍吧。这是高中信息技术课程的选择性必修模块,是针对学生个性化发展需要,按照开源硬件项目设计流程而设置。模块包括“开源硬件的特征”“开源硬件项目流程”“基于开源硬件的作品设计与制作”三部分内容。

我们编写的教材分为五章。先介绍“开源思想与开源硬件”,接下来通过剖析一个典型的开源硬件项目,了解其开发流程并规划一个项目,然后学习硬件的基础知识,再动手开发这个项目。最后,我们引导学生在GitHub或者Gitee上发布并维护这个项目。

如何让学生成功完成他们的项目呢?考虑到各地各校的条件,我们给学生展示的开源硬件项目偏向程序编写,尽可能避开机械结构。我们提供了三个典型的项目开发流程,作为学生的学习范例,分别是计算机魔法控制器、课堂答题器和智能花盆,涉及人机交互、多机通信和物联网技术,涉及多个学科领域的知识。概而言之,我的课程开发理念是一定要能真正落地实施。

刘正云:

我以《物联网与智能家居》为例来简单介绍一下。教材分为两个单元:第一单元在认识物联网之后,深入了解物联网的终端设备、通信、感知和控制等,并学会搭建一个简单的物联网系统,实现远程互联;第二单元智能家居则是第一单元的具体应用,涉及室内环境的感知、家电的远程控制、智能互动的探究以及智能家居的未来。

和其他教材一样,该教材也采用了项目式学习的方式进行组织教材。项目学习分为“学习导引”“问题需求”“实施规划”“分工协作”“项目实施”“交流分享”等环节,教材在每个单元的最前面,都会给出一个带有具体情境的项目案例,以此引导、启发学生,并鼓励他们尝试自己设计一个与本单元内容有关的大项目;同时在每一节内容的最后,都会通过“项目实施”环节帮助学生厘清项目中的关键点。

课程开发建

《中国信息技术教育》:最后, 让我们回到主题。如何让新技术真正进入中小学课堂,相信是每一位老师都要面对并且需要解决的问题。在这方面,两位老师能给其他课程开发的老师提点建议吗?

谢作如:

信息技术的发展日新月异,我们的教材肯定要与时俱进。对于新技术进中小学课堂,我想需要关注两点。

一是要考虑学习成本,即如何降低技术门槛,让教师能快速接受。例如,在设计掌控板的语法时, 我们特意兼容了micro:bit的语法。同样,虚谷号和pinpong库的语法, 我们再次兼容了掌控板。只要学会了其中的一种,其他的也就触类旁通了。这样一来,开源硬件的教学就慢慢形成了一种行业规范。

二是要考虑实施成本,即不能太贵,不能太麻烦。例如,在设计虚谷号的时候,我将重点放在了jupyter上,如何让虚谷号插上电,通过网络就能编程,这是很好的体验。pinpong能够和jupyter很好地结合,支持常见的开源硬件和普通的输入输出模块,这样就将硬件的投入降得很低。这两点在其他新技术的推广上也通用。

刘正云:

除了谢老师说的学习成本和实施成本以外,我对新技术进中小学课堂还想补充一点。这几天,pinpong库的最新版本已经能够支持NFC模块了,这是我前段时间对开发小组提出的新需求。因为NFC是物联网技术中的核心技术之一,应用很广,目前没有特别简单的方式在教学中做“NFC实验”。掌控板、BXY和pinpong库等软硬件, 一开始功能并不完善,随着我们不断提出需求,工程师们不断开发, 掌控板和pinpong库也就越来越强大,越来越贴近中小学的教学实际了。

所以,新技术要在中小学课堂落地,需要很多人一起努力,需要社会企业的支持。我们不仅要学习新技术,还要积极参与新技术的教学普及工作。当我们一线教师和企业之间形成了很好的互动机制,那么这些教育产品会更加贴近实际课堂。

本文来源:《中国信息技术教育》

python写硬件驱动_用Python驱动开源硬件|课程开发者的对话相关推荐

  1. python写机器人程序_用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

  2. python写魔兽世界脚本_用python bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本...

    2019-03-11更新:原来NSIS脚本也可以禁用64位文件操作重定向的! 1.在安装脚本的开始处定义 LIBRARY_X64. !include "MUI.nsh" !incl ...

  3. python写mysql脚本_使用python写一个监控mysql的脚本,在zabbix web上加上模板

    使用python写一个监控mysql的脚本,在zabbix web上加上模板: ##先使用MySQLdb的接口关联数据库. [root@cml python]# cat check_Mysql_cus ...

  4. 用python写聊天机器人_用Python 写一个机器人陪你聊天(文尾有彩蛋)

    工作一忙,原来秉烛夜谈的好友现在都很少聊天,微信都成了微信群的天下,鲜有微信好友给你发消息,想要主动发却也找不到开题话题,怎么办?用Python写一个机器人陪自己聊聊天吧.以下是源码及解析,小白都看得 ...

  5. python写一个类方法_重写python脚本,在脚本的每个类中注入一个方法 - python

    假设我有一个python模块foo.py,其中包含: class Foo(object): def __init__(self): pass 接下来,我想解析此脚本,并在每个类中注入一个方法,然后将其 ...

  6. python 写一个计算器_用 Python 写个计算器

    首页 专栏 python 文章详情 0 用 Python 写个计算器 Python小二 发布于 56 分钟前 我们常见的计算辅助工具有两种,一种是古人发明的算盘,另一种就是我们现代人发明的计算器,与算 ...

  7. python写爬虫教程_用Python写爬虫程序基础教程(一)

    最近身边朋友都在讨论股市是不是牛市要来了吧? 如果想自己做一个股市收盘价前三十名的涨跌幅度,又不用每天去点击网页浏览,用Python写个爬虫程序来做是不是超棒der 环境建置 安装Python 安装P ...

  8. 用python写shell脚本_应用python编写shell脚本

    今天同事叫我编写一个shell脚本.话说,虽然我受*nix的影响甚深,但是对于*nix里随处可见的sh脚本却是讨厌之极.为什么讨厌呢?首先是因为sh脚本那莫名其妙的语法,感觉就像随写随扔的程序,完全没 ...

  9. python写采集程序_用python写的一个wordpress的采集程序

    在学习python的过程中,经过不断的尝试及努力,终于完成了第一个像样的python程序,虽然还有很多需要优化的地方,但是目前基本上实现了我所要求的功能,先贴一下程序代码: 具体代码如下: #! /u ...

  10. python写计算机模拟器_用 Python 写出了一个 Gameboy 模拟器

    点击上方"编程派",选择设为"设为星标" 优质文章,第一时间送达! 感觉用 Atari 游戏研究人工智能有点「不够接地气」?现在我们可以使用 Gameboy 模 ...

最新文章

  1. Andrew Gelman、Aki Vehtari​ | 过去50年最重要的统计学思想是什么?
  2. 配置LNMP遇到的问题(页面空白,不能解析php等)以及fastcgi和php-fom的关系
  3. 《播客》项目总结——web标准页面设计方面
  4. 2021-10-20 Speaking Class
  5. Codeforces Round #486 (Div. 3) C Equal Sums (map+pair)
  6. 【NOSQL ]】 redis 安装
  7. C++STL容器排序查找效率测试
  8. 怎样让电脑速度变快_硬盘在电脑中起什么作用?
  9. ExtJs 分组表格控件----监听
  10. Python中的实用小技巧,可以省下不是事情,喜欢记得收下
  11. 南通大学计算机学院何鹏,南通大学第一次自主评教授,加油!再评多点。
  12. Android 系统(102)---Android APP耗电优化
  13. Redis学习总结(8)——Redis常见使用场景总结
  14. linux 添加隐藏wi-fi,隐藏wifi怎么设置?
  15. xgboost算模型输出的解释
  16. PAT 乙级 Java 合集
  17. stm32f4 dma da正弦波发生器 keil5 hal库 CubeMX
  18. 05.第六章、进度管理
  19. python爬虫源码大全_python爬虫(附源码)
  20. 信捷plc485通信上位机_STM32L476R快速入门——串口与上位机通信

热门文章

  1. 平等地球世界地形地貌全图(Equal-Earth-Physical-Map-Raster)
  2. CC2530基础实验:(9)AD采集cc2530温度串口显示
  3. 合肥千峰前端培训---npm和nrm的使用
  4. 由数据迁移至MongoDB导致的数据不一致问题及解决方案
  5. 外贸ERP管理软件如何优化企业生产-汇信
  6. js手机号正则表达式
  7. 瑞士轮赛制模拟器_【科普】瑞士轮比赛赛制,本次Major 16进8采用的就是瑞士制...
  8. Spark-机器学习Spark-TFIDF11
  9. 从零开始,在pycharm中使用pyqt5和pyqt5-tools和QT Designer设计界面,不用敲代码
  10. python--数字求和