Съдържание:

ESP-01 Сензор за движение с дълбок сън: 5 стъпки
ESP-01 Сензор за движение с дълбок сън: 5 стъпки

Видео: ESP-01 Сензор за движение с дълбок сън: 5 стъпки

Видео: ESP-01 Сензор за движение с дълбок сън: 5 стъпки
Видео: ДЕШЕВАЯ камера УДИВИЛА после ОБНОВЛЕНИЯ, начала СЛЕДИТЬ ЗА ЛЮДЬМИ!!! 2024, Ноември
Anonim
Image
Image

Работя по създаването на домашни сензори за движение, които изпращат имейл съобщение при задействане. Има много примерни инструкции и други примери за това. Наскоро трябваше да направя това с PIR сензор за движение с батерия и ESP-01. ESP-01 е много функционален и има всички необходими възможности, така че защо да не използвате минималните и най-евтините необходими? Към микса беше добавен още един отделен и отдалечен модул ESP-01, който задейства зумер при задействане на сензора за движение.

Кодът и евентуалното оформление на веригата са събрани от множество източници в мрежата и не мисля, че мога да ги идентифицирам конкретно. Идеята за изпращане на имейли чрез gmail идва от инструктируеми и други източници, а крайният код е амалгама от тези източници. Дълбокият сън за работа ме водеше по много пътища, които често се оказваха безплодни. Смешното е, че след като един път се окаже плодотворен, вие преставате да търсите повече пътища. Затова благодаря на всички, които допринесоха за моя успех и все още са неизвестни.

Имах същия проблем да накарам PIR сензора да работи при задействане на дълбокия сън на ESP-01. Много пътища, докато имаше един, който да работи.

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

ESP-01 поддържа дълбок сън, както и всеки друг модул ESP8266, стига да не се нуждаете от време на сън. Ако искате модулът да се събуди след определено време, ESP-01 не е модулът, който да използвате. Но не това исках. Изминалото време е безсмислено при използване на PIR. Исках ESP-01 да се събуди само когато се задейства от движение, засечено от PIR. Ако няма движение, усетено с часове или дни, ESP-01 остава в спящ режим, използвайки минимална мощност на батерията.

Ще видите много схеми, които използват GPIO16, свързани към ESP8266 Reset, защото GPIO16 е сигнал за събуждане. Това е вярно, но това е сигнал за събуждане от времевия сън. Можем да пренебрегнем този ПИН, което е добре, защото не е налично на ESP-01.

По принцип всичко, от което се нуждаем, е да получим сигнала от PIR, за да задейства щифта за нулиране на ESP-01. Първата трудност, която ще предположите, е, че Reset се задейства при НИСКИ сигнал и PIR изпраща ВИСОК сигнал при задействане. Нулирането също трябва да бъде ВИСОКО или плаващо при зареждане. Така че, за да бъде това кратко, след като опитах различни схеми, се спрях на използването на NPN транзистор с издърпващ се резистор, за да поддържам щифта RESET HIGH по време на зареждане. Изходът от PIR е минимален, но осигурява достатъчно базов ток за включване на транзистора.

Както ще видите на схемата по-долу, ESP-01 се събуждаше от дълбок сън всеки път, когато PIR усети движение.

Но имаше друг проблем. Нулирането на ESP-01 се случи едва след като PIR спря да усеща движение и се върна към нисък сигнал, изключвайки транзистора и връщайки щифта за нулиране на HIGH поради издърпващия резистор. Това би означавало, че имейлът няма да бъде изпратен, нито зумерът ще бъде активиран, докато СЛЕД ПИР не спре да усеща движение. Исках спусъкът да се случи веднага щом се усети движение.

Това, което определих от това поведение, е, че ESP-01 всъщност се задейства по нарастващия край на сигнала. Задържането на щифта за нулиране към земята всъщност не задейства ESP-01 от дълбок сън, но в момента, в който напрежението се повиши до сигнала HIGH, тогава се случва нулирането.

Моят много прост отговор на това поведение беше да добавя кондензатор към линията между изхода PIR и базата на транзистора. Това накара транзистора да се включи само по време на зареждане на кондензатора. След като се зареди, няма допълнителен ток и транзисторът се изключва. Резисторът 5k позволява на тока да се оттича към земята. Тествах това с LED вместо ESP-01 и можех да видя как LED светкавицата свети за част от секундата преди да се изключи. Този малък импулс беше достатъчен, за да издърпа щифта за нулиране на земята за момент и достатъчно дълго, за да задейства Нулирането от дълбокия сън.

Стъпка 1: ESP-01 модул за дълбок сън

ESP-01 модул за дълбок сън
ESP-01 модул за дълбок сън
ESP-01 модул за дълбок сън
ESP-01 модул за дълбок сън

Модулът за дълбок сън използва две работни напрежения. Случайните 5v+ на батерията за PIR, а също и 3.3-волтова платка за регулатор за ESP-01. Включвам и диод във веригата, за да предотвратя повредените части от обратно напрежение. Това използва малко допълнителна мощност и намалява напрежението на батерията с 0,7 волта. Диодът може да бъде оставен извън веригата, ако сте сигурни, че никога няма да обърнете кабелите на батерията. Превключвател също се добавя от удобство.

Този модул е малка актуализация на първоначалното ми оформление на не-дълбок сън. В конфигурацията без дълбок сън PIR е директно свързан към RX щифт на ESP-01. Използвам RX щифта на ESP-01 като входен щифт за PIR по няколко причини. GPIO0 не работи, тъй като при стартиране изходният ПИН код на PIR ще бъде НИСКИ, което ще доведе до влизане на ESP-01 във флаш режим. Не използвах GPIO2, защото тогава не можех да използвам вградения светодиод за визуална обратна връзка. Пиновете RX и TX често се описват като допълнителни IO пинове, но моят опит е, че RX е допълнителен INPUT щифт, а TX е допълнителен OUTPUT щифт.

В конфигурация за дълбок сън, RX връзката не е строго необходима. Използвам го само за да наблюдавам колко дълго се задейства PIR чрез включване на светодиода, докато входът е ВИСОК. Както бе споменато по -горе, ако изчистите цикличната функция и използвате само рутинната настройка, RX връзката е ненужна.

Ето списъка с части за модула за дълбок сън ESP-01:

1 - 5 x 7 cm PCB прототипна платка

1 - 2 пинов конектор

2 - 1 x 3 женски заглавки

1 - AMS1117 - платка на регулатора на напрежението 3.3

1 - 1 x 3 Прав ъгъл Мъжки щифт за заглавка

1 - 1 x 3 гнездо за гнездо за женски контакт

1 - 1 x 4 гнездо за гнездо за женски контакт

1 - 2 x 4 женска глава

1 - 1uf кондензатор

1 - HC -SR501 PIR сензор за движение

1 - 2N2222 Транзистор

1 - 10k резистор

1 - 4.7k резистор

1 - 1k резистор

1 - 1N4148 диод

1 - превключвател SS12D00G4 SPDT

1 - ESP -01

Батерия 1 - 4AA

Моля, обърнете внимание, че във видеото платката използва адаптер за платка ESP-01 вместо заглавката 2 x 4. Докато този адаптер е по -лесен за запояване, заглавката 2 x 4 работи добре и всъщност пасва по -добре.

Стъпка 2: Код за дълбоко заспиване ESP-01

Кодът за дълбок сън изпълнява две функции. Изпратете имейл съобщение (чрез gmail по подразбиране) и изпратете http уеб заявка до свързания модул на зумер ESP-01, за да задейства зумера.

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

Ще трябва да актуализирате шест реда код с вашите специфични стойности, за да работи скицата:

const char* ssid = "xxxxx"; // Вашият WiFi SSIDconst char* password = "xxxxx"; // Вашият низ за парола за WiFi Senders_Login = "xxxxx"; // вход за вашия имейл доставчик String Senders_Password = "xxxxx"; // паролата на вашия имейл доставчик

To = "xxxxxx"; From = "xxxxxx"; // Gmail обикновено предпочита това да е същото като Senders_Login и може да бъде заменено

Открих, че модулът за дълбок сън работи непредсказуемо, когато PIR сензорът е настроен на по -малко от 10 секунди за дължината на задействащото събитие. Моят съм настроен на 20 секунди. Това се оказа много надеждно, но също така означава, че задействането на събития може да се случи с тази честота.

Също така добавих код към функцията за цикъл, за да поддържам ESP-01 включен, докато PIR все още усеща движение. Целият код във функцията цикъл може да бъде премахнат и повикването към дълбок сън да се премести в края на функцията за настройка.

Използвам мигащата функция за визуален индикатор за активност с модула ESP-01.

Докато съм използвал и тествал свързаност с gmail, работят и други доставчици на електронна поща. Опитах няколко. Всъщност намерих gmail за по -обезпокоителен. Gmail изисква вашият акаунт да е конфигуриран за достъп от по -малко сигурни приложения. Тази настройка на акаунта е изключена по подразбиране, така че не забравяйте да я намерите и да я промените на по -малко сигурна. Gmail НЯМА да работи по друг начин.

Ако решите да имате повече от един модул на зумера, просто добавете допълнителни обаждания на http клиента (повторете трите реда код, но променете използвания ip адрес и също така определете само променливата httpCode като int веднъж!

Обърнете внимание, че ip адресът на зумера е кодиран трудно в този модул. Не е нужно да използвате избрания от мен ip адрес, но трябва да съпоставите ip адреса на уеб обаждането в този модул с ip адреса на настройката на уеб сървъра в следващия модул.

Стъпка 3: Звуков модул ESP-01

Модул за зумер ESP-01
Модул за зумер ESP-01
Модул за зумер ESP-01
Модул за зумер ESP-01
Модул за зумер ESP-01
Модул за зумер ESP-01

Модулът на зумера има доста проста настройка. Той използва USB конектор вместо батерия, защото не мисля, че този модул е подходящ за батерия. Той трябва да остане включен и nework/wifi да е свързан по всяко време, защото никога не знае кога ще бъде направена уеб заявка. Това изисква по -продължително захранване, отколкото са полезни батериите.

Модулите на зумера могат да бъдат поставени удобно на множество места, като осигуряват известие за събитие за задействане на сензора за движение, независимо къде се намирате!

Звънецът е свързан към 5v на USB конектора и има друга 3.3v регулаторна платка, която осигурява захранване на ESP-01.

Модулът на зумера ще функционира, като използва TX, GPIO0 или GPIO2 за изхода. В моята конфигурация използвам GPIO0. (На снимката на модула проводникът е свързан към GPIO2, но оттогава го преместих.) Въпреки че GPIO0 не работи за модула за дълбок сън (като INPUT), той работи добре с това оформление като OUTPUT. Не се дърпа на земята при зареждане, което ще причини проблеми. Използвах GPIO2, но след това не можах да използвам вградения светодиод за обратна връзка, но като използвам GPIO0 за OUTPUT, мога да използвам вградения светодиод.

Опитах се да използвам NPN транзистор за захранване на зумера във веригата, когато ESP-01 постави ВИСОК сигнал на щифта GPIO0, но резултатите бяха ужасно непоследователни. Звукът сякаш искаше да звучи по всяко време, дори и с много малко мощност. Така че вместо това използвах N канал MOSFET (2n7000) и резултатът беше страхотен. IO щифтът задвижва портата според нуждите.

Въпреки че имаме нужда само от два пина от USB конектора Vcc (+) и Gnd (-), използвам 5-пинов хедър за свързване към платката за допълнителна стабилност и за запояване, преди да свържа USB към регулатора. Моята платка с регулатор 3.3v идва с предварително инсталирани щифтове и в съзнанието ми, с главата надолу. Така че, за да поставите регулатора в щифтовете на заглавката, можете да видите, че платката е скрита, но по -лошото е, че vcc и gnd на регулатора са обърнати от vcc и gnd на USB конектора. Така че проводниците се пресичат.

Също така имайте предвид, че + захранването за активния зумер идва от 5v на USB. Също така 4 -пинов женски гнездо за гнездо работи добре с разположението на щифтовете на зумера.

Списък на частите на модула на зумера на ESP-01:

1 - 5 x 7 печатна платка

1 - USB мини конектор с щифтове (7 пина)

2 - 1 x 3 женски заглавки

1 - AMS1117-3.3 v платка за регулатор на напрежението

1 - 2 x 4 женска глава

2 - 1 x 4 женски гнезда за гнезда

1 - 2N7000 N -канален MOSFET

Резистор 1 - 10 ома

1 - 5v активен зумер

Стъпка 4: Код на модула на зумера на ESP-01

Модулът на зумера действа като прост уеб сървър ESP-01. Той отговаря с просто съобщение на root заявка и когато получи заявката за buzz, ще задейства зумера. GPIO0 се използва за GPIO щифт за сигнала на зумера.

Обърнете внимание, че ESP-01 е конфигуриран с твърдо кодиран IP адрес. Това е необходимо, така че модулът за дълбок сън да е свързан с адреса на зумера.

Подобно на предишния модул, ще трябва да актуализирате два реда код с вашите специфични стойности:

// SSID и парола на вашия WiFi рутер const char* ssid = "xxxxxxx";

const char* парола = "xxxxxxxx";

Ако имате създадени множество модули на зумера, всеки от тях трябва да бъде зареден със собствен уникален ip адрес.

Можете също така да добавите различни методи за бръмчене, които произвеждат различни мелодии на зумера. Например, ако имате PIR сензор на входната врата и един на задната врата, всеки от тях може да направи уеб заявка към всеки от вашите модули на зумера, но един сензор може да има скица, която извиква buzz, а другата скица може да извика buzz2 за да можете да разберете от звука кой сензор е задействан. И така нататък и така нататък! Функцията buzz2 не съществува, а просто копирайте функцията buzz и променете стойностите на забавяне.

За уеб сървъра просто трябва да добавите ред код като този:

server.on ("/buzz2", buzz2);

Стъпка 5: Заключителни мисли

Това е първият ми инструктаж, така че може да съм пропуснал някои практически неща, които трябваше да включа. Регулаторната платка AMS1117-3.3, която използвах, включва малък светодиод, който светва при включване. За модула за дълбок сън не исках това да включва и да източва ненужно енергия. Затова разпаях каквото можех от едната страна на светодиода на дъската и след това използвах помощен нож, за да изрежа линията за проследяване. Това беше по -лесно, отколкото си мислех и предотвратява светването на светодиода. Не успях да определя какво е потреблението на енергия, когато ESP-01 е в дълбок сън, но може би ще имам отговор след няколко седмици. Мой колега работеше със сензора (не в дълбок сън) и установи, че батериите са изтощени (5AA) за около седмица. Мисля, че тази настройка трябва да даде месец или дори повече. Ще видим.

Модулът за дълбок сън струва около $ 8 CDN на части (батериите не са включени!), А модулът на зумера - $ 5.

Препоръчано: