INHOUDSOPGAWE:

Realtime gebeurteniskennisgewings met behulp van NodeMCU (Arduino), Google Firebase en Laravel: 4 stappe (met foto's)
Realtime gebeurteniskennisgewings met behulp van NodeMCU (Arduino), Google Firebase en Laravel: 4 stappe (met foto's)

Video: Realtime gebeurteniskennisgewings met behulp van NodeMCU (Arduino), Google Firebase en Laravel: 4 stappe (met foto's)

Video: Realtime gebeurteniskennisgewings met behulp van NodeMCU (Arduino), Google Firebase en Laravel: 4 stappe (met foto's)
Video: Realtime synchronisatie tussen Excel en Google Spreadsheets zonder Excel-invoegtoepassingen 2024, November
Anonim
Image
Image
Realtime gebeurteniskennisgewings met behulp van NodeMCU (Arduino), Google Firebase en Laravel
Realtime gebeurteniskennisgewings met behulp van NodeMCU (Arduino), Google Firebase en Laravel

Wou u al ooit in kennis gestel word as daar 'n aksie op u webwerf is, maar e -pos pas nie? Wil u 'n geluid of 'n klokkie hoor elke keer as u 'n uitverkoping doen? Of is u onmiddellike aandag nodig weens 'n noodgeval tuis?

Hierdie toestel kan u intyds waarsku oor alles waarvan u hou.

Stap 1: Draai die kring op

Draai die kring op
Draai die kring op
Draai die kring op
Draai die kring op

Die toestel wat ek gebou het, bestaan uit 'n NodeMCU -bord met 'n zoemer om my te waarsku oor die verkope wat op 'n webwerf gemaak word. Die mikrobeheerder word geprogrammeer met behulp van die Arduino -sagteware, en die aanvangsdeel kan enige web-, iOS- of Android -toepassing wees. Ek het twee eenvoudige webtoepassings geskep, een in Laravel en die ander in gewone HTML en JavaScript vir die voorbeeld.

Aangesien die NodeMCU -kaart veilig kan werk tot ongeveer 12mA stroom op die penne, is die zoemer deur 'n NPN -transistor verbind. Ek het 2N2222 gebruik, want ek het baie daarvan, maar ek is seker dat die beginsel dieselfde sal wees met enige ander NPN -transistor.

Om die stroombaan aan te sluit, koppel die kollektor van die transistor aan die Vin -pen op die bord. Die gonser werk op 5V, en aangesien ons die toestel van USB af sal gebruik, gee hierdie pen ons die spanning voor die 3.3V -reguleerder op die bord.

Koppel dan die positiewe kant van die zoemer op die emitter van die transistor en die negatiewe pen van die zoemer aan enige van die grondpenne op die bord. Ek het pen 2 gebruik, maar u kan dit ook verbind met penne 9, 25 of 29.

Die basis van die transistor is gekoppel aan pen D2 wat korreleer met GPIO 4 op die Arduino -sagteware. Met hierdie opset sal die transistor effektief funksioneer as 'n skakelaar wat die gonser by elke gebeurtenis aanskakel. In plaas van die gonser kan u 'n relais op dieselfde manier aansluit om enige hoofapparaat soos gloeilampe, masjiene of 'n sirene te kan bestuur as u 'n alarm maak.

Stap 2: Berei die webprogramme voor

Berei die webprogramme voor
Berei die webprogramme voor
Berei die webprogramme voor
Berei die webprogramme voor
Berei die webprogramme voor
Berei die webprogramme voor

Vir die opwekking en intydse deel van die toestel, gebruik ons Google se Firebase Realtime -databasis. Dit is 'n wonderlike NoSQL -wolkdatabasis wat deur Google gemaak is en wat data -sinchronisasie in real -time bied tussen elk van die platforms wat dit gebruik.

Skep eers die projek met 'n naam van u keuse. Sodra dit geskep is, skep u 'n enkele node met die naam "telling" en begin dit met die waarde as 0. Dit is ons begin telling wat ons in die toekoms wil volg.

Die Laravel-toepassing gebruik die 'firebase-php' pakket van Kreait, en dit word hieronder gekoppel. Installeer die pakket deur 'composer require kreait/firebase-php' uit te voer. Sodra die installasie voltooi is, moet ons die beheerder skep waar die aksie sal plaasvind. Ek het die metode 'update' genoem en ek het dit op die roetes verbind met 'n POST -aksie.

Om die Firebase -instansie op te haal, benodig u 'n json -lêer wat u van u Firebase -konsole moet aflaai. Plaas hierdie lêer in die wortel van u Laravel -projek en noem dit firebase.json. By die opsporing van die firebase -instansie moet ons die pad na hierdie lêer verskaf met behulp van die withCredentials -metode.

Nadat ons die firebase -instansie gekry het, moet ons die verwysing na die databasis en die knoop wat ons vroeër geskep het, kry. By elke aksie kry ons die huidige waarde van die knoop, dit met een verhoog en stoor as dit terug is na die databasis. Dit hou ons gebeurtenisse dop waaroor ons moet in kennis stel.

Dieselfde kan bereik word met gewone HTML en JavaScript, met behulp van die voorgestelde basisbiblioteek. Hiermee moet ons eers die toepaslike instellings van die Firebase -konsole aan die config -skikking voorsien en die app inisieer. As ons eers geïnitialiseer is, kry ons 'n verwysing na die knoop waar ons die gebeurtenistellings stoor en 'n luisteraar aanheg om enige waardeverandering op te haal.

Boonop het ons nou 'n JavaScript -funksie wat met die klik op die knoppie ingedien word, in plaas van die vorm in te dien soos in die Laravel -voorbeeld, die telling opdateer en die opgedateerde waarde na die databasis terugskryf.

Stap 3: Programmeer die NodeMCU -raad

Programeer die NodeMCU -raad
Programeer die NodeMCU -raad
Programeer die NodeMCU -raad
Programeer die NodeMCU -raad
Programeer die NodeMCU -raad
Programeer die NodeMCU -raad

Om die NodeMCU te programmeer, het ek die Arduino -sagteware gebruik en nadat ek die bord daarop geïnstalleer het, het ek seker gemaak dat ek die regte weergawe en poort gekies het sodat ek die sagteware kan oplaai. Myne is weergawe 1.0, dus raadpleeg u raad voordat u verder gaan.

Die eerste deel van die Arduino -kode bevat al die nodige definisies wat u op u toestel moet aanpas. Die eerste so 'n instelling is die ssid van die WiFi en die wagwoord daarvan, dan moet ons die firebase -url en die firebase -db -geheue opstel. Ongelukkig is dit nie die aanbevole manier om met die databasis te skakel nie, maar dit is tans die enigste manier waarop die biblioteek dit ondersteun. U kan hierdie geheim vind onder die menu Projekinstellings, diensrekeninge in die vuurbasiskonsole.

Die volgende definisie is die pad wat ons gaan kyk na opdaterings en die toestel -ID. Die toestel -ID is nodig, dus as ons meer as een toestel het om oor dieselfde gebeurtenisse in kennis te stel, moet ons weet watter toestel ons vir die geleentheid in kennis gestel het en dit byhou. Laaste moet ons die pen waarmee ons die zoemer gekoppel het, opstel, en dit is D2 in ons geval.

Die opstelfunksie definieer die ingeboude led -pen en die D2 -penne as uitsette, begin die seriële kommunikasie om te weet wat aangaan en maak verbinding met die gespesifiseerde WiFi -netwerk. Sodra die verbinding tot stand gebring is, begin dit met die kommunikasie met Firebase en kry die laaste waarde waarvoor ons gerapporteer het. Dit begin dan luister na veranderinge op die gespesifiseerde pad.

In die hooflus is daar 'n oproep na die knipfunksie wat die ingeboude led vir 500 millisekondes knip, sodat ons kan sien dat die toestel aktief is. As 'n verandering opgespoor word en daar beskikbare data is wat ons met die beskikbare funksie kan lees, word die nuwe waarde van die knoop gelees, die verskil word bereken, aangesien daar intussen moontlik verskeie gebeurtenisse kon wees en 'n piep vir elke keer van die verskil.

Byvoorbeeld, as die verskil tussen die laas gerapporteerde waarde en die nuwe waarde 4 is, word 4 piepgeluide gegee om u te laat weet dat 4 nuwe aankope gedoen is. Die piepfunksie gebruik die ingeboude toonfunksie om 'n gespesifiseerde frekwensie vir 'n bepaalde tyd deur die zoemer te speel.

Nadat die piepgeluide geproduseer is, word die nuwe waarde vir die gespesifiseerde toestel opgedateer en die stroom word weer begin. Tans is daar 'n oop probleem op die arduino firebase -biblioteek dat die stroom nie outomaties voortgaan nadat ons 'n waarde handmatig gestoor het nie, sodat ons dit moet herbegin.

Stap 4: Geniet u toestel

Geniet u toestel!
Geniet u toestel!

Die volledige kode wat ek gebruik het, is beskikbaar op my GitHub -rekening wat hieronder gekoppel is, tesame met die skakel na die skema van die projek.

Bronkode

Skematiese

Die kode kan maklik aangeneem word om vir baie verskillende scenario's en geleenthede te werk, en ek is seker dat u baie plesier daarmee sal hê.

Vir my was dit 'n baie aangename konstruksie en ek het baie daarin geleer en daarvoor is ek baie gelukkig. Ek hoop dat dit u kan help met u projek, maar as u 'n deel daarvan ondervind, of as u verdere verduideliking nodig het, laat weet my dan in die kommentaar, en ek sal my bes doen om u te help.

As u van die projek hou, teken dan in op my YouTube -kanaal:

Proe die kode

Aanbeveel: