- Схема на веригата за домашна автоматизация, контролирана от Google Assistant
- Настройване на приложението Blynk
- Настройване на IFTTT с Google Assistant и Blynk за четене на низ
- Програмиране на Arduino за домашна автоматизация на Blynk
- Изработване на печатни платки с помощта на PCBGoGo
- Сглобяване на печатната платка
- Свързване на платката с променливотокови блокове / удължителни платки
С напредъка на виртуалните асистенти като Google Assistant и Alexa, домашната автоматизация и гласово контролираните приложения стават нормални. Сега ние сами изградихме много проекти за домашна автоматизация, от прости автоматични стълбищни светлини до базирана на IoT уеб автоматизирана домашна автоматизация, използваща Raspberry Pi. Но този проект тук е различен, идеята тук е да създадем практична платка за домашна автоматизация, която да може да се побере в нашите блокове за променлив ток на нашите стени и да остане скрита вътре в нея. Платката не трябва да прекъсва нормалната работа на нашите превключватели на захранващия блок, тоест те трябва да се включват или изключват и с ръчни превключватели. И без да се казва, той също трябва да може да контролира същия товар с глас с помощта на Google асистент и също така да настрои таймер, така че всяко натоварване да може автоматично да се включва или изключва през предварително зададено време от деня.
Този проект е много подобен на нашия щепсел ESP8266 Smart Wi-Fi, но тук, тъй като ще използваме ESP12, ще имаме повече GPIO щифтове, които ни позволяват да контролираме четири AC натоварвания едновременно. Освен това, тъй като интегрирахме Blynk и Google Assistant, проектът става интересен и практичен за използване. За този проект сме изградили платките, използвайки PCBGOGO PCB производствена услуга. В по-късния раздел на статията предоставихме файла Gerber, проектиран за веригата, и също така обяснихме пълната процедура за поръчка на печатни платки от PCBGOGO.
Предупреждение: Този проект включва работа с променливотоково напрежение. Имайте предвид, че трябва да се внимава изключително много при работа с високо напрежение на променлив ток. Уверете се, че сте под наблюдение от опитен човек, ако сте нов.
Схема на веригата за домашна автоматизация, контролирана от Google Assistant
Пълната електрическа схема за домашна автоматизация може да бъде намерена по-долу.
Както можете да видите, схемата е много проста, нека започнем обяснението от Wi-Fi модула ESP12E. Можете също така да разгледате видеоклипа по-долу за подробно обяснение на проекта. Модулът може да се програмира точно като платки за разработка на nodeMCU и намалява много място. По подразбиране, когато е включен, ESP12E ще влезе в режим на работа. За да го програмираме, трябва да използваме бутона Reset и Flash. Тоест, за да поставите ESP12 в режим на програмиране, натиснете и задръжте и бутона за нулиране и флаш, след това отпуснете бутона за нулиране. Това ще зареди ESP12E с натиснат бутон за светкавица, сега освободете бутона за светкавица и ESP12E ще влезе в режим на програмиране. След програмирането трябва да натиснете отново бутона за нулиране, за да стартирате ESP12E в нормален работен режим, за да изпълните качената програма. Програмиращите щифтове Rx, Rx,и Ground се разширяват, за да могат да се свързват с FTDI платка или USB към TTL конвертор. Не забравяйте да свържете Tx щифта на ESP12 към Rx щифта на програмиста и обратно.
Другите щифтове от I1 до I4 и R1 до R4 се използват за свързване на превключвателите и релетата. Пинове I1 до I4 означават входни щифтове. Всички тези щифтове поддържат вътрешен издърпващ резистор, така че просто трябва да свържем превключвателите на удължителната кутия към нашия входен щифт чрез падащ резистор, както е показано по-долу.
По същия начин, релейните изходни щифтове R1 до R4 се използват за управление на релетата. Използвахме стандартна схема на релеен драйвер с диод BC547 и IN4007, както е показано по-долу. Имайте предвид, че релетата трябва да се задействат с 5V, но изходните щифтове ESP12E са само 3.3V. Така че е задължително да се използва транзистор за задвижване на релетата. Също така сме поставили светодиод в основния път на транзистора, така че всеки път, когато транзисторът се задейства, светодиодът също ще се включи.
И накрая, за захранване на всички наши вериги, ние използвахме Hi-Link AC-DC конвертор, за да преобразуваме нашите 220V AC в 5V DC. След това този 5V DC се преобразува в 3.3V с помощта на регулатор на напрежение AMS117-3.3V. 5V се използва за задействане на релетата, а 3.3V се използва за захранване на Wi-Fi модула ESP21.
Настройване на приложението Blynk
Преди това сме изградили много проекти на Blynk като Wi-Fi Controlled Arduino Robot, така че няма да навлизаме в подробностите за настройването на приложението blynk. Но за да го кажем просто, просто инсталирайте приложението, създайте нов проект за NodeMCU и започнете да поставяте своите джаджи, както е показано по-долу.
Използвал съм виртуални щифтове V1 до V4 за управление на реле 1 до 4 на нашия проект. Не забравяйте да промените вида на бутона, за да превключите. Опцията таймер може да се използва и за автоматично задействане на виртуалните щифтове за зададеното време, дори ако телефонът е изключен. Тук съм използвал таймер само за виртуален щифт V1 например, но можете да го използвате за всичките четири щифта, ако е необходимо.
Уверете се, че сте получили стойността на маркера си за автентичност blynk от страницата на вашия проект. Просто кликнете върху иконата на гайката (закръглена в червено на горната снимка) и копирайте удостоверението за автентичност, като използвате опцията за копиране на всички, и го поставете някъде на сигурно място, което ще ни трябва при програмирането на дъската Arduino.
Настройване на IFTTT с Google Assistant и Blynk за четене на низ
Най-лесният начин да използвате Google Assistant за домашна автоматизация е чрез IFTTT. Също така сме изградили много IFTTT проекти по-рано с NodeMCU и Raspberry Pi. В този проект ще използваме приложението Blynk, за да задействаме уеб хук с помощта на Google асистент. Той е много подобен на нашия гласов контрол на домашна автоматизация и гласов контрол на FM радио проект. Освен това тук ще използваме blynk с IFTTT за изпращане на низ, което го прави много по-лесно и интересно.
По принцип ще използваме виртуални пинове V5 и V6 на blynk, за да изпратим командата за задействане. V5 ще се използва за команди за включване, а V6 ще се използва за команди за изключване. Например, ако кажем включете телевизора и лампата. Командата на низа тук „TV and Lamp“ ще бъде изпратена до NodeMCU с помощта на API. Синтаксисът на API е както по-долу.
http://188.166.206.43//update/V5?value=TV и лампа
Сега всичко, което трябва да направим в IFTTT, е да използваме google асистент като IF и webhooks като THAT, така че слушайте тази команда и изпращайте информацията до NodeMCU, използвайки гореспоменатия API. Формата за включване на аплета е показана по-долу.
Имайте предвид, че трябва да изберете да изречете фраза с опция за текстова съставка, когато създавате рецепта за Google Assistant. По същия начин трябва да повторите същото за виртуален щифт V6, за да изключите релетата. Можете да проверите видеоклипа в долната част на тази страница за подробна информация.
Програмиране на Arduino за домашна автоматизация на Blynk
Пълният код на Arduino за този проект може да бъде намерен в долната част на тази страница. Обяснението на същото е следното. Преди това се уверете, че можете да използвате Blynk и Program NodeMCU от Arduino IDE. Ако не, следвайте стартирането с ESP12. Освен това добавете библиотеката blynk към Arduino IDE с помощта на диспечера на борда.
Както винаги, ние започваме нашия код, като дефинираме входните и изходните щифтове, тук входът ще бъде от ключове, а изходът ще бъде от релета. Определихме имената на щифтовете за всички четири превключвателя като sw и релета като rel, както можете да видите по-долу.
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
На следващия етап трябва да въведете някои идентификационни данни като blynk auth token и потребителското име и парола за Wi-Fi рутера, с който трябва да се свърже nodeMCU. Токенът за мигане за удостоверяване може да бъде получен от приложението blynk. Ще научим повече за това в раздела за настройка на blynk.
char auth = "Fh3tm0ZSrXQcROYl_lIYwOIuVu-E"; // получаваме от приложението blynk char ssid = "home_wifi"; char pass = "fakepass123";
След това дадохме дефиницията за функция, наречена read_switch_toggle () . В тази функция ще сравним текущото състояние и предишното състояние на нашите комутатори. Ако превключвателят е бил включен или изключен, т.е. Ако превключвателят е бил превключен. Ще има промяна в състоянието на превключвателя, функцията ще следи тази промяна и ще върне номера на превключвателя. Ако не бъде открита промяна, тя ще върне 0.
int read_switch_toggle () {int резултат = 0; // Забележете всички предишни стойности за (int i = 0; i <= 3; i ++) pvs_state = crnt_state; // Прочетете текущото състояние на превключвателите crnt_state = digitalRead (sw1); crnt_state = digitalRead (sw2); crnt_state = digitalRead (sw3); crnt_state = digitalRead (sw4); // сравняваме текущото и pvs състояние за (int i = 0; i <= 3; i ++) {if (pvs_state! = crnt_state) {result = (i + 1); // ако някой превключвател е превключен, получаваме номер на превключвателя като резултат от връщания резултат; } иначе резултат = 0; // ако няма резултат от промяна 0} връщане на резултат; // връщане на резултата}
След това имаме кода за приложението blynk. Ще използваме виртуален щифт V1 до V6 за управление на нашата интелигентна кутия за свързване. Пиновете V1 до V4 ще се използват за управление на релета 1 до 4, съответно директно от приложението blynk. Кодът по-долу показва какво се случва, когато V1 се задейства от приложението blynk. Ние просто четем състоянието (HIGH или LOW) и съответно контролираме релето.
BLYNK_WRITE (V1) {digitalWrite (rel1, param.asInt ()); Serial.println ("V1"); }
По същия начин виртуалните щифтове могат да се използват и за четене на низ от приложението blynk. Ще научим как да изпращаме низ от асистент на Google до NodeMCU с помощта на IFTTT и асистент на Google по-късно, но засега нека видим как кодът на NodeMCU чете този низ и търси определена ключова дума и съответно задейства релето.
В кода по-долу можете да видите, че когато се задейства виртуален пин V5, получаваме низа, предаден от него в променлива на низ, наречена ON_message . След това, използвайки тази низова променлива и метода inderOf, ние търсим дали има ключови думи като „лампа“, „LED“, „музика“, „TV“, ако да, включваме конкретното натоварване. Ако бъде открита ключовата дума „всичко“, ние включваме всичко. Същото може да се направи и за V6 за изключване на релетата. Ще разберем повече за това, когато влезем в раздела IFTTT.
BLYNK_WRITE (V5) {Низ ON_message = param.asStr (); Serial.println (ON_message); ако (ON_message.indexOf ("лампа")> = 0) digitalWrite (rel1, HIGH); ако (ON_message.indexOf ("LED")> = 0) digitalWrite (rel2, HIGH); ако (ON_message.indexOf ("музика")> = 0) digitalWrite (rel3, HIGH); ако (ON_message.indexOf ("TV")> = 0) digitalWrite (rel4, HIGH); ако (ON_message.indexOf ("всичко")> = 0) {digitalWrite (rel1, HIGH); digitalWrite (rel2, HIGH); digitalWrite (rel3, HIGH); digitalWrite (rel4, HIGH); }}
И накрая, във функцията на цикъла трябва само да проверим дали някой бутон е променил позицията на превключвателя. Ако отговорът е да, тогава използваме случай на превключвател, както е показано по-долу, за да превключваме позицията на това конкретно реле.
превключвател (toggle_pin) {случай 0: почивка; случай 1: Serial.println ("Превключване на реле 1"); digitalWrite (rel1, relay_state); почивка; случай 2: Serial.println ("Превключване на реле 2"); digitalWrite (rel2, relay_state); почивка; случай 3: Serial.println ("Превключване на реле 3"); digitalWrite (rel3, relay_state); почивка; случай 4: Serial.println ("Превключване на реле 4"); digitalWrite (rel4, relay_state); почивка; }}
Изработване на печатни платки с помощта на PCBGoGo
Сега разбираме как работят схемите, можем да продължим с изграждането на печатната платка за нашия проект за домашна автоматизация. Оформлението на печатни платки за горната схема също е достъпно за изтегляне като Gerber от връзката.
- Изтеглете GERBER за гласова контролирана домашна автоматизация с помощта на Google Assistant
Сега нашият дизайн е готов, време е да ги произведем с помощта на файла Gerber. За да направите печатната платка от PCBGOGO е доста лесно, просто следвайте стъпките по-долу -
Стъпка 1: Влезте в www.pcbgogo.com, регистрирайте се, ако за първи път. След това в раздела PCB Prototype въведете размерите на вашата PCB, броя на слоевете и броя на PCB, който ви е необходим. Ако приемем, че PCB е 80cm × 80cm, можете да зададете размерите, както е показано по-долу.
Стъпка 2: Продължете, като кликнете върху бутона Quote Now . Ще бъдете отведени до страница, където да зададете няколко допълнителни параметъра, ако е необходимо, като използвания материал на разстоянието между пистите и т.н. Но най-вече стойностите по подразбиране ще работят добре. Единственото нещо, което трябва да имаме предвид тук, е цената и времето. Както можете да видите Времето за изграждане е само 2-3 дни и струва само $ 5 за нашата PCB. След това можете да изберете предпочитан метод за доставка въз основа на вашите изисквания.
Стъпка 3: Последната стъпка е да качите файла Gerber и да продължите с плащането. За да се увери, че процесът е гладък, PCBGOGO проверява дали вашият Gerber файл е валиден, преди да продължи с плащането. По този начин можете да сте сигурни, че вашата PCB е удобна за изработка и ще се свърже с вас като ангажирана.
Сглобяване на печатната платка
След като платката беше поръчана, тя стигна до мен след няколко дни чрез куриер в добре етикетирана добре опакована кутия и както винаги, качеството на печатната платка беше страхотно. Получената от мен печатна платка е показана по-долу. Както виждате, както горният, така и долният слой се оказаха според очакванията.
Всички флакони и подложки бяха в правилния размер. Отне ми около 15 минути, за да се сглобя на платката за печатни платки, за да получа работна верига. Сглобената дъска е показана по-долу.
Свързване на платката с променливотокови блокове / удължителни платки
Платката е проектирана да бъде фиксирана в променливотоковите контакти в нашите домове. Но заради този проект ще използваме разширение. Ако искате по-постоянно решение, свържете това във вътрешностите на променливотоковите контакти, както можете да видите по-долу, дължината на печатната платка е достатъчно компактна, за да бъде поставена в променливотоков контакт.
Уверете се, че спазвате предпазни мерки, докато работите с електрическа мрежа. Следвайте схемата по-долу, за да разберете как да свържете вашите релета и превключватели към нашата платка.
Диаграмата на връзката е намалена само за едно реле и превключвател, но можете просто да репликирате същото и за останалите три. След като свързването свърши, вашата дъска трябва да изглежда така
След като връзките са направени, уверете се, че сте ги закрепили плътно с винтови клеми и също така използвайте горещо лепило за допълнителна безопасност. Опаковайте всичко обратно в кутията и трябва да сме готови за тестване. Можете да намерите пълната работа на този проект във видеото по-долу.
Надявам се статията да ви е харесала и да сте научили нещо полезно. Ако имате някакви въпроси, моля, оставете ги в раздела за коментари по-долу или използвайте нашите форуми.