一、实验目的及要求
实现掌控板抢答器功能。
二、实验原理与内容
基于TinywebDB实现云数据库出题
基于掌控板实现按键抢答和判题
基于MQTT实现多端同步通讯
三、实验软硬件环境
硬件:掌控板
软件:Mind+
四、实验过程(实验步骤、记录、数据、分析)
设计抢答器相比之前的实验相对来说比较复杂,所花时间要长,但是如果我们理清思路,就会发现,抢答器无非就是把我们之前做实验所学所用到的东西结合在了一起。
1、首先,我们需要在Easy IOT上创立三个topic,一个topic负责做“主持”发送抢答题目以及计时。另外两个topic负责充当“抢答方”,如果他们抢答成功的话,抢答快的他的信息会发到“主持人”的掌控板上。
Easy IoT登录注册网址:https://iot.dfrobot.com.cn
2、设计题库。
我们可以通过之前用过的Tiny WebDB创建自己的数据库来解决这个问题。
登录网址http://tinywebdb.appinventor.space/注册账户
注册成功后,点击上方数据浏览,创建数据库。
通过增加标签,值填写相关题目信息,如下图所示,我们的抢答器题库完成了。
3、在Mind+写代码
首先在Mind+点击扩展,在网络服务那里添加以下模块。
这是“主持人”模块代码
相关参数:
核心代码展示:
/*!
* MindPlus
* mpython
*
*/
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <mPython_tinywebdb.h>
// 动态变量
String mind_s_QiangDaXinXi, mind_s_WenTi;
volatile float mind_n_KaiShiJiShi, mind_n_XiTongJiShi, mind_n_JingDu, mind_n_Miao,
mind_n_Fen, mind_n_YaoYiYao, mind_n_XianZhi, mind_n_JiShiZhuangTai;
// 函数声明
void DF_XianShiShiJian();
void obloqMqttEventT2(String& message);
// 静态常量
const String topics[5] = {
"c3PBcmFMR","hZYvpiFGR","MzFOpiFMR","",""};
const MsgHandleCb msgHandles[5] = {
NULL,NULL,obloqMqttEventT2,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;
mPython_TinyWebDB mydb;
// 主程序开始
void setup() {
mPython.begin();
dfrobotRandomSeed();
myIot.setMqttCallback(msgHandles);
myIot.wifiConnect("MEIZU 16th", "66666666");
while (!myIot.wifiStatus()) {
yield();}
display.setCursorLine(1);
display.printLine("Wi-Fi连接成功");
myIot.init("iot.dfrobot.com.cn","Z0h15mFMg","","WA2JcmKMgz",topics,1883);
myIot.connect();
while (!myIot.connected()) {
yield();}
display.setCursorLine(1);
display.printLine("MQTT连接成功")