A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

+ 连 1

out 连 7

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

附张图吧:

代码如下,感谢@绝世好阿狸



  • import RPi.GPIO as GPIO



  • import 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:



  •   continue



  • while 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 = 0



  • humidity_point = 0



  • temperature = 0



  • temperature_point = 0



  • check = 0







  • for i in range(8):



  •   humidity += humidity_bit * 2 ** (7-i)



  •   humidity_point += humidity_point_bit * 2 ** (7-i)



  •   temperature += temperature_bit * 2 ** (7-i)



  •   temperature_point += temperature_point_bit * 2 ** (7-i)



  •   check += check_bit * 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.

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

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

我们使用的物联数据平台是乐为物联平台。https://www.lewei50.com/

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

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



  • #/home/pi/Desktop/robotFeatures/temperatureMonitoring/datafile.txt











  • if 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会把数据传上去一次。

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

搞定!


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马