INHOUDSOPGAWE:

Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf: 6 stappe
Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf: 6 stappe

Video: Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf: 6 stappe

Video: Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf: 6 stappe
Video: 1. Q light controller plus Getting started with QLC+. Fixtures and functions 2024, November
Anonim
Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf
Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf
Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf
Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf
Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf
Arduino -projek: beheer elektronika oor die internet met behulp van Nodejs + SQL -databasis en webwerf

Projek Deur: Mahmed.tech

Datum gemaak: 14 Julie 2017

Moeilikheidsgraad: Beginner met 'n paar programmeerkennis.

Hardewarevereiste:

- Arduino Uno, Nano, Mega (ek dink die meeste MCU met die seriële verbinding sal werk)

- Enkele LED en stroombeperkende weerstand. Gebruik hierdie sakrekenaar as u nie seker is nie: Ohms Law Sakrekenaar

- 10K potensiometer.

Sagtewarevereiste:

- Arduino IDE

- Node. JS (dit is 'n sagteware op 'n rekenaar, baie eenvoudig om te installeer)

- MySQL Server (die maklikste manier wat ek gevind het, is om 'n goedkoop webhosting te gebruik. U kan ook gratis domeinname kry)

Gebruikte programmeertaal en scripttaal:

Arduino (Gewysigde C/C ++), JavaScript (Nodejs), PHP, HTML en CSS

Inleiding Hierdie projek in 'n neutedop: die beheer van 'n Arduino -mikrobeheerder vanaf 'n webkoppelvlak. Beheer dus enige elektriese toestel vanaf enige plek met die internet. Ek wou my begrip van programmering en webontwikkeling uitbrei en watter beter manier is om dit te doen as om 'n eenvoudige maar effektiewe projek te doen. Die hardeware word tot 'n minimum beperk, sodat ek meer op sagteware kan fokus. Daarom het ek 'n eenvoudige LED -potopstelling gehad. Die pot stuur data en die LED ontvang (PWM -helderheid). Met behulp van NodeJS is die seriële data gelees (potensiometerwaarde) en geskryf (led -helderheid). Die moeilike deel van hierdie projek was die invoer van data vanaf 'n afgeleë plek (webbediener)

Stap 1: Sagteware -logika: stelselargitektuur

Sagteware -logika: stelselargitektuur
Sagteware -logika: stelselargitektuur

Potensiometer data:

Dit begin by die Arduino; die waarde van die pot is seriële druk. Hierdie keer sal ons egter Node. JS gebruik om die waarde te lees. NodeJS sal seriële kommunikasie na dieselfde poort oopmaak as waarmee die Arduino gekoppel is en die waarde van die gedrukte pot lees. NodeJS sal die data dan na 'n afgeleë SQL -databasis oplaai, dit sal gebeur elke keer as 'n nuwe potwaarde gedruk word. 'N Webblad koppel aan die SQL -databasis -stelinterval en haal die potensiometerwaarde op. Dit sal dan op die webblad verskyn.

Geleide data:

Vir LED's word die PWM -helderheid deur die gebruiker op 'n afgeleë webblad bepaal, sodat die reis aan die teenoorgestelde kant van die spektrum begin. Die invoerdata word in 'n SQL -databasis gestoor; elke stel interval wat die databasis nagaan, word nagegaan vir 'n verandering in geleide PWM; dit word gedoen deur NodeJS. As die waarde verskil van die vorige waarde, word die nuwe waarde via 'n seriële bus na die Arduino gestuur. Die Arduino verander die uitvoer -PWM -waarde van die LED om die helderheid daarvan te verander.

Ohms law calculator gebruik die formule se V = IR en P = IV = I²R = V²/R Vir hierdie projek sal ek 'n blou led gebruik. Dit is belangrik omdat die spanningsval ook toeneem namate die ligfrekwensie toeneem. Aangesien blou lig 'n hoër frekwensie het in vergelyking met iets soos 'n rooi LED. Dit beteken 'n hoër voorspanning. Afhangende van die merk, tipe en grootte, sal die werkreeks wissel. Vir my opstelling gebruik ek 'n 220 Ω -weerstand in serie, negatief tot grond en positief tot 'n PWM -pen op 'n Arduino. Die pot is gekoppel aan 'n analoog pen. Met 5VCC aan die een kant GND die ander en die middelste pen gekoppel aan 'n analoog pen (A0 in my geval).

Stap 2: Stap 1: Hardeware -bedrading

Stap 1: Hardeware -bedrading
Stap 1: Hardeware -bedrading

Dit is baie eenvoudig: verbind u huidige beperkingsweerstand in serie met die LED, maak seker dat u gelei is. Een punt gaan na GND, terwyl 'n ander einde na Arduino -pen gaan. Vir my opstelling gebruik ek pen 12 vir LED en A7 vir Pot. Ek het nie 'n skematiese weergawe nie, aangesien dit baie eenvoudig is. Ek het dit egter aanlyn gevind (prent)

Stap 3: Stap 2: Arduino

Eers is die led en pot nagegaan of dit werk soos verwag. Dit is verlaag deur 'n eenvoudige program waar die potwaarde die LED beheer. Ek het die beperkingsfunksie gebruik om die potreeks van 0 na 1023 na 0 na 255 te verander, maar 'n eenvoudige /4 werk ook. Die potwaarde is glad gemaak deur die gemiddelde gemiddelde van 10 opeenvolgende metings te neem, om spykers te verwyder. (Hierdie gladstryking het egter probleme met NodeJS veroorsaak, so dit is later op die projek verwyder - meer daaroor)

Kode Arduino

Lees / skryf reeks Die volgende stap is om gebruikersinvoer te neem via die seriële monitorvensters wat deur die Arduino ide verskaf word om die helderheid in te stel. Om dit te doen, word die serial.parseInt () gebruik wat 'n heelgetalwaarde neem en string ignoreer. 'N Foutkontrole word ook by die kode gevoeg. Die geldige omvang van 'n PWM -waarde is 0 - 255, as 'n gebruiker> 255 invoer, ken dit die waarde 255 toe en as die gebruiker waarde invoer of <+/- 5 het ek dit gedoen om die lesing meer stabiel te maak aangesien dit fluktuasie was. Waarom dit 'n groot probleem is wat verband hou met die opdatering van SQL, meer hieroor later.

Stap 4: Stap 3: NodeJS

Ek gaan jou nie wys hoe om 'n SQL -bediener op te stel of op te stel nie. Daar is tonne tutoriale daar buite.

Daar is drie hoofaspekte aan die NodeJS -program:

Lees reeksdata

Skryf reeksdata

Dateer SQL -databasis op

Om 'n seriële verbinding met NodeJS te maak, moet 'n module genaamd serialport afgelaai word, wat met die npm -opdrag gedoen kan word. Maak CMD oop in die gids waarin die NodeJS -program gehou word, installeer deur te tik: npm install serialport Ook moet die SQL -module geïnstalleer word om aan die SQL -databasis te kan koppel: npm installeer mysql NodeJS - Serial Port My eerste stap met die NodeJS Die program was om die gedrukte data te lees en die helderheid van pwm na die Arduino te stuur. Dit is gedoen deur die seriële verbinding met dieselfde braudrate en poort oop te maak. Nadat die verbinding tot stand gekom het, lees ek inkomende boodskappe en druk dit op die venster van die konsole. Die probleem het ontstaan toe ek die pwm -waarde probeer skryf om die helderheid te beheer.

Dit het steeds foute gegooi: Port Not Open, my eerste oplossing was om die skryffunksie te bel as daar inkomende data is. Dit was egter 'n slegte oplossing en ek was nogal ontevrede met die oplossing, alhoewel dit gewerk het, sou dit eers gestuur word as die potwaarde verander word. Die voorbeeldkode vir die reeksmodule sal ook nie werk nie, en dieselfde fout word ook veroorsaak. Ek het later uitgevind dat die program probeer om die skryffunksie uit te voer sonder om die poort oop te maak, wat tot die fout gelei het. Ek het hierdie probleem opgelos deur die funksie setInterval () te gebruik

NodeJS - MySQL Die MySQL -biblioteek is gebruik (npm install MySQL) om aan te sluit by die SQL -databasis, aangesien die bediener op 'n afgeleë plek die IP -adres van die bediener in plaas van localhost gebruik het.

var con hou die verbindingsinligting in JSON -formaat, nadat die verbinding suksesvol gemaak is, kan die databasis navraag doen. 2 funksies is geskep, een vir die opdatering van die ander tabel, met parameters wat die SQL -navraag opneem. Die opdateringstabel word genoem wanneer 'n nuwe potwaarde ontvang word en die navraag oor helderheidskontroles sal gereeld uitgevoer word.

NodeJSCode -skakel

Stap 5: Stap 4: die webkoppelvlak

Stap 4: die webkoppelvlak
Stap 4: die webkoppelvlak

Webkoppelvlak

Die hoofwebblad is in PHP geskryf, aangesien ek reeds ervaring gehad het met my CO323 -databasisse en die webmodule op universiteit. Html -tabel en -vorm is gebruik om die sql -data te vertoon.

PHP SQL -toegangskode: Skakel Blaai na die webkoppelvlak -afdeling.

HTML & CSS * Javascript -webbladkode: skakel Rol na onder

Finale webblad

Aanbeveel: