树莓派4搭建Web实时温湿度监测系统
本项目基于树莓派4运行轻量级Bottle Web服务器,读取Adafruit DHT11温湿度传感器数据并实时返回。板载RGB LED按请求类型点亮不同颜色,直观反馈服务运行状态。
工作流程
- 访问
https://pi-地址:6789/触发根路由,红灯亮起表示加载中。 - 页面加载后可点击三个按钮:
- 蓝 —— 显示当前湿度,LED变蓝。
- 绿 —— 显示当前温度,LED变绿。
- 红(停止) —— 清空显示,LED复位红,停止持续更新。
- 每按钮每秒发送一次GET请求,直到按停止或关闭浏览器。
Ctrl+C停止服务器,熄灭所有LED并释放GPIO。
硬件原理图
服务端代码
from bottle import route, run, template, request
import RPi.GPIO as GPIO
import Adafruit_DHT
# 配置GPIO模式
GPIO.setmode(GPIO.BCM)
# 传感器配置——DHT11接GPIO 25
sensor_type = Adafruit_DHT.DHT11
sensor_pin = 25
GPIO.setup(sensor_pin, GPIO.IN)
# RGB LED引脚
GPIO.setup(14, GPIO.OUT) # 红
GPIO.setup(15, GPIO.OUT) # 绿
GPIO.setup(18, GPIO.OUT) # 蓝
# 熄灭所有LED辅助函数
def set_leds_off():
GPIO.output(14, GPIO.LOW)
GPIO.output(15, GPIO.LOW)
GPIO.output(18, GPIO.LOW)
# 路由
@route('/')
def index():
set_leds_off()
GPIO.output(14, GPIO.HIGH)
return template('index.html')
@route('/humidity')
def humidity():
set_leds_off()
GPIO.output(18, GPIO.HIGH)
humidity, temperature = Adafruit_DHT.read(sensor_type, sensor_pin)
return {'humidity': humidity}
@route('/temperature')
def temperature_route():
set_leds_off()
GPIO.output(15, GPIO.HIGH)
humidity, temperature = Adafruit_DHT.read(sensor_type, sensor_pin)
return {'temperature': temperature}
@route('/stop')
def stop():
set_leds_off()
GPIO.output(14, GPIO.HIGH)
return {'stop': 'No further updates.'}
# 启动Bottle服务器
run(host='0.0.0.0', port='6789')
# 退出清理
set_leds_off()
GPIO.cleanup()
来源:Get Humidity/Temperature from Web
制造工艺
- 温度计:从伽利略温度计到现代数字传感器的演进
- 树莓派温湿度网络监测站DIY全指南
- 树莓派家庭温湿度监测系统:Web仪表盘实时远程追踪
- 树莓派配合 EzTemp 实现无缝温湿度监测
- IoT 入门教程:树莓派流式传输温度数据
- 树莓派 GPIO 直连 DS1820 单总线温度传感器指南
- 树莓派构建网络化实验室气象站:温湿度气压实时监测
- 将树莓派 4 打造成 Web 服务器并搭建个人网站
- 从数据到图表:树莓派Flask-SQLite物联网仪表盘构建
- 最大化线索生成投资回报率
- 新型可穿戴技术隐身热传感器,数分钟适应温变
- 资源受限单片机的高效Web服务器方案:WebSocket+TLS的Minnow Server实践