一、配置准备

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物联网云相关推荐

  1. 个人物联网(目前用到了树莓派、PMS7003攀藤g7传感器、DHT11温湿度传感器)

    上周空气不好,突发奇想要搞个个人物联网系统,检测生存环境.手头有树莓派.NodeMCU esp8266.DHT11温湿度传感器.pm2.5检测需要专门的传感器,本以为也就几块钱,结果发现淘宝还挺贵.在 ...

  2. 树莓派+DS18B20温度传感器+yeelink物联网云

    本博文参考了网络上多篇树莓派操作DS18B20的博文,经过博主亲自实践,列出了详细的步骤,通过树莓派的单总线驱动来驱动DS18B20获取温度数据,并通过python读取温度值,上传到yeelink物联 ...

  3. python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)...

    最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...

  4. python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器python代码实现及常见问题(全面简单易懂)...

    最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...

  5. Esp8266 进阶之路19 【外设篇①】esp8266驱动 ds18b20、dht11 温湿度传感器,采集温湿度传感器到服务器。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  6. 基于STM32的DHT11温湿度传感器设计

    文章目录 前言 一.DHT11温湿度传感器是什么? 二.DHT11驱动程序详解 1.相关宏定义 2.输入输出GPIO配置 2.GPIO初始化设计 3.检测DHT11是否正常工作 4.读取DHT11数据 ...

  7. DHT11温湿度传感器(详细)

    DHT11温湿度传感器--使用LCD1602显示 先上效果图,以及简单的和室内温度对比图,相交而言测量的值还是非常准的. 我的这个做的很简陋,大家可以理解原理后自行升级. 注意学习单片机最重要的就是学 ...

  8. ESP8266+DHT11温湿度传感器+小爱同学语音智能LED灯(状态可视化)

    ESP8266+DHT11温湿度传感器+LED灯(状态可视化) 接线(继电器与DHT11模块的GND与VCC分别对应接好ESP8266即可,下表只列出信号线接法): 模块 ESP8266 继电器IN ...

  9. ESP32 开发笔记(三)源码示例 8_DHT11_RMT 使用RMT实现读取DHT11温湿度传感器

    开发板购买链接 https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb2Ij1As&ft=t&id=62636 ...

最新文章

  1. resource id 3 php,PHP Warning: stat(): stat failed for Resource id
  2. KVM虚拟化环境搭建
  3. 【原】数字图像处理学习之三彩色图像处理
  4. java 图片动画_java在窗口中添加图片做动画,怎么一闪一闪的?
  5. STM32分类及命名方法
  6. 累积计税法:算一算您一年缴了多少个税
  7. python输入水果求个数问题_水果爱好者:用Python解决一个简单的分类问题
  8. library的英语怎么读音_如何让你的英语口音无限接近母语者?英语语音语调的独家训练方法...
  9. 【PostgreSQL-9.6.3】LOG: unrecognized configuration parameter dynamic_shared_memory_type
  10. APT攻防整理-常用CVE
  11. nyoj936蚂蚁的难题(X)
  12. 地理数据处理之矢量数据
  13. 微信小程序云开发教程-手把手:小程序数据库设计
  14. CF command line learning
  15. Photoshop渐变工具+羽化使用
  16. hive 求两个月之间的时间间隔(月留存)
  17. 年薪50万的大数据分析师养成记
  18. linux 临界区保护方法,操作系统-信号量临界区保护,
  19. python 探究is_dir函数及其使用案例(读取人脸图片)附整体代码
  20. 漫画英语作文怎么写 计算机,漫画英文作文怎么写

热门文章

  1. 【专利申请】(01)账号申请
  2. 启示录:日本涉谷未来之光TOD成功建设经验
  3. 如何去除有道云笔记广告(windows)
  4. While和for的区别
  5. 好物神单 APP版 - 京东秒杀助手 秒杀精灵 秒杀神器
  6. 高速公路隧道视频分析解决方案
  7. CSDN个人信息声明
  8. 北京尚学堂JAVA开发学习 MYSQL笔记
  9. XNA游戏开发之字符篇
  10. Mysql数据库保存时间timestamp,相差13小时