zoukankan      html  css  js  c++  java
  • ESP32读取DS18B20温度

    最近收到DS18B20温度探头传感器,如图:

     感觉是一件比较简单的温度传感器,三根线:

    不带屏蔽输出引线:红色(VCC),黄色(白色)(DATA),黑色(GND)

    带屏蔽的输出引线:红色(VCC电源线),黄色(DATA信号线),白色(GND地线)

    我的是带屏蔽线的,所以红色VCC接ESP32的VIN口(5V供电),白色GND接ESP32的GND,黄色信号线接ESP32的D4。

    Arduino引入库

    两个库均在GitHub上,可以在release标签页中下载最新项目文件。
    OneWire库
    项目地址:https://github.com/PaulStoffregen/OneWire

    DallasTemperature库
    项目地址:https://github.com/milesburton/Arduino-Temperature-Control-Library

    可以将库文件复制到arduino的libraries目录下,也可以打开arduino ide,选择项目 > 加载库 > 添加一个 .ZIP库,导入两个库。

    #include <OneWire.h>
    #include <DallasTemperature.h>
    
    
    // 定义DS18B20数据口连接ESP32的4号IO上
    #define ONE_WIRE_BUS 4
    
    // 初始连接在单总线上的单总线设备
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);
    
    void setup(void)
    {
      // 设置串口通信波特率
      Serial.begin(9600);
      Serial.println("Dallas Temperature IC Control Library Demo");
      // 初始库
      sensors.begin();
    }
    
    void loop(void)
    {
      Serial.print("Requesting temperatures...");
      sensors.requestTemperatures(); // 发送命令获取温度
      Serial.println("DONE");
      
      Serial.print("Temperature for the device 1 (index 0) is: ");
      Serial.println(sensors.getTempCByIndex(0));
      delay(500);  
    }
    

    一切都想的太简单!!!读出的温度一直显示0度。

    必须要上拉一个4.7K的电阻,如图接线:

    也就是说,需要在VCC(5V)和接D4的线之间接一个4.7K上拉电阻才行,但我家里没4.7K的,只能并联两个10K电阻来解决问题,接上拉电阻后,成功读到温度数据。

    参考:

    在Arduino中使用DS18B20温度传感器(基于OneWire和DallasTemperature库)

    ESP8266--驱动DS18B20

  • 相关阅读:
    网址集合
    简单工具类-JsonUtil
    简单工具类-CookieUtils
    pom.xml
    jdbc.properties
    springmvc.xml
    applicationContext-redis.xml(spring整合redis集群)
    applicationContext-dao.xml
    web.xml
    环境变量配置及eclipse基本配置
  • 原文地址:https://www.cnblogs.com/codeit/p/15664816.html
Copyright © 2011-2022 走看看