Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Контроль влажности в гараже и погребе. WEMOS MINI PRO

Тема в разделе "Раздел для начинающих", создана пользователем zip1961, 26 апр 2019.

  1. zip1961

    zip1961 Новичок

    Сообщения:
    33
    Симпатии:
    0
    Добрый день уважаемые форумчане! Пожалуйста помогите. Я начинающий в этом деле. Сделал проект 4 сенсора два -DHT22 и два DHT11. Один на улице (естественно DHT22, один в гараже DHT22 и два в погребе и смотровой яме DHT11. Цель такая- при более 60 % влажности включаются вентиляторы. при 55% выключаются. Но если на улице влажность меньше , чем в гараже, яме, погребе ( в скетче пока последнего нет). Если включается вентилятор. на телефоне (приложение Blink) загорается LED индикатор. Все это получилось но с одним датчиком. Реле срабатывает, светодиод на телефоне загорается. Теперь не могу остальные светодиоды подключить. выдаются ошибки. Ошибка компиляции для платы LOLIN(WEMOS) D1 mini Pro.? В последней версии IDE ошибка другая - expected unqualified-id before ')' token. Подскажите люди добрые, где я сделал ошибки?
    Вот скетч


    /**************************************************************
    www.EK21 - произвосдство и поставка ЭНЕРГЕТИЧЕСКОГО ОБОРУДОВАНИЯ.
    **************************************************************
    * This example runs directly on ESP8266 chip.
    *
    * You need to install this for ESP8266 development:
    * esp8266/Arduino
    *
    * Please be sure to select the right ESP8266 module
    * in the Tools -> Board menu!
    *
    * Change WiFi ssid, pass, and Blynk auth token to run :)
    *
    **************************************************************/
    #include "DHT.h"
    #define fan1 D1 //вентилятор D1 Гараж
    #define fan2 D5 //вентилятор D5 Подвал
    #define fan3 D6 //вентилятор D1 Смотровая яма

    #define DHT1PIN D0//датчик на улице
    #define DHT2PIN D4//датчик в гараже
    #define DHT3PIN D3//датчик в подвале
    #define DHT4PIN D2//датчик в смотровой яме

    #define DHT1TYPE DHT22)
    #define DHT2TYPE DHT22)
    #define DHT3TYPE DHT11)
    #define DHT4TYPE DHT11)

    DHT dht1(DHT1PIN, DHT1TYPE);
    DHT dht2(DHT2PIN, DHT2TYPE);
    DHT dht3(DHT3PIN, DHT3TYPE);
    DHT dht4(DHT4PIN, DHT4TYPE);

    #define PIN D1 //контролируемый пин
    WidgetLED fan1(V8); // Светодиод на смарте
    #define PIN D5 //контролируемый пин
    WidgetLED fan2(V9); // Светодиод на смарте
    #define PIN D6 //контролируемый пин
    WidgetLED fan3(V10); // Светодиод на смарте

    #include <ESP8266WiFi.h>
    #include <BlynkSimpleEsp8266.h>

    int stat = 0;
    int maxHum = 60;

    #include <SimpleTimer.h> //таймер
    SimpleTimer timer;

    char auth[] = "abcc955ef726453a89b97232338d0a57";

    void sendOnOff()
    {
    int x = digitalRead (fan1);//читаем пин модуля
    if (x == 1) {//проверим состояние
    led fan1.on(); //вкл вирт.светодиод
    }
    else { //иначе выключим
    led fan1.off();
    }
    int x = digitalRead (fan2);
    if (x == 1) {//проверим состояние
    led fan2.on(); //вкл вирт.светодиод
    }
    else { //иначе выключим
    led fan2.off();
    }
    int x = digitalRead (fan3);
    if (x == 1) {//проверим состояние
    led fan3.on(); //вкл вирт.светодиод
    }
    else { //иначе выключим
    led fan3.off();
    }
    }

    void setup()
    {
    Serial.begin(115200);
    Blynk.begin(auth, "ASUS", "ZipandSergey");

    dht1.begin();
    dht2.begin();
    dht3.begin();
    dht4.begin();

    pinMode(fan1, OUTPUT);
    pinMode(fan2, OUTPUT);
    pinMode(fan3, OUTPUT);
    timer.setInterval(1000, sendOnOff);//устанавливаем перезапуск sendOnOff с интервалом 1с.
    }

    BLYNK_WRITE(V1) // запрос данных с датчика
    {
    stat = param.asInt();
    }

    void loop()
    {
    // ждем пару секунд перед началом измерений
    delay(2000);

    Blynk.run();
    timer.run();
    Send();
    }

    void Send(){
    float h2 = dht2.readHumidity();
    // Read temperature as Celsius (the default)
    float t2 = dht2.readTemperature();
    if (stat == 1)
    {
    Blynk.virtualWrite(V2, h);
    Blynk.virtualWrite(V3, t);
    }
    float h3= dht3.readHumidity();
    // Read temperature as Celsius (the default)
    float t3= dht3.readTemperature();
    if (stat == 1)
    {
    Blynk.virtualWrite(V4, h);
    Blynk.virtualWrite(V5, t);
    }
    float h4 = dht4.readHumidity();
    // Read temperature as Celsius (the default)
    float t4 = dht4.readTemperature();
    if (stat == 1)
    {
    Blynk.virtualWrite(V6, h);
    Blynk.virtualWrite(V7, t);
    }

    if(h2 > maxHum)
    {
    digitalWrite(fan2, HIGH);
    }
    else if (h2 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
    {
    digitalWrite(fan2, LOW);
    }
    if(h3> maxHum)
    {
    digitalWrite(fan3, HIGH);
    }
    else if (h3< (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
    {
    digitalWrite(fan3, LOW);
    }
    if(h4 > maxHum)
    {
    digitalWrite(fan4, HIGH);
    }
    else if (h4 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
    {
    digitalWrite(fan4, LOW);
    }

    // проверяем, были ли ошибки при считывании и, если были, начинаем заново
    if (isnan(h1) || isnan(t1)) {
    Serial.println("Failed to read from DHT1 sensor!");
    } else {
    Serial.print("Humidity1: ");
    Serial.print(h1);
    Serial.print(" %\t");
    Serial.print("Temperature1: ");
    Serial.print(t1);
    Serial.println(" *C ");
    }
    if (isnan(h2) || isnan(t2)) {
    Serial.println("Failed to read from DHT2 sensor!");
    } else {
    Serial.print("Humidity2: ");
    Serial.print(h2);
    Serial.print(" %\t");
    Serial.print("Temperature2: ");
    Serial.print(t2);
    Serial.println(" *C ");
    }
    if (isnan(h3) || isnan(t3)) {
    Serial.println("Failed to read from DHT3 sensor!");
    } else {
    Serial.print("Humidity3: ");
    Serial.print(h3);
    Serial.print(" %\t");
    Serial.print("Temperature3: ");
    Serial.print(t3);
    Serial.println(" *C ");
    }
    if (isnan(h4) || isnan(t4)) {
    Serial.println("Failed to read from DHT4 sensor!");
    } else {
    Serial.print("Humidity4: ");
    Serial.print(h4);
    Serial.print(" %\t");
    Serial.print("Temperature4: ");
    Serial.print(t4);
    Serial.println(" *C ");
    }
    Serial.println();
    }
     
  2. nikolz

    nikolz Гуру

    Сообщения:
    4.139
    Симпатии:
    431
    исправьте эти строки:
    else if (h2 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
    ...
    else if (h3< (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
    ..
    else if (h4 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
    надо так:
    else if (h2 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию.
    { digitalWrite(fan, LOW);
    ...
    else if (h3< (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию.
    { digitalWrite(fan, LOW);
    ..
    else if (h4 < (maxHum - 5) ) // Числа нижнего порога можете поменять по желанию.
    { digitalWrite(fan, LOW);
     
  3. zip1961

    zip1961 Новичок

    Сообщения:
    33
    Симпатии:
    0
    Изменил эти строки. Скомпилировал снова, получил другую ошибку. 'DHT' does not name a type. Ссылка на ошибку в строке 33. DHT dht4(DHT4PIN, DHT4TYPE);
    Код (C):
    1.  
    2.  
    3. /**************************************************************
    4. www.EK21 - произвосдство и поставка ЭНЕРГЕТИЧЕСКОГО ОБОРУДОВАНИЯ.
    5. **************************************************************
    6. * This example runs directly on ESP8266 chip.
    7. *
    8. * You need to install this for ESP8266 development:
    9. *   https://github.com/esp8266/Arduino
    10. *
    11. * Please be sure to select the right ESP8266 module
    12. * in the Tools -> Board menu!
    13. *
    14. * Change WiFi ssid, pass, and Blynk auth token to run :)
    15. *
    16. **************************************************************/
    17. #include <ESP8266WiFi.h>
    18. #include <BlynkSimpleEsp8266.h>
    19.  
    20. #define DHT1PIN D0//датчик на улице
    21. #define DHT2PIN D4//датчик в гараже
    22. #define DHT3PIN D3//датчик в подвале
    23. #define DHT4PIN D2//датчик в смотровой яме
    24.  
    25. #define DHT1TYPE DHT22)
    26. #define DHT2TYPE DHT22)
    27. #define DHT3TYPE DHT11)
    28. #define DHT4TYPE DHT11)
    29.  
    30. DHT dht1(DHT1PIN, DHT1TYPE);
    31. DHT dht2(DHT2PIN, DHT2TYPE);
    32. DHT dht3(DHT3PIN, DHT3TYPE);
    33. DHT dht4(DHT4PIN, DHT4TYPE);
    34.  
    35. #define PIN D1 //контролируемый пин
    36. WidgetLED fan1(V8); // Светодиод на смарте
    37. #define PIN D5 //контролируемый пин
    38. WidgetLED fan2(V9); // Светодиод на смарте
    39. #define PIN D6 //контролируемый пин
    40. WidgetLED fan3(V10); // Светодиод на смарте
    41.  
    42.  
    43.  
    44. int stat = 0;
    45. int maxHum = 60;
    46.  
    47. #include <SimpleTimer.h> //таймер
    48. SimpleTimer timer;
    49.  
    50. char auth[] = "12345678901234567890";
    51.  
    52. void sendOnOff()
    53. {
    54.   int x = digitalRead (fan1);//читаем пин модуля
    55.   if (x == 1) {//проверим состояние
    56.     led fan1.on(); //вкл вирт.светодиод
    57.   }
    58.   else { //иначе выключим
    59.     led fan1.off();
    60.   }
    61.   int x = digitalRead (fan2);
    62.      if (x == 1) {//проверим состояние
    63.     led fan2.on(); //вкл вирт.светодиод
    64.   }
    65.   else { //иначе выключим
    66.     led fan2.off();
    67.   }
    68.     int x = digitalRead (fan3);
    69.     if (x == 1) {//проверим состояние
    70.     led fan3.on(); //вкл вирт.светодиод
    71.   }
    72.   else { //иначе выключим
    73.     led fan3.off();
    74.   }
    75. }
    76.  
    77. void setup()
    78. {
    79.   Serial.begin(115200);
    80.   Blynk.begin(auth, "ASUS", "ZipandSergey");
    81.  
    82.   dht1.begin();
    83.   dht2.begin();
    84.   dht3.begin();
    85.   dht4.begin();
    86.  
    87.   pinMode(fan1, OUTPUT);
    88.   pinMode(fan2, OUTPUT);
    89.   pinMode(fan3, OUTPUT);
    90.    timer.setInterval(1000, sendOnOff);//устанавливаем перезапуск sendOnOff с интервалом 1с.
    91. }
    92.  
    93. BLYNK_WRITE(V1) // запрос данных с датчика
    94.   {
    95.   stat = param.asInt();
    96.   }
    97.  
    98. void loop()
    99. {
    100.   Blynk.run();
    101.   timer.run();
    102.   Send();
    103. }
    104.  
    105. void Send(){
    106.    float h2 = dht2.readHumidity();
    107.   // Read temperature as Celsius (the default)
    108.   float t2 = dht2.readTemperature();
    109.   if (stat == 1)
    110.   {
    111.     Blynk.virtualWrite(V2, h);
    112.     Blynk.virtualWrite(V3, t);
    113.   }
    114.   float h3= dht3.readHumidity();
    115.   // Read temperature as Celsius (the default)
    116.   float t3= dht3.readTemperature();
    117.   if (stat == 1)
    118.   {
    119.     Blynk.virtualWrite(V4, h);
    120.     Blynk.virtualWrite(V5, t);
    121.   }
    122.   float h4 = dht4.readHumidity();
    123.   // Read temperature as Celsius (the default)
    124.   float t4 = dht4.readTemperature();
    125.   if (stat == 1)
    126.   {
    127.     Blynk.virtualWrite(V6, h);
    128.     Blynk.virtualWrite(V7, t);
    129.   }
    130.  
    131. if(h2 > maxHum)
    132. {
    133.   digitalWrite(fan2, HIGH);
    134. }
    135.    else if (h2 < (maxHum - 5) )  // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
    136.   {
    137.     digitalWrite(fan, LOW);
    138.   }
    139. if(h3> maxHum)
    140. {
    141.   digitalWrite(fan3, HIGH);
    142. }
    143.    else if (h3< (maxHum - 5) )  // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
    144.   {
    145.     digitalWrite(fan, LOW);
    146.   }
    147. if(h4 > maxHum)
    148. {
    149.   digitalWrite(fan4, HIGH);
    150. }
    151.   else if (h4 < (maxHum - 5) )  // Числа нижнего порога можете поменять по желанию. { digitalWrite(fan, LOW);
    152.   {
    153.     digitalWrite(fan, LOW);
    154.   }
    155.  
    156. // проверяем, были ли ошибки при считывании и, если были, начинаем заново
    157. if (isnan(h1) || isnan(t1)) {
    158. Serial.println("Failed to read from DHT1 sensor!");
    159. } else {
    160. Serial.print("Humidity1: ");
    161. Serial.print(h1);
    162. Serial.print(" %\t");
    163. Serial.print("Temperature1: ");
    164. Serial.print(t1);
    165. Serial.println(" *C ");
    166. }
    167. if (isnan(h2) || isnan(t2)) {
    168. Serial.println("Failed to read from DHT2 sensor!");
    169. } else {
    170. Serial.print("Humidity2: ");
    171. Serial.print(h2);
    172. Serial.print(" %\t");
    173. Serial.print("Temperature2: ");
    174. Serial.print(t2);
    175. Serial.println(" *C ");
    176. }
    177. if (isnan(h3) || isnan(t3)) {
    178. Serial.println("Failed to read from DHT3 sensor!");
    179. } else {
    180. Serial.print("Humidity3: ");
    181. Serial.print(h3);
    182. Serial.print(" %\t");
    183. Serial.print("Temperature3: ");
    184. Serial.print(t3);
    185. Serial.println(" *C ");
    186. }
    187. if (isnan(h4) || isnan(t4)) {
    188. Serial.println("Failed to read from DHT4 sensor!");
    189. } else {
    190. Serial.print("Humidity4: ");
    191. Serial.print(h4);
    192. Serial.print(" %\t");
    193. Serial.print("Temperature4: ");
    194. Serial.print(t4);
    195. Serial.println(" *C ");
    196. }
    197. Serial.println();
    198. }
     
  4. nikolz

    nikolz Гуру

    Сообщения:
    4.139
    Симпатии:
    431
    попробуйте записать вместо
    DHT dht1(DHT1PIN, DHT1TYPE);
    DHT_dht1(DHT1PIN, DHT1TYPE);
    или так
    DHT.dht1(DHT1PIN, DHT1TYPE);
    дайте ссылку откуда копируете.
     
  5. nikolz

    nikolz Гуру

    Сообщения:
    4.139
    Симпатии:
    431
  6. nikolz

    nikolz Гуру

    Сообщения:
    4.139
    Симпатии:
    431
    надо так
    DHT.dht1(DHT1PIN, DHT1TYPE);
     
  7. svs2007m

    svs2007m Читатель

    Сообщения:
    80
    Симпатии:
    9
    Несколько неточностей по скетчу и Blynk ... )
    Возможно этот исправленный вариант подойдет )
    Demo_1
     
    zip1961 нравится это.
  8. svs2007m

    svs2007m Читатель

    Сообщения:
    80
    Симпатии:
    9
    Виртуальный PIN кнопки Blynk заменить на v11 и в скетче тоже )
     
  9. svs2007m

    svs2007m Читатель

    Сообщения:
    80
    Симпатии:
    9
    Да и с переменными наведите порядок. Ну как пример типа led_garage, rele_garage, h_garage, а то от цифр аж глаза рябит да и косяки в скетче в основном из-за этого. И для реле "низкого" -"высокого" уровня можно добавить пару строк ))
     
  10. zip1961

    zip1961 Новичок

    Сообщения:
    33
    Симпатии:
    0
    не помогло, все та же ошибка
     
  11. zip1961

    zip1961 Новичок

    Сообщения:
    33
    Симпатии:
    0
    Для себя делал Led_G, fan_G . для вас, что бы не путались Led_1, fan_1, но все такая же ошибка
     
  12. svs2007m

    svs2007m Читатель

    Сообщения:
    80
    Симпатии:
    9
    И не поможет. У тебя ошибок в коде море. Я же тебе показал рабочий скетч !!! Demo_1 Это твой исправленный
     
  13. zip1961

    zip1961 Новичок

    Сообщения:
    33
    Симпатии:
    0
    Ура! получилось. Спасибо добрый человек, как же я Вам благодарен. Хорошо, что есть такие добрые люди. Кампиляция прошла успешно. Попробую как работает.
     
  14. svs2007m

    svs2007m Читатель

    Сообщения:
    80
    Симпатии:
    9
    Просто переменные в С++ вроде пишутся с маленькой буквы, а с большой функции даже "горбатые"типа МyLedFanRelePro ... (так проще "читать" код ). Удачи в делах !
     
    zip1961 нравится это.
  15. zip1961

    zip1961 Новичок

    Сообщения:
    33
    Симпатии:
    0
    Спасибо, буду знать, я только учусь, хотя уже поздно учиться. Где мои 17 лет.. Мне уж 58.. Загрузка тоже прошла удачной.
     
  16. zip1961

    zip1961 Новичок

    Сообщения:
    33
    Симпатии:
    0
    svs2007m
    Добрый день svs2007m! Не сочтите за наглость, но у меня к Вам вопросик. Если мы на светодиод на смарте WidgetLED в скетче прописали виртуальный PIN , светодиод включается и выключается. А как же датчики температуры их ведь тоже нужно в скетче прописывать т.е. на каждый датчик виджет (h) и виджет (t) свой виртуальный PIN. Или они определяются автоматически. Не могу понять, объясните пожалуйста.
     
  17. zip1961

    zip1961 Новичок

    Сообщения:
    33
    Симпатии:
    0
    Все, разобрался.Пропустил , в скетче все это прописано.
     
  18. zip1961

    zip1961 Новичок

    Сообщения:
    33
    Симпатии:
    0
  19. svs2007m

    svs2007m Читатель

    Сообщения:
    80
    Симпатии:
    9
    1. Можно объединить через виджет Кнопки 3 штуки (улица не в счет) и в скетче добавить функцией
    Blynk.setProperty (V2, "label", "Вентиляция гараж"); // Заголовок
    Blynk.setProperty (V2, "color", "#23C48E"); // Цвет при ВКЛ (зеленый)
    Blynk.setProperty (V2, "offLabel", "t=", t2, "h=",h2); // Значение при ВЫКЛ
    Blynk.setProperty (V2, "onfLabel", "t=", t2, "h=",h2); // Значение при ВКЛ
    Blynk.virtualWrite(V2, HIGH); // ВКЛ вент

    то есть Значения в центре кнопки

    2. Или Выводить через виджет терминал
     
  20. svs2007m

    svs2007m Читатель

    Сообщения:
    80
    Симпатии:
    9
    И еще как помню из курса "Вентиляция и кондиционирование производственных помещений" одной вентиляции приточной или вытяжной не обойтись. Нужны осушители или увлажнители воздуха (типа климат контроль). Если на "улице сыро", то и в помещении влажность сильно не уменьшится ))
     

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