比赛的作品:水位检测站(上)

2022-07-241.6万
AI 快速预览详细 收起
本文介绍了如何使用UNO主控板、土壤湿度传感器和人体红外释热传感器等组件构建一个水位检测站。通过LCD显示屏实时显示水位状态,并通过蜂鸣器发出警报。项目适用于STEM教育场景,帮助学生理解传感器的应用和编程基础。
半年一度的B2(创科马拉松)项目开始啦!
和我的队友商量了差不多两小时(主题是协作机器人)
简单来说,就是能帮助人类的工业,农业,或医学等领域

我和队友商量,可实现的功能有:
第一,可以测量水位是否有异常
第二,如果发现有人再水里游泳,警报上岸
第三,还可以响铃人们撤离
第四,可以通过网络上报手机里,提醒撤离大概是这样了

目前没有外壳,请看下期,所以别叫我发照片了()()

下面就开工
准备的材料:
1个UNO主控板
1个cld液晶显示屏
1个obloq模块
1个蜂鸣器
1个人体红外释热传感器
1个土壤湿度传感器(别问我为什么要用它)

我们先把lcd显示屏安装在i2c串口,如果0x20的i2c地址不行,那么试试0x27的i2c地址,如果还是不行,那就再试试0x3F的i2c地址,如果还是不行,那就调cld显示屏上的编码器,调到有文字为止,如果还是不行,没有办法,找商家问问

土壤湿度传感器是用来测量水位的,别说我开完笑,你烧下着个代码你就知道了(记得打开串口输出)
对了,土壤湿度传感器要接A0接口,不然会没有输出
void setup() {
        Serial.begin(9600);
}
void loop() {
        Serial.println(analogRead(A0));
}


下面就初始化obloq吧!(代码如下)
#include <UNO_Obloq.h>
// 静态常量
const String topics[5] = {"","","","",""};
// 创建对象
UNO_Obloq olq;
void setup() {
        olq.startConnect(0, 1, "", "", "", "", topics, "iot.dfrobot.com.cn", 1883);
}
void loop() {

}
注意:空的地方要填自己的网络名称和密码,还有你的帐号id和pwd(硬串口还是软串口你自选)

流程图:
比赛的作品:水位检测站(上)图1
有了流程图,就简单多了
代码的程序:
/*!
* MindPlus
* uno
*
*/
#include <UNO_Obloq.h>
#include <SoftwareSerial.h>
#include <DFRobot_Libraries.h>
#include <DFRobot_LiquidCrystal_I2C.h>

// 动态变量
volatile float mind_n_ShangShengZhiShu, mind_n_DengDai;
// 静态常量
const String topics[5] = {"Py23LWp7g","","","",""};
// 创建对象
DFRobot_LiquidCrystal_I2C lcd1602;
UNO_Obloq                 olq;
SoftwareSerial            softSerial(2, 3);
DFRobot_Tone              DFTone;


// 主程序开始
void setup() {
        Serial.begin(9600);
        lcd1602.begin(0x27);
        lcd1602.clear();
        softSerial.begin(9600);
  olq.startConnect(&softSerial, "KevinMobile", "15819779550", "T-NGaECnR", "TaHMaEj7gz", topics, "iot.dfrobot.com.cn", 1883);
}
void loop() {
        Serial.println(analogRead(A0));
        if ((analogRead(A0)<=300)) {
                lcd1602.printLine(uint32_t(1), "Wate level:normal");
                Serial.println(analogRead(A0));
        }
        else {
                lcd1602.printLine(uint32_t(1), "Wate level:abnorma");
                Serial.println(analogRead(A0));
                DFTone.play(A1, 262, 500);
                DFTone.play(A1, 880, 500);
                mind_n_ShangShengZhiShu += 1;
        }
        if ((digitalRead(13)==1)) {
                lcd1602.printLine(uint32_t(2), "Someone drowned");
        }
        if ((digitalRead(13)==0)) {
                lcd1602.printLine(uint32_t(2), "                                              ");
        }
        if ((mind_n_DengDai==30)) {
                mind_n_DengDai = 0;
                if ((analogRead(A0)<300)) {
                        olq.publish(olq.topic_0, "目前水位没有危险");
                }
                else {
                        olq.publish(olq.topic_0, (String((String("目前水位是") + String(analogRead(A0)))) + String(",请注意撤离")));
                }
        }
        mind_n_DengDai += 1;
        delay(1000);
}



好了,本帖今天结束了,我们明天再见

SunJuly-202207241521..png (314.82 KB, 下载次数: 3944)

STEM教育 · 水位检测站项目:UNO主控板与传感器组合_image_3.webp

SunJuly-202207241471..png (314.82 KB, 下载次数: 4032)

STEM教育 · 水位检测站项目:UNO主控板与传感器组合_image_6.webp

SunJuly-202207243649..png (86.22 KB, 下载次数: 4040)

STEM教育 · 水位检测站项目:UNO主控板与传感器组合_image_9.webp

SunJuly-202207244047..png (86.22 KB, 下载次数: 4030)

STEM教育 · 水位检测站项目:UNO主控板与传感器组合_image_12.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
星辰大海://。,
星辰大海://。,
Z5182JA2POgN
Z5182JA2POgN
太厉害了
Ash1
Ash1
期待更新
星辰大海://。,
星辰大海://。,回复anydy
hmmmm主要是外壳太烂了吧
anydy
anydy
作者
回复Ash1
明天保证更新
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
- 没有更多了 -