物联网挑战赛+智慧校园可视化数据平台
背景:繁忙的学校工作让老师身心疲惫,往往忽略了很多细节上面的问题,利用可视数字化系统也迫在眉睫,记录数据避免不必要的事情发生;
问题:
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、分析想要实现的功能
2、准备需要用的硬件
3、设计程序,不断调试优化;
总结:
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();
}
}
花生编程2023.07.27
赞赞赞赞
花生编程2023.07.27
厉害厉害
三春牛-创客2023.07.23
赞赞赞赞赞
三春牛-创客2023.07.23
不错不错