Оглавление:

Уведомления о событиях в реальном времени с использованием NodeMCU (Arduino), Google Firebase и Laravel: 4 шага (с изображениями)
Уведомления о событиях в реальном времени с использованием NodeMCU (Arduino), Google Firebase и Laravel: 4 шага (с изображениями)

Видео: Уведомления о событиях в реальном времени с использованием NodeMCU (Arduino), Google Firebase и Laravel: 4 шага (с изображениями)

Видео: Уведомления о событиях в реальном времени с использованием NodeMCU (Arduino), Google Firebase и Laravel: 4 шага (с изображениями)
Видео: Уведомления о событиях в реальном времени с использованием NodeMCU (Arduino), Google Firebase и Laravel 2024, Июнь
Anonim
Image
Image
Уведомления о событиях в реальном времени с использованием NodeMCU (Arduino), Google Firebase и Laravel
Уведомления о событиях в реальном времени с использованием NodeMCU (Arduino), Google Firebase и Laravel

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

Это устройство может предупреждать вас в режиме реального времени обо всем, что вам нравится.

Шаг 1: Подключите цепь

Подключите цепь
Подключите цепь
Подключите цепь
Подключите цепь

Созданное мной устройство состоит из платы NodeMCU с зуммером, который предупреждает меня о продажах, совершаемых на веб-сайте. Микроконтроллер программируется с помощью программного обеспечения Arduino, и запускающей частью может быть любое веб-приложение, приложение для iOS или Android. Я создал два простых веб-приложения, например, одно на Laravel, а другое на простом HTML и JavaScript.

Поскольку плата NodeMCU может безопасно работать при токе на выводах около 12 мА, зуммер подключается через транзистор NPN. Я использовал 2N2222, потому что у меня их много, но я уверен, что принцип будет таким же, как и с любым другим NPN-транзистором.

Чтобы подключить схему, подключите коллектор транзистора к выводу Vin на плате. Зуммер работает при 5 В, и, поскольку мы будем питать устройство от USB, этот вывод будет давать нам напряжение перед регулятором 3,3 В на плате.

Затем подключите положительный вывод зуммера к эмиттеру транзистора, а отрицательный вывод зуммера к любому из выводов заземления на плате. Я использовал контакт 2, но вы также можете подключить его к контактам 9, 25 или 29.

База транзистора подключена к выводу D2, который соответствует GPIO 4 в программном обеспечении Arduino. При такой настройке транзистор будет эффективно работать как переключатель, включающий зуммер при каждом событии. Вместо зуммера вы можете подключить реле таким же образом, чтобы иметь возможность управлять любым электроприбором, например лампочками, машинами или сиреной, если вы делаете какое-то устройство сигнализации.

Шаг 2. Подготовьте веб-приложения

Подготовьте веб-приложения
Подготовьте веб-приложения
Подготовьте веб-приложения
Подготовьте веб-приложения
Подготовьте веб-приложения
Подготовьте веб-приложения

Для триггера и части устройства в реальном времени мы будем использовать базу данных Firebase Realtime от Google. Это замечательная облачная база данных NoSQL, созданная Google, которая обеспечивает синхронизацию данных в реальном времени между каждой из используемых платформ.

Сначала создайте проект с именем по вашему выбору. После создания создайте единственный узел с именем «count» и инициируйте его значением if 0. Это будет наш начальный счетчик, которому мы хотим следовать в будущем.

Приложение Laravel использует пакет firebase-php от Kreait, ссылка на который приведена ниже. Установите пакет, запустив «composer require kreait / firebase-php». После завершения установки нам нужно создать контроллер, в котором будет происходить действие. Я назвал метод update и подключил его к маршрутам в действии 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 и секрет базы данных firebase. К сожалению, это не рекомендуемый способ подключения к базе данных, но на данный момент это единственный способ, которым его поддерживает библиотека. Вы можете найти этот секрет в настройках проекта, меню служебных учетных записей в консоли firebase.

Следующее определение - это путь, который мы будем проверять на наличие обновлений, и идентификатор устройства. Идентификатор устройства необходим, поэтому, если у нас есть несколько устройств для уведомления об одних и тех же событиях, нам нужно знать, какое устройство уведомило нас о событии, и вести запись об этом. Последним нам нужно настроить контакт, к которому мы подключили зуммер, и в нашем случае это D2.

Функция настройки определяет встроенный вывод светодиода и выводы D2 в качестве выходов, запускает последовательную связь, чтобы узнать, что происходит, и подключается к указанной сети Wi-Fi. Как только соединение установлено, оно начинает связь с Firebase и получает последнее значение, о котором мы сообщили. Затем он начинает отслеживать изменения по указанному пути.

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

Например, если разница между последним сообщенным значением и новым значением составляет 4, прозвучат 4 звуковых сигнала, чтобы вы знали, что были сделаны 4 новые покупки. Функция звукового сигнала использует встроенную функцию тонального сигнала для воспроизведения определенной частоты через зуммер в течение заданного периода времени.

После подачи звуковых сигналов новое значение обновляется для указанного устройства, и потоковая передача снова запускается. В настоящее время существует открытая проблема в библиотеке arduino firebase, заключающаяся в том, что потоковая передача не продолжается автоматически после того, как мы вручную сохраняем значение, поэтому нам нужно перезапустить ее.

Шаг 4: Наслаждайтесь своим устройством

Наслаждайтесь своим устройством!
Наслаждайтесь своим устройством!

Весь использованный мной код доступен в моей учетной записи GitHub, ссылка на которую приведена ниже, вместе со ссылкой на схему проекта.

Исходный код

Схема

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

Для меня это была действительно забавная сборка, мне удалось многому научиться на ней, и я очень этому рад. Я надеюсь, что это может помочь вам в вашем проекте, но если вы обнаружите, что застряли в какой-либо его части или вам нужны дополнительные разъяснения, дайте мне знать в комментариях, и я сделаю все возможное, чтобы помочь вам.

Если вам понравился проект, то подпишитесь на мой канал на YouTube:

Попробуй код

Рекомендуемые: