王国芳
《中小学综合实践活动课程指导纲要》的附件中提供了一个活动范例,名称为《用计算机做科学实验》。活动内容是借助计算机程序获取传感器实时采集的信息,并把这些信息记录在数据库中,然后对数据进行二次分析,验证假设甚至发现新的规律。通过这一活动让学生体验大数据时代的研究方法,提高探究真实问题、发现新规律的能力。
计算机采集实验数据的一般方式
科学实验的数据采集需要借助传感器,而现在绝大多数的计算机没有传感器的接口,一般的做法是利用具备模数转换器(也称A/D转换器)功能的单片机来读取传感器的数值,再通过通信技术将数值传输到计算机上。Arduino、micro:bit和掌控板等开源硬件就是中小学教学中最常用的单片机。
按照通信的方式,物联网通信技术大致分为有线传输、短距离无线传输、长距离无线传输和传统网络传输四类。在如下表所示的通信技术中,采用USB线虚拟串行通信和Wi-Fi最为常用,如Arduino和micro:bit采用的是串行通信,而掌控板不仅支持串行通信,还支持蓝牙和Wi-Fi。
不管采用的是下表中哪一种通信方式,计算机端都需要采用专业工具,或者编写程序来读取并存储数据,然后进行数据的统计和分析。对于这些技术普通的信息技术教师来说都有点陌生,更不用说科学、数学学科的教师了。其实大可不必担心,完成这类实验还有更加简单的实施方案,如采用蓝牙键盘的方式。
用蓝牙键盘方式采集实验数据的方案分析
掌控板采用的是ESP32芯片,本来就自带了蓝牙4.0,而且能够模拟为HID设备,如PPT遥控器、空中飞鼠等。那么,一个大胆的想法就产生了:既然可以将掌控板模拟为一个蓝牙键盘或者鼠标,那能不能将传感器的数据,以键盘输入的形式传送给电脑?
答案当然是肯定的。我们可以将借助于蓝牙键盘方式采集数据的方式,想象成一个工作敏捷的“输入员”一边看传感器数据,一边用蓝牙键盘将其快速输入到电脑中,工作流程如图1所示。
这样的做法虽然看起来有点“另类”,但优势却非常明显。
首先是通用性好。HID设备在不同操作系统下都是通用的,不用考虑操作系统,不用考虑硬件的兼容问题,电腦端也不需要做任何设置,只要连接上掌控板这一蓝牙设备即可。
其次是操作简单。因为数据是以键盘的形式输入,所以对数据的存储软件没有任何特殊要求。如果仅仅需要记录数据的“和”,就只需要用计算器软件即可。当然,对于科学实验中的数据,肯定需要保存下来,进行详细的统计,如平均值、最大值、最小值、众数、标准差等,还要绘制如柱状图、折线图之类的各种图形。那么普通用户只要打开Excel或者WPS软件即可完成。
模拟蓝牙键盘采集数据的代码实现
新版本的Mind+和mPython都提供了将掌控板模拟为HID设备的语句。这里强烈推荐创客铁熊为Mind+编写的“ESP32蓝牙键盘”库。笔者以Mind+为例,编写了一个很简单的程序:按下B开始采集光线数据,按下A键则停止,每隔5秒钟采集并输出一次数据,并用回车键进行换行。参考代码如图2所示。
将代码下载到掌控板上,重新启动后,电脑很快就能发现名称为“handpy”的蓝牙设备。连接方式、使用方法和其他蓝牙键盘、音箱几乎完全一致。
电脑端接收实验数据的多种方案
当蓝牙键盘不断输入数字,并且按下回车时,电脑端应该如何接收数据呢?方法当然很多了,这里提供三种方案,供大家参考。
方案1:使用Excel软件
Excel是最常见的数据统计工具,当蓝牙键盘连接上后,新建一个表格,选中“A1”单元格后按下掌控板的B键,每隔5秒钟光线传感器的数据就会自动输入到单元格中,并会自动换行,如图3所示。
方案2:用Mind+编程
因为Mind+中不能识别回车键这一动作,所以掌控板的代码中除了输出回车键外,还要输出另一种按键信息,如空格、箭头等。笔者写了一个简单的程序,能够将数据存到列表,并且能够实时统计,如图4所示。
方案3:用Python编程
用Python编程肯定是一个不错的选择,如图5所示。如果想更加直观一些,还可以利用Matplotlib库进行实时的绘图。
结语和启示
《用计算机做科学实验》是一个经典的STEM案例,涉及数据探究、传感器、开源硬件等方面的知识,甚至可以结合物联网技术做实验数据的远程采集。本文提供了一个操作简单且切实可行的解决方案,旨在降低技术门槛,让更多的老师对用传感器做科学实验产生兴趣。当然,用蓝牙键盘方式发送数据也有缺点,那就是两次发送数据的间隔时间不能太短,不能做频率特别快的实验。俗话说“尺有所短,寸有所长”。我们要根据真实的实验需求来选择合适的技术,没有必要追求高端和新奇。