【试用测评】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]