Innholdsfortegnelse:

Sanntids hendelsesvarsler ved hjelp av NodeMCU (Arduino), Google Firebase og Laravel: 4 trinn (med bilder)
Sanntids hendelsesvarsler ved hjelp av NodeMCU (Arduino), Google Firebase og Laravel: 4 trinn (med bilder)

Video: Sanntids hendelsesvarsler ved hjelp av NodeMCU (Arduino), Google Firebase og Laravel: 4 trinn (med bilder)

Video: Sanntids hendelsesvarsler ved hjelp av NodeMCU (Arduino), Google Firebase og Laravel: 4 trinn (med bilder)
Video: How to connect Firebase with MIT App Inventor 2 [ Firebase ] 2024, Juni
Anonim
Image
Image
Sanntids hendelsesvarsler ved hjelp av NodeMCU (Arduino), Google Firebase og Laravel
Sanntids hendelsesvarsler ved hjelp av NodeMCU (Arduino), Google Firebase og Laravel

Har du noen gang ønsket å bli varslet når det er gjort en handling på nettstedet ditt, men e -post er ikke riktig passform? Vil du høre en lyd eller en bjelle hver gang du gjør et salg? Eller er det behov for din umiddelbare oppmerksomhet på grunn av en nødssituasjon hjemme?

Denne enheten kan varsle deg i sanntid om alt du liker.

Trinn 1: Koble opp kretsen

Koble opp kretsen
Koble opp kretsen
Koble opp kretsen
Koble opp kretsen

Enheten jeg har bygget består av et NodeMCU -kort med en summer for å varsle meg om salg på et nettsted. Mikrokontrolleren er programmert ved hjelp av Arduino -programvaren, og den utløsende delen kan være hvilken som helst web-, iOS- eller Android -applikasjon. Jeg har laget to enkle webapplikasjoner, en i Laravel og den andre i vanlig HTML og JavaScript for eksempelet.

Siden NodeMCU -kortet trygt kan operere til rundt 12mA strøm på pinnene, er summeren koblet til via en NPN -transistor. Jeg har brukt 2N2222 fordi jeg har mange av dem liggende, men jeg er sikker på at prinsippet vil være det samme med alle andre NPN -transistorer.

For å koble til kretsen, koble transistorens kollektor til Vin -pinnen på brettet. Summeren fungerer på 5V, og siden vi skal drive enheten fra USB, vil denne pinnen gi oss spenningen før 3.3V -regulatoren på kortet.

Deretter kobler du den positive siden av summeren på transistorens sender og den negative pinnen på summeren til en av jordpinnene på brettet. Jeg har brukt pin 2, men du kan også koble den til pins 9, 25 eller 29.

Basen på transistoren er koblet til pin D2 som korrelerer med GPIO 4 på Arduino -programvaren. Med dette oppsettet vil transistoren effektivt fungere som en bryter som slår på summeren på hver hendelse. I stedet for summeren kan du koble til et relé på samme måte for å kunne kjøre et hvilket som helst apparat som lyspærer, maskiner eller en sirene hvis du lager en alarm.

Trinn 2: Forbered webappene

Forbered webappene
Forbered webappene
Forbered webappene
Forbered webappene
Forbered webappene
Forbered webappene

For utløsende og sanntidsdel av enheten bruker vi Googles Firebase sanntidsdatabase. Dette er en fantastisk NoSQL -skydatabase laget av Google som gir datasynkronisering i sanntid mellom hver av plattformene den brukes.

Opprett først prosjektet med et navn du ønsker. Når du er opprettet, oppretter du en enkelt node som kalles "count" og starter den med verdien hvis 0. Dette er vårt starttall som vi vil følge i fremtiden.

Laravel-applikasjonen bruker “firebase-php” -pakken fra Kreait, og den er koblet nedenfor. Installer pakken ved å kjøre “composer require kreait/firebase-php”. Når installasjonen er ferdig, må vi lage kontrolleren der handlingen vil skje. Jeg kalte metoden "oppdatering", og jeg har koblet den til rutene med en POST -handling.

For å hente Firebase -forekomsten trenger du en json -fil som du må laste ned fra Firebase -konsollen. Plasser denne filen i roten til ditt Laravel -prosjekt og gi den navnet firebase.json. Når vi henter firebase -forekomsten, må vi oppgi banen til denne filen ved hjelp av withCredentials -metoden.

Etter at vi fikk firebase -forekomsten, må vi få referansen til databasen og til noden som vi har opprettet tidligere. For hver handling vil vi få gjeldende verdi for noden, øke den med en og lagre hvis tilbake til databasen. Dette vil holde oversikt over hendelsene våre som vi må varsle om.

Det samme kan oppnås med vanlig HTML og JavaScript ved å bruke det medfølgende firebase -biblioteket. Med det må vi først gi konfigurasjonsarrayen de riktige innstillingene fra Firebase -konsollen og initialisere appen. Når den er initialisert, får vi en referanse til noden der vi lagrer hendelsestallene og legger ved en lytter for å hente eventuelle verdiendringer.

I tillegg, i stedet for å sende inn skjemaet som i Laravel -eksemplet, har vi nå en JavaScript -funksjon som kalles på knappeklikket, oppdaterer tellingen og skriver den oppdaterte verdien tilbake til databasen.

Trinn 3: Programmer NodeMCU -styret

Programmer NodeMCU -styret
Programmer NodeMCU -styret
Programmer NodeMCU -styret
Programmer NodeMCU -styret
Programmer NodeMCU -styret
Programmer NodeMCU -styret

For å programmere NodeMCU har jeg brukt Arduino -programvaren, og etter at jeg installerte brettet til det, sørget jeg for å velge riktig versjon og port slik at jeg kan laste opp programvaren. Min er versjon 1.0, så sjekk med styret før du fortsetter.

Den første delen av Arduino -koden setter opp alle nødvendige definisjoner som du må justere på enheten din. Den første innstillingen er ssiden til WiFi og passordet, så må vi sette opp firebase -url og firebase -db -hemmeligheten. Dessverre er dette ikke den anbefalte måten å koble til databasen på, men foreløpig er det den eneste måten biblioteket støtter den på. Du finner denne hemmeligheten under menyen Prosjektinnstillinger, tjenestekontoer i firebase -konsollen.

Den neste definisjonen er banen vi vil se etter oppdateringer og enhets -ID. Enhets -ID -en er nødvendig, så hvis vi har flere enheter for å varsle om de samme hendelsene, må vi vite hvilken enhet som varslet oss om hendelsen og registrere det. Den siste må vi sette opp pinnen som vi har koblet summeren til, og dette er D2 i vårt tilfelle.

Oppsettfunksjonen definerer den innebygde LED -pinnen og D2 -pinnene som utganger, starter seriell kommunikasjon for å vite hva som skjer og kobles til det angitte WiFi -nettverket. Når forbindelsen er opprettet, starter den kommunikasjonen med Firebase og får den siste verdien vi rapporterte for. Den begynner deretter å lytte etter endringer på den angitte banen.

I hovedsløyfen er det et anrop til blinkfunksjonen som blinker den innebygde LED -en i 500 millisekunder for at vi skal kunne fortelle at enheten er aktiv. Når en endring oppdages og det er tilgjengelige data vi kan lese med den tilgjengelige funksjonen, leses den nye verdien av noden, differansen beregnes da det kan ha vært flere hendelser i mellomtiden og det blir avgitt et pip for hver gang av forskjellen.

For eksempel hvis forskjellen mellom den siste rapporterte verdien og den nye verdien er 4, vil det bli avgitt 4 pip for å gi deg beskjed om at det ble gjort 4 nye kjøp. Beefunksjonen bruker den innebygde tonefunksjonen til å spille en spesifisert frekvens gjennom summeren i en bestemt periode.

Etter at pipene er produsert, oppdateres den nye verdien for den angitte enheten og strømmingen startes på nytt. For øyeblikket er det et åpent problem på arduino firebase -biblioteket om at streaming ikke fortsetter automatisk etter at vi har lagret en verdi manuelt, så vi må starte den på nytt.

Trinn 4: Nyt enheten din

Nyt enheten din!
Nyt enheten din!

Hele koden jeg har brukt er tilgjengelig på min GitHub -konto som er koblet nedenfor sammen med lenken til skjemaet for prosjektet.

Kildekode

Skjematisk

Koden kan enkelt adopteres for å fungere for mange forskjellige scenarier og hendelser, og jeg er sikker på at du kommer til å ha mye moro av å leke med den.

For meg var dette en veldig morsom konstruksjon, og jeg klarte å lære ganske mye om det, og for det er jeg veldig glad. Jeg håper at det kan hjelpe deg med prosjektet ditt, men hvis du er i en del av det eller trenger ytterligere avklaring, vennligst gi meg beskjed i kommentarene, så skal jeg gjøre mitt beste for å hjelpe deg.

Hvis du likte prosjektet, kan du abonnere på YouTube -kanalen min:

Smak på koden

Anbefalt: