本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明。

前言

本文章将教会大家如何使用图形化编程制作简易的智慧疫情防控平台,这个项目非常适合于低年级的学生去实践,锻炼自己的逻辑思维和积累一定的项目开发经验。

一、目标实现
基于DS18B20或LM35实现测温
基于二哈实现多人人脸学习和识别
基于TinywebDB实现云数据库应用
基于EasyIoT实现mqtt数据上传

二、前期准备:
软件准备:Mind+
硬件准备:掌控板、拓展板、二哈识图、温度传感器
如果各位看官有钱,可用mlx90614等专业的红外测温模块等专业模块替代ds18b20或LM35

硬件购买链接如下:
掌控板
二哈识图
DS18B20模块
mlx90614红外测温传感器模块
LM35测温模块
三、搭建微型数据库(TinywebDB)
链接为:http://tinywebdb.appinventor.space/login
(1)注册一个账号,再进行登录
在这里插入图片描述
(2)登录进去以后记录API地址、用户名、密钥,然后点击进入到数据浏览
在这里插入图片描述
(3)添加标签和值(如:1 学号+姓名)在这里插入图片描述
四、配置Easy-iot
链接:http://iot.dfrobot.com.cn/
(1)注册Easy-iot账号并且登录
在这里插入图片描述
(2)选择工作间,记录user、password、Topic
在这里插入图片描述
五、接线
(1)接线前需要升级二哈固件(提供产品维库地链接给大家,请仔细看完,这样才能熟悉掌握使用二哈。人脸抓拍地使用在产品维库都有,这里就不一一介绍了)
链接:https://wiki.dfrobot.com.cn/SKU_SEN0305_Gravity__HUSKYLENS%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%91%84%E5%83%8F%E5%A4%B4#target_5
魔镜项目链接:https://mc.dfrobot.com.cn/thread-306224-1-1.html?fromuid=727937
在这里插入图片描述

(2)掌控板与拓展板进行连接(掌控版屏幕对准拓展板有中文这一方)
在这里插入图片描述
(3)拓展板与二哈识图连接
在这里插入图片描述
(4)温度传感器与拓展板连接(音量键得关闭,否则会占用P0端口)
在这里插入图片描述
六、烧写代码
(1)图像化编程
在这里插入图片描述
在这里插入图片描述
(2)arduino C

/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <DFRobot_DS18B20.h>
#include <mPython_tinywebdb.h>
#include <DFRobot_HuskyLens.h>

// 动态变量
String mind_s_XingMing;
// 静态常量
const String topics[5] = {"iELyQEtMR","","","",""};
// 创建对象
DFRobot_Iot       myIot;
mPython_TinyWebDB mydb;
DFRobot_HuskyLens huskylens;
DFRobot_DS18B20   ds18b20_P0;


// 主程序开始
void setup() {
	mPython.begin();
	ds18b20_P0.begin(P0);
	myIot.wifiConnect("1", "12345678");
	while (!myIot.wifiStatus()) {yield();}
	if (myIot.wifiStatus()) {
		display.setCursorLine(1);
		display.printLine("wifi连接成功");
	}
	else {
		display.setCursorLine(1);
		display.printLine("wifi连接失败");
	}
	delay(1000);
	myIot.init("iot.dfrobot.com.cn","i97ywPpMR","","ir7sQEtGgz",topics,1883);
	myIot.connect();
	while (!myIot.connected()) {yield();}
	if (myIot.connected()) {
		display.setCursorLine(2);
		display.printLine("mqtt连接成功");
	}
	else {
		display.setCursorLine(2);
		display.printLine("mqtt连接失败");
	}
	delay(1000);
	mydb.setServerParameter("http://tinywebdb.appinventor.space/api", "wujiajie","a46a5f05");
	display.fillScreen(0);
	display.setCursorLine(3);
	display.printLine("疫情防疫系统初始化");
	display.fillInLine(3, 0);
	huskylens.beginI2CUntilSuccess();
	display.setCursorLine(1);
	display.printLine("初始化成功");
	delay(1000);
	huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
}
void loop() {
	huskylens.request();
	if (huskylens.isAppearDirect(HUSKYLENSResultBlock)) {
		if (huskylens.isLearned(huskylens.readBlockCenterParameterDirect().ID)) {
			display.fillScreen(0);
			mind_s_XingMing = mydb.getTag((String(huskylens.readBlockCenterParameterDirect().ID)));
			display.setCursorLine(1);
			display.printLine("请正对摄像头,保持三秒");
			display.setCursorLine(1);
			display.printLine(mind_s_XingMing);
			display.setCursorLine(2);
			display.printLine(ds18b20_P0.getTempC());
			myIot.publish(topic_0, mind_s_XingMing);
		}
	}
}

Gitee源码仓库:https://gitee.com/qiqicancanqiqi/graphic-programming/commit/9ee4bd0417e4904f8fc12c95bb8310aa0be9b4e2

七、实现效果图
在这里插入图片描述

总结

这个小项目,运用到了比较多的知识如:wifi无线传输、MQTT协议、创建微型数据库、对接Easy-Iot(也可以是阿里云)、掌控板的使用、拓展板的使用、二哈识图的使用。希望缺乏项目开发经验的小伙伴,多去实践、多去思考、多去总结,这样才能更大程度提高自己。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