基于Python语言开展初中物联网实验教学

    郑祥

    

    

    

    ● 物联网技术及其原理

    物联网技术分为感知、传输和控制三个方面。一个典型的物联网应用是通过感知技术获取数据,再传输、存储到物联网服务器上,最后物联网根据这些外界环境的数据做出相应的控制,从而实现与外界环境的“互动”,如图1所示。

    1.物联网感知技术

    物联网的感知技术涉及的领域非常广泛,主要包括传感器技术、射频识别技术、GPS定位技术等,所有能够将外界环境或物品的状态信息转化为计算机能处理的数字信号的技术都属于感知技术。

    2.物联网传输技术

    物联网的传输技术主要负责将物联网终端感知到的环境数据传输至物联网服务器,主要借助于互联网技术。物联网应用场景的多样性,决定了物联网终端设备的不同传输方案的部署。

    3.物联网控制技术

    物联网控制技术,顾名思义就是通过物联网对某一物品或电器实现控制的目的,在一些智能家居产品上能看到物联网技术在控制方面的应用。

    ● 物联网课程的教学现状

    据调研,国内中小学开设物联网课程的寥寥无几,真正让学生自行完成物联网实验的学校更是少之又少。以江苏省为例,虽然最早将“物联网技术”作为拓展模块纳入义务教育信息技术课程指导纲要,但是教材却停留在“纸上谈兵”阶段,几乎没有机会开展物联网相关的基础实验,更别说动手实践设计一个简单的物联网作品了。分析其原因,有如下两点:①开展物联网实验需要硬件支持。②物联网编程的技术门槛太高。虽然常见的开源硬件降低了硬件成本,但是所支持的编程语言却不适合初中学生。如下页表1所示,除了图形化编程语言外,可选的只有C++、JavaScript、MicroPython。图形化的编程只能在小学阶段使用,而C/C++和JavaScript语言对初中学生而言难度太高。至于MicroPython,虽然其语法风格与Python语言一致,但是缺少各种Python扩展库的支持后,很多创意被限制了。

    ● 用Python语言设计物联网实验的可行性

    随着计算思维成为新课程核心素养的重要组成部分,Python语言也作为统一的编程语言纳入各个版本的高中新教材。浙江省2020年版初中信息技术教材中,也将Python语言完全取代了VisualBasic语言的编程教学,并将物联网的相关内容作为主要部分纳入八年级下册新教材,如表2所示。

    相较C/C++、JavaScript语言,Python语言语法风格简单。与此同时,Python语言又拥有十分庞大的模块和库,非常适合初中学生编写与网络、人工智能相关的应用。虽然借助pyserial库,Python能够通过串口控制各种开源硬件,并与之交互,但是开源硬件端需要编写相应程序(烧录固件),相对来说难度还是太高,不适合推广。

    当pinpong库出现后,Python导入库并建立对象后,就能自动给开源硬件“烧录”固件,还能完美地兼容掌控板和micro:bit等开源硬件。就连不支持网络连接的Arduino,也可以在pinpong库的支持下通过计算机串口实现联网。这样一来,物联网终端硬件的选择范围扩大了,编程的技术门槛也大幅度降低。Python的库非常丰富,结合MQTT或者siot库,完成一个物联网实验非常简单。

    ● 初中物联网实验的设计范例

    感知和控制是物联网中的核心内容。本文选择了两个经典的物联网实验,即感知温度和远程控制,展示基于Python和pinpong库的物联网实验设计。实验的硬件采用Arduino,物联网服务器选择SIoT,物联网协议采用MQTT,并使用siot库。SIoT服务器和siot库都是开源的,属于“虚谷计划”中虚谷物联项目中的组成部分。从难度上看,小学高年级和初中学生完全可以理解和掌握。

    1.物联网采集实验:感知温度

    实验内容:通过Arduino定时采集环境温度,然后上传到物联网服务器。

    硬件清单:ArduinoUno、扩展板、LM35温度传感器。

    将ArduinoUno与扩展板连接起来,再将LM35温度传感器连接到扩展板的A0引脚,如图2所示。具体代码扫描下方二维码。

    运行代码后,计算机将自动给Arduino刷写一个“固件”,随后就每隔0.5秒上传温度数据到SIoT服务器,Topicid为“tiyan2/temp”。感知温度代码运行及siot平台温度数据扫描下页二维码。

    2.物联网控制实验:LED灯远程控制

    实验内容:通过物联网平台SIoT,发送MQTT指令,实现对LED灯的控制。

    硬件清单:Arduino Uno、扩展板、LED灯模块。

    将ArduinoUno与扩展板连接起来,再将LED灯连接到扩展板的D8引脚上,如图3所示。具体代码扫描下方二维码。

    运行程序代码。当收到物联网平台上的消息为“on”时,点亮LED灯;当收到物联网平台上的消息为“off”时,则熄灭LED灯。

    注:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种基于发布/订阅模式的“轻量级”物联网通信协议。它可以用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务,也就是说它可以在较差的网络环境下使用。目前,国内外主要的云计算服务商,如阿里云、AWS、百度云、Azure以及腾讯云等都支持MQTT协议。

    ● 基于Python语言的初中物联网课程设计

    随着物联网技术的普及,智能家居也逐渐走进了人们的生活。智能家居是物联网应用的拓展,也是学生对物联网应用的最直观感受。因此,初中的物联网课程可以与智能家居相结合,初中物联网课程可按如表3所示的参考目录进行开设。

    这两个单元,除了增加相应的物联网实验外,还可以采用项目式学習的方式,让学生分组真正动手制作物联网应用。例如,第一单元可以选择制作“搭建一个简单的物联网应用模型”,第二单元可以选择“改造家里的智能家居应用”。除了可以完成课程中的各种实验,还可以开发物联网方面的创客作品。

    ● 结语

    信息技术在高速发展,中小学的信息技术课程也要与时俱进。物联网课程的开设,既需要一系列硬件、软件的支持,也需要设计一系列贴近学生生活的经典实验,以此来激发学生的实践能力和创造意识。语法简洁而功能强大的Python语言、价格低廉而扩展丰富的开源硬件,是物联网课程的最佳选择。在pinpong库的支持下,二者完美地结合在一起,大大降低了物联网的技术门槛,期望在越来越多的物联网课程中加入实验活动,让学生能够真正驾驭物联网技术。