7010| 21
|
[项目] 用行空板制作一个收作业系统 |
本帖最后由 hnyzcj 于 2023-10-25 07:06 编辑 【项目源起】 交作业是每个学生每天到校做的第一件事情,由于学生到校时间不同,导致每次收作业时,课代表总会花费一定的时间按学号整理顺序,统计出谁谁谁没有交作业,并将相关未交名单提交给任课老师。这样的方式,费时费力,于是我们决定利用行空板,制作一套收作业系统。通过该系统,课代表再也不需要整理作业顺序,只需通过摄像头扫描作业本上的二维码,就可以将上交信息提交到物联网端。 ![]() 【项目展示】 ![]() ![]() 【功能简介】 本项目作品具备以下功能, (1)扫码识别:通过摄像头扫描二维码方式,识别某某学生的某学科作业。 (2)物联上报:识别后的数据通过SIot物联网平台提交,教师通过平台查看数据。 【硬件材料】
表1项目器材清单 【制作过程】 (1)二维码制作:根据交作业的需求,我们的二维码中需包括以下信息:学生的个人信息,作业的学科信息。为此我们使用草料二维码生成器来完成上述二维码。 步骤一:登陆官网 草料二维码生成器官网(https://cli.im/),首页主菜单切换至批量生码页面,选择下方“批量制作静态码”。 图批量生码页面 进入后,在全部样式模板中,选择“简单标签”一项后确认。 ![]() 图选择二维码样式——简单标签 步骤二:模板设置 进入二维码编辑页面,在此处Excel表中修改二维码标题对应修改为“科目”和“姓名”。字段“二维码内容”0101,其中第一个“01”表示科目,第二个“01”代表学生姓名。例如0302就代表“外语+李小亮”。完成上述操作后,选择保存Excel文件。 ![]() 图设置二维码内容模板 保存生码:在弹出的保存模板并生码窗口中设置模板名称及二维码保存位置。 ![]() 图保存模板 鼠标点击“保存并生码”后,系统完成二维码的生成如下图所示。 ![]() 图生成二维码 步骤三:打印设置 二维码标签的打印有多种方式A4打印,标签打印机打印,在线打印等。由于我们自己手头只有A4打印机,所以选取了这种最简单的打印方式。如果需要个性化制作,也可以使用下载矢量文件等方式,下载二维码图片,进行相关制作。 ![]() 图选择A4打印机打印 设置每页打印的二维码个数,点击“下载”按钮,会生成一个包含上述所有二维码的PDF文件,如图所示。 ![]() 图设置每页打印二维码数量 ![]() 图预览打印效果 (2)参数配置:本次系统的开发是基于行空板进行的 步骤一:配置行空板 由于此作业系统中我们使用的行空板作为服务器,所有数据都是上传到行空板上。因此,我们需要将行空板连入WiFi,并记录分配的相关IP地址。 连入WiFi:将行空板通过USB连接线与PC使用,行空板会虚拟为一个RNDIS网卡设备,此时板子IP地址固定为10.1.2.3,在浏览器中输入上述地址,登陆行空板。鼠标点击左侧的“网络设置”连接,进入下图界面,输入WIFI热点的名称及密码,连接无线热点。连接成功后,系统分配给行空板一个IP地址:10.6.34.139如下图所示。该地址就是后续我们查看数据的物联网地址。 注:将行空板连接路由器或手机的热点(注意需要使用2.4G Wi-Fi),然后其他编程设备(电脑、平板、手机)连接同一个热点,如果电脑和行空板都连接了同一个Wi-Fi,但是依然无法连接,可能此Wi-Fi禁止网络中的设备互相访问,则可以尝试更换一个热点测试。 ![]() 图连接WIFI获取IP 步骤二:开启SIoT服务 行空板中自带SIoT服务,进入系统后,点击“应用开关”连接,进入SIoT开关界面,确认SIoT服务启用,否则采集的数据无法上传,如下图所示行空板已经开启SIoT服务。 ![]() 图开启SIoT服务器 (3)编程设置:编程使用的是Mind+图形化编程方式+行空板完成上述任务。 步骤一:环境部署 打开Mind+编程软件进入后,将其切换至“python”模式,如下图1处。 ![]() 图编程环境配置 鼠标点击左下角“扩展”按钮,在官方库页面中添加“行空板”和“MQTT-py”库,在用户库页面中“二维码解码”库,如下图所示。 ![]() 图官方库中添加“行空板”和“MQTT-py”库 ![]() 图用户库中添加“二维码解码”库 步骤二:程序初始化 从MQTT和二维码解码指令集中拖着指令如下图所示, ![]() 图程序初始化指令 其中指令“初始化MQTT”设置如下所示:MQTT平台选择SIOT,SIoT地址为上述行空板子获取的IP地址,SIoT Port端口为1883,用户名为siot,密码为dfrobot。 ![]() 图MQTT初始化设置 定义变量:分别定义相关变量,其规则为学科简写+学生学号,例如Y01为语文学科学号为01的学生作业。该变量初始值为0,用于计数,当摄像头识别到二维码时,将变量进行加法操作,从而避免物联网端多次发送 编辑主程序如下图所示,摄像头识别到二维码后,从所建立二维码库中循环寻找符合条件的二维码,并将其结果打印在串口输出。若识别出二维码变量的值等于我们设定的值例如0101,那么再进行是否发送过物联网消息的判断(Y01=0为未发送),若以上两个条件都满足,则则向物联网发送消息“陈雨泓+01”如下图所示。其余同学的程序与该程序类似。 ![]() ![]() 【测试运行】 行空板加载完成后,菜单中会出现一个连接远程终端的选项,使用USB线连接电脑USB口,等待行空板开机完成后点击10.1.2.3(无线连接时也可输入板子的IP地址连接),连接成功后,Mind+的终端即相当于行空板的终端,点击运行,Mind+会将Python代码发送到行空板上运行。连接成功后会弹出提示,终端会显示(行空板)即表示连接成功。 ![]() Mind+连接成功后会自动检测行空板上的依赖库版本(图形化积木需要的python库),如果版本低了会提示需要更新,请点击更新,会自动弹出库管理页面并进行更新,等待直到命令运行完成后关闭库管理页面。 ![]() ![]() ![]() |
阿琛 发表于 2022-10-15 23:01 可以看这个库的说明,需要安装依赖包:https://gitee.com/liliang9693/ext-qrcode_decode 如果在行空板中使用,则需要先安装pyzbar库,方法为: - 根据行空板官方文档教程将行空板联网 - 打开Mind+,在Mind+中点击终端,连接行空板 - 复制如下命令粘贴到终端中回车运行,等待代码执行完毕: apt-get install libzbar0 -y - 然后复制如下命令粘贴到终端中回车运行,等待代码执行完毕: pip install pyzbar |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed