博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树莓派上安装DHT11实现温度湿度远程监测
阅读量:2491 次
发布时间:2019-05-11

本文共 2498 字,大约阅读时间需要 8 分钟。

DHT11传感器很小,当时看着觉得不错,又能看温度又能看湿度,就买了一个。感觉。。。一言难尽。

先说步骤吧,把DHT11连在树莓派上:

+ 连 1

out 连 7

-  连 GND ,我选的9.这样线好看些。

附张图吧:

fff

代码如下,感谢@

import RPi.GPIO as GPIOimport time channel =4 data = []j = 0 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:  continue while j < 40:  k = 0  while GPIO.input(channel) == GPIO.LOW:    continue  while GPIO.input(channel) == GPIO.HIGH:    k += 1    if k > 100:      break  if k < 8:    data.append(0)  else:    data.append(1)   j += 1 print "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 = 0humidity_point = 0temperature = 0temperature_point = 0check = 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, "*C, humidity :", humidity, "%"else:  print "wrong"  print "temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp GPIO.cleanup()

注意第四行channel = 4.是因为我连着第7个针脚。它的编号是4.

然后我们运行这个程序,就可以监测到温度了:

然后我们希望用物联数据平台来承载我们的数据。这样可以实现数据的远程监控。并且可以有个不错的界面,我是真的不想自己写界面。。。

我们使用的物联数据平台是乐为物联平台。

首先申请一个设备,放我们的数据。具体的教程我觉得他们平台写的不错,不会的可以自己看看。

我们修改之前的代码,将成功读出的温湿度用JSON格式保存到一个文本文件中;

#/home/pi/Desktop/robotFeatures/temperatureMonitoring/datafile.txtif check == tmp:  res = '[ { "Name":"temperature","Value":%f},{"Name":"humidity","Value":%f}]' %(temperature,humidity)  output = open('/home/pi/Desktop/robotFeatures/temperatureMonitoring/datafile.txt', 'w')  output.write(res)  output.close

然后我们写一个leweilink.sh脚本,位于/home/pi/Desktop/robotFeatures/temperatureMonitoring目录下:

 

最后,添加计划任务:

#为脚本增加可执行权限sudo chmod +x leweilink.sh#将脚本加入cronjob(计划任务)sudo crontab -e然后输入:## For excuting leweilink.sh every 30 seconds##on 2018-8-21*/1 * * * *  /home/pi/Desktop/robotFeatures/temperatureMonitoring/leweilink.sh*/1 * * * * sleep 30 && /home/pi/Desktop/robotFeatures/temperatureMonitoring/leweilink.sh#-----------------------------------------------------------------

这样每30s会把数据传上去一次。

因为我是免费用户,所以时间设定的比较长。

搞定!

 

你可能感兴趣的文章
linux source命令
查看>>
openstack报错解决三
查看>>
乙未年年终总结
查看>>
子网掩码
查看>>
第一天上班没精神
查看>>
启动eclipse报错:Failed to load the JNI shared library
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux下源的相关笔记(suse)
查看>>
linux系统分区文件系统划分札记
查看>>
Linux(SUSE 12)安装Tomcat
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>
Overlay之VXLAN架构
查看>>
Eclipse : An error occurred while filtering resources(Maven错误提示)
查看>>
在eclipse上用tomcat部署项目404解决方案
查看>>
web.xml 配置中classpath: 与classpath*:的区别
查看>>
suse如何修改ssh端口为2222?
查看>>
详细理解“>/dev/null 2>&1”
查看>>
suse如何创建定时任务?
查看>>