原创 lin辰傍边的风 最后发布于2019-06-04 09:54:17 阅读数 1074

    收藏

    发布于2019-06-04 09:54:17

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    因项目功能需要,这次使用的是树莓派3b+,首次使用树莓派,记录一下

    器材列表:
    1、树莓派3b+
    2、ds18b20温度传感器
    3、可上网的路由器

    使用带上拉电阻的DS18B20,DQ端口连接树莓派的GPIO25,VCC接3.3V,GND接GND

    硬件搭建完成
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图1

    开机树莓派,让树莓派与电脑在同一局域网,使用putty登陆树莓派
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图2
    输入命令:sudo raspi-config
    进入高亮选项卡 5 Interfacing Options 里面
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图3
    进入高亮选项卡 P7 1-Wire 里面
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图4
    选择 “是”
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图5
    这样就打开单总线,然后退出即可

    进入/boot/config.txt文件,在最后加上一句话,保存并退出
    输入命令:sudo vim /boot/config.txt
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图6
    执行命令重启树莓派:
    sudo reboot

    输入命令进入以下目录:
    cd /sys/bus/w1/devices/
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图7
    最后有一个w1_slave文件
    使用命令:cat w1_slave
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图8
    t=29062/1000就是当前的温度值

    好了,开始写入程序
    使用记事本新建一个temp.py文件,拷贝以下程序到该文件中,只需更改三个地方:
    使用你的APIKEY,设备id,数据流名称

    1. #coding:utf-8
    2. import subprocess
    3. import os
    4. import glob
    5. import time
    6. import urllib2
    7. import json
    8. import time
    9. import datetime
    10. APIKEY = 'xxxxxxxx' #你的APIKEY
    11. os.system('modprobe w1-gpio')
    12. os.system('modprobe w1-therm')
    13. base_dir = '/sys/bus/w1/devices/'
    14. device_folder = glob.glob(base_dir + '28*')[0]
    15. device_file = device_folder + '/w1_slave'
    16. def read_temp_raw():
    17. catdata = subprocess.Popen(['cat',device_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    18. out,err = catdata.communicate()
    19. out_decode = out.decode('utf-8')
    20. lines = out_decode.split('\n')
    21. return lines
    22. def read_temp():
    23. lines = read_temp_raw()
    24. while lines[0].strip()[-3:] != 'YES':
    25. time.sleep(0.2)
    26. lines = read_temp_raw()
    27. equals_pos = lines[1].find('t=')
    28. if equals_pos != -1:
    29. temp_string = lines[1][equals_pos+2:]
    30. temp_c = float(temp_string) / 1000.0
    31. return temp_c
    32. def http_put():
    33. temperature= read_temp()
    34. url='http://api.heclouds.com/devices/xxxx/datapoints' #你的设备id
    35. values={'datastreams':[{"id":"xxxx","datapoints":[{"value":temperature}]}]}#你的数据流名称
    36. jdata = json.dumps(values)
    37. print jdata
    38. request = urllib2.Request(url, jdata)
    39. request.add_header('api-key', APIKEY)
    40. request.get_method = lambda:'POST'
    41. request = urllib2.urlopen(request)
    42. return request.read()
    43. while True:
    44. print(read_temp())
    45. time.sleep(1)
    46. resp = http_put()
    47. print "OneNET result:\n %s" %resp
    48. time.sleep(2)

    然后使用windows自带的远程桌面:
    右键开始运行,输入:mstsc
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图9
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图10
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图11
    进入桌面
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图12

    将windows上的temp.py直接复制粘贴至树莓派桌面
    输入命令: cd /home/pi/Desktop/
    输入运行程序命令:sudo python temp.py
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图13

    到云平台查看温度数据:
    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图14

    好了,上传完成

    树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图15 树莓派上传温度数据至 Onenet云平台(HTTP)_网络_lin辰傍风的博客-CSDN博客 - 图16

    发布了5 篇原创文章 · 获赞 0 · 访问量 1213