查看: 1664|回复: 2

[分享] 基于WIFIduino的18B20温度计

[复制链接]
  • TA的每日心情
    开心
    2019-4-22 10:27
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2018-7-15 15:36 | 显示全部楼层 |阅读模式
       DS18B20数字温度传感器是美国DALLAS公司生产的单总线数字温度传感器。DSl820数字温度计提供 9 位(二进制)温度读数指示器件的温度信息经过单线接口送入 DSl8B20 或从 DSl8B20 送出因此从主机 CPU 到DSl820 仅需一条线(和地线) DSl820 的电源可以由数据线本身提供而不需要外部电源,因为每一个 DSl820 在出厂时已经给定了唯一的序号,因此任意多个 DSl820 可以存放在同一条单线总线上,这允许在许多不同的地方放置温度敏感器件 DSl820 的测量范围从-55 到+125 增量值为 0.5 可在 l s(典型值)内把温度变换成数字。简单的DS18B20测温原理就是说把芯片感知到的温度换成数值放在数据寄存器里面,要想得到寄存器里面的数据,只有按照DALLAS规定的一种时序才能正确传出数据,这种时序被称为单总线,cpu就可通过单总线协议,取得DS18B20里面的温度值。
    详细参照DS18B20手册 DS18B20.pdf,Arduino教程——DS18B20温度传感器https://www.arduino.cn/forum.php?mod=viewthread&tid=1345&fromuid=129943(出处: Arduino中文社区)
          因为Arduino  IDE提供了单总线协议库(但是需要更新到最新版本才支持esp8266),所以编程变的非常简单。该项目例程采用WIFIduino板和DS18B20连接,测得的温度值通过Blinker显示在手机上。
          完整示例程序如下:
          其中ssid和pswd需写入你当前WiFi的ssid和密码


    /* Blinker WiFi DS1B20, support WiFiduino*/
    
    #define BLINKER_PRINT Serial//启用串口调试输出功能
    #define BLINKER_WIFI//设备配置
    #include <Blinker.h>
    #include <OneWire.h>//单总线库需更新最新版才支持8266
    #include <DallasTemperature.h>
    #define ONE_WIRE_BUS 12 //定义DS18B20数据口连接WIFIduino的12号IO上
    #define BUTTON_1 "ButtonKey"
    // 初始连接在单总线上的单总线设备
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);
    
    char ssid[] = "<Your WiFi network SSID or name>";
    char pswd[] ="<Your WiFi network WPA password or WEP key>";
    
    void setup()
    {
        Serial.begin(115200);
        Blinker.begin(ssid, pswd);
        sensors.begin();// 初始DS18B20库
        Blinker.wInit(BUTTON_1, W_BUTTON);//app组件初始化, 建议在使用前初始化 Button 、Slider(滑动开关) 、 Toggle 及 RGB
        Blinker.run();                 
    }
    
    void loop()
    {  
      Blinker.run();//此函数需要频繁调用以保持设备间连接及处理收到的数据, 建议放在 loop() 函数中
      Blinker.delay(2000);//解决了和Blinker较难连接的问题
      if (Blinker.available()) //检测是否有接收到数据
        {
            BLINKER_LOG2("Blinker.readString(): ", Blinker.readString());//手机读取接收到的数据
            sensors.requestTemperatures(); //发送命令获取温度
            Blinker.print("degree centigrade", sensors.getTempCByIndex(0)+1);//发送温度数据显示在Blinker APP中
         }
    }
  • TA的每日心情
    开心
    2019-4-16 16:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-5-13 21:15 | 显示全部楼层
    那位高手试过这个示例程序,分享下经验
  • TA的每日心情
    开心
    2019-4-16 16:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-5-13 21:19 | 显示全部楼层
    DSl8B20 不用接电阻,直接接到12口?
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    这个怎么整?标点都是英文的
    这个怎么整?标点都是英文
    a=a+1改成a++也不行
    [WiFiduino-8266开发板测试]三、测试IO口
    [WiFiduino-8266开发板测
    首先测试IO口的关系,板载正面的D0~D15[D14,D15没有,相同的位置写的是D4,D5],反面
    求助,arduino nano发热严重
    求助,arduino nano发热严
    我有一块arduino nano板,装在一个扩展板上(如下图),用扩展板上的外接电源接口(资
    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表