【问题标题】:esp32 getting temperature readings from ds18b20esp32 从 ds18b20 获取温度读数
【发布时间】:2021-12-21 21:29:35
【问题描述】:

我在使用 esp32 和 dallas ds18B20 温度传感器时遇到了一些问题,因为我无法从中获取读数。

esp32 是 DOIT ESP32 devkit v1,传感器是标准类型的通过孔和/或具有 1-1.5 米电缆且防水的传感器。

我怀疑这是 esp32 的库问题,因为相同的库可以在 arduino uno、mini 等上正常工作。电缆连接已经检查了很多次。我使用了从 arduino IDE 内部安装的以下库:

  1. Paul Stoffregen 的 OneWire v.2.3.6 (https://www.pjrc.com/teensy/td_libs_OneWire.html)
  2. Miles Burton 的 DallasTemperature v.3.9.0 (https://github.com/milesburton/Arduino-Temperature-Control-Library)

有人可以向我指出一组对你来说很成功的库吗?

编辑:这里有一个类似的问题:ESP32: dsb1820 temperature sensor giving constant negative 127 reading 但我认为它没有解决。

这是我的包含和引脚定义:

/************************* Dallas Temperature probes ********************************/
    #include <OneWire.h>
    #include <DallasTemperature.h>
    const int oneWireBus = 26;     // GPIO5 in esp32
    const int TEMPERATURE_PRECISION = 12; //12bit precision 0.01 steps

电阻和设置是一样的。

【问题讨论】:

  • 它们是如何连接到 ESP32 的?你在数据线上用了上拉电阻吗?
  • dallas 引脚:pin1 到 GND,pin2 到 esp32 和 4K7 到 3V3,pin3 到 3V3

标签: microcontroller sensors esp32 arduino-esp32


【解决方案1】:

我不知道为什么 26. 试试:

const int oneWireBus = 5;     // GPIO5 in esp32

完整代码:

#include <OneWire.h>
#include <DallasTemperature.h>
const int oneWireBus = 5;     // GPIO5 in esp32
const int TEMPERATURE_PRECISION = 12; //12bit precision 0.01 steps
OneWire onewire(oneWireBus);
DallasTemperature sensors(&onewire);

void setup(){
  Serial.begin(9600);
  sensors.begin();
}
void loop(){
  sensors.requestTemperatures();
  temperature = sensors.getTempCByIndex(0);
  Serial.println(temperature);
}

【讨论】:

  • 我试过了,但没有运气。我正在重新布线,看看是不是电路问题。
猜你喜欢
  • 2015-08-26
  • 2019-09-23
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多