пʼятницю, 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". Після оновлення пристрій перезавантажиться і почне працювати знову.

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


2 коментарі: