树莓派自动浇水代码,树莓派云灌溉(三)

匿名 (未验证) 提交于 2019-12-02 23:53:01

这是在树莓派上运行的最终代码,实现的功能是自动浇水并把相关数据写入文件
文章来源于sogeisetsu的GitHub。 如果喜欢欢迎fork和star树莓派云灌溉系统设计
用python2运行

# coding=UTF-8 #!/usr/bin/python  import RPi.GPIO as GPIO import time for i in range (10): #这里设置的是循环十次,在实际应用中可以改为 while True:     channel = 16  # 引脚号16,这是设置dht11用的     data = []  # 温湿度值     j = 0     # 计数器     a=20     GPIO.setmode(GPIO.BCM)  # 以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 "开始工作."    # 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         c="温度"+str(temperature)+"."+"/"+"湿度"+str(humidity)         GPIO.setup(21, GPIO.IN)         if GPIO.input(21) == GPIO.LOW:#设置土壤湿度传感器             print "土壤检测结果:潮湿"             c=c+"\n"+"土壤潮湿"+"\n"+"推荐不要浇水,具体以机器操作为准"         else:             print "土壤检测结果:干燥"             c=c+"\n"+"土壤干燥"+"\n"+"推荐浇水,具体以机器操作为准"         f=open("123.txt","w+") #将数据写入文件         f.write(c)         f.close         if temperature >= 20:             print"jiaoshui"             GPIO.setup(25, GPIO.OUT)#控制继电器             GPIO.output(25, GPIO.LOW)#这句意义不大,也可以是high,因为电阻不合适无论高低电平都是通路,所以只能采用setup后再cleanup。             print("3")#我这里设置的是浇水时间3秒             time.sleep(1.0)             print("2")             time.sleep(1.0)             print("1")             time.sleep(1.0)             GPIO.cleanup()             GPIO.setmode(GPIO.BCM)  # 以BCM编码格式              time.sleep(1)  # 时延一秒              GPIO.setup(channel, GPIO.OUT)              GPIO.output(channel, GPIO.LOW)     else:  # 错误输出错误信息,和校验数据         print "出现错误,输出校验结果"         print "temperature : ", temperature, ", humidity : ", humidity, " check : ", check, " tmp : ", tmp     time.sleep(2) #每隔2秒检测一次      GPIO.cleanup()  # 重置针脚

来源: https://www.cnblogs.com/sogeisetsu/p/11312865.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!