云天 发表于 2021-8-14 19:00:38

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

本帖最后由 云天 于 2021-8-14 19:00 编辑

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



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





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

【16位AD转换模块】



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

【DFRobot_ADS1115库】

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



【程序代码】


#include <Wire.h>
#include <DFRobot_ADS1115.h>

DFRobot_ADS1115 ads(&Wire);

void setup(void)
{
    Serial.begin(115200);
    ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);   // 0x48
    ads.setGain(eGAIN_TWOTHIRDS);   // 2/3x gain
    ads.setMode(eMODE_SINGLE);       // single-shot mode
    ads.setRate(eRATE_128);          // 128SPS (default)
    ads.setOSMode(eOSMODE_SINGLE);   // Set to start a single-conversion
    ads.init();
}

void loop(void)
{
    if (ads.checkADS1115())
    {
      int16_t adc0, adc1, adc2, adc3;
      adc0 = ads.readVoltage(0);
      Serial.print("A0:");
      Serial.print(adc0*550/3284);//3.3V=3300mv,(空载:3284)最大量程500cm,模块测距极值为550cm(比有效最大量程值略大)
      Serial.println("cm,");
      
    }
    else
    {
      Serial.println("ADS1115 Disconnected!");
    }

    delay(1000);
}





【距离控灯】


#include <Wire.h>
#include <DFRobot_ADS1115.h>

DFRobot_ADS1115 ads(&Wire);

void setup(void)
{
   Serial.begin(115200);
   ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);   // 0x48
   ads.setGain(eGAIN_TWOTHIRDS);   // 2/3x gain
   ads.setMode(eMODE_SINGLE);       // single-shot mode
   ads.setRate(eRATE_128);          // 128SPS (default)
   ads.setOSMode(eOSMODE_SINGLE);   // Set to start a single-conversion
   ads.init();
   pinMode(16,OUTPUT);
}

void loop(void)
{
   if (ads.checkADS1115())
   {
       int16_t adc0;
       int distance;
       adc0 = ads.readVoltage(0);
       distance=int(adc0*550/3284);//3.3V=3300mv,(空载:3284)最大量程500cm,模块测距极值为550cm(比有效最大量程值略大)
       if (distance<15){
      digitalWrite(16,HIGH);
       }
       else{
      digitalWrite(16,LOW);
       }
   
       Serial.print(distance);
       Serial.println("cm,");
      
   }
   else
   {
       Serial.println("ADS1115 Disconnected!");
   }

   delay(500);
}
【演示视频】
https://www.bilibili.com/video/BV1YL4y1e7b9?share_source=copy_web
页: [1]
查看完整版本: 【试用测评】FireBeetle ESP32-E扩展板——超声波