Съдържание:

Известия за събития в реално време, използващи NodeMCU (Arduino), Google Firebase и Laravel: 4 стъпки (със снимки)
Известия за събития в реално време, използващи NodeMCU (Arduino), Google Firebase и Laravel: 4 стъпки (със снимки)

Видео: Известия за събития в реално време, използващи NodeMCU (Arduino), Google Firebase и Laravel: 4 стъпки (със снимки)

Видео: Известия за събития в реално време, използващи NodeMCU (Arduino), Google Firebase и Laravel: 4 стъпки (със снимки)
Видео: Атака на Псков. Взрывы в России. Удар по заводу в Брянске. Пороховское кладбище и Пригожин | УТРО 2024, Юни
Anonim
Image
Image
Известия за събития в реално време, използващи NodeMCU (Arduino), Google Firebase и Laravel
Известия за събития в реално време, използващи NodeMCU (Arduino), Google Firebase и Laravel

Искали ли сте някога да бъдете уведомени, когато на вашия уебсайт се извърши действие, но имейл не е подходящ? Искате ли да чувате звук или камбана всеки път, когато правите продажба? Или има нужда от незабавното ви внимание поради спешна ситуация у дома?

Това устройство може да ви предупреждава в реално време за всичко, което харесвате.

Стъпка 1: Свържете веригата

Свържете веригата
Свържете веригата
Свържете веригата
Свържете веригата

Устройството, което изградих, се състои от платка NodeMCU със зумер, който да ме предупреждава за продажби, направени на уебсайт. Микроконтролерът е програмиран с помощта на софтуера Arduino и задействащата част може да бъде всяко уеб, iOS или Android приложение. Създадох две прости уеб приложения, едното в Laravel, а другото в обикновен HTML и JavaScript за пример.

Тъй като платката NodeMCU може безопасно да работи до около 12mA ток на щифтовете, зумерът е свързан чрез NPN транзистор. Използвах 2N2222, защото имам много от тях, но съм сигурен, че принципът ще бъде същият с всеки друг NPN транзистор.

За да свържете веригата, свържете колектора на транзистора към щифта Vin на платката. Звуковият сигнал работи при 5V и тъй като ще захранваме устройството от USB, този щифт ще ни даде напрежението преди 3.3V регулатора на платката.

След това свържете положителната страна на зумера на излъчвателя на транзистора и отрицателния щифт на зумера към някой от заземяващите щифтове на платката. Използвах пин 2, но можете да го свържете и на щифтове 9, 25 или 29.

Основата на транзистора е свързана към щифт D2, който корелира с GPIO 4 в софтуера Arduino. С тази настройка транзисторът ефективно ще функционира като превключвател, включващ зумера за всяко събитие. Вместо зумера можете да свържете реле по същия начин, за да можете да управлявате всеки електрически уред като електрически крушки, машини или сирена, ако правите някакво алармено устройство.

Стъпка 2: Подгответе уеб приложенията

Подгответе уеб приложенията
Подгответе уеб приложенията
Подгответе уеб приложенията
Подгответе уеб приложенията
Подгответе уеб приложенията
Подгответе уеб приложенията

За задействащата част и в реално време на устройството ще използваме базата данни на Google Firebase в реално време. Това е прекрасна облачна база данни NoSQL, направена от Google, която осигурява синхронизация на данни в реално време между всяка от използваните платформи.

Първо създайте проекта с име по ваш избор. След като бъде създаден, създайте един възел, наречен „count“и го инициирайте със стойността if 0. Това ще бъде нашият начален брой, който искаме да следваме в бъдеще.

Приложението Laravel използва пакета „firebase-php“от Kreait и е свързано по-долу. Инсталирайте пакета, като изпълните „composer require kreait/firebase-php“. След като инсталацията приключи, трябва да създадем контролера, където ще се извърши действието. Нарекох метода „актуализация“и го свързах в маршрутите на POST действие.

За да извлечете екземпляра на Firebase, имате нужда от json файл, който трябва да изтеглите от конзолата си Firebase. Поставете този файл в корена на вашия проект Laravel и го наречете firebase.json. Когато извличаме екземпляра на firebase, трябва да предоставим пътя към този файл, използвайки метода withCredentials.

След като получим екземпляра на firebase, трябва да получим препратката към базата данни и към възела, който сме създали по -рано. При всяко действие ще получим текущата стойност на възела, ще я увеличим с една и ще запишем, ако се върнем в базата данни. Това ще следи нашите събития, за които трябва да уведомим.

Същото може да се постигне с обикновен HTML и JavaScript, като се използва предоставената библиотека на firebase. С него първо трябва да предоставим на конфигурационния масив подходящите настройки от конзолата на Firebase и да инициализираме приложението. След като се инициализира, получаваме препратка към възела, където съхраняваме броя на събитията и прикачваме слушател, за да извлечем всяка промяна на стойността.

Освен това, вместо да изпращаме формуляра, както в примера на Laravel, сега имаме функция JavaScript, която се извиква при натискане на бутона, актуализира броя и записва актуализираната стойност обратно в базата данни.

Стъпка 3: Програмирайте борда на NodeMCU

Програмирайте борда на NodeMCU
Програмирайте борда на NodeMCU
Програмирайте борда на NodeMCU
Програмирайте борда на NodeMCU
Програмирайте борда на NodeMCU
Програмирайте борда на NodeMCU

За да програмирам NodeMCU, използвах софтуера Arduino и след като инсталирах платката към него, се уверих, че съм избрал правилната версия и порт, за да мога да кача софтуера. Моята е версия 1.0, така че проверете отново с дъската си, преди да продължите.

Първата част от кода на Arduino настройва всички необходими дефиниции, които ще трябва да коригирате на вашето устройство. Първата такава настройка е ssid на WiFi и нейната парола, след това трябва да настроим url на firebase и секретната db на firebase. За съжаление, това не е препоръчителният начин за свързване към базата данни, но засега това е единственият начин, по който библиотеката го поддържа. Можете да намерите тази тайна в менюто Настройки на проекта, сервизни акаунти в конзолата на firebase.

Следващото определение е пътят, който ще проверяваме за актуализации, и идентификационният номер на устройството. Идентификаторът на устройството е необходим, така че в случай, че имаме няколко устройства, които да уведомяват за едни и същи събития, трябва да знаем кое устройство ни е уведомило за събитието и да водим запис за това. Последният трябва да настроим щифта, към който сме свързали зумера и това е D2 в нашия случай.

Функцията за настройка дефинира вградения LED пин и D2 щифтовете като изходи, стартира серийната комуникация, за да знае какво се случва и се свързва с определената WiFi мрежа. След като връзката се установи, тя започва комуникацията с Firebase и получава последната стойност, за която сме докладвали. След това той започва да слуша за промени по посочения път.

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

Например, ако разликата между последната отчетена стойност и новата стойност е 4, ще се издадат 4 звукови сигнала, за да ви уведомят, че са направени 4 нови покупки. Звуковата функция използва вградената звукова функция за възпроизвеждане на определена честота през зумера за определен период от време.

След издаването на звукови сигнали, новата стойност се актуализира за посоченото устройство и поточното предаване се рестартира отново. Понастоящем има отворен проблем в библиотеката arduino firebase, че стриймингът не продължава автоматично, след като ръчно запазим стойност, така че трябва да я рестартираме.

Стъпка 4: Насладете се на вашето устройство

Насладете се на вашето устройство!
Насладете се на вашето устройство!

Целият код, който използвах, е достъпен в моя GitHub акаунт, свързан по -долу, заедно с връзката към схемата на проекта.

Програмен код

Схематично

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

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

Ако проектът ви е харесал, моля, абонирайте се за канала ми в YouTube:

Опитайте кода

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