Inhoudsopgave:

Realtime gebeurtenismeldingen met NodeMCU (Arduino), Google Firebase en Laravel: 4 stappen (met afbeeldingen)
Realtime gebeurtenismeldingen met NodeMCU (Arduino), Google Firebase en Laravel: 4 stappen (met afbeeldingen)

Video: Realtime gebeurtenismeldingen met NodeMCU (Arduino), Google Firebase en Laravel: 4 stappen (met afbeeldingen)

Video: Realtime gebeurtenismeldingen met NodeMCU (Arduino), Google Firebase en Laravel: 4 stappen (met afbeeldingen)
Video: Azure Internet of Things-Tutorial voor beginners 2024, Juni-
Anonim
Image
Image
Realtime gebeurtenismeldingen met NodeMCU (Arduino), Google Firebase en Laravel
Realtime gebeurtenismeldingen met NodeMCU (Arduino), Google Firebase en Laravel

Heb je ooit een melding willen ontvangen wanneer er een actie op je website is gedaan, maar e-mail is niet de juiste keuze? Wil je bij elke verkoop een geluid of een belletje horen? Of heeft u vanwege een calamiteit in huis uw onmiddellijke aandacht nodig?

Dit apparaat kan u in realtime waarschuwen voor alles wat u maar wilt.

Stap 1: Sluit het circuit aan

Sluit het circuit aan
Sluit het circuit aan
Sluit het circuit aan
Sluit het circuit aan

Het apparaat dat ik heb gebouwd, bestaat uit een NodeMCU-bord met een zoemer om me te waarschuwen voor verkopen op een website. De microcontroller wordt geprogrammeerd met behulp van de Arduino-software en het triggerende deel kan elke web-, iOS- of Android-applicatie zijn. Ik heb twee eenvoudige webapplicaties gemaakt, een in Laravel en de andere in gewone HTML en JavaScript voor het voorbeeld.

Aangezien het NodeMCU-bord veilig kan werken tot ongeveer 12 mA stroom op de pinnen, is de zoemer aangesloten via een NPN-transistor. Ik heb 2N2222 gebruikt omdat ik er veel heb liggen, maar ik weet zeker dat het principe hetzelfde zal zijn met elke andere NPN-transistor.

Om het circuit aan te sluiten, sluit u de collector van de transistor aan op de Vin-pin op het bord. De zoemer werkt op 5V en aangezien we het apparaat via USB gaan voeden, geeft deze pin ons de spanning voor de 3.3V-regelaar op het bord.

Verbind vervolgens de positieve kant van de zoemer op de emitter van de transistor en de negatieve pin van de zoemer met een van de aardingspinnen op het bord. Ik heb pin 2 gebruikt, maar je kunt hem ook aansluiten op pin 9, 25 of 29.

De basis van de transistor is verbonden met pin D2 die correleert met GPIO 4 op de Arduino-software. Met deze opstelling zal de transistor effectief functioneren als een schakelaar die de zoemer bij elke gebeurtenis aanzet. In plaats van de zoemer kunt u op dezelfde manier een relais aansluiten om elk lichtnetapparaat zoals gloeilampen, machines of een sirene aan te sturen als u een alarmapparaat maakt.

Stap 2: Bereid de webapps voor

De webapps voorbereiden
De webapps voorbereiden
De webapps voorbereiden
De webapps voorbereiden
De webapps voorbereiden
De webapps voorbereiden

Voor het activerende en realtime deel van het apparaat gebruiken we de Firebase Realtime Database van Google. Dit is een prachtige NoSQL-clouddatabase gemaakt door Google die realtime gegevenssynchronisatie biedt tussen elk van de platforms die het gebruikt.

Maak eerst het project aan met een naam naar keuze. Eenmaal gemaakt, maakt u een enkel knooppunt met de naam "count" en start u het met de waarde als 0. Dit zal onze starttelling zijn die we in de toekomst willen volgen.

De Laravel-applicatie gebruikt het "firebase-php" -pakket van Kreait en het is hieronder gekoppeld. Installeer het pakket door "composer required kreait/firebase-php" uit te voeren. Nadat de installatie is voltooid, moeten we de controller maken waar de actie zal plaatsvinden. Ik heb de methode "update" genoemd en ik heb deze in de routes op een POST-actie aangesloten.

Om de Firebase-instantie op te halen, hebt u een json-bestand nodig dat u moet downloaden van uw Firebase-console. Plaats dit bestand in de hoofdmap van uw Laravel-project en noem het firebase.json. Bij het ophalen van de firebase-instantie moeten we het pad naar dit bestand opgeven met behulp van de methode withCredentials.

Nadat we de firebase-instantie hebben gekregen, moeten we de verwijzing naar de database en het knooppunt dat we eerder hebben gemaakt, ophalen. Bij elke actie krijgen we de huidige waarde van het knooppunt, verhogen het met één en slaan het op in de database. Hiermee worden onze evenementen bijgehouden waarover we moeten informeren.

Hetzelfde kan worden bereikt met gewone HTML en JavaScript, met behulp van de meegeleverde firebase-bibliotheek. Hiermee moeten we eerst de configuratiearray voorzien van de juiste instellingen van de Firebase-console en de app initialiseren. Eenmaal geïnitialiseerd, krijgen we een verwijzing naar het knooppunt waar we de gebeurtenistellingen opslaan en koppelen we een luisteraar om elke waardewijziging op te halen.

Bovendien, in plaats van het formulier in te dienen zoals in het Laravel-voorbeeld, hebben we nu een JavaScript-functie die wordt aangeroepen bij het klikken op de knop, de telling bijwerkt en de bijgewerkte waarde terugschrijft naar de database.

Stap 3: Programmeer het NodeMCU-bord

Programmeer het NodeMCU-bord
Programmeer het NodeMCU-bord
Programmeer het NodeMCU-bord
Programmeer het NodeMCU-bord
Programmeer het NodeMCU-bord
Programmeer het NodeMCU-bord

Om de NodeMCU te programmeren, heb ik de Arduino-software gebruikt en nadat ik het bord erop had geïnstalleerd, zorgde ik ervoor dat ik de juiste versie en poort selecteerde, zodat ik de software kan uploaden. De mijne is versie 1.0, dus controleer met je board voordat je verder gaat.

Het eerste deel van de Arduino-code stelt alle noodzakelijke definities in die u op uw apparaat moet aanpassen. De eerste dergelijke instelling is de ssid van de WiFi en het wachtwoord, daarna moeten we de firebase-url en het firebase db-geheim instellen. Helaas is dit niet de aanbevolen manier om verbinding te maken met de database, maar vanaf nu is dit de enige manier waarop de bibliotheek dit ondersteunt. U kunt dit geheim vinden onder het menu Projectinstellingen, serviceaccounts in de Firebase-console.

De volgende definitie is het pad dat we zullen controleren op updates en de apparaat-ID. De apparaat-ID is nodig, dus als we meerdere apparaten hebben om over dezelfde gebeurtenissen te informeren, moeten we weten welk apparaat ons heeft gewaarschuwd voor de gebeurtenis en dat registreren. Als laatste moeten we de pin instellen waarop we de zoemer hebben aangesloten en dit is in ons geval D2.

De setup-functie definieert de ingebouwde led-pin en de D2-pinnen als uitgangen, start de seriële communicatie om te weten wat er aan de hand is en maakt verbinding met het gespecificeerde WiFi-netwerk. Zodra de verbinding tot stand is gebracht, start het de communicatie met Firebase en krijgt het de laatste waarde waarvoor we hebben gerapporteerd. Het begint dan te luisteren naar wijzigingen op het opgegeven pad.

In de hoofdlus is er een oproep naar de knipperfunctie die de ingebouwde led 500 milliseconden laat knipperen zodat we kunnen zien dat het apparaat actief is. Wanneer een wijziging wordt gedetecteerd en er gegevens beschikbaar zijn die we kunnen lezen met de beschikbare functie, wordt de nieuwe waarde van het knooppunt gelezen, het verschil wordt berekend omdat er in de tussentijd meerdere gebeurtenissen kunnen zijn geweest en er wordt een pieptoon geproduceerd voor elke keer van het verschil.

Als het verschil tussen de laatst gerapporteerde waarde en de nieuwe waarde bijvoorbeeld 4 is, worden er 4 pieptonen geproduceerd om u te laten weten dat er 4 nieuwe aankopen zijn gedaan. De piepfunctie maakt gebruik van de ingebouwde toonfunctie om een bepaalde frequentie via de zoemer gedurende een bepaalde tijd af te spelen.

Nadat de pieptonen zijn geproduceerd, wordt de nieuwe waarde voor het opgegeven apparaat bijgewerkt en wordt de streaming opnieuw gestart. Momenteel is er een openstaand probleem in de arduino firebase-bibliotheek dat de streaming niet automatisch doorgaat nadat we handmatig een waarde hebben opgeslagen, dus we moeten deze opnieuw opstarten.

Stap 4: Geniet van uw apparaat

Geniet van uw apparaat!
Geniet van uw apparaat!

De volledige code die ik heb gebruikt, is beschikbaar op mijn GitHub-account die hieronder is gelinkt, samen met de link naar het schema van het project.

Broncode

Schematisch

De code kan gemakkelijk worden gebruikt om voor veel verschillende scenario's en evenementen te werken en ik weet zeker dat je er veel plezier mee zult hebben om ermee te spelen.

Voor mij was dit echt een leuke build en ik heb er heel veel over kunnen leren en daar ben ik erg blij mee. Ik hoop dat het je kan helpen met je project, maar als je merkt dat je vastzit aan een onderdeel ervan of als je meer uitleg nodig hebt, laat het me dan weten in de comments en ik zal mijn best doen om je te helpen.

Als je het project leuk vond, abonneer je dan op mijn YouTube-kanaal:

Proef de code

Aanbevolen: