查看: 1862|回复: 2

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

[复制链接]
  • TA的每日心情
    开心
    2019-10-8 20:07
  • 签到天数: 22 天

    [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口?
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Blynk与m5stack basic以及uiflow的交互玩法
    Blynk与m5stack basic以及
    Blynk与m5stack basic以及uiflow的交互玩法 [准备工作我们假设玩家已经熟悉下面的准备
    中文 字库 的8针 OLED 12864模块 arduino
    中文 字库 的8针 OLED 128
    屏幕电路SPI连线: 中文字库OLED Arduino UNO GND GND
    【零知ESP8266项目篇】1 OLED天气时钟
    【零知ESP8266项目篇】1 O
    引述: 我们一起学了这么久的零知ESP8266的教程,是不是该检验一下自己了呢?在前面的
    创客集结号:温馨水杯
    创客集结号:温馨水杯
    今天,在创客集结号平台看到一个能自动感应的杯子,不仅神奇还非常有创意,该作品主要
    下载库报错
    下载库报错
    我在编写arduino1602液晶屏温湿度下载DHT_sensor_library库时,下载了库后,还没有改
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表