Програмиране и конфигуриране на WiFi контролер

В предишна статия говорих за изграждането на нов контролер за влажност

конфигуриране
. Сега ще ви разкажа за характеристиките на програмата, алгоритмите за управление и настройките на този контролер.

ESP8266, за разлика от Atmeg и328, на които е приложена предишната версия, има много атрактивни характеристики:

Всичко това, заедно с вградения WiFi, ви позволява да реализирате функциите на вградения WEB-сървър, без да спестявате памет за текстови редове.

Но с GPIO ESP8266 е доста зле, следователно такъв лукс като управление на седемсегментен индикатор не е пряко достъпен за него. Следователно е избран индикаторът на микросхемата TM1637, който изисква само два щифта за свързване.

Среда за развитие

Тъй като усвоих разработването на програма за управление на ESP8266 под IDE на Arduino, много от стария код, който осигурява основната логика на контролера за управление на вентилатора, е запазен от предишната версия.

По принцип беше интересно да се прехвърли добре доказан алгоритъм, който реализира краен детерминиран автомат на състоянието, описан в таблицата за преход на състоянието:

конфигуриране

Внедряване на нови функции

Много е неудобно да се правят WiFi контролери, в които параметрите на мрежовата връзка са зашити. Представете си до какво ще доведе промяна в името или паролата на точката за достъп, ако имате дузина такива контролери у дома?

Следователно, тази програма изпълнява функциите за запазване на параметрите на връзката в енергонезависимата EEPROM памет и конфигурирането им по мрежата. Структурата за запазване на параметри, както и четенето и записването им, е реализирана във файловете WC_EEPROM.h и WC_EEPROM.cpp на моя проект. Проверката на четенето и писането се извършва чрез изчисляване на контролната сума на конфигурацията и сравняването й с тази, записана в EEPROM.

В допълнение към мрежовата конфигурация, всички изчаквания и други параметри на алгоритъма за управление на вентилатора също се съхраняват в паметта, което ви позволява да оптимизирате и конфигурирате този контролер директно „по въздуха“.

Показване на режими на работа, конфигурация на контролера, както и директно управление на вентилатора се реализира с помощта на вградения WEB-сървър (файлове WC_HTTP.h и WC_НTTP.cpp)

Алгоритъмът за конфигуриране на точката за достъп е както следва:

Главната страница на WEB-сървъра показва основните параметри на контролера и ви позволява ръчно да включвате/изключвате контролера (аналогично на натискането на бутона за ръчно управление)

контролер

Тук можете също да отидете на страницата за мрежови настройки

контролер

И страницата с настройки на алгоритъма на контролера

контролер

От тези две страници можете да рестартирате контролера и да нулирате всички настройки до "по подразбиране".

Все още планирам да „внасям красота“ в интерфейса в бъдеще, когато концепцията за интелигентен дом на WiFi повече или по-малко ще се установи в главата ми.

Друга функция, внедрена в тази програма, е часовник в реално време, синхронизиран чрез NTP протокола в Интернет. (WC_NTP.h и WC_NTP.cpp файлове)

Няма да описвам описанието на основния алгоритъм, логиката остава същата и можете да прочетете за нея в тази статия. Основните промени бяха направени в дисплея. Бих искал да насоча вниманието ви към една „характеристика“ - функцията DisplaySpecialChar (), която ви позволява да покажете всеки символ, който можете да се сетите да се покаже на индикатор от седем сегмента с помощта на битова маска. Измислих такъв символ за "процент" при показване на влажността

контролер

И символът "градуси" при показване на температурата

управление вентилатора

Битовете в битовата маска съответстват на индикаторните сегменти.

Е, последната от новите функции е запазването на параметри на сървър в Интернет за показване и последващ анализ. Запазват се стойностите на влажност, температура, аналогов порт с фоторезистор за регулиране на прага на осветление, време на работа на вентилатора, време на изгаряне на светлината и време за работа на UPTIME на контролера от последното рестартиране.

Записът на сървъра се извършва в два режима. Параметрите се записват с по-голяма честота, когато „нещо се случи“ в банята, по това време или светлината е включена, или вентилаторът работи. Всички тайминги се конфигурират чрез WEB интерфейса.

Данните се записват на моя сървър в Интернет. Адресът на сървъра може да бъде конфигуриран, но форматът за запис все още е вграден в програмата. Отново, до по-добри времена, концепцията е установена))). Сега параметрите се записват от най-простия PHP скрипт в таблица с най-проста структура.

конфигуриране

Доста лесно е да преконфигурирате параметрите за спестяване за същия "мониторинг на хората". Лично този сървър не ме устройва с ограничения за честотата на запазване на данни и дълбочината на архива.

Оптимизиране на настройките на контролера

След "пробна експлоатация" е възможно да се определи дали праговете за осветление и влажност, както и времето за изчакване на различни събития са зададени правилно. В предишно изпълнение зададох времето за задействане на 20 минути, докато седя в банята с хронометър. След като наблюдавах графиката на параметрите по време на няколко душа, видях следното:

контролер

  • Влажността през зимата се променя с 35-40%
  • Време за нормализиране на влажността с естествена вентилация 20-25 минути
  • Време за нормализиране на влажността с работещ вентилатор 10-12 мин
  • Вентилаторът удвоява ефективността на вентилацията

Изхождайки от това, можете безопасно да намалите времето за работа на вентилатора до 12 минути, като по този начин удължите експлоатационния му живот и спестите малко електричество. Подобен анализ може да се извърши и за други сезони, когато влажността в апартамента е напълно различна.

Сега, след анализа, можете да увеличите периода за запис на параметри на сървъра.

Скицата можете да изтеглите от тук. Ще бъда много благодарен, ако съобщите за открити грешки.

И ние с Тимотей ще си починем от труда на праведните 😉