Índice:

Notificações de eventos em tempo real usando NodeMCU (Arduino), Google Firebase e Laravel: 4 etapas (com imagens)
Notificações de eventos em tempo real usando NodeMCU (Arduino), Google Firebase e Laravel: 4 etapas (com imagens)

Vídeo: Notificações de eventos em tempo real usando NodeMCU (Arduino), Google Firebase e Laravel: 4 etapas (com imagens)

Vídeo: Notificações de eventos em tempo real usando NodeMCU (Arduino), Google Firebase e Laravel: 4 etapas (com imagens)
Vídeo: Realtime Event Notifications Using NodeMCU (Arduino), Google Firebase and Laravel 2024, Junho
Anonim
Image
Image
Notificações de eventos em tempo real usando NodeMCU (Arduino), Google Firebase e Laravel
Notificações de eventos em tempo real usando NodeMCU (Arduino), Google Firebase e Laravel

Você já quis ser notificado quando uma ação fosse realizada em seu site, mas o e-mail não fosse a opção certa? Quer ouvir um som ou um sino sempre que fizer uma venda? Ou há necessidade de sua atenção imediata devido a uma emergência em casa?

Este dispositivo pode alertá-lo em tempo real sobre qualquer coisa de que você goste.

Etapa 1: Conecte o circuito

Ligue o circuito
Ligue o circuito
Ligue o circuito
Ligue o circuito

O dispositivo que construí consiste em uma placa NodeMCU com uma campainha para me alertar sobre as vendas feitas em um site. O microcontrolador é programado usando o software Arduino e a parte de acionamento pode ser qualquer aplicativo da web, iOS ou Android. Eu criei dois aplicativos web simples, um em Laravel e outro em HTML e JavaScript simples para o exemplo.

Uma vez que a placa NodeMCU pode operar com segurança até cerca de 12mA de corrente nos pinos, a campainha é conectada por meio de um transistor NPN. Usei o 2N2222 porque tenho muitos deles por aí, mas tenho certeza de que o princípio será o mesmo com qualquer outro transistor NPN.

Para conectar o circuito, conecte o coletor do transistor ao pino Vin na placa. A campainha opera a 5 V e como vamos alimentar o dispositivo via USB, este pino nos dará a tensão antes do regulador de 3,3 V da placa.

Em seguida, conecte o lado positivo da campainha no emissor do transistor e o pino negativo da campainha a qualquer um dos pinos de aterramento da placa. Usei o pino 2, mas você também pode conectá-lo nos pinos 9, 25 ou 29.

A base do transistor é conectada ao pino D2, que se correlaciona com o GPIO 4 no software Arduino. Com essa configuração, o transistor funcionará efetivamente como uma chave ligando a campainha em cada evento. Em vez da campainha, você pode conectar um relé da mesma maneira para poder acionar qualquer aparelho elétrico como lâmpadas, máquinas ou uma sirene, se estiver fazendo algum dispositivo de alarme.

Etapa 2: preparar os aplicativos da web

Prepare os aplicativos da web
Prepare os aplicativos da web
Prepare os aplicativos da web
Prepare os aplicativos da web
Prepare os aplicativos da web
Prepare os aplicativos da web

Para a parte de acionamento e tempo real do dispositivo, usaremos o Firebase Realtime Database do Google. Este é um banco de dados de nuvem NoSQL maravilhoso feito pelo Google que fornece sincronização de dados em tempo real entre cada uma das plataformas em que está sendo usado.

Primeiro crie o projeto com um nome de sua escolha. Depois de criado, crie um único nó chamado “contagem” e inicie-o com o valor 0, se for o caso. Esta será a nossa contagem inicial que queremos seguir no futuro.

O aplicativo Laravel usa o pacote “firebase-php” do Kreait, e está no link abaixo. Instale o pacote executando “composer require kreait / firebase-php”. Assim que a instalação for concluída, precisamos criar o controlador onde a ação acontecerá. Chamei o método de "atualização" e o conectei nas rotas em uma ação POST.

Para recuperar a instância do Firebase, você precisa de um arquivo json que deve ser baixado do console do Firebase. Coloque este arquivo na raiz do seu projeto Laravel e nomeie-o firebase.json. Ao recuperar a instância do firebase, precisamos fornecer o caminho para este arquivo usando o método withCredentials.

Depois de obter a instância do firebase, precisamos obter a referência ao banco de dados e ao nó que criamos anteriormente. Em cada ação, vamos obter o valor atual do nó, aumentá-lo em um e salvá-lo de volta ao banco de dados. Isso manterá o controle de nossos eventos sobre os quais precisamos notificar.

O mesmo pode ser alcançado com HTML e JavaScript simples, usando a biblioteca firebase fornecida. Com ele, primeiro precisamos fornecer ao array de configuração as configurações apropriadas do console do Firebase e inicializar o aplicativo. Uma vez inicializado, obtemos uma referência ao nó onde armazenamos as contagens de eventos e anexamos um ouvinte para recuperar qualquer alteração de valor.

Além disso, em vez de enviar o formulário como no exemplo do Laravel, agora temos uma função JavaScript que está sendo chamada no clique do botão, atualiza a contagem e grava o valor atualizado de volta no banco de dados.

Etapa 3: programe a placa NodeMCU

Programe a placa NodeMCU
Programe a placa NodeMCU
Programe a placa NodeMCU
Programe a placa NodeMCU
Programe a placa NodeMCU
Programe a placa NodeMCU

Para programar o NodeMCU, usei o software Arduino e depois de instalar a placa nele, certifiquei-me de selecionar a versão e a porta adequadas para que eu pudesse fazer o upload do software. O meu é a versão 1.0, então verifique com sua placa antes de prosseguir.

A primeira parte do código do Arduino configura todas as definições necessárias que você precisará ajustar em seu dispositivo. A primeira dessas configurações é o ssid do WiFi e sua senha, então precisamos configurar o url do firebase e o segredo do db do firebase. Infelizmente, essa não é a maneira recomendada de se conectar ao banco de dados, mas no momento é a única maneira que a biblioteca oferece suporte. Você pode encontrar esse segredo em Configurações do projeto, menu de contas de serviço no console do firebase.

A próxima definição é o caminho que iremos verificar para atualizações e o id do dispositivo. O ID do dispositivo é necessário, portanto, caso tenhamos vários dispositivos para notificar sobre os mesmos eventos, precisamos saber qual dispositivo nos notificou sobre o evento e manter um registro disso. Por último, precisamos configurar o pino no qual conectamos a campainha e este é D2 em nosso caso.

A função de configuração define o pino led embutido e os pinos D2 como saídas, inicia a comunicação serial para saber o que está acontecendo e se conecta à rede WiFi especificada. Assim que a conexão for estabelecida, ele iniciará a comunicação com o Firebase e obterá o último valor informado. Em seguida, ele começa a escutar as alterações no caminho especificado.

No loop principal, há uma chamada para a função de piscar que pisca o led embutido por 500 milissegundos para que possamos dizer que o dispositivo está ativo. Quando uma alteração é detectada e há dados disponíveis que podemos ler com a função disponível, o novo valor do nó está sendo lido, a diferença é calculada, pois pode ter ocorrido vários eventos nesse meio tempo e um bipe é produzido a cada vez da diferença.

Por exemplo, se a diferença entre o último valor relatado e o novo valor for 4, 4 bipes serão produzidos para que você saiba que 4 novas compras foram feitas. A função de bipe usa a função de tom embutida para tocar uma frequência especificada através da campainha por um período de tempo definido.

Depois que os bipes são produzidos, o novo valor é atualizado para o dispositivo especificado e o streaming é reiniciado novamente. Atualmente, há um problema aberto na biblioteca do arduino firebase de que o streaming não continua automaticamente depois que salvamos manualmente um valor, portanto, precisamos reiniciá-lo.

Etapa 4: Aproveite o seu dispositivo

Aproveite o seu dispositivo!
Aproveite o seu dispositivo!

Todo o código que usei está disponível em minha conta do GitHub no link abaixo, juntamente com o link para o esquema do projeto.

Código fonte

Esquemático

O código pode ser facilmente adotado para funcionar em diversos cenários e eventos diferentes e tenho certeza de que você se divertirá muito brincando com ele.

Para mim, esta foi uma construção muito divertida e consegui aprender muito sobre ela e por isso estou muito feliz. Espero que isso possa ajudá-lo com o seu projeto, mas se você ficar preso em alguma parte dele ou precisar de mais esclarecimentos, por favor, deixe-me saber nos comentários e eu farei o meu melhor para ajudá-lo.

Se você gostou do projeto, por favor, inscreva-se no meu canal no YouTube:

Prove o código

Recomendado: