使用树莓派远程控制灯继电器开关,dht11温湿度网页显示,树莓派物联网
Posted 高颜值的殺生丸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用树莓派远程控制灯继电器开关,dht11温湿度网页显示,树莓派物联网相关的知识,希望对你有一定的参考价值。
前段时间使用esp8266搞了个智能家居,通过网页控制,但是没有办法实现远程控制,只能局域网控制,因为我没有平台,使用机制云等平台还需要开发app
使用chatgpt生成的main.py程序
from flask import Flask, render_template, request import Adafruit_DHT import RPi.GPIO as GPIO app = Flask(__name__) # 设置LED引脚和DHT11传感器引脚 LED_PIN = 18 DHT_PIN = 4 # 初始化GPIO引脚 GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN, GPIO.OUT) GPIO.output(LED_PIN, GPIO.HIGH) # 获取DHT11温湿度传感器数据 def get_dht_data(): humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, DHT_PIN) return \'temperature\': temperature, \'humidity\': humidity # 网页主页 @app.route(\'/\') def index(): led_status = GPIO.input(LED_PIN) dht_data = get_dht_data() return render_template(\'index.html\', led_status=led_status, dht_data=dht_data) # 处理LED控制请求 @app.route(\'/led\', methods=[\'POST\']) def control_led(): action = request.form[\'action\'] if action == \'on\': GPIO.output(LED_PIN, GPIO.LOW) elif action == \'off\': GPIO.output(LED_PIN, GPIO.HIGH) # return \'success\' led_status = GPIO.input(LED_PIN) dht_data = get_dht_data() return render_template(\'index.html\', led_status=led_status, dht_data=dht_data) if __name__ == \'__main__\': app.run(host=\'0.0.0.0\', port=8080)
index.html程序,注意flask要求静态模版放在templates下面
<!DOCTYPE html> <html> <head> <title>Raspberry Pi LED Control</title> <style> body text-align: center; </style> </head> <body> <h1>Raspberry Pi LED Control</h1> <h2>LED Status: % if led_status %On% else %Off% endif %</h2> <form method="POST" action="/led"> <button type="submit" name="action" value="on">Turn On</button> <button type="submit" name="action" value="off">Turn Off</button> </form> <h2>DHT11 Temperature: dht_data.temperature °C</h2> <h2>DHT11 Humidity: dht_data.humidity %</h2> </body> </html>
效果:
如果需要远程控制,可以注册一个小米球,很好用
多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
树莓派连接DHT11温湿度传感器(python)
-
- 介绍
- 接线
- VCC接5V或者3.3V
- DATA接GPIO(我接的是BCM的16号针脚,物理针脚是36)
- GND接GND
- 代码
-
- #!/usr/bin/python
- import RPi.GPIO as GPIO
- import time
- channel = 16 #引脚号16
- data = [] #温湿度值
- j = 0 #计数器
- 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 "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 : ", tmp
- GPIO.cleanup() #重置针脚
- 测试
执行:sudo chmod 777 程序名.py
python 程序名.py
以上是关于使用树莓派远程控制灯继电器开关,dht11温湿度网页显示,树莓派物联网的主要内容,如果未能解决你的问题,请参考以下文章