基于STM32 与Python 的智慧教室控制系统
2023-12-20林鹏程
林鹏程
(厦门理工学院 继续教育学院,福建 厦门 361005)
0 引 言
智慧教室是指为教学活动提供智慧应用服务的教室空间及其软硬件装备的总和[1]。物联网技术的发展让智慧教室在全国各个高校逐渐普及。作为技术与教育相结合的产物,智慧教室不仅仅是教师教授知识的场所,更是教师探索新方式、完成课程改革的重要手段。全国各学校也纷纷围绕智慧教室展开了一系列改革,甚至将智慧教室所提供的技术完全融入到课堂当中。因此,建设智慧教室,实现智能化教学、智能化管理、智能化学习是每所学校都要考虑的事情。
关于智慧教室的建设已有诸多研究。王建[2]系统阐述了智慧教室的建设原则与目标,并从体系架构、功能模块设计、技术实现3 个层面展开论述;程敏[3]在智慧教室中加入了智能控制和管理、显示系统、分组协作互动、课程录播、远程教学、学习资源、数据存储、AI 系统、VR 系统和课堂支持等,以应对不同的教学模式;陈志华[4]采用ZigBee、RFID 技术,结合各种传感器开发了一套智慧教室控制管理系统,实现了信息化、智能化、集成化管理。卢志翠同样采用ZigBee 技术实现智慧教室多网络节点的感知与控制,并且使用PID 控制算法来保持智慧教室的环境参数;孟秉恒[5]、侯恩硕[6]则是在智慧教室中引入手势识别、脑电设备以满足各自对智慧教室应用场景的需求。
智慧教室朝着丰富的应用方向发展,但随之而来的是复杂的操作流程以及臃肿的硬件设施。针对该问题,设计了一套基于STM32 控制板与Python、Window 客户端相结合的高度集成的智慧教室系统[7-8]。
1 系统整体设计
图1 所示为系统框架。计算机是距离教师最近的设备,也是本系统的核心机器之一。计算机首先需要连接路由器(或者交换机)并获取IP 地址才能与因特网连接;其次,电脑也是控制智慧教室内设备的主要控制端,在该系统中,电脑需经过一块控制卡间接与设备相连,控制卡与讲台计算机间采用串口通信。控制卡通过各种接口连接至智慧教室的常见终端设备。智慧教室中常见的终端设备,如投影仪、幕布、音响、有线及无线麦克风、功率放大器、灯以及用于投屏的多台电视机构成的矩阵电视。终端设备需要220 V 交流电供电,系统采用6 路继电器分别控制设备的电源。此外,有的设备还需要额外的控制线,比如,投影仪需要RS 232 控制线;电视需要红外发射器控制电视;灯光除可以通过命令来控制外,系统还设置了实体按键控制。
2 硬件设计
该系统包含了一块STM32 控制卡,根据系统框架及接口需求,STM32 控制灯光、继电器组使用普通的GPIO 即可,红外发射与接收器也需要2 个具有复用功能的GPIO口,另需两个串口用来进行通信与控制,因此系统选择STM32F103RCT6 作为主控芯片。
该芯片的最小系统已在图2 的硬件原理图中给出,驱动该芯片需由复位电路、外部晶振、启动模式配合。此外,为了确保芯片稳定工作,系统额外增加了滤波电容电路。通信方面,系统采用JTAG-SW 接口烧录程序,与外围通信所需的串口则使用芯片提供的1 号及5 号串口;电源模块使用AMS1117 芯片将5 V 直流电压降压至STM32 芯片的工作电压3.3 V。
图2 硬件原理
系统外设接口也在图2 给出,红外发射接收模块用于控制智慧教室内的矩阵电视、空调等需要遥控的设备;灯光实体按键用于控制教室内的灯光,教室灯分成两组,因此使用两个实体按键;系统中各设备的电源采用六路继电器控制,灯光、音响功放电源接至继电器常闭接口,其他设备电源接至继电器常开接口,方便平常使用[9]。
3 软件设计
3.1 STM32 控制端软件设计
图3 是该STM32 控制端采用的软件流程,主要完成数据通信解析与外接设备的控制。上电后,芯片首先进行初始化,初始化1 号UART 的波特率为115 200 bit/s,5 号串口的波特率则根据连接的投影仪型号更改,接着完成控制继电器组、实体按键、红外发射接收GPIO 口的初始化。在设置红外发射接收GPIO 口时,对定时器1 和定时器4 进行初始化,定时器1 将用于捕获红外接收管接收的信号,因此初始化时将其设置为上升沿捕获;定时器4 将用于产生待发射信号及38 kHz 载波,因此在初始化时,使用定时器4 的脉宽调制功能。
图3 STM32 软件主体流程
初始化完成后,程序进入循环状态,处理按键及1 号串口接收的数据。当检测到实体按键开关状态发生改变后,芯片将控制灯光的继电器做出相应改变;当1 号串口接收到讲台电脑发来的数据时,将解析并控制外设做出相应的动作。1 号串口的数据格式如图4 所示,数据帧共占4 个字节,2 个起始字节,1 个结束字节,有效数据1 个字节。有效数据字节中,高4 位用于标识继电器状态,接下来2 位用于标识投影仪及矩阵电视的开关,低2 位作为数据类型的标识。标识继电器的数据位中,将第一位用于标识灯光状态是否发生改变,以免与实体按键发生冲突。矩阵电视的控制将通过红外发射管发射的红外信号控制,投影仪的控制将通过5 号串口根据投影仪的型号传输相应代码。以索尼投影仪为例,需将串口5 波特率设置为38 400 bit/s,当需开机时发送代码A9172E0000003F9A 即可。数据类型用于判断该数据包属于查询数据包还是控制数据包,“00”表示查询数据包,“01”表示控制数据包,“10”与“11”保留。
图4 串口数据格式
3.2 客户端软件设计
根据系统框架,客户端完成外设操作并与STM32 控制板通信。客户端运行于讲台计算机的Windows 系统,采用Python 的Tkinter 库设计。该系统使用的组件框架如图5 所示,在一个窗口内设计2 个LabelFrame,分别用于集成化一键控制和设备单独控制。
图5 界面组件框架
系统使用串口与STM32 控制板通信,故在“一键设置”界面中配合Label 和Button 组件以连接串口建立通信。“一键上课”与“一键下课”为多设备同时控制按钮,例如,当按下“一键上课”按钮,就能同时打开投影仪、灯光、电视、功放等设备。
设备状态与设置用于显示当前设备的状态并可通过按钮控制各设备的开关。设备状态的显示采用TreeView 组件设计2 行6 列的表格,设备的控制则使用8 组打开、关闭的按钮,按钮使用Button 组件设计,并关联至串口数据生成函数,最终界面如图6 所示。
图6 客户端界面
图7 是Windows 客户端软件的主要流程,创建完UI界面后即进入循环状态等待按键按下。当按下UI 界面的“关闭”后,流程结束。若检测到图6 界面中的控制按键按下,则跳转到按键绑定的响应函数,作出相应动作。例如,当检测到“一键上课”按钮按下,则进入one_begin 函数。在函数内部将生成待发送的数据0x5D7EFD00,最后调用串口数据发送函数write_bytes 将数据发送至STM32 控制板[10]。
图7 客户端软件流程
4 结 语
本文根据智慧教室的发展现状,结合STM32 与Python技术,设计了集成化的智慧教室控制系统。该系统能通过客户端控制智慧教室内的所有设备,硬件高度集成,操作简单,应用前景广泛。