Андрей Смирнов
Время чтения: ~18 мин.
Просмотров: 2

Контроллер отопления дома на Arduino В 

1 год назад

Начну с предыстории. Однажды мои родители, твердо решили жить в своём доме за городом. Недолго думая приобрели участок недалеко от города и в течении года там был построен дом. Но так как, мои родители всегда жили в городской среде, и переезд не обернулся разочарованием я решил, по мере своих возможностей, автоматизировать некоторые процессы управления дома и со временем превратить его в подобие «умного дома».

152874544811581240.jpg

Задумка амбициозная, объем работы колоссальный поэтому буду делать все поэтапно, и в конце все свяжу все в единую систему. Первым этапом будет отопление. Управлять им будет Arduino, это конечно не самый надёжный вариант, но для начала самое то. Тему надёжности я затрону отдельно.

Теперь к техническому вопросу. Газ не проведён, зато есть электричество — 3 фазы, поэтому отопление будет электрическим. Все нагревательные элементы равномерно распределим по фазам, чтобы избежать перекоса фаз. Зимы лютые бывают, в связи с этим мощность ТЭН должна быть с запасом, ну мало ли что.

Все должно работать так: измеряем температуру воздуха в помещении, сравниваем с заданной, и в зависимости от разницы на определённый промежуток времени включаем ТЭНы. Вроде бы все просто, но это не совсем так) трудности будем решать в программе, а для начала о железе.

Для управления отоплением выбрал плату Arduino, сердцем которой является восьми битный микроконтроллер ATmega328р, его с запасом хватит для данной задачи.

Для измерения температуры датчики: Dallas DS18B20 — это цифровые датчики температуры, их можно множество кидать на общую шину OneWire состоящего из одного провода (на датчик нужно подвести землю, питание по желанию:)), и с неплохой точностью измерять температуру. У каждого датчика есть свой уникальный адрес, и обращаясь по адресу получаем данные нужного датчика. Это очень удобно, и экономит порты контроллера.

152874590714432479.jpg

Ввод и вывод информации осуществит LCD дисплей 16х2 символа, соединенный через i2с и 3 тактовые кнопки соединенные через делитель напряжения, для экономии пинов, и воткнутые в аналоговый вход. Почему именно три? Что бы сделать интуитивно понятное меню. Клиентоориентированность во плоти:).

Для управления нагрузкой нужно реле,электромеханические реле я посчитал не практичным и для тестирования из поднебесной заказал твердотельное реле, основой которой является симистор, который по факту рассчитан на ток вдвое меньше, чем написано на корпусе реле. Но в дальнейшем сделаю плату на которой распаяю более мощные симисторы BTA41-600B в паре с мс moc3361 которая внутри имеет оптопару для гальванической развязки, индикатор прохождения тока через ноль, и симисторный выход — полный фарш). А так же добавятся измерительные трансформаторы тока.

Для сравнения симисторы BTA41-600B в массивном корпусе TOP3 в сравнении с TO220 (Такой стоит в китайском реле)

1528746334173840156.jpg

В итоге все выглядит вот так подключил тепловентилятор на 2 кВт задал температуру, регулирует все отлично). Пока выглядит все на соплях, но для тестирования и отладки программы пойдет.

На этом пока все, в дальнейшем планирую написать про программу, изготовление платы и прочие модули, спасибо что дочитали)

Предыстория. Очень хороший друг детства попросил отремонтировать бойлер т.к. он перестал отключаться при нагреве. Даже термометр на корпусе бойлера сплавился. Естественно сразу появилось подозрение на неисправность терморегулятора но т.к. он очень неудобно расположен сзади и сбоку бойлера что просто нереально открутить закрывающую его крышку и вообще оценить состояние терморегулятора. Было принято решение снять его и привезти на ремонт ко мне домой.

Сгоревший термодатчик

После снятия крышки терморегулятора была обнаружена неисправность собственно терморегулятора, точнее вместо терморегулятора стоял простой термопредохранитель на 95 градусов Цельсия. Он попросту сплавился и его заклинило на «вечное включение». Я предложил снять один из двух предохранительных терморегуляторов которые стояли в том же бойлере снизу и практически никак не могли его защитить от перегрева. Друг сказал что ему надо хотя бы знать какая температура воды в бойлере… А термометр то сломан! На что я и предложил сделать ему схему на контроллере и отображением состояния бойлера на индикаторе. По цене это выйдет около 700р. только за все детали. За работу я с него денег естественно не возьму.  Он подумал и сказал- Делай. Вот с такой историей сломанный бойлер оказался в моем полном распоряжении.

Исследования.

  1. Я предложил другу сделать отдельную коробку (использовал бы распределительную электрическую коробку) и в ней разместить всю электронику. Он сказал что не хотелось бы вешать еще всяких коробок. Опять же пришлось ставить дополнительные разъемы под термодатчик и какую нибудь розетку для подключения ТЭНа бойлера. Но опять же такая схема была бы максимально защищена от возможной протечки бойлера, т.к. при сборке на нижней крышке вода может залить всю схему и, соответственно, все к херам выгорит. Сказано было сделать максимально компактно, т.е. в нижней крышке. Хорошо. Сказано- делаем.
  2. Следующий момент на который я обратил внимание т.к. схема должна монтироваться в непосредственной близости от бака бойлера- температурный режим 328 атмеги. Скачал даташит и увидел что максимальная температура кристалла- плюс 85 градусов Цельсия. Значит делаем вывод что максимальная рабочая температура бойлера должна составлять 80 градусов, лучше конечно поменьше, все равно это уже практически кипяток.
  3. Реле включения ТЭНа. Т.к. мощность ТЭНа составляет 1300Вт то рассчитываем ток из формулы I=P/U, где I- ток,А, P- мощность в Ваттах, U- напряжение , в данном случае 220В. Получаем 1300/220=5,91А. Таким образом нам подойдет релейная сборка KY-019 которая выдерживает ток до 10А и мощность при 220В аж целых 2,2кВт!  У меня в наличии оказалась только сдвоенная релейная сборка которая прям идеально подходила под крышку бойлера. Решил использовать одно реле на включение / отключение ТЭНа, т.е. регулировке температуры а вторую сделать как аварийной при температуре выше 83 градусов. Почему это сделано именно так. Ну во первых по даташиту контроллера температура не должна быть выше 85 градусов (см. п.2), соответственно нужно отключать ее немного раньше. Тут стоит взглянуть на строение бойлера. Термодатчик будет установлен в районе середины бака по высоте. Как известно тепло всегда стремится вверх, при этом холодная часть вещества будет всегда снизу. Понятно что при температуре на датчике в 83 градуса нижняя часть бойлера будет иметь меньшую температуру чем верхняя и мы имеем некий буфер от перегрева контроллера.
  4. Датчиком будет являться Dallas DS1820 который выдерживает температуру до 120 градусов. Можно конечно применить и терморезисторы но у меня их не оказалось и я решил использовать DS1820.
  5. Контроллер решил поставить Nano 3.0 хотя вот буквально только что подумал что хватило бы и 8 атмеги за глаза но… плата уже сделана, запущена и работает а переделывать… не хочется, все равно потом закажу еще деталей. Опять же под перепрошивку на Нано уже есть разъем а Атмегу пришлось бы ставить на панель и каждый раз перешивать.
  6. В роли регулятора температуры решил использовать простой переменный резистор на 10кОм подключенный крайними выводами к питанию а ползунок подключить к аналоговому входу через резистор 330 Ом (чтобы при питании выше 5 В нечаянно не пожечь вход).
  7. Блок питания решил взять из зарядника телефона. Можно конечно использовать 5 В по 50 руб с Али но у них мощности хватает в обрез и я боюсь что при длительном использовании они просто не выдержат и сгорят. Все устройство потребляет около 200 мА при включенных релюшках. Поэтому пришлось взять именно БП из зарядника телефона.
  8. Вы могли бы предложить поставить готовый терморегулятор с Али всего за 150-200 руб но… люди там до того боятся техники что им нужен минимализм во всем электронном. Т.е. буквально выключатель и регулятор температуры. А в китайском варианте в 3 кнопках они точно запутаются.

Вот такие небольшие исследования пришлось провести прежде чем взяться за реализацию проекта. Скетч был написан буквально за полчаса. Он был тупо переделан из моего датчика управления котлом из которого я вырезал библиотеку работы с ЕЕПРОМ (здесь она уже не нужна) и много чего другого. Скетч привожу ниже.

  #include   #include <liquidcrdcrystal lcd="" onewire="" ds="" int="" inastrtemp="" int16_t="" itektemp="" delta="5;" byte="" sw="0;" void="" setup="" lcd.begin="" pinmode="" output="" digitalwrite="" low="" high="" lcd.setcursor="" lcd.print="" delay="" count="0;" while="" lcd.clear="" loop="" if=""> 83 || iTekTemp < 0)    {      digitalWrite(13, HIGH);  // выключаем рабочее реле      delay(100); //   небольшая задержка для отмены искрения защитного реле      digitalWrite(9, HIGH);  // выключаем защитное реле      lcd.clear();      lcd.setCursor(0, 0);      lcd.print ("FAILURE");      delay(100);      lcd.clear();    }    else  // рабочий цикл    {      display(iTekTemp, iNastrTemp);      if ((iNastrTemp - Delta < iTekTemp) && (iTekTemp < iNastrTemp) && (sw == 1)) // работа в дельте      {        digitalWrite(13, LOW);        lcd.setCursor(13, 0);        lcd.print(" ON");      }      else        // при повышенной температуре      {        digitalWrite(13, HIGH);        lcd.setCursor(13, 0);        lcd.print("OFF");        sw = 0; // флаг на то что система остывает на дельту        }        if (iTekTemp <= iNastrTemp - Delta)  // при пониженной температуре      {        digitalWrite(13, LOW);        lcd.setCursor(13, 0);        lcd.print(" ON");        sw = 1;      }    }  }  //-------------------------функции-------------------------------//  void display(int TCur, int TSet)  {    lcd.setCursor(0, 0);    lcd.print("Current");    lcd.setCursor(8, 0);    lcd.print(TCur);    lcd.setCursor(10, 0);    lcd.print("'C");    lcd.setCursor(0, 1);    lcd.print("Set");    lcd.setCursor(8, 1);    lcd.print(TSet);    lcd.setCursor(10, 1);    lcd.print("'C");    }    int16_t inCurTemp()  {    byte data[2];    ds.reset();    ds.write(0xCC);    ds.write(0x44);    ds.reset();    ds.write(0xCC);    ds.write(0xBE);    data[0] = ds.read();    data[1] = ds.read();    int Temper = (data[1] << 8) + data[0]; Temper = Temper >> 4;    return Temper;  }  </liquidcrdcrystal>

Описывать как все это работает смысла не вижу т.к. вы, если изучали  предыдущие уроки, уже вполне можете сами разобраться что и как написано. Критика кстати принимается. Принцип работы такой:

  1. При включении подаем на выходы управления реле (в моем случае 13 вывод- рабочее реле, 9- защитное реле) высокий потенциал на 13 вывод (отключаем реле принудительно) и низкий на 9 (включаем защитное реле). В первоначальном варианте я подавал по логике высокий уровень на включение а низкий- на отключение и у меня все работало… только в зеркальном варианте. Нашел схему и сразу все стало понятно что активный уровень в данном модуле- низкий. Хотя мне мой друг сказал что есть модули с высоким активным уровнем… Можно конечно было через транзисторы инвертировать сигнал но усложнять схему мне не захотелось.
  2. Затем запускаем измерение температуры функцией inCurTemp(). Выводим экран загрузки и снова измеряем температуру. Почему я 2 раза измеряю температуру спросите вы? При первом измерении запускается датчик температуры и он выдаст стандартное значение в 85 градусов т.к. сам термодатчик еще не инициализировался. По даташиту DS1820необходимо 850 миллисекунд для выхода в рабочий режим. Поэтому придаем «красивость» интерфейсу через строку загрузки. За это время термодатчик выйдет в рабочий режим и начнет давать корректные показания. Поэтому просто измеряем температуру еще раз. Простое решение проблемы.
  3. Строка в рабочем цикле iNastrTemp = map(analogRead(A7), 0, 1000, 10, 80);  является одной из главных во всем скетче. Она отвечает за установку температуры нагрева. Раньше я объяснял как работать с оператором map но объясню еще раз. Мы берем этим оператором пределы значений одного измерения и преобразуем их в совершенно другой предел. В данной строке мы получаем данные с аналогового входа А7, берем значения от 0 до 1000 (напоминаю что аналоговые входы 10 битные и принимаю 1024 значения в пределах от 0 до 1023) и преобразуем их в предел от 10 до 80 (значение установленной температуры). Т.е простым преобразованием поступивших данных с входа А7 мы можем напрямую указать нужную температуру нагрева! Всего одна строка и никаких мучений с придумыванием формул и описанием буквально каждого состояния аналогового порта. Опять же значения вы можете поменять под себя. Можно было указать более низкую температуру но тогда придется еще ввести условие на значение температуры меньше 10 для корректного отображения на LCD. Или дописывать ноль перед значением, или ставить пробел после значения чтобы затереть предыдущие показания.
  4. Затем идут уже обработки на аварийное отключение защитного реле (больше 83 градусов) и сам цикл работы. Цикл работы следующий: нагревается вода до заданной температуры, отключается рабочее реле, как только вода в бойлере остынет на Delta градусов- реле опять включится. Дельту я установил равным 5 градусам. Меньшие значения позволят поддерживать температуру более точно но увеличивают количество срабатываний рабочего реле, что сократит срок его службы. Большие значения дельты будут проявляться в редком включении рабочего реле но и выходящая вода будет иметь большой разброс по температуре, что тоже не является нормальным т.к. заставляет постоянно подбирать нужную температуру моющемуся. Кстати защитное реле после перегрева больше не включается  до тех пор,  пока не перезапитаете бойлер, что позволит понять причину перегрева- залипание контактов рабочего реле.
  5. При аварийном срабатывании ВСЕГДА отключается сначала рабочее реле и лишь затем, через небольшую задержку, защитное. Это сделано для того чтобы защитное реле имело как можно меньшее срабатывании под нагрузкой. Т.е. максимально исключено воздействие электрической дуги на ее контакты и, соответственно, снижена вероятность залипания контактов реле. Что для защитного реле является самым главным условием. Т.е. при залипании контактов рабочего реле аварийное реле должно сработать и выдать сообщение о перегреве.

Функции вывода сообщений на дисплей и измерения температуры просто нет смысла описывать. Перейдем к самой конструкции и сборке бойлера. Первым делом я убрал с передней панели 2 выключателя и выпилил на их месте отверстие под LCD 1602. Слева просверлил на небольшом расстоянии отверстие диаметром 20мм пёркой под выключатель, а справа на таком же расстоянии отверстие диаметром 7 мм под переменный резистор для регулировки температуры. Все стало красиво на свои места! Затем был мучительный процесс придумывания как закрепить плату с контроллером, соединить его с дисплеем и остальной периферией. Решил напаять плату прямо на выводы дисплея. Но для такого варианта нужно было бы использовать двухсторонний текстолит. Он конечно есть но ковыряться с двухсторонней платой катастрофически не хотелось. Поэтому просто впаял под выводы подключения на плате изогнутые пин- штырьки и намертво припаял к штырькам дисплея. Получилось даже лучше чем ожидал.  Штырьки дисплея предварительно подогнул чтобы контроллер не упирался в дно бачка бойлера.

Установка температурного датчика DS1820

Датчик Dallas DS1820 установил на месте старого термопредохранителя. Для этого пришлось выгнуть из оцинковки S- образную полосу. Под место установки термодатчика поставил резиновую прокладку, сам термодатчик посадил на термоклей непосредственно к колбе бойлера и прижал сверху полосой через резиновую прокладку чтобы тепло меньше отводилось в металл. Выводы обязательно нужно затянуть в термоусадку чтобы они не могли замкнуть на корпус. Можно конечно поставить термодатчик в отверстие рядом с ТЭНом, которое собственно и предназначено для установки термодатчика но я сделал по старой схеме и просто тупо перетянул провода и установил датчик на старое место. Вы можете сколхозить какую нибудь конструкцию и закрепить термодатчик где вам больше нравится. Единственное условие- устанавливать надо на всю глубину гнезда.

Закрепленные модули в бойлере

Осталось закрепить модули и все- можно пробовать и отдавать все это дело другу! После небольшой отладки и испытаний собрал в корпус. Внимание! При проверке не подключайте ТЭН для настройки и тестирования. Вы сожгете ТЭН  бойлера и, таким образом, наживете себе проблем.

Внешний вид готового терморегулятора

Внешний вид полусобранного регулятора приведен на фото. Осталось только прикрутить саму крышку к корпусу.

Ниже привожу схему данного устройства.

Схема регулятора температуры для бойлера

На ней не указан блок питания, хотя это само собой подразумевается. Схема элементарная и доступна даже начинающему.

Хочу предупредить что на некоторых участках схемы будет опасное напряжение в 220 вольт. Будьте осторожны при сборке, настройке и подключении устройства! 

Печатную плату вы тоже можете скачать здесь.

PS. Ввиду того что WordPress некорректно отображает кавычки

Ошибка при переносе скетча в WordPress

и по замечанию пользователя Ruslan выкладываю сам скетч. Архив скетча можете скачать ЗДЕСЬ. Ruslan, спасибо за замечание. Тем кто хочет скачивать- просто замените кавычки как показано на скриншоте сбоку во всем скетче.

Руслан, специально для тебя- бойлер с звуковой индикацией неисправности:

  #include   #include <liquidcrystal>   lcd(12, 11, 5, 4, 3, 2);  OneWire ds(10);  int iNastrTemp; // настраиваемая температура  int16_t iTekTemp; // текущая температура  int Delta = 5; //дельта по умолчанию  byte sw = 0; // для включения реле    void setup() {    lcd.begin(16, 2);    pinMode(13, OUTPUT); // пин для управления РАБОЧИМ реле    pinMode(9, OUTPUT); // пин для управления ЗАЩИТНЫМ реле    pinMode(11, OUTPUT); // пин для звука    // ВНИМАНИЕ! На реле активный уровень -LOW!!!      digitalWrite(9, LOW);  // включаем защитное реле    digitalWrite(13, HIGH);  // выключаем рабочее реле      iTekTemp = inCurTemp();// запускаем прогрев температурного датчика (850 мс)      // экран загрузки для стабилизации температурного датчика    lcd.setCursor(6, 0);    lcd.print("Hi");    lcd.setCursor(3, 1);    lcd.print("Loading");    delay(800);    byte count = 0;    while (count != 3)    {      lcd.print(".");      delay(600);      count++;    }    lcd.clear();    }    void loop() {      iTekTemp = inCurTemp();// измеряем температуру    iNastrTemp = map(analogRead(A7), 0, 1000, 10, 80); // устанавливаем температуру        // аварийное отключение      if (iTekTemp > 83 || iTekTemp < 0) { // прежде всего- выключаем питание с ТЭНа digitalWrite(13, HIGH); // выключаем рабочее реле delay(100); // небольшая задержка для отмены искрения защитного реле digitalWrite(9, HIGH); // выключаем защитное реле // теперь выводим сообщения и звук if (iTekTemp > 83 ) // перегрев бойлера      {        lcd.clear();        lcd.setCursor(0, 0);        lcd.print ("HIGH TEMPERATURE");        Sound(500, 1000); // вызываем функцию звука (описана ниже) через каждые 0,5 сек (500 мсек) издается звук 1000 Гц с длительностью 500 мсек.        lcd.clear();      }      if (iTekTemp < 0) // обрыв датчика      { lcd.clear();        lcd.setCursor(0, 0);        lcd.print ("NO DATA");        delay(100);        Sound(50, 1000);  // вызываем функцию звука (описана ниже) через каждые 0,05 сек (50 мсек) издается звук 1000 Гц с длительностью 50 мсек. т.е. короткие и быстрые звуки        lcd.clear();      }    }    else  // рабочий цикл    {      display(iTekTemp, iNastrTemp);      if ((iNastrTemp - Delta < iTekTemp) && (iTekTemp < iNastrTemp) && (sw == 1)) // работа в дельте      {        digitalWrite(13, LOW);        lcd.setCursor(13, 0);        lcd.print(" ON");      }      else        // при повышенной температуре      {        digitalWrite(13, HIGH);        lcd.setCursor(13, 0);        lcd.print("OFF");        sw = 0; // флаг на то что система остывает на дельту        }        if (iTekTemp <= iNastrTemp - Delta)  // при пониженной температуре      {        digitalWrite(13, LOW);        lcd.setCursor(13, 0);        lcd.print(" ON");        sw = 1;      }    }  }  //-------------------------функции-------------------------------//  void display(int TCur, int TSet)  {    lcd.setCursor(0, 0);    lcd.print("Current");    lcd.setCursor(8, 0);    lcd.print(TCur);    lcd.setCursor(10, 0);    lcd.print("'C");    lcd.setCursor(0, 1);    lcd.print("Set");    lcd.setCursor(8, 1);    lcd.print(TSet);    lcd.setCursor(10, 1);    lcd.print("'C");    }    int inCurTemp()  {    byte data[2];    ds.reset();    ds.write(0xCC);    ds.write(0x44);    ds.reset();    ds.write(0xCC);    ds.write(0xBE);    data[0] = ds.read();    data[1] = ds.read();    int Temper = (data[1] << 8) + data[0]; Temper = Temper >> 4;    return Temper;  }    void Sound (int tm, int freq)  {    tone (11, freq);    delay (tm);    noTone(11);    delay (tm);  }    </liquidcrystal>

1901.2018Рубрика:Работы авторов

Если допустим вам нужно автоматически отапливать гараж, или дачу, или домик в деревне у бабушки, вам совершенно ни к чему покупать супер-пупер дорогостоящие контроллеры со своими мегафункционалами. Управление отоплением Ардуино справляется на все сто. Только нужно грамотно и правильно написать скетч, да и к тому же вы имеете возможность настраивать систему под себя. А если обращаетесь к программированию на вы, то можно попросить опытного и профессионального программиста написать софт.

Из этой статьи вы узнаете:

Схема отопленияСписок оборудования и ПО

Приветствую друзья, с вами автор блога, Гридин Семён. В просторах интернета я наткнулся на замечательный проект по отоплению на Arduino. Сразу хочу поставить все точки над i. Статья не моя, и проект не мой, даже картинки не мои. Это произведение автора под ником Vanalaizer, первоисточник размещён на Geektimes.

К сожалению, связаться мне с ним не удалось.  Этот пост я пишу в основном, чтобы зафиксировать на сайте и закрепить для себя и для вас основные аспекты проекта.

Схема отопления

