ESP32:dsb1820 温度传感器给出恒定的负 127 读数

ESP32: dsb1820 temperature sensor giving constant negative 127 reading

我正在尝试使用连接到 esp32 微控制器的单个 dsb1820 温度传感器获取温度读数。传感器连接到 esp32 的 GPIO-4。我打算将温度读数发送到云端。

我面临的问题是温度读数总是给出值 -127。

我在网上看到,当 dsb1820 returns -127 表示传感器未连接。

我是否使用了错误的引脚来连接传感器?

#include "OneWire.h"
#include "DallasTemperature.h"
#include <WiFi.h>
#define WIFI_SSID "SSID"
#define WIFI_PASSWORD "PASSWORD"

OneWire oneWire(4);
DallasTemperature tempSensor(&oneWire);

void setup(void)
{
    Serial.begin(115200);
    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
    Serial.print("Connecting to Wi-Fi");
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(300);
    }
    Serial.println();
    Serial.print("Connected with IP: ");
    Serial.println(WiFi.localIP());
    Serial.println();

    tempSensor.begin();
}

void loop(void)
{
    tempSensor.requestTemperaturesByIndex(0);

    Serial.print("Temperature: ");
    Serial.print(tempSensor.getTempCByIndex(0));
    Serial.println(" C");

    delay(2000);
}

检查您的电缆并:

const int oneWireBus = 32;  // on pin 32 /GPIO7/D0 on pcb (a 4.7K resistor is necessary)
OneWire oneWire(oneWireBus);

应该是传感器的中间针脚(看我的图)

编辑 DevKit 没有引脚 4,要么你使用 Arduino 24 中的 GPIO4(pcb 上的 4)但是

The following strapping pins: 0, 2, 4, 5 (HIGH during boot), 12 (LOW during boot) and 15 (HIGH during boot) are used to put the ESP32 into bootloader or flashing mode. Don't connect peripherals to those pins! If you do, you may have trouble trying to upload code, flash or reset the board.

连接到 32(PCB 上的 GPIO7 或 D0),因为这对于测试是安全的

如果你有错误或没有/错误电阻器它会给你-127(或者你杀死了sensor/it是DOA)。