1. В сообществе нашего форума Вконтакте создан раздел по продаже электронных компонентов.
    Каждый может продать в нем свои залежавшиеся детали. Подробности здесь.

Инкубатор под управлением ардуино

Тема в разделе "Arduino", создана пользователем Ралиф, 22 фев 2015.

  1. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Вообщем пришла мысль собрать инкубатор на ардуино, вроде все просто ничего сложного, прикупил запчастей ардуино уно, дисплей 16 на 2 с i2c , датчик температуры DS18B20, датчик влажности DHT22, модуль реле на 2 реле, часы DS1307. Корпус собрал прицепил все датчики, нагреватели, вентиляторы, механизм переворота с концевиками. Сел писать скетч изначально думал что ничего сложного нету надо писать инклюде то се и так далее, как коснулось дела так оказалось ничего простого нет. Смог написать скетч чтоб на дисплее картинка появилась и добился показания температуры на нем, дальше не получается забить в скетч датчик влажности не компилируется. Дальше даже незнаю как что писать, может есть такая программа для написания скетча чтоб в ней выбрать галочкой нужные датчики и она вписала их всех в скетч? Вообщем i need help.
     
  2. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Нужен скетч, так трудно, что-то советовать, но думаю, что проблема в том, что используете инклуд-файлы dht.h, а в папку libraries самой Arduino IDE библиотеку для работы с DHT не добавили.
  3. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    да использую такие инклуд файлы dht.h в папку libraries самой проги библиотеку для работы с DHT добавлял несколько раз не помагает.
  4. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Нужен скетч
  5. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Да понятно что нужен скетч только где его брать? Я не могу написать скетч, меня еще смущает то что в самой программе есть образцы например выбираю образцы dht так они не хотят компилироватся выдает кучу ошибок .
  6. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Скетч пока такой надо добавить датчик влажности dht 22 после добавить часы , и далее добавить остальное

    Код:
    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    #include <OneWire.h>//DS18B20 temperature sensor support
    #include <DallasTemperature.h>//DS18B20 sensor pin
    #define ONE_WIRE_BUS 4
    
    
    OneWire oneWire(ONE_WIRE_BUS);
    
    DallasTemperature sensors(&oneWire);
    
    LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
    
    
    
    void setup()
    {
      lcd.init();                      // initialize the lcd 
    
      // Print a message to the LCD.
      lcd.backlight();
      sensors.begin();
    }
    
    void loop()
    {sensors.requestTemperatures();
      //Read first sensor
      float temp = sensors.getTempCByIndex(0);
      //Print first sensor results
      lcd.setCursor (0, 0 );
      lcd.print("T1: ");
      lcd.print(temp);
      lcd.print("      ");
       
    }
    
    
  7. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Нужно установить вот эту библиотеку для датчика. У меня все скомпилировалось. Переходим в папку libraries и вводим
    Код:
    git clone https://github.com/milesburton/Arduino-Temperature-Control-Library Arduino-Temperature-Control-Library
    После перезагружаем IDE.

    PS если git нету, можно просто скопировать папку с гитхаба в libraries.
  8. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Эта библиотека для датчика влажности DHT22?
  9. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Для датчиков от Dallas Semiconductor, которые работают по 1-wire
  10. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Вообще запутался я тогда, мне сейчас нужно вписать датчик влажности DHT22 в скетч да еще так чтоб он нормально скомпилировался и нужно вывести показания с него на lcd. Как мне использовать библиотеку от dallas к нему? в инклюде что писать тогда?
  11. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Понял, нужна другая библиотека под DHT. Там же пример ее использования:
    Код:
    #include <dht.h>
    
    dht DHT;
    
    #define DHT11_PIN 4
    #define DHT21_PIN 5
    #define DHT22_PIN 6
    
    void setup()
    {
      Serial.begin(115200);
      Serial.println("DHT TEST PROGRAM ");
      Serial.print("LIBRARY VERSION: ");
      Serial.println(DHT_LIB_VERSION);
      Serial.println();
      Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
    }
    
    void loop()
    {
      // READ DATA
      Serial.print("DHT22, \t");
      int chk = DHT.read22(DHT22_PIN);
      switch (chk)
      {
        case DHTLIB_OK: 
            Serial.print("OK,\t");
            break;
        case DHTLIB_ERROR_CHECKSUM:
            Serial.print("Checksum error,\t");
            break;
        case DHTLIB_ERROR_TIMEOUT:
            Serial.print("Time out error,\t");
            break;
        default:
            Serial.print("Unknown error,\t");
            break;
      }
      // DISPLAY DATA
      Serial.print(DHT.humidity, 1);
      Serial.print(",\t");
      Serial.println(DHT.temperature, 1);
    
      delay(1000);
    
    
        // READ DATA
      Serial.print("DHT21, \t");
      chk = DHT.read21(DHT21_PIN);
      switch (chk)
      {
        case DHTLIB_OK: 
            Serial.print("OK,\t");
            break;
        case DHTLIB_ERROR_CHECKSUM:
            Serial.print("Checksum error,\t");
            break;
        case DHTLIB_ERROR_TIMEOUT:
            Serial.print("Time out error,\t");
            break;
        default:
            Serial.print("Unknown error,\t");
            break;
      }
      // DISPLAY DATA
      Serial.print(DHT.humidity, 1);
      Serial.print(",\t");
      Serial.println(DHT.temperature, 1);
    
      delay(1000);
    
      // READ DATA
      Serial.print("DHT11, \t");
      chk = DHT.read11(DHT11_PIN);
      switch (chk)
      {
        case DHTLIB_OK: 
            Serial.print("OK,\t");
            break;
        case DHTLIB_ERROR_CHECKSUM:
            Serial.print("Checksum error,\t");
            break;
        case DHTLIB_ERROR_TIMEOUT:
            Serial.print("Time out error,\t");
            break;
        default:
            Serial.print("Unknown error,\t");
            break;
      }
    // DISPLAY DATA
      Serial.print(DHT.humidity,1);
      Serial.print(",\t");
      Serial.println(DHT.temperature,1);
    
      delay(1000);
    }
    //
    // END OF FILE
    //
  12. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Поставил другую библиотеку начало компилироватся , как теперь вывести показания влажности на lcd что надо написать в скетче?
    Код:
    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    #include <OneWire.h>//DS18B20 temperature sensor support
    #include <DallasTemperature.h>//DS18B20 sensor pin
    #include <DHT22.h>// Only used for sprintf
    #include <stdio.h>
    #define DHT22_PIN 5
    DHT22 myDHT22(DHT22_PIN);
    #define ONE_WIRE_BUS 4
    
    OneWire oneWire(ONE_WIRE_BUS);
    
    DallasTemperature sensors(&oneWire);
    
    LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
    
    
    
    void setup()
    {
      lcd.init();                      // initialize the lcd 
    
      // Print a message to the LCD.
      lcd.backlight();
      sensors.begin();
      }
    
    void loop()
    {sensors.requestTemperatures();
      //Read first sensor
      float temp = sensors.getTempCByIndex(0);
      //Print first sensor results
      lcd.setCursor (0, 0 );
      lcd.print("T1: ");
      lcd.print(temp);
      lcd.print("      ");
       
    }
    
    
  13. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Код:
    // READ DATA
      int chk = DHT.read22(DHT22_PIN);
      switch (chk)
      {
        case DHTLIB_OK:
            Serial.print("OK,\t");
            break;
        case DHTLIB_ERROR_CHECKSUM:
            Serial.print("Checksum error,\t");
            break;
        case DHTLIB_ERROR_TIMEOUT:
            Serial.print("Time out error,\t");
            break;
        default:
            Serial.print("Unknown error,\t");
            break;
      }
    После данной конструкции
    Код:
    lcd.setCursor (0, 0);
    lcd.print(chk);
    Ну вот как-то так.
  14. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Такое не принимает
    ok.ino: In function 'void loop()':
    ok.ino:44:13: error: 'DHT' was not declared in this scope
    ok.ino:47:10: error: 'DHTLIB_OK' was not declared in this scope
    ok.ino:50:10: error: 'DHTLIB_ERROR_CHECKSUM' was not declared in this scope
    ok.ino:53:10: error: 'DHTLIB_ERROR_TIMEOUT' was not declared in this scope
    ok.ino:62:1: error: expected '}' at end of input
    Ошибка компиляции.
  15. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Инициализировать не забыл?
    Код:
    dht DHT;
    #define DHT22_PIN <PIN_NUMBER>
  16. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    вроде инициализировал. Я только не пойму мне надо что то писать в void setup про датчик dht например myDHT22.begin?
    Код:
    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    #include <OneWire.h>//DS18B20 temperature sensor support
    #include <DallasTemperature.h>//DS18B20 sensor pin
    #include <DHT22.h>// Only used for sprintf
    #include <stdio.h>
    #define DHT22_PIN 5
    DHT22 myDHT22(DHT22_PIN);
    #define ONE_WIRE_BUS 4
    
    OneWire oneWire(ONE_WIRE_BUS);
    
    DallasTemperature sensors(&oneWire);
    
    LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
    
    
    
    void setup()
    {
      lcd.init();                      // initialize the lcd 
    
      // Print a message to the LCD.
      lcd.backlight();
      sensors.begin();
      }
    
    void loop()
    {
      sensors.requestTemperatures();
      myDHT22.getTemperatureC();
      //Read first sensor
      float temp = sensors.getTempCByIndex(0);
      //Print first sensor results
      lcd.setCursor (0, 0 );
      lcd.print("T ");
      lcd.print(temp);
      lcd.print("      ");
      float t = myDHT22.getTemperatureC();
      lcd.setCursor (0, 1 );
      lcd.print("T ");
      lcd.print(t);
      lcd.print("      ");
    
    
    }
    
    
  17. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Похоже взяли другую библиотеку? #include <DHT22.h>
    Для той библиотеки, которую я нашел в setup(), судя по примеру кода, ничего писать не нужно. А вот инициализация следующая dht <DHT_NAME>, т.е. создаем экземпляр класса dht. Может и ошибаюсь, но судя по примеру кода все так.
  18. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Библиотеку скачал по ссылке. целый день убил на этот скетч результата ноль. За деньги интересно сколько стоит написать скетч для моего инкубатора?
  19. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Если по ссылке, то пример кода приведен, подключается так:
    Код:
    #include <dht.h>
    dht DHT;
    За деньги делать это надо попробовать сюда написать.
  20. Ралиф

    Ралиф Живет здесь

    Сообщения:
    64
    Симпатии:
    21
    Ночью додумался удалить библиотеки DHT из программы, так как я до этого закинул 3-4 библиотеки DHT туда. После закинул одну библиотеку DHTauto, и сразу все заработало скетч закомпилировался без проблем, даже удалось вывести показания на дисплей. Сейчас надо пробывать записать в скетч часы DS1307, потом надо написать алгоритм терморегуляции, и даллее разобраться с поворотом лотка. Также надо разобраться с подключением нагревателя к ардуино я хотел попробывать подключить через полевик.

Поделиться этой страницей