• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

树莓派I2C连接18B20

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

载入模块

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices/

显示结果

ls
pi@raspberrypi:~$ cd /sys/bus/w1/devices/
pi@raspberrypi:/sys/bus/w1/devices$ ls
28-00000494cb79 w1_bus_master1

查看当前温度

cd 28-00000494cb79
cat w1_slave
显示结果:
70 01 4b 46 7f ff 10 10 e1 : crc=e1 YES
70 01 4b 46 7f ff 10 10 e1 t=23000
第二行的t=23000就是当前的温度值,要换算成摄氏度,除以1000,即当前温度为23000/1000=23摄氏度。

将温度数据上传到yeelink的demo

 

#coding=utf8
#!/usr/bin/env python
import time
import json
import urllib
import urllib2
import sys

def DS18B20(name):
    tfile = open("/sys/bus/w1/devices/%s/w1_slave" %name) 
    #读取文件所有内容
    text = tfile.read()
    #关闭文件
    tfile.close()
    #用换行符分割字符串成数组,并取第二行
    secondline = text.split("\n")[1]
    #用空格分割字符串成数组,并取最后一个,即t=23000
    temperaturedata = secondline.split(" ")[9]
    #取t=后面的数值,并转换为浮点型
    temperature = float(temperaturedata[2:])
    #转换单位为摄氏度
    temperature = temperature / 1000
    return temperature
 
def update(name):
    temp_value = DS18B20(name)
    if(temp_value<50):
        temp_str = str(temp_value)
        url = 'http://api.yeelink.net/v1.0/device/1000/sensor/1000/datapoints'
        values = json.dumps({"value":temp_str})
        headers = {'U-ApiKey':'123456abcdef'}
        req = urllib2.Request(url, values, headers)
        urllib2.urlopen(req)
        return temp_str
    else:
        return ""
       
if __name__ == '__main__':
    name = sys.argv[1]
    while True:
        temp = update(name)
        if(temp):
            print '成功 ' + temp
        time.sleep(20)

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c语言学习-工具使用发布时间:2022-07-14
下一篇:
转载---C#复制文件夹下的(内容)到指定文件夹中发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap