2551浏览
查看: 2551|回复: 0

【试用测评】FireBeetle ESP32-E扩展板——超声波

[复制链接]
本帖最后由 云天 于 2021-8-14 19:00 编辑

Arduino环境配置
通过wiki文档进行配置https://wiki.dfrobot.com.cn/_SKU ... rd_ESP32_E#target_7

【试用测评】FireBeetle ESP32-E扩展板——超声波图1

【超声波传感器】
URM09 Ultrasonic Sensor Gravity Analog V1.0 超声波传感器
这是一款开放式双探头超声波测距模块,采用Gravity标准PH2.0-3P立式贴片座接口,输出为模拟电压,兼容arduino、树莓派等各种3.3V或5V逻辑电平的主控板。 该模块自带温度补偿,避免高温或低温环境对测量结果产生影响。模拟电压值输出,ADC简单转化即可直接读取距离值,简化操作步骤,降低实验难度。经测试,平整墙面的有效测距量程为2–500cm,分辨率为1cm,误差约为±1%。
由于esp32芯片模拟输入精度和电压问题,esp32芯片相关主控板(firebeetle、掌控板)无法正常作为精确测距使用。



【试用测评】FireBeetle ESP32-E扩展板——超声波图3

友情提示:由于esp32芯片模拟输入精度和电压问题,esp32芯片相关主控板(firebeetle、掌控板)无法正常作为精确测距使用(需搭配AD转换模块DFR0553才可正常使用)。

【16位AD转换模块】

【试用测评】FireBeetle ESP32-E扩展板——超声波图4

DFRobot I2C ADS1115 16位AD转换模块可对模拟量信号进行精确的采集与转换,通过这款AD模块,树莓派主控板就能非常方便的使用种类丰富的Gravity系列模拟量传感器,测量各类信号,感知这个世界。

【DFRobot_ADS1115库】

通过wiki文档进行配置https://wiki.dfrobot.com.cn/_SKU_DFR0553_I2C_16-Bit_ADC_Module

【试用测评】FireBeetle ESP32-E扩展板——超声波图2

【程序代码】

  1. #include <Wire.h>
  2. #include <DFRobot_ADS1115.h>
  3. DFRobot_ADS1115 ads(&Wire);
  4. void setup(void)
  5. {
  6.     Serial.begin(115200);
  7.     ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);   // 0x48
  8.     ads.setGain(eGAIN_TWOTHIRDS);   // 2/3x gain
  9.     ads.setMode(eMODE_SINGLE);       // single-shot mode
  10.     ads.setRate(eRATE_128);          // 128SPS (default)
  11.     ads.setOSMode(eOSMODE_SINGLE);   // Set to start a single-conversion
  12.     ads.init();
  13. }
  14. void loop(void)
  15. {
  16.     if (ads.checkADS1115())
  17.     {
  18.         int16_t adc0, adc1, adc2, adc3;
  19.         adc0 = ads.readVoltage(0);
  20.         Serial.print("A0:");
  21.         Serial.print(adc0*550/3284);//3.3V=3300mv,(空载:3284)最大量程500cm,模块测距极值为550cm(比有效最大量程值略大)
  22.         Serial.println("cm,  ");
  23.       
  24.     }
  25.     else
  26.     {
  27.         Serial.println("ADS1115 Disconnected!");
  28.     }
  29.     delay(1000);
  30. }
复制代码

【试用测评】FireBeetle ESP32-E扩展板——超声波图5

【试用测评】FireBeetle ESP32-E扩展板——超声波图6

【距离控灯】
  1. #include <Wire.h>
  2. #include <DFRobot_ADS1115.h>
  3. DFRobot_ADS1115 ads(&Wire);
  4. void setup(void)
  5. {
  6.    Serial.begin(115200);
  7.    ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);   // 0x48
  8.    ads.setGain(eGAIN_TWOTHIRDS);   // 2/3x gain
  9.    ads.setMode(eMODE_SINGLE);       // single-shot mode
  10.    ads.setRate(eRATE_128);          // 128SPS (default)
  11.    ads.setOSMode(eOSMODE_SINGLE);   // Set to start a single-conversion
  12.    ads.init();
  13.    pinMode(16,OUTPUT);
  14. }
  15. void loop(void)
  16. {
  17.    if (ads.checkADS1115())
  18.    {
  19.        int16_t adc0;
  20.        int distance;
  21.        adc0 = ads.readVoltage(0);
  22.        distance=int(adc0*550/3284);//3.3V=3300mv,(空载:3284)最大量程500cm,模块测距极值为550cm(比有效最大量程值略大)
  23.        if (distance<15){
  24.         digitalWrite(16,HIGH);
  25.        }
  26.        else{
  27.         digitalWrite(16,LOW);
  28.        }
  29.    
  30.        Serial.print(distance);
  31.        Serial.println("cm,  ");
  32.       
  33.    }
  34.    else
  35.    {
  36.        Serial.println("ADS1115 Disconnected!");
  37.    }
  38.    delay(500);
  39. }
复制代码
【演示视频】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

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

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

mail