查看: 300|回复: 0

[SEN0307] 超声波传感器URM09测评项目:地下车库水位报警

[复制链接]
本帖最后由 szjuliet 于 2019-7-3 21:45 编辑

地下车库水位报警

这是一个拖延了将近一个月的测评贴。因为前段时间忙于麦昆脑洞赛,再加上这一个月工作巨多,所以这个测评项目到7月份才做好。

Gravity:URM09-模拟量超声波测距传感器的开箱和检测就不再另开一贴了,其他测评的老师都写的很详细,这里就不重复了。

本项目针对深圳夏季暴雨频繁,地下车库经常有水淹的情况发生,针对这种情况,模拟设计了水位报警,使用超声波传感器检测车库的水位。实现功能:地下车库被水淹后,当水位超过设定的警戒线时会语音提示车库内的人员赶快撤离,同时手机app向设定好的电话发送报警信息,请求抢险。该项目同样也可应用到其他需要使用超声波测距的场景下,如倒车提示、银行/海关等柜台一米线提示等。
项目演示视频如下:


元器件:
1. 主控:DFRduino UNO R3 http://www.dfrobot.com.cn/goods-521.html
2. 扩展板:IO传感器扩展板 V6 (兼容Arduinohttp://www.dfrobot.com.cn/goods-732.html
3. Gravity:URM09-模拟量超声波测距传感器:http://www.dfrobot.com.cn/goods-1954.html
4. Gravity: UART OBLOQ - IoT物联网模块:http://www.dfrobot.com.cn/goods-1577.html
5. Speech Synthesizer Bee语音合成模块:http://www.dfrobot.com.cn/goods-491.html
6. 小喇叭(8Ω0.5W):http://www.dfrobot.com.cn/goods-611.html

IoT平台:
http://iot.dfrobot.com.cn/

一、测试超声波传感器
1.线路连接:
超声波传感器接扩展板的A0引脚

2. 代码:
[C++] 纯文本查看 复制代码
// # Editor     : roker
// # Date       : 18.02.2019

// # Product name: URM09 Ultrasonic Sensor(Gravity Analog)(V1.0)
// # Product SKU : SEN0307
// # Version     : 1.0


#define  MAX_RANG      (520)//模块测距极值为520cm(比有效最大量程值略大)
#define  ADC_SOLUTION      (1023.0)//Arduino UNO 的ADC精度为10bit

int sensityPin = A0;    // select the input pin 
void setup() {
  // Serial init
  Serial.begin(115200);
}
float dist_t, sensity_t;
void loop() {
  // read the value from the sensor:
 sensity_t = analogRead(sensityPin);
  // turn the ledPin on

 dist_t = sensity_t * MAX_RANG  / ADC_SOLUTION;//
 Serial.print(dist_t,0);
 Serial.println("cm");
 
 delay(500);

}


3. 测试
打开串口监视器可以看到超声波传感器返回的距离值
串口输出.png

二、OBLOQ模块
1. 线路连接:
OBLOQ模块的“+”接扩展板的5V,“-”接扩展板的GND,“T”接扩展板的D10引脚,“R”接扩展板的D11引脚 截图201907031629174025.png

2. 代码:
[C++] 纯文本查看 复制代码
#include <UNO_Obloq.h>
#include <SoftwareSerial.h>

double temp;
String command;

const String topics[2] = {"H1BN-2EKE", "uxH6cCVZg"};
SoftwareSerial softSerial(10, 11);
UNO_Obloq olq;

void setup() {
        temp = 0;
        Serial.begin(9600);
  softSerial.begin(9600);
  olq.startConnect(&softSerial, "Your ssid", "wifi password", "Iot_id(user)", "Iot_pwd(password)", topics, China);
        olq.publish(topic_0, "HelloTopic0");
        olq.publish(topic_1, "HiTopic1");
        Serial.begin(9600);
}

void loop() {
        olq.publish(topic_0, analogRead(A0));
        Serial.println(analogRead(A0));
        if ((analogRead(A0) < 25)) {
        }
        delay(3000);
        command = olq.getMessage(topic_1);
        if ((command == "on")) {
                digitalWrite(13, HIGH);
        }
        if ((command == "off")) {
                digitalWrite(13, LOW);
        }
}


3. 测试:
程序上传成功后,OBLOQ模块重置,刚开始灯为红色,然后变为蓝色,当MQTT连接 成功后灯变为绿色
在浏览器中打开IoT工作间,发送消息“on”,板载LED灯亮,发送信息“off”,板载LED灯灭

三、手机app程序编写

1.界面设计:
app界面设计.png

2.逻辑设计:
初始化屏幕时设置MQTT的地址、用户名及密码,当MQTT连接成功后,订阅两个主题消息,一个用于接收超声波传感器传回的值,一个用于接收用户发送的信息;
app逻辑设计1.png

当接收到MQTT的消息时,如果主题是订阅的超声波传回的值,当值小于设定的警戒值时,手机向指定号码发送求救信息,板载LED灯亮,传感器的返回值显示为红色;当超声波返回的值正常时,板载LED灯灭,传感器的返回值显示为黑色。
app逻辑设计2.png

四、语音合成模块
1. 线路连接:
将语音合成模块接到传感器扩展板的XBEE接口的位置
截图201907031612414935.png

截图201907031613225008.png

2. 测试
上传程序时,需要将扩展板的开关拨到PROG处,上传成功后,再将开关拨到XBEE处,语音合成模块方可正常工作
测试代码:
[C++] 纯文本查看 复制代码
/*
  说明:
  “0xC9,0xEE”代表一个字“深”,以此类推。
*/
#include "Syn6288.h"
Syn6288 syn;
uint8_t text0[]={0xC4, 0xFA, 0xBA, 0xC3, 0xBB, 0xB6, 0xD3, 0xAD, 0xB3, 0xCB, 0xD7, 0xF8, 0xB9, 0xDB, 0xB9, 0xE2, 0xB5, 0xE7, 0xCC, 0xDD, 0xC7, 0xEB, 0xCE, 0xCA, 0xC4, 0xFA, 0xD2, 0xAA, 0xC8, 0xA5, 0xBC, 0xB8, 0xB2, 0xE3};   //您好,欢迎乘坐观光电梯。请问您要去几层?

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  syn.play(text0,sizeof(text0),0);//合成text0,无背景音乐
delay(3000);
}


语音合成模块的具体使用方法可以参考本人的另外一个帖子:麦昆逍遥神州游

五、完整的Arduino代码
[C++] 纯文本查看 复制代码
#include <UNO_Obloq.h>
#include <SoftwareSerial.h>
#include "Syn6288.h"

Syn6288 syn;
uint8_t text0[]={0xB5,0xD8,0xCF,0xC2,0xB3,0xB5,0xBF,0xE2,0xCB,0xAE,0xCE,0xBB,0xB3,0xAC,0xB9,0xFD,0xBE,0xAF,0xBD,0xE4,0xCF,0xDF,0xA3,0xAC,0xC7,0xEB,0xD1,0xB8,0xCB,0xD9,0xB3,0xB7,0xC0,0xEB,0xA3,0xA1};   //地下车库水位超过警戒线,请迅速撤离!

String command;

const String topics[2] = {"H1BN-2EKE", "uxH6cCVZg"};
SoftwareSerial softSerial(10, 11);
UNO_Obloq olq;

void setup() {
  Serial.begin(9600);
  softSerial.begin(9600);
  olq.startConnect(&softSerial, "Your ssid", "wifi password", "Iot_id(user)", "Iot_pwd(password)", topics, China);
  olq.publish(topic_0, "HelloTopic0");
  olq.publish(topic_1, "HiTopic1");
  Serial.begin(9600);
}

void loop() {
  olq.publish(topic_0, analogRead(A0));
  Serial.println(analogRead(A0));
  if ((analogRead(A0) < 25)) {
    syn.play(text0,sizeof(text0),0);//合成text0,无背景音乐
  }
  delay(3000);
  command = olq.getMessage(topic_1);
  if ((command == "on")) {
    digitalWrite(13, HIGH);
  }
  if ((command == "off")) {
    digitalWrite(13, LOW);
  }
}


wiki资料

(SKU:SEN0117)Speech Synthesizer Bee语音合成模块
(SKU:SEN0307)URM09 Ultrasonic Sensor(Gravity Analog)(V1.0)超声波传感器
(SKU: TEL0118)Gravity: OBLOQ - IoT Module 物联网模块


urm09_obloq.zip

862 Bytes, 下载次数: 1, 下载积分: 创造力 -1

售价: 3 创造力  [记录]

.ino文件

mqtt_urm09_sample.zip

4.58 KB, 下载次数: 1, 下载积分: 创造力 -1

售价: 3 创造力  [记录]

.aia文件

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail