Съдържание:
- Консумативи
- Стъпка 1: Схеми и изходен код
- Стъпка 2: Работа на веригата
- Стъпка 3: Проверка на здравето
- Стъпка 4: Измерване на мощността и живот на батерията
- Стъпка 5: Бъдещи подобрения
Видео: Безжичен сензор за врата - ултра ниска мощност: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Още един сензор за врата !! Е, мотивацията за създаването на този сензор беше, че много от тях, които видях в интернет, имаха едно или друго ограничение. Някои от целите на сензора за мен са:
1. Сензорът трябва да е много бърз - за предпочитане по -малко от 5 секунди
2. Сензорът трябва да работи от 3.7V литиево-йонна батерия, тъй като имам десетки от тях
3. Сензорът трябва да работи в продължение на много месеци с едно зареждане на батерията. Той трябва да консумира <10uA в режим на заспиване
4. Сензорът трябва да може да се събуди за предаване на критични данни, като например състоянието на батерията, дори когато вратата не се задейства дълго време.
5. Сензорът трябва да предава данни към MQTT тема, когато вратата е отворена, както и когато вратата е затворена
6. Сензорът трябва да консумира същото количество енергия, независимо от състоянието на вратата
Работа на сензора:
Сензорът има 2 основни контролера. Първият е малък микроконтролер ATiny 13A. Вторият е ESP, който обикновено е в режим на заспиване и се събужда само когато ATiny го позволява. Цялата схема също може да бъде направена само от ESP, като я използвате в режим на заспиване, но консумираният от нея ток е много по -голям от необходимия, за да издържи батерията с месеци, така че ATTiny идва на помощ. Той служи само за събуждане на всеки N секунди, търсене на събитие на вратата или събитие за проверка на здравето, ако има такова, той държи пина CH_PD на ESP към HIGH и изпраща подходящия сигнал от типа на събитието до ESP. Неговата роля приключва дотук.
След това ESP поема, чете типа на сигнала, свързва се с WiFi/MQTT, публикува необходимите съобщения, включително нивото на батерията и след това се изключва, като връща EN щифта обратно на LOW.
Използвайки тези чипове по този начин, аз се възползвам от ниския ток на заспиване на ATtiny и нулевия ток на празен ход на ESP, когато чипът е деактивиран чрез пина CH_PD.
Консумативи
Предварително изискване:
- Познаване на програмирането на ATTiny & ESP 01
- Познаване на компонентите за запояване на печатна платка
ESP-01 (или всеки ESP)
ATTiny 13A - AVR
LDO 7333 -A - Регулатор на напрежението с ниско отпадане
Резистори - 1K, 10K, 3K3
Кондензатори: 100uF, 0.1 uF
Превключвател с бутон, микро ON/OFF превключвател - (и двата по избор)
Диод - IN4148 (или друг еквивалент)
Литиево-йонна батерия
Reed Switch
Калъф за всичко
Запояване, печатни платки и др
Стъпка 1: Схеми и изходен код
Схемите са както е показано на приложената диаграма.
Включих P канал MOSFET за защита от обратна полярност. Ако нямате нужда от това, можете да го пропуснете. Всеки M канал от P канал с ниско Rds ON е подходящ.
Понастоящем ESP няма възможност за OTA, но това е за бъдещо подобрение.
Изходен код интелигентен сензор за врата
Стъпка 2: Работа на веригата
ATTiny Работен поток
Магията тук се случва в това как ATTiny следи позицията на превключвателя на вратата.
Нормалният вариант би бил да се прикрепи резистор за изтегляне към превключвателя и да се следи състоянието му. Това има обратната страна на постоянния ток, консумиран от издърпващия резистор. Начинът, по който това е избегнато тук, е, че използвах два пина за наблюдение на превключвателя, а не един. Използвах PB3 и PB4 тук. PB3 е дефиниран като вход, а PB4 като изход с вътрешен INPUT_PULLUP на PB3. Обикновено PB4 се държи ВИСОКО, когато ATtiny е в режим на заспиване. Това гарантира, че няма протичане на ток през входния резистор за повдигане, независимо от положението на тръстиковия превключвател. т.е. Ако превключвателят е затворен, и PB3 и PB4 са ВИСОКИ и затова между тях не протича ток. Ако превключвателят е отворен, няма път между тях и така токът е нула. Когато ATtiny се събуди, той записва LOW на PB4 и след това проверява състоянието на PB3. Ако PB3 е ВИСОК, тогава герконът е ОТВОРЕН, иначе е ЗАКРИТ. След това той записва обратно HIGH на PB4.
Комуникацията между ATtiny & ESP се осъществява чрез два пина PB1 / PB2, свързани към Tx / RX на ESP. Определих сигнала като
PB1 PB2 ====== Tx Rx
0 0 ====== WAKE_UP (Проверка на състоянието)
0 1 ====== SENSOR_OPEN
1 0 ====== SENSOR_CLOSED
1 1 ====== НЕИЗПОЛЗВАНО
Освен изпращането на сигнала към ESP, той изпраща и ВИСОК импулс на PB0, който е свързан към пина ESP CH_PD. Това събужда ESP. Първото нещо, което ESP прави, за да задържи GPIO0 HIGH, който е свързан към CH_PD, като по този начин гарантира неговите мощности, дори ако ATTiny отнеме PB0 HIGH. Контролът сега е с ESP, за да определи кога иска да се изключи.
След това се свързва с WiFi, MQTT, публикува съобщението и се изключва, като пише LOW на GPIO0.
ESP 01 Работен поток:
ESP потокът е направо напред. Той се събужда и чете стойностите на пиновете Tx/Rx, за да определи какъв тип съобщение да бъде публикувано. Свързва се с WiFi и MQTT, публикува съобщението и се изключва.
Преди да се изключи, той отново проверява стойностите на входните щифтове, за да види дали са се променили от последното му четене. Това е за да се погрижите за бързо отваряне и затваряне на вратата. Ако нямате тази проверка, в някои случаи може да пропуснете затварянето на вратата, ако тя се затвори в рамките на 5-6 секунди от отварянето. Практическият сценарий на отваряне и затваряне на вратата в рамките на 2 секунди или повече се улавя добре от цикъла while, който продължава да публикува съобщенията, стига текущото състояние на вратата да е различно от предишното. Единственият сценарий, който може да пропусне да запише всички събития за отваряне/затваряне, е когато вратата се отваря/затваря многократно в рамките на 4-5 сек прозорец, което е много малко вероятно случай - вероятно случай на дете, което си играе с вратата.
Стъпка 3: Проверка на здравето
Имах нужда от начин да получа съобщение за проверка на състоянието от ESP, където изпраща нивото на батерията на ESP, както и да се уверя, че сензорът работи добре без ръчна проверка. За тази цел ATTiny изпраща сигнал WAKE_UP на всеки 12 часа. Тя може да бъде конфигурирана чрез променливата WAKEUP_COUNT в кода ATtiny. Това е много полезно за врати или прозорци, които се отварят рядко и затова може да не разберете дали нещо не е наред със сензора или батерията му.
В случай, че не се нуждаете от функционалност за проверка на състоянието, тогава не е необходима цялата концепция за използване на ATTiny. В този случай можете да намерите други дизайни, създадени от хора, при които захранването към ESP се подава чрез MOSFET и така можете да постигнете нулев ток, когато вратата не се задейства. Има и други неща, за които трябва да се погрижите, като текущото теглене да бъде същото при отворена врата и позиция за затваряне на вратата - за това някъде видях дизайн, който използваше тръстиков превключвател с 3 състояния вместо обичайното 2 състояние.
Стъпка 4: Измерване на мощността и живот на батерията
Измерил съм текущата консумация на веригата и отнема ~ 30uA, когато спи и наоколо. Минавайки по техническите данни на ATTiny, тя трябва да бъде около 1-4 uA за цялата верига, включително тока на покой на LDO, но след това измерванията ми показват 30. MOSFET и LDO консумират незначителен ток.
Така батерията от 800 mAH трябва да издържи дълго време. Нямам точна статистика, но я използвам на 2 от вратите си повече от година и всяка 18650 клетка с около 800mAH останала в тях издържа около 5-6 месеца на главната ми врата, която се отваря и затваря в поне 30 пъти на ден. Този на вратата на покрива, който се отваря само няколко пъти в седмицата, продължава 7-8 месеца.
Стъпка 5: Бъдещи подобрения
1. ESP не потвърждава доставката на съобщението MQTT. Програмата може да бъде подобрена, като се абонирате за темата, в която публикува съобщението за потвърждаване на доставката или може да се използва библиотека Async MQTT за публикуване на съобщение с QoS 1.
2. OTA актуализация: ESP кодът може да бъде променен, за да прочете тема за MQTT за актуализация и така да влезе в OTA режим, за да получи файл.
3. ESP01 може да бъде заменен с ESP-12, за да получи достъп до повече входни ПИН кодове и така може да прикачи повече сензори към същия. В този случай комуникацията чрез 2 -битовия метод не е възможна. Това може да бъде подобрено, за да се реализира I2C комуникация между ATtiny & ESP. Това е малко сложно, но работещо. Работя в друга настройка, където ATTiny изпраща стойности на въртящ се енкодер до ESP през I2C линия.
4. Токовата верига следи вътрешния Vcc на ESP. Ако използваме ESP12, това може да бъде променено, за да се отчете действителното ниво на батерията чрез щифта на ADC.
5. В бъдеще ще публикувам и модификация, която може да се използва като самостоятелен сензор, без да е необходим MQTT или каквато и да е система за домашна автоматизация. Сензорът ще работи самостоятелно и може да осъществи телефонно обаждане при задействане - разбира се, за това се нуждае от интернет връзка.
6. И списъкът продължава …
7. Обратна защита на батерията - ГОТОВО (Действителните снимки на устройството са стари и затова не отразяват MOSFET)
Препоръчано:
Изключително ниска мощност WiFi система за домашна автоматизация: 6 стъпки (със снимки)
Система за домашна автоматизация с ултра ниска мощност: В този проект ние показваме как можете да изградите основна локална система за домашна автоматизация в няколко стъпки. Ще използваме Raspberry Pi, който ще действа като централно WiFi устройство. Като има предвид, че за крайните възли ще използваме IOT Cricket, за да направим батерията мощна
Лесен BLE с много ниска мощност в Arduino, част 2 - Монитор за температура/влажност - Rev 3: 7 стъпки
Лесен BLE с много ниска мощност в Arduino, част 2 - Монитор за температура/влажност - Ред. 3: Актуализация: 23 ноември 2020 г. - Първа подмяна на 2 x AAA батерии от 15 януари 2019 г., т.е. 22 месеца за 2xAAA алкални Актуализация: 7 април 2019 г. - Ред. 3 на lp_BLE_TempHumidity, добавя графики за дата/час, използвайки pfodApp V3.0.362+и автоматично регулиране, когато
Определете средната консумация на ток на устройство с прекъсване при ниска мощност: 4 стъпки
Определете средната консумация на ток на устройство с ниска мощност с прекъсване: Въведение От любопитство исках да знам колко дълго могат да издържат батериите в сензора ми за дистанционна температура. Необходими са две AA клетки последователно, но няма голяма помощ да поставите амперметър на линия и да наблюдавате дисплея, защото консумираната енергия
Как да направите персонализирана печатна платка с лазерен гравьор с ниска мощност: 8 стъпки (със снимки)
Как да направите персонализирана печатна платка с помощта на лазерен гравьор с ниска мощност: Когато става въпрос за изработка на домашно изработена печатна платка, можете да намерите няколко метода онлайн: от най -елементарните, като използвате само химикалка, до по -сложните, използващи 3D принтери и друго оборудване. И този урок пада върху последния случай! В този проект аз
Лесен BLE с много ниска мощност в Arduino, част 3 - Подмяна на Nano V2 - Стъпки 3: 7 (със снимки)
Лесен BLE с много ниска мощност в Arduino Част 3 - Замяна на Nano V2 - Ред 3: Актуализация: 7 април 2019 г. - Ред 3 на lp_BLE_TempHumidity, добавя графики за дата/час, използвайки pfodApp V3.0.362+и автоматично ограничаване при изпращане на данни Актуализация: 24 март 2019 - Ред 2 на lp_BLE_TempHumidity, добавя още опции за графики и i2c_ClearBus, добавя GT832E