Показ дописів із міткою побутова автоматика. Показати всі дописи
Показ дописів із міткою побутова автоматика. Показати всі дописи

пʼятницю, 7 червня 2019 р.

Blynk: Авто-кватирка на ESP8266 та Stepper Motor

Передмова

Розробив на замовлення "Авто-кватирку", яка може міряти температуру і вологість в приміщення сенсором DHT, та відкривати чи закривати кватирку, або вікно за допомоги крокового двигуна (Stepper Motor 28BYJ-48 With Driver Module ULN2003). Схему і код публікую з дозволу замовника. 

Зачиняти і відчиняти вікно можна як з кнопки на пристрою, так і зі смартфону з додатку Blynk. А також задати залежності відкриття і закриття від температури і вологості в приміщенні. Плюс є два тижневих планувальника подій, яким можна задати час відкриття, та час закриття вікна. Чим повністю автоматизувати процес провітрювання приміщення.

Залізяччя

Схема

Схема авто-кватирка
Макет авто-кватирки

Скетч

Текст програми завеликий для публікації в статті. Завантажити скетч можна на GitHub.
На початку програми є деякі налаштування, за допомоги яких можна встановити інші піни для сенсора, мотора, кнопки, геркону, світлодіоду та номера віртуальних шпильок в Blynk:

#define BUTTON_SYSTEM   0
#define LED_BLUE    2
#define INITIAL_POSITION_SWITCH 16
#define ULN2003_IN1    5
#define ULN2003_IN2    4
#define ULN2003_IN3    14
#define ULN2003_IN4    12

#define DHTTYPE DHT11  // DHT11, DHT 22  (AM2302), AM2321
#define DHTPIN 13   // DHT PIN

// Сенсор DHT
#define TMP_DHT V5
#define HUM_DHT V6

#define MOTOR_MOVE_SLIDER   V20 // Віджет слайдера
#define MOTOR_SPEED_STEP_CONTROL V21 // Віджет STEP CONTROL
#define MOTOR_MAXIMUM_STEPS   V22 // Максимальна кількість кроків для слайдеру і кнопки
#define MOTOR_DIRECTION_MENU  V60 // Меню направлення руху мотору

#define TERMINAL   V41
#define TIME_INPUT_0  V50
#define TIME_INPUT_1  V51
#define WIFI_SIGNAL V80

