回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

物联网挑战赛+智慧校园可视化数据平台 简单

头像 绘编程吴老师 2023.05.25 510 4

物联网挑战赛+智慧校园可视化数据平台

 

背景:繁忙的学校工作让老师身心疲惫,往往忽略了很多细节上面的问题,利用可视数字化系统也迫在眉睫,记录数据避免不必要的事情发生;

问题:

1、植物土壤湿度

2、噪音检测值

3、学生进校记录

4、花草危险

5、温湿度

6、环境光强度

7、校门开关

8、地震预警

9、校园灯光

 

 

实现功能:

10、siot/植物土壤湿度

11、siot/噪音检测值

12、siot/学生进校记录

13、siot/花草危险

14、siot/温湿度

15、siot/环境光强度

16、siot/校门开关

17、siot/地震预警

18、siot/校园灯光

 

可视化平台

图片1.png 

程序截图

图片2.png图片3.png 

制作过程:

1、分析想要实现的功能

2、准备需要用的硬件

3、设计程序,不断调试优化;

 微信图片_20230525110114.jpg微信图片_20230525110058.jpg微信图片_20230525110105.jpg

 

 

 

总结:

1、制作过程中要多次尝试硬件与软件的结合;

2、局域网需要网络比较稳定;

3、作品完整度月80%,还有更多内容需要更新;

 

步骤1 1、分析想要实现的功能

步骤2 2、准备需要用的硬件

步骤3 3、设计程序,不断调试优化;

材料清单

  • 掌控板 X1
  • 扩展板 X1
  • 超声波 X
  • 数字开关 X
  • 土壤检测传稿器 X
  • 温湿度传感器 X
代码
/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_DHT.h>
#include <DFRobot_Iot.h>
#include <DFRobot_URM10.h>

// 动态变量
volatile float mind_n_JinChuXiaoRenShu;
// 函数声明
void obloqMqttEventT0(String& message);
void obloqMqttEventT2(String& message);
void obloqMqttEventTsiot(String& message);
void obloqMqttEventT1(String& message);
void obloqMqttEventT3(String& message);
void obloqMqttEventT4(String& message);
// 静态常量
const String topics[5] = {"siot/校园灯光","siot/花草危险","siot/环境光强度","siot/校门开关","siot/地震预警"};
const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,obloqMqttEventT1,obloqMqttEventT2,obloqMqttEventT3,obloqMqttEventT4};
// 创建对象
DFRobot_Iot   myIot;
DFRobot_DHT   dht11_P16;
DFRobot_URM10 urm10;


// 主程序开始
void setup() {
	mPython.begin();
	myIot.setMqttCallback(msgHandles);
	dht11_P16.begin(P16, DHT11);
	myIot.setCustomMqttCallback(obloqMqttEventTsiot, "siot/学生进校、出校记录");
	mind_n_JinChuXiaoRenShu = 0;
	myIot.wifiConnect("huibiancheng", "huibiancheng123");
	while (!myIot.wifiStatus()) {yield();}
	delay(2000);
	display.setCursor(42, 22);
	display.print("wifi链接成功");
	myIot.init("192.168.8.8","siot","830463324972867","dfrobot", topics, 1883);
	myIot.connect();
	while (!myIot.connected()) {yield();}
	delay(1000);
	display.setCursor(42, 22);
	display.print("mqqt链接成功");
	myIot.subscribeTopic("siot/植物土壤湿度");
	myIot.subscribeTopic("siot/噪音检测值");
	myIot.subscribeTopic("siot/学生进校、出校记录");
	myIot.subscribeTopic("siot/温湿度");
}
void loop() {
	myIot.publish("siot/植物土壤湿度", (map((analogRead(P1)), 0, 1023, 0, 100)), 1);
	myIot.publish("siot/环境光强度", (light.read()), 1);
	myIot.publish("siot/噪音检测值", (map((sound.read()), 0, 1023, 0, 100)), 1);
	myIot.publish("siot/温湿度", (String((String(dht11_P16.getTemperature()) + String(","))) + String(dht11_P16.getHumidity())), 1);
	myIot.publish("siot/地震预警", (accelerometer.getStrength()), 1);
	myIot.publish("siot/花草危险", (map((urm10.getDistanceCM(P15, P14)), 0, 1023, 0, 100)), 1);
	myIot.publish("siot/学生进校、出校记录", mind_n_JinChuXiaoRenShu, 1);
	display.setCursor(42, 22);
	display.print((String("进校人数:") + String(mind_n_JinChuXiaoRenShu)));
	delay(200);
}


// 事件回调函数
void obloqMqttEventT0(String& message) {
	if ((message==String("开灯"))) {
		rgb.write(-1, 0xFFFFFF);
	}
	if ((message==String("关灯"))) {
		rgb.write(-1, 0x000000);
	}
}
void obloqMqttEventT2(String& message) {
	if (((light.read())<20)) {
		rgb.write(-1, 0xFFFFFF);
	}
	else {
		rgb.write(-1, 0x000000);
	}
}
void obloqMqttEventTsiot(String& message) {
	if ((digitalRead(P8))) {
		delay(200);
		mind_n_JinChuXiaoRenShu += 1;
	}
}
void obloqMqttEventT1(String& message) {
	if (((urm10.getDistanceCM(P15, P14))<10)) {
		buzz.freq(988, BEAT_1);
	}
	else {
		buzz.stop();
	}
}
void obloqMqttEventT3(String& message) {
	if ((message==String("开门"))) {
		rgb.write(0, 0xFFFFFF);
	}
	if ((message==String("关门"))) {
		rgb.write(0, 0x000000);
	}
}
void obloqMqttEventT4(String& message) {
	if (((accelerometer.getStrength())>1200)) {
		buzz.freq(988, BEAT_1);
	}
	else {
		buzz.stop();
	}
}

评论

user-avatar
  • 花生编程

    花生编程2023.07.27

    赞赞赞赞

    0
    • 花生编程

      花生编程2023.07.27

      厉害厉害

      0
      • 三春牛-创客

        三春牛-创客2023.07.23

        赞赞赞赞赞

        0
        • 三春牛-创客

          三春牛-创客2023.07.23

          不错不错

          0