Измерение влажности почвы и индикация RGB светодиодом

Тема в разделе "Глядите, что я сделал", создана пользователем sanek1337, 10 янв 2014.

  1. sanek1337

    sanek1337 Нерд

    Доброго времени суток. Полазив но инету в поисках датчика измерения влажности почвы случайно наткнулся на реализацию на Arduino. И как-то сразу заинтересовала меня данная тема. Покурив кучу информации для данного проекта были закуплены:

    http://www.ebay.com/itm/Soil-Hygrom...Electrical_Test_Equipment&hash=item3f2c9d6292
    http://www.ebay.com/itm/Arduino-Nan...990?pt=LH_DefaultDomain_0&hash=item417594335e
    http://www.ebay.com/itm/New-RGB-3-C...Parts_Accessories&hash=item2a33e4288f&vxp=mtr

    Далее был написан вот такой код:

    Код (Text):

    int diodBlue=6;
    int diodGreen=4;
    int diodRed=2;
    int sensor=8; // питание датчика подключить к пину 8

    void setup()
    {
      Serial.begin(9600);
      pinMode(diodBlue,OUTPUT);
      pinMode(diodGreen,OUTPUT);
      pinMode(diodRed,OUTPUT);
      pinMode(sensor,OUTPUT);
      digitalWrite(sensor, HIGH);

    }
    void loop()
    {
      Serial.println(analogRead(0));

      digitalWrite(sensor, HIGH);
      delay(2000); // время за которое опрашивается датчик
      digitalWrite(sensor, LOW);  

      if (analogRead(0) <= 450)
      {
        Serial.print("Ochen Vlagno ");// Очень влажная почва
        digitalWrite(diodBlue, HIGH); //Включаем синий диод на 2 сек
        delay(2000);
        digitalWrite(diodBlue, LOW);
        digitalWrite(diodGreen, LOW);
        digitalWrite(diodRed, LOW);
      }

      else if( analogRead(0)>450 && analogRead(0)<700)
      {
        Serial.print("Vlagnaya pochva ");// Влажная почва
        digitalWrite(diodGreen,HIGH);//Включаем зелёный диод на 2 сек
        delay(2000);
        digitalWrite(diodGreen,LOW);
        digitalWrite(diodBlue, LOW);
        digitalWrite(diodRed, LOW);
      }

      else
      {
        Serial.print("Suhays pochva ");// Сухая почва
        digitalWrite(diodRed,HIGH);//Включаем красный диод на 2 сек
        delay(2000);
        digitalWrite(diodRed,LOW);
        digitalWrite(diodBlue, LOW);
        digitalWrite(diodGreen, LOW);
      }

    }
     
    Собрана вот такая схема:

    [​IMG]

    И вот готовое устройство в действии:

    [​IMG] [​IMG] [​IMG] [​IMG]

    А вот видео в работе:

     
    Последнее редактирование: 11 янв 2014
  2. sanek1337

    sanek1337 Нерд

    Решил что для одной задачи слишком жирно использовать целу Нано. Для этой цели был куплен Аттини 13. Подправлен код, который теперь выглядит вот так:
    Код (Text):
    int diodBlue=6;
    int diodGreen=4;
    int diodRed=2;


    void setup()
    {
      pinMode(diodBlue,OUTPUT);
      pinMode(diodGreen,OUTPUT);
      pinMode(diodRed,OUTPUT);

    }
    void loop()
    {


      if (analogRead(0) <= 450)
      {
        digitalWrite(diodBlue, HIGH); //Включаем синий диод на 2 сек
        delay(2000);
        digitalWrite(diodBlue, LOW);
        digitalWrite(diodGreen, LOW);
        digitalWrite(diodRed, LOW);
      }

      else if( analogRead(0)>450 && analogRead(0)<700)
      {
        digitalWrite(diodGreen,HIGH);//Включаем зелёный диод на 2 сек
        delay(2000);
        digitalWrite(diodGreen,LOW);
        digitalWrite(diodBlue, LOW);
        digitalWrite(diodRed, LOW);
      }

      else
      {
        digitalWrite(diodRed,HIGH);//Включаем красный диод на 2 сек
        delay(2000);
        digitalWrite(diodRed,LOW);
        digitalWrite(diodBlue, LOW);
        digitalWrite(diodGreen, LOW);
      }

    }
    Код в Ардуино ИДЕ компилируется, занимает 540 байт. Помогите с нумерацией портов пожалуйста.
     
  3. CryNET

    CryNET Гик

    Возможно это:
    [​IMG]

    PB0 - это нулевой порт.
    PB1 - это первый порт.
    и т.д

    Не ручаюсь - не играл таким МК.
     
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    Там всего один порт - PORTB. А PB0, PB1... - пины этого порта.

    Статья про добавление поддержки различных контроллеров (в т.ч. Attiny13) в Arduino IDE.
     
  5. Mactep8

    Mactep8 Нерд

    А еще не подскажете: стандартная для Ардуино работа с UART (Serial) на Attiny будет работать?
     
  6. Megakoteyka

    Megakoteyka Оракул Модератор

    В Attiny13 нету UART-а, так что не будет.
    А вот SoftwareSerial должен работать, он реализован через дерганье обычными GPIO-ногами.
    Но прошиваться все равно придется через ISP.
     
  7. CryNET

    CryNET Гик

    А в той теме написано, что ATtiny45 поддерживает Serial, а где у неё RX и TX? Не вижу в datasheet'e подписанных ног...
     
  8. Megakoteyka

    Megakoteyka Оракул Модератор

    Что за тема?
     
  9. Андрей01

    Андрей01 Нерд

    Про датчики влажности, меня всегда люди смешили которые не понимают их работу. Китайцы тоже хороши, но правильно надо их закапывать на нужную глубину и там мерять влажность, а не втыкать его с верху, питание на датчик подавать раз в час и считывать значение, а так пробой идёт где угодно, на глубине его может и не быть.
     
  10. parovoZZ

    parovoZZ Гуру

    Хорошо работают емкостные, а ещё лучше индуктивные. Контактные - выброшенные деньги.
     
    Daniil и Andrey12 нравится это.