Рекомендації по збиранню

  1. Зібрати макет чи завершений пристрій відповідно до наведеної схеми. Обов'язково живіть окремими джерелами струму двигун і сам пристрій. Геркон розташуйте на рамі вікна, а магніт розташуйте на кватирці або фрамузі так, щоб геркон замикався при закритті кватирки чи фрамуги. Розташування крокового двигуна і яка саме буде конструкція відкриття/закриття залежить від вашої фантазії і можливостей і виходить за рамки цієї статті;
  2. Скомпілювати скетч та залити до ESP8266 за допомоги Arduino IDE, або MS Visual Studio з плагіном visualMicro. Обов'язково перед компіляцією зробіть зміни до коду в бібліотеку "stepper". Відкрийте файл "stepper.cpp" та додайте рядок "delay(0);" до коду в це місце:
    // decrement the number of steps, moving one step each time:
      while (steps_left > 0)
      {
        delay(0);
        unsigned long now = micros();
    
    Або взяти готовий бінарник, як вас влаштовує типова схема наведена вище, і прошити цей бінарник будь яким прошивачем, який може прошити ESP8266. Наприклад "flash download tools", "ESP8266Flasher", тощо. Після прошивання, обов'язково зняти живлення з ESP8266. Вимкнути взагалі весь пристрій що прошили.
  3. Завантажити на свій смартфон додаток Blynk для андроїд, або Blynk для iOS;
  4. Запустити додаток і зареєструватись в системі Blynk:
  5. Увімкнути сканування QRcode: 
  6. Сканувати цей QRcode:
  7. Після сканування у вас з'явиться готовий проект. Відкрийте налаштування проекту:
  8. Зайдіть у розділ "Device":
  9. Зайдіть у властивості "My Devices", як немає жодного пристрою, додайте "New Device":
  10. Отримайте "Auth Token" та натисніть де позначено червоним прямокутником - "AUTH TOKEN" скопіюється до буферу. За потреби натисніть на "Email" і отримаєте "AUTH TOKEN" на свою поштову скриньку:
  11. З головного екрану проекту запустіть свій проект:
  12. Подайте живлення на свій пристрій. Двигун почне обертання, поки не замкнеться "геркон" магнітом (калібрування положення "вікно закрите"), або не пройде 10 секунд (timeout). На стадії тестування і ознайомлення можна самому рукою піднести магніт до геркону, або якимсь іншим чином замкнути контакти геркону. Далі почне блимати синій світлодіод на платі ESP8266, який під'єднано до GPIO2. На своєму смартфоні скануємо мережі Wi-Fi і підключаємось до мережі з назвою "Stepper-Motor-Wemos". Після підключення вам запропонується увійти через браузер на сторінку налаштувань пристрою, або самі запустіть браузер і зайдіть на сторінку налаштувань пристрою за адресою 192.168.4.1;
  13.  Зайти в меню "Configure WiFi":
  14. Ввести "SSID", "password" вашої WiFi мережі де буде працювати пристрій, та вставити з буферу обміну "Auth Token". Зберегти налаштування кнопкою "Save":
  15. Пристрій перезавантажиться, підключиться до вашої WiFi мережі і під'єднається до серверу Blynk. Смартфон від'єднається від мережі пристрою і під'єднається до вашої WiFi мережі. Запускаємо додаток Blynk з цим проектом і спостерігаємо на екрані данні про температуру і вологість, а також можете спробувати керувати слайдером щоб порухати кватирку чи фрамугу вікна.

Опис можливостей

В проекті є налаштування максимальної кількості кроків двигуна "MAX STEPS" і швидкість руху двигуна "SPEED MOTOR". Направлення руху двигуна (revers/direction). Рівень сигналу WiFi. Та вікно терміналу де друкуються деякі події, що відбуваються. Два планувальника подій "TIME INPUT". Та датчики температури і вологості. 

Термінал приймає деякі команди:
  • version - друкує в термінал поточну версію прошивки;
  • name - друкує в термінал поточну назву пристрою;
  • ip - друкує в термінал IP пристрою в мережі;
  • mac - друкує в термінал MAC адресу пристрою;
  • reboot - перезавантажує пристрій;
  • reset - скидає налаштування до "заводських";
  • pins - пам'ятка на яких віртуальних шпилька що "сидить".
Також в проекті присутній віджет "Eventor" за допомоги якого можна встановити залежності від температури і вологості і назначити для цього дії. 

Пристрій підтримує оновлення прошивки по WEB OTA. Для цього потрібно в браузері ПК, який знаходиться в тій же ж мережі що і пристрій, набрати IP адресу пристрою і додати "/update", наприклад пристрій має IP адресу "192.168.0.102" тоді в браузері набрати таку адресу "192.168.0.102/update" і ви потрапите на сторінку оновлення прошивки. Обирайте файл прошивки і тисніть кнопку "UPDATE". Після оновлення пристрій перезавантажиться і почне працювати знову.

Приклад роботи


середу, 13 липня 2016 р.

Літній душ автомат

Літній душ автомат

Передмова

Добре коли приїжджаєш на дачу, чи повертаєшся здалеку до дому, а тебе вже чекає тепла, нагріта сонцем, вода в душі. І можна негайно прийняти його. А якщо приїхав на дачу ранком і вода ще не нагрілась, або повернувся до дому дуже пізно і вода вже охолола? То треба передбачити її нагрів. А ще добре щоб і потрібний рівень води підтримувався. Бо можна забутись набрати, або за час, коли не був на дачі, вона випарувалась. Чи просто щоб вода була свіжою і не заплила зеленою водорістю. Постійно підігрівати воду і тримати рівень води в літньому душі це непомірне марнотратство. Але завдяки нескладній автоматиці можна автоматизувати процес контролю рівня води в душі і її температури. І приготувати душ заздалегідь на потрібний час і день, абсолютно автоматично.

Необхідні модулі та деталі

Схема підключення модулів

Натисни на зображенні щоб збільшити. 
Схема підключення модулів для автоматичного літнього душа
Схема підключення зображена на малюнку. Фаза та нуль побутової електромережі 220 Вольт подати на контакти колодки. Далі вже з колодки 220 В подаємо напряму на реле часу. Реле часу живиться від електромережі постійно. Через контакти реле "Реле часу" підключаємо фазу яка буде живити знижувальний трансформатор, при спрацюванні "Реле часу" і далі ця фаза йтиме на контакти реле термостату і на вільний контакт з'єднувальної колодки. До цієї "комутованої фази" і нуль електромережі підключимо електротен води. З трансформатора, 12 Вольт змінної напруги, подамо на вирівнювач з стабілізатором на 5 Вольт. На виході маємо постійну напругу 12 Вольт, та 5 Вольт. 12 Вольт живить термостат і через реле "рівня води" 12 Вольт подається на електроклапан води. А 5 Вольт живить плату "рівня води". До плати термостату під'єднати герметичний датчик температури (постачається в комплекті з платою), який занурюється у воду. А до плати рівня води під'єднати датчик рівня води, який теж знаходиться в ємності з водою. Датчик рівня води я зробив з пластикового коробу для дротів, де закріпив оголені дроти за принципом як і в датчику рівня води, що поставлявся в комплекті з платою.

Принцип роботи

По заданій програмі спрацьовує реле часу і подає напругу на трансформатор і контакти реле термостату. Трансформатор подає живлення на плати "термостат" і "рівня води". Плата рівня води перевіряє рівень води в ємності і якщо не повний бак, то спрацьовує реле "рівня води" і 12 Вольт подається на електроклапан води. В бак подається вода. Коли вода досягне рівня "повний", електроклапан води закриється і постачання води в бак припиниться. Термостат перевіре рівень температури води і якщо температура буде нижча за потрібниу, спрацює реле термостату і подасть живлення на електротен нагріву води. По завершенню програми "реле часу" відключить всю електроніку.

Приклад готового пристрою

Зовнішній вигляд готового макету
Працює надійно вже другий літній сезон. Зробив як макет. Оформити у короб якось руки не доходять. Знаходиться в недоступному для жінок і дітей місці.
Автодуш в роботі
В мене запрограмовано реле часу на вмикання кожного дня о 6 ранку на 10 хвилин, щоб набралась свіжа вода. Протягом дня, як сонечко нагріло воду, ми користуємось душем щоб освіжитись коли спекотно. А на кожен вечір з 19 по 21 годину душ вмикається щоб добрати води і догріти її в межах 38 - 42 градуси по Цельсію. І вже всі миємось перед сном. Коли потрібно гаряча вода поза планом, на "реле часу" передбачено ручне вмикання чи вимикання автоматичного душа.

Примітка

Огляд всіх модулів автоматичного душа є у попередніх блогах, дивитись за посиланнями в цьому блозі у розділі "Необхідні модулі та деталі".

Обов'язково до подачі живлення 220 Вольт на колодку, передбачити пакетник-автомат на 16А. Закрити всю автоматику в короб. Додержуватись техніки електробезпеки. 220 Вольт небезпечне для життя.