树莓派+DHT11温湿度传感器+yeelink物联网云
一、配置准备
1.DHT11简介
DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。
DHT11有四个引脚,分别是VCC,DATA,NC,GND
2.电路连接
本博文中python程序使用的是BCM编号方式,17号即pin11接DHT11的DATA,VCC接3.3V,NC悬空,GND接0V,可通过下图找到对应引脚,进行连线。
二、用python读取温湿度数据
关于DHT11具体的时序,以及如何操作,在我的博客《 51单片机DHT11温湿度传感器》中有详细分析,有兴趣可以去了解一下,以便你可以看懂下面的python程序。
#!/usr/bin/pythonimport RPi.GPIO as GPIO
import time#BCM编号方式的17对应树莓派的pin11
channel = 17
data = []
j = 0#I/O口使用BCM编号方式
GPIO.setmode(GPIO.BCM)time.sleep(1)#设置数据线为输出
GPIO.setup(channel, GPIO.OUT)GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)
GPIO.output(channel, GPIO.HIGH)#设置数据线为输入
GPIO.setup(channel, GPIO.IN)while GPIO.input(channel) == GPIO.LOW:continuewhile GPIO.input(channel) == GPIO.HIGH:continuewhile j < 40:k = 0while GPIO.input(channel) == GPIO.LOW:continuewhile GPIO.input(channel) == GPIO.HIGH:k += 1if k > 100:breakif k < 8:data.append(0)else:data.append(1)j += 1print "sensor is working."
print data#读取数值
humidity_bit = data[0:8]
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0#转换数值
for i in range(8):humidity += humidity_bit[i] * 2 ** (7 - i)humidity_point += humidity_point_bit[i] * 2 ** (7 - i)temperature += temperature_bit[i] * 2 ** (7 - i)temperature_point += temperature_point_bit[i] * 2 ** (7 - i)check += check_bit[i] * 2 ** (7 - i)tmp = humidity + humidity_point + temperature + temperature_point#数据校验
if check == tmp:print "temperature : ", temperature, ", humidity : " , humidity
else:print "wrong"print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmpGPIO.cleanup()
在python文件的路径下输入命令:
sudo python ./dht11.py
即可获得数据,效果如图:
可以看到,当校验不正确时会打印出“wrong”,表示数据错误,在读取一次得到正常的数据。
三、上传数据到yeelink
1.修改python代码
在上面的代码后添加如下代码,即将温度和湿度数据保存到txt文件里:
#数据转换成JSON格式
mytemp = '{"value":%f}' %temperature
myhumi = '{"value":%f}' %humidity#打开文件
tmp_output = open('/home/pi/mytest/DHT11/tmp_data.txt', 'w')
hud_output = open('/home/pi/mytest/DHT11/hud_data.txt', 'w')#写数据到文本文件中
tmp_output.write(mytemp)
hud_output.write(myhumi)#关闭文件
tmp_output.close
hud_output.close
2.新增yeelink.sh脚本
yeelink是一个开源的硬件数据平台,我喜欢把它定义为一个物联网云平台,因为它给我们提供了API接口,我们可以把数据发送到云平台保存起来,也可以随时查看,真的很棒。具体的操作可以查看博主的博客:《 树莓派+USB摄像头+yeelink实现云监控》。
sudo python /home/pi/mytest/DHT11/dht11.py
curl --request POST --data-binary @"/home/pi/mytest/DHT11/tmp_data.txt" --header "U-ApiKey:XXXXXXXXXXXXXXXX" http://api.yeelink.net/v1.0/device/设备号/sensor/传感器号/datapoints
sleep 10s
curl --request POST --data-binary @"/home/pi/mytest/DHT11/hud_data.txt" --header "U-ApiKey:XXXXXXXXXXXXXXXX" http://api.yeelink.net/v1.0/device/设备号/sensor/传感器号/datapoints
“/home/pi/mytest/DHT11/tmp_data.txt”是需要上传到yeelink上的文件的路径,将XXXXXXXXXXXXXXXX替换为自已账户的API Key,后面的URL也需要替换为自己申请的传感器URL。
注意:因为DHT11可以获得温度和湿度两种值,所以我在yeelink添加了两个传感器,便于观察,在这里有两次上传数据,分别是把储存温度值得txt文本和储存湿度值得txt文本通过HTTP协议上传到云端。
3.为脚本增加可执行权限
sudo chmod +x yeelink.sh
4.将脚本加入cronjob定时任务
sudo crontab -e
5.让脚本自动运行
加入下面一行, 让脚本每1分钟运行一次,即每1分钟上传一次数据,然后保存退出
*/1 * * * * /home/pi/mytest/yeelink.sh
注:我给自己的实验新建了几个文件夹,路径如下:/home/pi/mytest/DHT11/,很多操作都是在这个路径下完成的。
实验效果:
温度:
湿度:
树莓派+DHT11温湿度传感器+yeelink物联网云相关推荐
- 个人物联网(目前用到了树莓派、PMS7003攀藤g7传感器、DHT11温湿度传感器)
上周空气不好,突发奇想要搞个个人物联网系统,检测生存环境.手头有树莓派.NodeMCU esp8266.DHT11温湿度传感器.pm2.5检测需要专门的传感器,本以为也就几块钱,结果发现淘宝还挺贵.在 ...
- 树莓派+DS18B20温度传感器+yeelink物联网云
本博文参考了网络上多篇树莓派操作DS18B20的博文,经过博主亲自实践,列出了详细的步骤,通过树莓派的单总线驱动来驱动DS18B20获取温度数据,并通过python读取温度值,上传到yeelink物联 ...
- python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)...
最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...
- python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器python代码实现及常见问题(全面简单易懂)...
最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...
- Esp8266 进阶之路19 【外设篇①】esp8266驱动 ds18b20、dht11 温湿度传感器,采集温湿度传感器到服务器。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
- 基于STM32的DHT11温湿度传感器设计
文章目录 前言 一.DHT11温湿度传感器是什么? 二.DHT11驱动程序详解 1.相关宏定义 2.输入输出GPIO配置 2.GPIO初始化设计 3.检测DHT11是否正常工作 4.读取DHT11数据 ...
- DHT11温湿度传感器(详细)
DHT11温湿度传感器--使用LCD1602显示 先上效果图,以及简单的和室内温度对比图,相交而言测量的值还是非常准的. 我的这个做的很简陋,大家可以理解原理后自行升级. 注意学习单片机最重要的就是学 ...
- ESP8266+DHT11温湿度传感器+小爱同学语音智能LED灯(状态可视化)
ESP8266+DHT11温湿度传感器+LED灯(状态可视化) 接线(继电器与DHT11模块的GND与VCC分别对应接好ESP8266即可,下表只列出信号线接法): 模块 ESP8266 继电器IN ...
- ESP32 开发笔记(三)源码示例 8_DHT11_RMT 使用RMT实现读取DHT11温湿度传感器
开发板购买链接 https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb2Ij1As&ft=t&id=62636 ...
最新文章
- resource id 3 php,PHP Warning: stat(): stat failed for Resource id
- KVM虚拟化环境搭建
- 【原】数字图像处理学习之三彩色图像处理
- java 图片动画_java在窗口中添加图片做动画,怎么一闪一闪的?
- STM32分类及命名方法
- 累积计税法:算一算您一年缴了多少个税
- python输入水果求个数问题_水果爱好者:用Python解决一个简单的分类问题
- library的英语怎么读音_如何让你的英语口音无限接近母语者?英语语音语调的独家训练方法...
- 【PostgreSQL-9.6.3】LOG: unrecognized configuration parameter dynamic_shared_memory_type
- APT攻防整理-常用CVE
- nyoj936蚂蚁的难题(X)
- 地理数据处理之矢量数据
- 微信小程序云开发教程-手把手:小程序数据库设计
- CF command line learning
- Photoshop渐变工具+羽化使用
- hive 求两个月之间的时间间隔(月留存)
- 年薪50万的大数据分析师养成记
- linux 临界区保护方法,操作系统-信号量临界区保护,
- python 探究is_dir函数及其使用案例(读取人脸图片)附整体代码
- 漫画英语作文怎么写 计算机,漫画英文作文怎么写