用树莓派实现室内温度监控

作者: WireHome | 来源:发表于2019-02-19 09:55 被阅读117次

    树莓派加上温度传感器实现室内温度监控。可用于家庭,轿车,工业,农业 等许多方面。可做温度预警,自动降温等操作。各位小伙伴可自行脑补发挥。

    1.硬件准备

    a.树莓派(Raspberry Pi)一个

    b.DS18B20温度传感器一个

    c.4.7kΩ电阻一个 或 DS18B20模块一个

    d.杜邦线(双头母)

    2.组装(如图)

    image

    按照例图接好线 组装完成以后,确认硬件接线是否正确并生效。首先使用命令升级内核,命令如下:

    apt-get update
    
    apt-get upgrade
    

    打开配置文件 sudo nano /boot/config.txt 在最后一行手动添加

    dtoverlay=w1-gpio-pullup,gpiopin=4,保存并重启树莓派。

    确认设备是否生效

    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=25000
    

    第二行的t=23000就是当前的温度值,要换算成摄氏度,除以1000,即当前温度为

    25000/1000=25摄氏度。

    3.用python读取温度值

    #/home/pi/temperature.py
    #打开温度传感器文件
    tfile = open("/sys/bus/w1/devices/28-00000494cb79/w1_slave")
    #读取文件所有内容
    text = tfile.read()
    #关闭文件
    tfile.close()
    #用换行符分割字符串成数组,并取第二行
    secondline = text.split("\n")[1]
    #用空格分割字符串成数组,并取最后一个,即t=23000
    temperaturedata = secondline.split(" ")[9]
    #取t=后面的数值,并转换为浮点型
    temperature = float(temperaturedata[2:])
    #转换单位为摄氏度
    temperature = temperature / 1000
    #打印值
    print temperature
    

    将以上代码文件存放:/home/pi/temperature.py 命令行运行代码。

    python /home/pi/temperature.py 就可得出结果数值

    4.数据上报物联网平台

    yeelink是国内比较知名的免费物联网数据平台,国外有COSM(https://cosm.com)。注册yeelink 账号并添加设备和传感器。

    修改刚刚写好的 Python 文件 ,将温度值用JSON格式保存到一个文本文件。

    #/home/pi/temperature.py
    #打开温度传感器文件
    tfile = open("/sys/bus/w1/devices/28-00000494cb79/w1_slave")
    #读取文件所有内容
    text = tfile.read()
    #关闭文件
    tfile.close()
    #用换行符分割字符串成数组,并取第二行
    secondline = text.split("\n")[1]
    #用空格分割字符串成数组,并取最后一个,即t=23000
    temperaturedata = secondline.split(" ")[9]
    #取t=后面的数值,并转换为浮点型
    temperature = float(temperaturedata[2:])
    #转换单位为摄氏度
    temperature = temperature / 1000
    #拼接API 所需json数据
    res = '{"value":%f}' %temperature
    #打开创建文件,将温度值写入:/home/pi/datafile.txt
    output = open('/home/pi/datafile.txt', 'w')
    #写入数据
    output.write(res)
    #关闭文件
    output.close
    

    新增yeelink.sh脚本,文件位置:/home/pi/yeelink.sh ,内容如下:

    sudo python /home/pi/temperature.py
    curl --request POST --data-binary @"/home/pi/datafile.txt" --header "U-ApiKey:XXXXXXXXXXXXXXXX" http://api.yeelink.net/v1.0/device/1969/sensor/2533/datapoints
    

    将U-ApiKey:XXXXXXXXXXXXXXXX替换为自已账户的API Key。
    后面的URL也需要替换为自己申请的传感器URL。

    添加到计划任务

    #为脚本增加可执行权限
    sudo chmod +x yeelink.sh
    #将脚本加入cronjob(计划任务)
    sudo crontab -e
    #在cornjob文件中添加下面一行,并保存(表示20分钟执行一下脚本,时间可自行修改)
    */20 * * * * /home/pi/yeelink.sh
    

    这样就好20分钟讲温度数据上传到 yeelink 物联网平台,然后就可以在个人页面 看到数据变化曲线了。当然你也可以自己在树莓派上自己做页面,做曲线图分析数据及其他功能。这个就要靠各位自己发挥想象了。嘿嘿~~

    关注一下,更多精彩,不容错过!

    👇👇👇

    image

    相关文章

      网友评论

        本文标题:用树莓派实现室内温度监控

        本文链接:https://www.haomeiwen.com/subject/meqxyqtx.html