第37卷第3期2021年3月
福建电脑
Journal of F ujian Computer
Vol.37No.3
Mar.2021
人工智能教育课程的教学探索与实践
汤琳纯
(福州第十八中学福州350001)
摘要如何在中小学人工智能教育课程中培养学生的信息技术核心素养,激发学生的创新意识,培养学生自主实践能力,是一个值得深入研究的问题。Python提供了安装第三方扩展库的功能。各种不同的扩展库能广泛应用于人工智能研究,因此Python成为人工智能研究与开发的首选语言。在教学实践中发现,基于开源硬件Arduino与Python的综合项目有助于人工智能创新教育理念的推广。从Python的第三方扩
展库出发,通过思维建模设计,开展Python与人工智能结合的项目式教学,实现学生思维训练的有效提升,培养学生多元化的计算思维,提高学生综合素质。本文以设计一个环境数据采集系统为例,阐述基于Arduino的与Python在人工智能创新教育中的应用与在中小学编程教育中的优势。
关键词Python;Arduino;人工智能;校本课程;项目式
中图法分类号TP311D0I:10.16707/jki.fjpc.2021.03.008
Teaching Exploration and Practice of Artificial Intelligence Education Course
TANG Linchun
(Fuzhou No.18High School,Fuzhou,China,350001)
1引言
2017年,国务院印发《新一代人工智能发展规划》,提岀“实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与编程教学软件、游戏的开发和推广”。中小学人工智能教育的主要目的是让学生对人工智能产生兴趣,引导他们对将来职业目标的认知,侧重人工智能教育的普及性,而不是学术研究。
Python是一种计算机程序设计语言,语法简洁、清晰、易读,有着丰富且强大的库,可以把其它语言编写的各类模块方便快捷地联接在一起。虽然真正的人工智能的底层语言是C/C++,而Python 仅仅是调用相关AI技术的接口去实现相关的应用逻辑,但是Python能和底层融合使得软件开发更加方便。从教育者来看,Python语言智能化程度高,与世界计算机语言发展趋势完全合拍,学生容易上手。它还提供了允许安装第三方模块接口,能应用于很多方面,因此成为人工智能教育的首选语言。
Arduino是一个开放的电子开发平台[1],包含硬件和软件,简单易用。Arduino支持跨平台的简单清晰开发,在网络中可以很方便地到Arduino的第三方硬件、外设和类库的支持。不需要了解硬件的内部结构和设置,不需要具备过多的电子知识和编程知识,即使不懂电脑编程的人也能用Arduino 完成很酷的作品。因此,对于没有基础的中学生来说,Arduino是一个很好的学习平台,通过Arduino 进行开发时,更多关注的是创意与实现。Arduino 利用各种不同的传感器采集数据、感知环境,再通过编写程序控制马达、灯等各种装置来反馈、影响环境,实现智能化控制[2]。
本文以Python语言为基础,结合福州第十八中学学生的兴趣特长和社会生活实际需求,以设计Arduino智能化产品为项目主题,将“让学生真正可以实现'玩中学作为目标驱动学习,进行人工智能教育校本课程建设的探索。
本文得到福州市教育信息技术研究课题"人工智能背景下的Python校本课程开发研究”(No.FZDJ2019
A09)资助,系该课题主要研究成果。汤琳纯(通信作者),女,1978年生,主要研究领域为信息技术教育教学。E-mail:**************。
32汤琳纯:人工智能教育课程的教学探索与实践第3期
2项目设计方案
2.1项目背景与意义
在现实生活中,人们的日常生活受环境影响很
大。2013年11月,世界卫生组织宣布空气污染物是地球上“最危险的环境致癌物质之一”。它是在一定的温度、湿度及气压等气象条件下与排放的颗粒物相互作用的结果。它对人体的呼吸系统、心血管系统都造成很大的危害,因此一个能够实时监测与展示学习、工作、生活相关场所的环境数据的应用就有一定的实际意义与使用价值。
2.2项目主题与目标
通过Arduino和Python设计一个环境数据采集
系统,系统能够实时监测并展示当前环境的PM2.5浓度、温度、湿度、光照强度的监测情况。通过整
个项目的设计与实现,掌握serial、pyserial、matplotlib、PyQT5等Python扩展库的安装和使用方法,深入理解Python应用于人工智能应用设计时的重要作用。
2.3项目设计思路
(1)学生分组讨论,进行系统需求分析。(2)硬件部分的设计。(3)利用Python完成软件功能的设计。(4)实践调试,总结汇报。
3项目实施过程
3.1系统总设计
分析系统功能,确定系统总体设计。其框架如图1所示。
PC上位机
python n J-视化
Arduino数据
处理与封装
图1环境数据采集系统框架
(1)数据采集功能
环境数据采集系统的硬件端采用基于Atmega328P单片机的Arduino UNO R3主控板,通过GPIO连接温湿度传感器、光敏传感器、PM2.5粉尘传感器等各类传感器实现环境数据采集,对周边环境的温度、湿度、光照强度、PM2.5粉尘微粒浓度变化进行实时监测[3]。
(2)数据传输与可视化展示功能
Arduino UNO R3主控板将采集的传感器数据按约定的数据格式封装,通过串口定时发到PC上位机。上位机程序使用Python开发,实现环境数据的实时可视化展示功能。
3.2系统模块设计
(1)环境数据采集系统的硬件模块结构
用Arduino UNO来构建环境数据采集的硬件
图2Arduino UNO与传感器连接示意图
DHT11温湿度传感器连接到D4GPIO采用单总线连接模式,通过特定时序对D4数据线的控制来读取数据,读取五个字节后转化成温湿度数据。
I2C接口的TSL2561光敏传感器连接到Arduino UNO R3的SCL、SDA引脚。该传感器模块通过I2C协议来进行传感器数据的传输。Arduino UNO R3主机通过传感器设备地址与相应的读写指令来对数据进行读取。利用Arduino所带I2C协议的Wire库函数能够快速对传感器数据进行读取。
PM2.5粉尘传感器连接到A0模拟输入接口,通过ADC模拟信号处理功能对传感器测量反馈的电压数据进行读取。根据器件对应的模拟电压与粉尘浓度关系曲线计算岀当前粉尘浓度数据。
(2)数据传输处理
在Arduino中实现传感器数据的串口通信与数据封装。串口数据封装,把定时循环采集到的各类
传感器数据封装为一个长度为10Byte的数组,然后写入串口,各个位数据表示的含义如下:
0位:数据包头,用来识别
1位:传感器数据长度
2位:PM2.5整数部分高8
2021年福建电脑33
3位:PM2.5整数部位=分低8位
4位:PM2.5小数部分
5位:光照数据整数部分高8位
6位:光照数据整数部分低8位
7位:光照数据小数部分
8位:温度数据整数部分
9位:湿度数据整数部分
Arduino串口数据封装代码如下列代码所示:send_data[0]=DATA_SOF;
send_data[1]=8;气象python零基础入门教程
send_data[2]=((int)dust)>>8;
send_data[3]=((int)dust)&0x00FF;
linux操作系统的体系架构分为用户态send_data[4]=((int)(dust*100))%100;
为什么没有人重写织梦cms
send_data[5]=((int)lux)>>8;
send_data[6]=((int)lux)&0x00FF;
send_data[7]=((int)(lux*100))%100;
send_data[8]=temp;
send_data[9]=humi;
硬件启动运行后,通过PC端的串口调试助手可以查看Arduino开发板通过串口定时上传到PC 串口的数据。如图3所示,串口调试助手接收窗口中的一行表示收到的一帧串口数据。这种直接读取串口数据的格式复杂、可读性较差,仅适合开发调试使用,不适合用户阅读与使用。
图3Arduino实时监测数据
3.3可视化功能设计
使用Python实现环境数据的可视化展示。环境数据采集系统的PC上位机数据可视化展示程序采用Python语言开发,使用版本为3.7的Python。由于默认安装的Python3.7系统中并没有预先安装额外的扩展库,只提供了基础的用于安装扩展库的pip 以及setuptools工具包,如图4所示。
环境数据可视化展示程序调用serial、pyserial 库提供的串口读写函数来读取Arduino UNO R3开发板的串口发来的数据包,按约定的数据格式解析岀传感器数据。
C:\Users\Administrator>python
Python3.7.0(v3.7.0:lbf9cc5093,Jun272018,04:59:51)[MSC v.191464bit(AMD6 4)]on Win32
Type"help","copyright*,*credits*or"license"for more information.
»>quitO
C:\Users\Administrator>pip list
Package Version
pip10.0.1
setuptools39.0.1
You are using pip version10.0.1,however version20.3.1is available.
You should consider upgrading via the'python-m pip install―pgrade pip*coma and.
C:\Users\Administrator>0
图4Python3.7默认自带pip包
matplotlib是一个Python2D绘图库,只需简单
几行代码即可生成绘图、直方图、功率谱、条形图、散点图等。调用Python2D绘图库matplotlib实现动态曲线展示实时环境监测数据
PyQT5是一套Python绑定Digia QT5应用的框架,使用其中的QtWidgets可以快速创建一个窗口部件。调用PYQT5来创建窗口实时显示当前采集到最新传感器数据⑸。
使用pip命令安装需要额外的第三方外部库
serial、pyserial、matplotlib、PyQT5。由于在安装
pip库时,默认从官方服务器下载扩展库所需要的
文件,部分较大的库下载速度很慢,容易导致命令执行失效,可在pip命令中用参数-i指定使用国内Python镜像服务器加快下载速度,在管理员账号登录的cmd命令行模式运行以下安装相关的pip包:pip install serial
pip install pyserial
pip install matplotlib-i\
mirrors.aliyun/pypi/simple
pip install PyQt5-i\
mirrors.aliyun/pypi/simple 编写数据可视化展示的Python代码,首先使用import引入相应的外部扩展库,如下列代码所示:import matplotlib.pyplot as plt
from PyQt5.QtWidgets import\
(QWidget,QPushButton,QApplication,QLabel)
from PyQt5.QtGui import QFont
import datetime
import sys
import matplotlib.dates as mdates
import threading
import serial
编写串口读写、数据曲线绘制程序以及PYQT5
ps插件和系统不兼容
34汤琳纯:人工智能教育课程的教学探索与实践第3期
的窗口程序代码,Python程序的主程序代码如下列代码所示:
if__name__=='__main__':
app=QApplication(sys.argv)
行g.canvas.mpl_connect('button_press_event',
反函数的定义怎么理解gamma分布和指数分布的关系on_press_event)
行g.tight_layout()
mSerial=SerialPort(serialPort,baudRate)
mFrame=ShowFrame()
t1=threading.Thread(ad_data)
t1.start()
plt.show()
<_()
3.4实践与调试
(1)Arduino环境数据采集硬件端
把传感器连接到Arduino UNO R3的引脚,其中把DHT11温湿度传感器的DATA引脚连接到D4 GPIO,PM2.5粉尘传感器模拟信号输入引脚连接到A0模拟输入,TSL2561光敏传感器的SCL、SDA 引脚连接到SCL、SDA接口。传感器与Arduino UNO R3开发板的实物连接如图5所示。
图5Arduino UNO R3连接传感器
在Arduino IDE中编写代码,调用相关的接口驱动,根据传感器数据读取时序编写传感器数据采
集代码与按约定的数据格式通过串口向PC上位机发送,把编译生成的固件代码下载到Arduino UNO R3主控板。
(2)Python环境数据可视化展示程序
把Arduino UNO R3连接到PC机,运行编写的环境数据可视化展示的Python程序,在Python中打开Arduino UNO R3的串口。程序运行界面如图6、图7所示。
环境数据展示可视化程序运行稳定,能够在接收到Arduino串口发送的数据后,自动刷新数据曲线。同时PyQT5实时数据展示界面也能实时更新数据,具有较友好的用户界面。
图6matplotlib绘制的实时环境数据变化曲线
图7PYQT5窗口展示实时最新的传感器数据
4结束语
基于Arduino与Python环境数据采集系统,使用Arduino连接基本的环境参数传感器,采集对应场所的环境数据,并通过Python编写的上位机程序调用第三方扩展库实现环境数据的可视化展示。通过参与作品的实践,使学生对开源硬件Arduino与Python编程语言有了更深的认识。该项目的教学与实施,对学生的学习能力有一定的提升,动手能力和综合素质有较好的发展,促进了学生的学科思维形成,同时也较好地锻炼学生的自主学习能力,进一步激发学生的学习热情与潜力,进一步培养学生的信息技术核心素养,激发学生的创新意识。
参考文献
[1]Arduino UNO中文数据手册.www.arduino/thread-81889-1-1.
html,2018,9,23
[2]李明亮.Arduino开发从入门到实践.北京:清华大学出版社,2018
[3]李冠锐,沈炎斌,吴伟华,刘华强,牛振乾.室内空气质量监测装置的设
计与实现.福建电脑,2019,35(4):86-87
[4]刘艳玲,姚建盛.Python在数据可视化中的应用.福建电脑,2020,
36(3):68-70
[5]王硕,孙洋洋.PyQt5快速开发与实战.北京:电子工业出版社,
2017

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。