基于物联网的师生呼叫系统

本文系湛江市第十七中学星火创客团队参赛项目,转载请保留声明


作品所用到的软件

  1. Mind+
  2. LaserMaker
  3. App Inventor

作品所用到的硬件

  1. 掌控板
  2. 掌控I/O扩展板
  3. Speech Synthesizer Bee语音合成模块

App所需环境

  1. App Inventor广州服务器​

  2. Easy IoT物联网平台​

注:本作品使用的MQTT模块在App Inventor平台是没有集成的,需要手动添加扩展才能使用,下载链接见文末。

创作背景

在学校的日常生活中我们发现,当老师需要学生执行某些事情,例如需要学生去办公室一趟、让课代表催交作业时,总是需要一个学生充当“传话人”的身份。

因为老师事务繁多,不可能什么事情都亲力亲为,而中小学是不允许学生携带手机进入校园的,老师没有通讯方式可以联系到学生,就会造成老师与学生之间无法联系的情况。

于是我们想到,可以制作一款师生呼叫系统,开发一个教师手机App端与教室端,它们之间通过WiFi+MQTT进行通讯,当老师需要传达指令时,通过手机App发送到教室端显示。

当教室端接收到老师发出的指令后,会通过语音合成模块读出消息,学生看到消息后即可执行老师的指令。这个作品减少了不必要的麻烦,提高了效率。

演示视频

教室端

1.初始化

初始化.png
设置一个名为“时间”的变量,设为1,这个在后文再详细讲。

然后初始化语音合成模块、物联网模块并连接WiFi,都是正常操作了。

2.接收消息

接收消息.png
当收到消息时,先判断消息中是否包含“紧急”,若包含则板载灯亮起,并通过语音合成模块将消息读出来,重复执行直到按下A键。

3.“声音”变量

考虑到这个作品是放在教室中使用的,如果在上课的时候收到消息并播放语音,会打断老师的讲课,所以在初始化的时候设定了一个变量“声音”为1,即声音为打开状态;

若按下B键则将“声音”设为0,即声音为关闭状态,在上文收到消息时,判断完是否为重要消息后,会判断“声音”状态是否为1,若不为1则语音合成模块不会播放消息。
“声音”变量.png

4.外观设计

外观设计使用软件为 LaserMaker ,通过激光切割机切割椴木板将外观烧出来。
外观设计.png

手机App端

1.新建项目

打开App Inventor平台,新建一个项目:
新建项目.jpg

2.设计UI

设计好App的界面,这里不详细展开说明:
设计UI.png

3.初始化

首先将消息列表清除,然后将连接状态设为未连接的开始状态。

初始化2.png

4.设定变量

设定变量1.png
班级列表:设定八个班的名称,在初始化中设定这个变量为下拉框的元素,起到选择发送班级的作用:
设定变量2.png
topic:一个空变量,起到存储用户选择的班级topic的作用;

班级名称:一个空变量,起到存储用户选择的班级的作用;

5.选择班级下拉框

选择班级下拉框.png
将用户选择的班级匹配成对应的topic,并将topic和班级名称相对应存入到前面提到的空变量中。

6.连接MQTT

连接MQTT1.png
当“连接”按钮被按下时,先判断“topic”变量是否为空,用户在连接前是否已选择要发送消息的班级;

如果已经选择了班级,则调用MQTT模块连接Easy Iot物联网平台:

ipAdreess是物联网平台的地址,默认填“iot.dfrobot.com.cn”即可;
port是连接的端口,填“1883”即可;
idDevice填任意9位数即可;
userName是你物联网平台上的Iot_id(user)
password是物联网平台上的Iot_pwd(password),均直接复制粘贴即可。

连接MQTT2.png
接着将“连接状态”变量设为1,判断是否成功订阅topic。

7.发送消息

发送消息.png
当“发送命令”按钮被按下时,先判断连接状态是否为0(即是否为未连接状态),如值为true,则继续执行下面的代码。

判断完连接状态后,再判断用户发送的消息中是否包含屏蔽词,如果值为false,则判断文本输入框中是否有文本。

判断完上面的所有条件都为true后,则调用MQTT模块发送文本输入框中的文字到物联网平台上,再将文本输入框清空。

8.显示消息

成功发送消息后,将发送的消息显示在App下方的文本框中:
显示消息.png

9.接收消息

收到消息时,将消息显示在文本框中:
接收消息2.png

10.其他代码

其他代码.png
起到打开其他屏幕和清除消息列表的作用。

到这里,代码部分已经编写完了。


11.其他屏幕的UI设计

其他屏幕的UI设计1.png
其他屏幕的UI设计2.png

下载链接

MQTT模块扩展:co.com.dendritas.MqttTCP.aix

改进方向

考虑到一些学校可能没有实现网络覆盖全校,以后可以制作一款基于LoRa方案的师生呼叫系统,实现在无网络的环境下也能进行通讯。

本文系湛江市第十七中学星火创客团队参赛项目,转载请保留声明