4295| 0
|
超声波传感器URM09测评项目:地下车库水位报警 |
本帖最后由 szjuliet 于 2019-7-3 21:45 编辑 地下车库水位报警 这是一个拖延了将近一个月的测评贴。因为前段时间忙于麦昆脑洞赛,再加上这一个月工作巨多,所以这个测评项目到7月份才做好。 Gravity:URM09-模拟量超声波测距传感器的开箱和检测就不再另开一贴了,其他测评的老师都写的很详细,这里就不重复了。 本项目针对深圳夏季暴雨频繁,地下车库经常有水淹的情况发生,针对这种情况,模拟设计了水位报警,使用超声波传感器检测车库的水位。实现功能:地下车库被水淹后,当水位超过设定的警戒线时会语音提示车库内的人员赶快撤离,同时手机app向设定好的电话发送报警信息,请求抢险。该项目同样也可应用到其他需要使用超声波测距的场景下,如倒车提示、银行/海关等柜台一米线提示等。项目演示视频如下: 元器件: 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. 代码: [mw_shl_code=cpp,true]// # 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); }[/mw_shl_code] 3. 测试 打开串口监视器可以看到超声波传感器返回的距离值 二、OBLOQ模块 1. 线路连接: OBLOQ模块的“+”接扩展板的5V,“-”接扩展板的GND,“T”接扩展板的D10引脚,“R”接扩展板的D11引脚 2. 代码: [mw_shl_code=cpp,true]#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); } }[/mw_shl_code] 3. 测试: 程序上传成功后,OBLOQ模块重置,刚开始灯为红色,然后变为蓝色,当MQTT连接成功后灯变为绿色 在浏览器中打开IoT工作间,发送消息“on”,板载LED灯亮,发送信息“off”,板载LED灯灭 三、手机app程序编写 1.界面设计: 2.逻辑设计: 初始化屏幕时设置MQTT的地址、用户名及密码,当MQTT连接成功后,订阅两个主题消息,一个用于接收超声波传感器传回的值,一个用于接收用户发送的信息; 当接收到MQTT的消息时,如果主题是订阅的超声波传回的值,当值小于设定的警戒值时,手机向指定号码发送求救信息,板载LED灯亮,传感器的返回值显示为红色;当超声波返回的值正常时,板载LED灯灭,传感器的返回值显示为黑色。 四、语音合成模块 1. 线路连接: 将语音合成模块接到传感器扩展板的XBEE接口的位置 2. 测试 上传程序时,需要将扩展板的开关拨到PROG处,上传成功后,再将开关拨到XBEE处,语音合成模块方可正常工作 测试代码: [mw_shl_code=cpp,true]/* 说明: “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); }[/mw_shl_code] 语音合成模块的具体使用方法可以参考本人的另外一个帖子:麦昆逍遥神州游 五、完整的Arduino代码[mw_shl_code=cpp,true]#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); } }[/mw_shl_code] wiki资料 (SKU:SEN0117)Speech Synthesizer Bee语音合成模块 (SKU:SEN0307)URM09 Ultrasonic Sensor(Gravity Analog)(V1.0)超声波传感器 (SKU: TEL0118)Gravity: OBLOQ - IoT Module 物联网模块 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed