温室小气候控制系统

旅程的开始


一个晴天,当我到达大学时,我得知这个学期我有关于电路的学期论文。老师提出只做一个解释性的注释“如何实施该项目”,或者学习工程学的阴暗面并创建一个真实的设备。而且,由于我已经四年级,并且回想起只有第一年就将工程师技能付诸实践(我将书架拧在墙上),所以我决定“使用笔”。经过深思熟虑,我选择了主题“温室小气候控制系统”。该选择最有可能受到我对过程自动化的热爱或我本人从事温室黄瓜种植这一事实的影响。但是我们不会拉很长一段时间-我们开始。

材料搜索


我从朋友和老师那里听说了Arduino平台。在阅读了有关Arduinka的一些知识并看到一些已完成的项目之后,创建自己的东西的愿望变得更大。为了实现该项目,我决定使用Arduino Nano v3。最初的价格是20美元多一点,我给了10份。当然,在Aliexpress上订购会便宜一些,但是我既没有时间也不想等待一个月-我想立即开始。

我决定使用微控制器板,现在该决定我需要哪些传感器了。经过一番思考,我第一次决定不做大规模的事情(就像我要说“简洁是人才的姐妹”),而是将自己局限于温室微气候的三个主要组成部分:温度,光照和土壤湿度。让我们按顺序查看所有内容:

  1. 温度传感器
    , DHT11. ( « — »).

    图片

    :

    1. 5V

    :

    • — 0 — 50°C ± 2°C
    • — 20 — 95% ± 5%

    :

    图片

    //  
    #include <dht.h>
     
    //  -
    DHT sensor = DHT();
     
    void setup()
    {
        Serial.begin(9600);
     
        //  attach     
        // .       
        sensor.attach(A1);
        //
        //          
        delay(1000);
    }
     
    void loop()
    {
        //  update     
        sensor.update();
     
        switch (sensor.getLastError())
        {
            case DHT_ERROR_OK:
                char msg[128];
                //      
                // 
                sprintf(msg, "Temperature = %dC, Humidity = %d%%", 
                        sensor.getTemperatureInt(), sensor.getHumidityInt());
                Serial.println(msg);
                break;
            case DHT_ERROR_START_FAILED_1:
                Serial.println("Error: start failed (stage 1)");
                break;
            case DHT_ERROR_START_FAILED_2:
                Serial.println("Error: start failed (stage 2)");
                break;
            case DHT_ERROR_READ_TIMEOUT:
                Serial.println("Error: read timeout");
                break;
            case DHT_ERROR_CHECKSUM_FAILURE:
                Serial.println("Error: checksum error");
                break;
        }
     
        delay(2000);
    }
    


  2. 图片

    , LM393 . , .

    int sensorPin = A0;            //     
    unsigned int sensorValue = 0;  //   
     
    void setup()
    {
      pinMode(13, OUTPUT);
      Serial.begin(9600);        //     ( )
    }
     
    void loop()
    {
      sensorValue = analogRead(sensorPin);  //    
      if(sensorValue<500) digitalWrite(13, HIGH);   // 
      else digitalWrite(13, LOW);   // 
       
      //     
      //Serial.print(sensorValue, DEC);     //     (0-1024)
      //Serial.println("");                 //    
      //delay(500);  
    }
    


  3. 图片

    (0 1), . . :

     Value = analogRead(A2);  //      
    


我决定使用传感器。现在该考虑一个漂亮的案例了。在互联网浪潮中翻腾后,我找到了这个英俊的男人,然后决定:我的库萨克人将加入其中。

图片

但是因为 它有一个用于显示的孔,我别无选择,只能使用该显示“添加”到课程显示中。我决定使用易于使用的LCD 1602:

图片

了解其工作原理后,我看到了一篇非常好的文章,其中详细介绍了所有内容。我根据文章中的示例连接了所有引脚。该代码也附后。

作为电源,我使用9V柄头。材料已经结束。开始开发。

发展历程


知道每个元素是如何单独工作的,将所有内容组装成一个整体并不难,我做到了。经过数小时的首次焊接,结果是这样的:

图片

图片

传感器与主体分开制造:

图片

图片



任何批评我都会很高兴。

Source: https://habr.com/ru/post/zh-CN388837/


All Articles