Показ дописів із міткою сенсор. Показати всі дописи
Показ дописів із міткою сенсор. Показати всі дописи

вівторок, 3 жовтня 2017 р.

ESP8266: Вихід з режиму deep-sleep як по RTC так і по зовнішньому перериванню

Передмова

При розробці одного пристрою IoT на ESP8266, виникла необхідність живити цей пристрій від батарейок. Щоб забезпечити довге життя батарейкам потрібно вводити ESP8266 в режим глибокого сну (deep sleep), а прокидатись по зовнішній події, наприклад в моєму випадку це спрацювання сенсору присутності людини "Human detector sensor". Що ж, режим deep-sleep у чипа ESP8266 в наявності, а також в наявності штатні способи виходу зі сну, як по внутрішньому RTC, так і по зовнішньому перериванню. Для пробудження по RTC достатньо з'єднати піни GPIO16 і RST. І тоді, наприклад, по команді:
ESP.deepSleep(10e6);
ESP8266 увійде в режим глибокого сну, а через 10 секунд прокинеться і почне виконувати код з самого початку.
Якщо потрібно пробудження по зовнішньому перериванню то потрібно забезпечити короткий імпульс логічного нуля на виводі RST чипу ESP8266. І тоді відправивши чип у глибокий сон "навічно":
ESP.deepSleep(0);
Можна кнопкою "Reset", яка під'єднана до виводу RST чипу і до GND схеми, вивести з режиму глибокого сну, або замість кнопки буде якийсь датчик чи сенсор, який при спрацюванні буде давати короткий імпульс логічного нуля.
Наче нічого складного. Але є одне але.

Чому не все так просто

Наприклад, в моєму випадку з PIR сенсором:
HC-SR501 Infrared PIR Motion Sensor Module
Цей сенсор, при спрацюванні має на виході стійку логічну одиницю протягом від декількох секунд до декількох хвилин. В залежності від налаштувань сенсора. А нам потрібен короткий імпульс логічного нуля. Бо чип ESP8266 не перезавантажиться поки на сенсорі PIR буде логічна одиниця. Значить потрібна схема не тільки інвертору , яка з логічної одиниці перетворить сигнал на логічний нуль, а ще й сформувати короткий імпульс логічного нуля по фронту що наростає на вході.
Це добре, є такі схеми, але ж хочеться мати і пробудження по внутрішньому RTC (а раптом при подальшій розробці пристрою захочеться розширити функціонал?). Здавалося нічого складного, з'єднав GPIO16 з RST і користуйся. Але так не можна робити, бо в нас крім GPIO16 до RST буде під'єднано, як кнопку "reset" для ручного перезавантаження ESP8266, так і "формувач короткого імпульсу". Потрібно GPIO16 з'єднати з RST через струмообмежувальний резистор близько 470 Ом. Спробувавши з'єднання через резистор, мій ESP8266 так і не зміг прокинутись за допомоги внутрішнього RTC. Додавши між GPIO16 та RST "буферний емітерний повторювач", чип ESP8266 чудово і безвідмовно прокидався через назначений час. Добре, додамо до схеми і емітерний повторювач. Готового рішення в інтернеті я не знайшов, хоч по всіляким форумам люди шукають рішення. Наведені схеми не робочі, або взагалі не мають ніякого логічного сенсу. Тож втілимо своє рішення-схему самі.

Схемна реалізація виходу з режиму DEEP-SLEEP


Коли спрацьовує PIR Sensor на його виході йде перемикання стану з "0" на "1". Конденсатор C1 за короткий час заряджається і на короткий час відкривається транзистор Q1, а також на короткий час відкриється буферний емітерний повторювач на транзисторі Q2. Забезпечивши короткий імпульс логічного нуля на виводі RST чипу ESP8266, саме під час перекидання стану виходу PIR sensor з 0 на 1. Подальша поведінка PIR sensor не впливає на чип поки сенсор не перемикнеться в початковий стан, а для програмного контролю, чи спрацював PIR сенсор, чи вже скинувся в початковий стан можна контролювати на якомусь вільному виводі GPIO чипу ESP8266. В мене на схемі це "D1" для NODE MCU, або "GPIO5" для ESP8266.
Щоб мати можливість прокидатись і по внутрішньому RTC, під'єднаємо на вхід буферного емітерного повторювача вихід "D0" для NODE MCU, або "GPIO16" для ESP8266, через резистор на сотні Ом (в мене під рукою був 330 Ом, але підійде мабуть будь який в межах 200 Ом - 10 кОм).
До виходу схеми під'єднаємо кнопку "Reset", для ручного скидання чипу і сам пін "RST" чипу "ESP8266".
Схема пройшла випробування і реально працює. Радіймо!

Модифікація схеми

При подальшому розвитку проекту, відпала необхідність контролювати стан PIR сенсору мікроконтролером. Плюс необхідно було передбачити неможливість перезавантаження пристрою від PIR сенсору, коли пристрій "пробуджений" і працює. Схему переробив і виконав на мікросхемі дрібної логіки 74HC00 з 4-ма елементами 2І-НІ.
Схема виходу з режиму deep-sleep як від внутрішнього RTC так і від зовнішнього переривання
Коли пристрій "спить" на виході D1 немає ніякого сигналу, але вхід логічного елементу D1.3 (інвертор) підтягнуто до загального дроту і має на вході логічний нуль. Цей нуль інвертується в логічну одиницю на виході і подається на один з входів елементу D1.1. Ця одиниця виконує роль дозволу на перезавантаження пристрою як від PIR сенсору, так і по RTC (короткий імпульс логічного "0" на D0). Коли PIR сенсор спрацює і на його виході буде логічна "1", конденсатор почне заряджатись і на короткий час на іншому вході елементу D1.1 з'явиться "1". І на цей короткий час на виході елементу D1.1 з'явиться логічний "0" і NodeMCU перезавантажиться, та почне виконувати програму. Достатньо на початку програми вихід D1 плати NodeMCU встановити в високий стан (логічна "1") і маємо на виході елементу D1.3 логічний "0", який буде виконувати роль "заборони" перезавантаження поки NodeMCU працює. Тоді незалежно від того який стан на іншому вході елементу D1.1 на його виході буде постійно логічна "1". Щоб працювало пробудження по таймеру, а це короткий логічний "0" на виводі D0 плати NodeMCU, в нашому випадку, треба його інвертувати до короткої логічної "1" елементом D1.2, та через діод в прямому напрямку подати на вхід елементу D1.1, там де вже під'єднано PIR сенсор. Така собі "імітація" спрацювання PIR сенсора. Діод виконує роль елементу АБО. Функцію іншого діода виконує конденсатор. Так що коли NodeMCU "спить", то короткий імпульс логічного "0" на D0, "АБО" перепад з "0" на "1" на PIR сенсорі - пробудить пристрій.

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

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

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

Передмова

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

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

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

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

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

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

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

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

Примітка

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

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

суботу, 29 серпня 2015 р.

Цифровий термостат або регулятор температури

Цифровий термостат або регулятор температури

Передмова

На виробництві, чи в побуті нам завжди потрібно контролювати температуру. Це кондиціонер, обігрівач, інкубатор, акваріум, холодильник, духовка, паяльна станція, праска, процесор комп'ютера і багато - багато іншого. Для контролю температури якогось об'єкту, чи то його охолодження, чи то його нагрівання потрібен контролер тієї самої температури. Їх існує безліч видів і варіантів. Це і звичайна металева термопластина, яка під дією температури деформується і тим самим з'являється, або зникає контакт на елементі що нагріває, або охолоджує. І аналоговий термоконтролер на дискретних елементах з "операційником". А також цифровий термостат, що є найцікавіший для нас.

Зовнішній вигляд і характеристики термостату

Зовнішній вигляд. Передня сторона плати.
На передній панелі розташовані три дисплея (дворозрядні семисегментні світлодіодні індикатори): по центру "поточна температура", ліворуч "температура старту", праворуч "температура фініш". Два світлодіода: ліворуч червоний - "старт", праворуч зелений - "стоп".
Чотири кнопки для встановлення температури "старт" і "стоп".
Зовнішній вигляд. Задня сторона плати.
На задній панелі розташовані елементи схеми, пищалка (бузер), реле, роз'єм для сенсора температури і дві колодки для живлення термостату і контакти реле.

По кутках плати присутні чотири отвори для кріплення під гвинт М3.

Температурний діапазон: -9-99 ℃
Точність: 1 ℃
Точність регулювання: 1 ℃
Діапазон встановлення: -9-99 ℃
Частота оновлення: 0.5 секунд
Живлення: 12 В
Вихід: релейний вихід, 220 В 10A або 10A 12 В
Розмір плати: 78x51mm
Датчик температури: NTC (3950-10k 1%)

Встановлені температурні режими зберігаються в енергонезалежній пам'яті термостату. Ваші налаштування не зіб'ються коли термостат буде без живлення.

Призначене для підтримки температури повітря або температури води. Наприклад, акваріум, інкубатор, ємність з водою для душу, електричний камін для підтримки потрібної температури в кімнаті, тощо.

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

Цифровий індикатор:
Середній червоний світлодіодний дисплей показує поточну температуру.
Зелений, що ліворуч, цифровий дисплей, встановлена температура початку роботи реле.
А з правого боку зелений цифровий дисплей, встановлена температура зупинки роботи реле.

Кнопки:
Старт "▲ ▼" для встановлення температури початку роботи реле.
Стоп "▲ ▼" для встановлення температури зупинки роботи реле.

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

Схема підключення
Схема підключення нагрівального елементу для води може виглядати приблизно так. На клеми "-DC+" подаємо плюс і мінус 12 вольт з джерела живлення постійного струму. А нагрівальний елемент, який живиться від 220 вольт змінного струму підключаємо до контактів реле, як вказано на малюнку.

Інструкція з експлуатації

Охолодження:
Потрібно встановити початкове значення температури "Старт" більшим за значення температури зупинки реле "Стоп".
Коли поточна температура більша або дорівнює температурі "Старт", реле спрацьовує, холодильне обладнання вмикається.
Якщо поточна температура менша, або дорівнює температури "Стоп", реле вимикається, холодильне обладнання вимикається.

Наприклад: Встановіть стартову температуру 30 ℃ , а температуру зупинки 25 ℃,
Коли поточна температура ≥ 30 ℃, реле спрацьовує, вмикається індикатор "Старт" (червоний вогник).
Якщо поточна температура ≤ значення 25 °, реле вимкнеться і індикатор "Стоп" (зелений вогник).

Нагрівання:
Коли поточна температура менша або дорівнює температурі "Старт", реле спрацьовує, нагрівальний елемент вмикається.
Якщо поточна температура більша або дорівнює температурі "Стоп", реле розриває контакти, нагрівальний пристрій вимикається.

Наприклад: Встановіть початкову температуру 25 ℃, кінцеву температуру 30 ℃.
Якщо поточна температура ≤ значення 25 ℃, реле замкнуло контакти, спрацював індикатор "Старт"(червоний вогник).
Коли поточна температура ≥ 30 ℃, реле розірве контакти, спрацює індикатор "Стоп" (зелений вогник).

Де купити

Відеогляд термостату

Пропоную відеоогляд термостату з поясненням роботи і випробуванням його на макеті.

неділю, 10 травня 2015 р.

Електронний конструктор "Сенсор рівня води"

Електронний конструктор "Сенсор рівня води"

Передмова

Для автоматизації контролю рівня води і автоматичного поповнення води в своєму літньому душі прикупив на BANGGOOD електронний конструктор Sensor Water Level Detection . Там є вже зібрані плати, або набір деталей з платою для самостійного збирання. Обрав набір для самостійного збирання - дешевше і задоволення більше.

Призначення

Сенсор рівня води (Sensor Water Level Detection) необхідний для контролю рівня води в ємності. І автоматичної подачі рідини, коли ємність спорожніє. Та автоматичного припинення подачі рідини, коли ємність наповниться. 

Комплектація

Набір прийшов в простому пластиковому пакетику. Містив всі необхідні деталі, дві плати і дроти з роз'ємами, що з'єднують плату електроніки з платою сенсора. Роз'єм з дротами для живлення плати. Схеми електричної принципової і опису роботи сенсора в наборі не було.
Вміст набору

Складання

Хоч схема сенсора була відсутня, при складанні пристрою труднощів не виникло. Друкована плата була якісною і розташування деталей та їхні номінали були чітко роздруковані на самій платі.
Паяти акуратно. Спочатку впаяв всі пасивні елементи: резистори і конденсатори. Потім: діоди, світлодіоди, транзистори, мікросхему. На останок: реле, роз'єми, кнопку. Транзистори і мікросхему не перегрівати. Панельку для мікросхеми не застосовував, так надійніше.
Готовий пристрій

Випробування і принцип роботи

Для перевірки роботи та дослідження алгоритму роботи пристрою зібрав макет з самого пристрою і склянки води. Живиться сенсор напругою 5 вольт.
Працює пристрій так:
Як немає води - світиться два червоних світлодіоди. Один червоний світлодіод означає що рівень води на мінімумі, інший що реле увімкнулось і своїми контактами подало живлення на електроклапан чи електронасос. 
Як вода стала надходити до ємності і собою замкнула нижні контакти датчика - світиться жовтий світлодіод - з реле нічого не відбувається.
Як вода досягла верхніх контактів датчика - світиться зелений світлодіод і реле відмикається. Контакти розривають подачу живлення на електроклапан чи електронасос і подача води до ємності припиняється.
Як падає рівень води в ємності і верхні контакти датчика оголюються, то світиться жовтий світлодіод - з реле нічого не відбувається.
Як оголюються нижні контакти датчика, то світиться червоний світлодіод і реле увімкнеться. Розпочнеться подача води.
Як кнопка на платі в натиснутому стані, то поведінка реле зовсім протилежна: при повній ємності реле вмикається, при пустій ємності реле вимикається.

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

Схема підключення
З малюнку має бути зрозумілою схема підключення. Додаткових пояснень не потребує.

Переваги та недоліки

Почнемо з переваг: Низька ціна, від 4 до 7 умовних одиниць (залежить від продавця). Якісна друкована плата. Простота конструкції (доступно для початківців). Містить все для виготовлення готового пристрою.
Недоліки: Мала ступінь рівнів води (бак пустий, в баку є вода, бак повний). Закороткий датчик води, для своїх потреб необхідно робити самотужки, розміром, який підійде для мого душу. Чотири дроти, що з'єднують датчик рівня з платою електроніки.

Відео-огляд сенсора рівня води