szjuliet 发表于 2019-7-3 16:40:42

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

本帖最后由 szjuliet 于 2019-7-3 21:45 编辑

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

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

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

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

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

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

2. 代码:
// # Editor   : roker
// # Date       : 18.02.2019

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


#defineMAX_RANG      (520)//模块测距极值为520cm(比有效最大量程值略大)
#defineADC_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. 测试
打开串口监视器可以看到超声波传感器返回的距离值


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

2. 代码:
#include <UNO_Obloq.h>
#include <SoftwareSerial.h>

double temp;
String command;

const String topics = {"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.界面设计:


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


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


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




2. 测试
上传程序时,需要将扩展板的开关拨到PROG处,上传成功后,再将开关拨到XBEE处,语音合成模块方可正常工作
测试代码:
/*
说明:
“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代码#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 = {"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 物联网模块


页: [1]
查看完整版本: 超声波传感器URM09测评项目:地下车库水位报警