Основной принцип данного проекта — это процесс регулирования электрокотла с помощью самой простой и приземлённой платой Arduino UNO.

Вот непосредственно сам шкаф управления, «мозги» на основе Arduino.

Это как раз делалось для дома в деревне. Регулирование температуры ведётся в одной комнате.

Какое же само оборудование? Я не буду расписывать большие тексты. Напишу конкретно. Для системы требуется следующее.

  • Электрокотёл на 4-6 кВт
  • рециркуляционный насос

Сама конструкция котла состоит и металлического цилиндра с тремя нагревательными ТЭНами по 2 кВт. Отсюда следует вывод, что система должна быть трёхфазная на каждой фазе по ТЭНу. Дополнительно в корпус электрокотла врезаны 2 датчика, резистивный датчик температуры и датчик, замыкающийся при перегреве.

Система управления на Arduino не совсем простая, включать и выключать реле по PID-закону. Лучше всего два ТЭНа включать сразу, а одним поддерживать температуру, это самый надёжный и наиболее точный способ.

Ток потребления нагревателя составляет примерно 8 А. Лучше всего управлять твердотельными реле с запасом по мощности, примерно ампер 15-20 и с охлаждающим радиатором.

Есть готовые модули Solid State Relay, проще говоря — электросхема, собранная на мощном тиристоре, в корпусе, похожем на обычное реле. Из его плюсов — нет механики, ничего не залипнет. Не создаёт мощных ЭМ-помех, что важно для ethernet’a, о котором ниже.

Они уже содержат схему, которая включает и отключает реле при проходе нуля. На реле есть индикатор включения. Ну и ещё они беззвучные, хотя для нашего случае это не так и актуально. Были установлены SSR-25DA, что по-русски означает — твердотельное реле с постоянным управляющим током 3-5В и током нагрузки до 25А.

К ним есть штатные радиаторы, они должны быть установлены — ОБЯЗАТЕЛЬНО!! Не забываем смазать термопастой, для улучшения теплообмена.

Список оборудования и ПО

Что же применялось в конечном итоге:

  • Плата arduino. Использовалась UNO r3
  •  Ethernet Shield
  •  Витая пара
  •  Датчики температуры
  •  Блок питания на 110-240 — 12В 2А
  •  Стабилизатор LM7805
  •  Реле SSR-40DA 3 шт
  •  Радиаторы для реле

Но всё это, конечно, хорошо, но не стоять же постоянно с компьютером рядом с котлом, всё же хотелось бы знать о том, что происходит дома, удалённо через инет. Уже был самый простенький VPS сервер от majordomo для чего попало. На нём создана база данных на MySQL для хранения данных о температуре. (на этом мои познания пока ограничены).

Теперь нам надо как-то положить данные из arduino в эту базу. Для этого, естественно, понадобится как минимум связать arduino с интернетом.

Для этого нам и понадобится Ethernet Shield и его библиотека. Установлен простенький роутер. Тянем стандартную витую пару к роутеру и добавляем в программу передачу данных. Передача идёт через вызов странички на PHP с параметрами — данными. Создаём страничку с именем temp.php на нашем инет-сервере.

После этого мы имеем данные о температурах и мощности работы котла, чтобы каждый раз не лазить в базу, а посмотреть последние данные, автор написал “временный” скрипт на php, gettemp.php

Вот и практическое применение языка PHP в сфере автоматизации. Честно говоря, пока не углублялся в такие дебри, но всё равно интересно!!!

Ну и, сам скетч.

Здесь я останавливаюсь, спасибо автору за его проект. Было бы интересно пообщаться, я всегда на связи. Спасибо за внимание! Всего доброго!!!

С уважением, Гридин Семён

Используемые источники:

  • https://pikabu.ru/story/kontroller_otopleniya_doma_na_arduino_5960701
  • https://samosdel.ru/arduino/boiler-arduino/
  • https://kip-world.ru/proekt-2-otoplenie-na-arduino.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации