V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
turnipsmart
V2EX  ›  问与答

Micropython TPYBoard v102 自动浇花实验

  •  
  •   turnipsmart · 2018-03-31 10:46:24 +08:00 · 1371 次点击
    这是一个创建于 2434 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.系统功能

    监测土壤湿度、环境温度、光照强度

    根据当前环境自动浇水,寒冷天气自动加热土壤

    2.所需元器件

    TPYBoard 板子 1 块

    光敏模块 1 块

    DS18B20 模块 1 块

    土壤湿度检测模块 1 块

    杜邦线若干

    继电器 2 个

    1. 接线方式

    光敏模块 TPYBoard v102

    VCC 3.3V

    GND GND

    A0 Y12

    土壤湿度检测模块 TPYBoard v102

    VCC 3.3V

    GND GND

    A0 Y11

    单独的两个引脚接到探测板上

    DS18B20 TPYBoard v102

    VCC 3.3V

    GND GND

    DO Y10

    继电器模块 1 (控制水阀加湿) TPYBoard v102

    VCC VIN

    GND GND

    IN Y9

    COM VIN

    NO 连接到电水阀

    继电器模块 2 (控制电热线加热) TPYBoard v102

    VCCVIN

    GND GND

    IN Y8

    COM 连接到 220V 家庭供电火线

    NO 连接到加热线其中一端

    加热线另一端连接到家庭供电零线

    接线完毕之后将 main.pyboot.pyds18x20.pyonewire.py 导入 TPYBoard v102 盘符即可运行。 https://github.com/TPYBoard/developmentBoard/tree/master/TPYBoard-v10x-master/35.%E8%87%AA%E5%8A%A8%E6%B5%87%E8%8A%B1%E7%B3%BB%E7%BB%9F

    5.源代码

    from pyb import Pin, ADC

    from ds18x20 import DS18X20

    gl = ADC(Pin('Y12')) #300 亮-1700 暗

    sd = ADC(Pin('Y11')) #1800 干-800 湿

    wd = DS18X20(Pin('Y10'))

    ks = Pin('Y9', Pin.OUT_PP)

    jr = Pin('Y8', Pin.OUT_PP)

    while True:

       print('\t 光照强度:',gl.read(),'\t 土壤湿度:',sd.read(),'\t 当前温度:',wd.read_temp())
     
      
       pyb.delay(200)
       
       if gl.read()<=250 :        #阳光充足
       
              if sd.read()>800 :  #多浇水
              
                     ks.value(1)
                     
              else :
              
                     ks.value(0)
                     
       elif  gl.read()>=1300 :  #阳光不足
       
              if sd.read()>1200 : #少浇水
              
                     ks.value(1)
                     
              else :
              
                     ks.value(0)
                     
       else :                                  #阳光一般
       
              if sd.read()>1000 : #正常浇水
              
                     ks.value(1)
                     
              else :
              
                     ks.value(0)
                     
       if wd.read_temp()<18 : #温度过低
       
              jr.value(1)
              
      else :
      
           jr.value(0)
    
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1316 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.