# =================================================================
# 校园番茄实验角 · 三周项目
# 你的任务:通过删除/复制下面的「模块」,搭建出你的番茄园监测系统
#
# 操作规则:
# 1. 不要动「必备区」的代码
# 2. 用不到的「模块」可以整段删掉(从 # ==== 模块X 起 到 # ==== 模块X 止)
# 3. 需要重复的模块可以复制(比如温度过高+温度过低就需要两个判断模块)
# 4. 看不懂或者删错了?点左边文件栏的「完整代码备份.py」复制需要的段落
# =================================================================
# ======== 必备区(不要动)========
import machine
import onewire
import ds18x20
import time
from machine import Pin, ADC, PWM
# 温度传感器(DS18B20)接 GP22
ow = onewire.OneWire(Pin(22))
ds = ds18x20.DS18X20(ow)
roms = ds.scan()
# 光照传感器(电位器模拟)接 GP26
light_sensor = ADC(26)
# 湿度传感器(电位器模拟)接 GP27
humid_sensor = ADC(27)
# 输出元件
led_red = Pin(15, Pin.OUT) # 红灯:高温报警
led_yellow = Pin(14, Pin.OUT) # 黄灯:补光提示
led_blue = Pin(13, Pin.OUT) # 蓝灯:浇水提示
buzzer = PWM(Pin(12))
buzzer.duty_u16(0)
print('番茄实验角监测系统启动')
print('=' * 40)
while True:
# ======== 模块A:读取温度(建议保留)========
ds.convert_temp()
time.sleep_ms(750)
for rom in roms:
temp = ds.read_temp(rom)
print('当前温度: {:.1f}°C'.format(temp))
# ============================================
# ======== 模块B:读取光照(可选)========
light = light_sensor.read_u16() // 256
print('当前光照: {}'.format(light))
# ========================================
# ======== 模块C:读取湿度(可选)========
humid = humid_sensor.read_u16() // 256
print('当前湿度: {}'.format(humid))
# ========================================
# ======== 模块D:温度过高报警(可选)========
# 这个模块在温度超过你设定的阈值时:红灯亮 + 蜂鸣器响
if temp > 28: # ← 这里填你查到的「温度过高」阈值
led_red.on()
buzzer.freq(800)
buzzer.duty_u16(30000)
print('警报:温度过高!')
else:
led_red.off()
buzzer.duty_u16(0)
# ===========================================
# ======== 模块E:光照不足补光(可选)========
# 这个模块在光照低于你设定的阈值时:黄灯亮(模拟开启补光灯)
if light < 100: # ← 这里填你查到的「光照不足」阈值
led_yellow.on()
print('提示:光照不足,启动补光灯')
else:
led_yellow.off()
# ===========================================
# ======== 模块F:湿度不足浇水(可选)========
# 这个模块在湿度低于你设定的阈值时:蓝灯亮(模拟开启浇水)
if humid < 100: # ← 这里填你查到的「湿度不足」阈值
led_blue.on()
print('提示:湿度不足,启动浇水系统')
else:
led_blue.off()
# ===========================================
# ======== 必备区(不要动)========
print('-' * 40)
time.sleep(2)
# ================================