Indholdsfortegnelse:
- Trin 1: Softwarelogik: Systemarkitektur
- Trin 2: Trin 1: Hardwareledninger
- Trin 3: Trin 2: Arduino
- Trin 4: Trin 3: NodeJS
- Trin 5: Trin 4: Webgrænsefladen
- Trin 6: Resultat
Video: Arduino Project: Kontrolelektronik over internettet ved hjælp af Nodejs + SQL Database & Website .: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Projekt Af: Mahmed.tech
Dato lavet: 14. juli 2017
Sværhedsgrad: Nybegynder med en vis programmeringskendskab.
Krav til hardware:
- Arduino Uno, Nano, Mega (jeg tror, at de fleste MCU'er med den serielle forbindelse fungerer)
- Enkelt LED og strømbegrænsende modstand. Brug denne lommeregner, hvis du ikke er sikker: Ohms Law Calculator
- 10K potentiometer.
Softwarekrav:
- Arduino IDE
- Node. JS (dette er en software på en computer, meget enkel at installere)
- MySQL Server (nemmeste måde jeg fandt er at bruge et billigt webhosting. Du kan også få gratis domænenavne)
Anvendt programmerings- og scriptsprog:
Arduino (ændret C/C ++), JavaScript (Nodejs), PHP, HTML og CSS
Introduktion Dette projekt i en nøddeskal: Styring af en Arduino mikrokontroller fra en webgrænseflade. Styr derfor enhver elektrisk enhed fra hvor som helst med internet. Jeg ville strække min forståelse af programmering og webudvikling og hvilken bedre måde at gøre dette på end at lave et simpelt, men effektivt projekt. Hardwaren holdes på et minimalt, så jeg kunne fokusere mere på software. Derfor gik jeg med en simpel LED, grydeopsætning. Gryden sender data, og LED'en modtager (PWM -lysstyrke). Ved hjælp af NodeJS blev de serielle data læst (potentiometerværdi) og skrevet (LED -lysstyrke). Den vanskelige del af dette projekt var at få inputdata fra en fjernplacering (webserver)
Trin 1: Softwarelogik: Systemarkitektur
Potentiometer data:
Dette starter ved Arduino, læs potværdi er seriel udskrivning. Denne gang vil vi dog bruge Node. JS til at læse værdien. NodeJS åbner seriel kommunikation til den samme port som Arduino er tilsluttet og læser den trykte potværdi. NodeJS uploader derefter dataene til en fjerntliggende SQL -database, dette sker hver gang en ny potværdi udskrives. En webside opretter forbindelse til SQL -databasesætintervallet og henter potentiometerværdien. Dette vil derefter blive vist på websiden.
Ledede data:
For LED'en indstilles PWM -lysstyrken af brugeren på en ekstern webside, så dens rejse starter i den modsatte ende af spektret. Inputdataene gemmes i en SQL -database, hvert sæt interval, databasen kontrolleres for en ændring i ledet PWM, udføres dette af NodeJS. Hvis værdien er forskellig fra den tidligere værdi, sendes den nye værdi til Arduino via en seriel bus. Arduino ændrer output PWM -værdien af LED'en for at ændre dens lysstyrke.
Ohms lovberegner bruger formlen V = IR og P = IV = I²R = V²/R Til dette projekt bruger jeg en blå lysdiode. Dette er vigtigt, fordi spændingsfaldet også stiger, når lysfrekvensen stiger. Da blåt lys har en højere frekvens i forhold til noget som en rød LED. Det betyder en højere fremspænding. Afhængigt af mærke, type og størrelse vil arbejdsområdet variere. Til mit setup brugte jeg en 220 Ω modstand i serie, negativ til jorden og positiv til en PWM -pin på en Arduino. Gryden blev tilsluttet en analog pin. Med 5VCC den ene ende GND den anden og den midterste pin forbundet til en analog pin (A0 i mit tilfælde).
Trin 2: Trin 1: Hardwareledninger
Dette er meget simpelt: Bare tilslut din nuværende begrænsningsmodstand i serie med LED'en, og sørg for, at du bliver ledt korrekt. Et punkt går til GND, mens en anden ende går til Arduino pin. Til min opsætning brugte jeg pin 12 til LED og A7 til Pot. Jeg har ikke en skematisk siden dens meget enkle kredsløb. Jeg fandt dette dog online (billede)
Trin 3: Trin 2: Arduino
Først blev led og pot kontrolleret, om de fungerede som forventet. Dette var nede ved et simpelt program, hvor potværdien styrer LED'en. Jeg brugte begrænsningsfunktion til at ændre pot -området fra 0 til 1023 til 0 til 255, men en enkel /4 fungerer også. Potværdien blev udjævnet ved at tage gennemsnitsgennemsnittet fra 10 på hinanden følgende aflæsninger, dette er for at fjerne pigge. (Denne udjævning forårsagede imidlertid problemer med NodeJS, så dette blev fjernet senere på projektet - mere om det)
Kode Arduino
Læs / skriv serielt Det næste trin er at tage brugerinput via de serielle skærmvinduer fra Arduino ideen til at indstille lysstyrken. For at gøre dette bruges serial.parseInt (), der tager en heltalværdi og ignorerer streng. Der tilføjes også en fejlkontrol til koden. Det gyldige område for en PWM -værdi er 0 - 255, når en bruger indtaster> 255, tildeler den værdien 255, og hvis brugeren indtaster værdi eller <+/- 5 har jeg gjort dette for at gøre aflæsningen mere stabil, siden det var udsving. Hvorfor dette er et stort problem relateret til SQL -opdatering, mere om det senere.
Trin 4: Trin 3: NodeJS
Jeg vil ikke vise dig, hvordan du får eller konfigurerer og SQL -server. Der er masser af tutorials derude.
Der er 3 hovedaspekter ved NodeJS -programmet:
Læs serielle data
Skriv serielle data
Opdater SQL Database
For at oprette en seriel forbindelse inden for NodeJS skal et modul kaldet serialport downloades, hvilket kan udføres ved hjælp af npm -kommandoen. Åbn CMD i den mappe, hvor NodeJS -programmet skal opbevares, installer ved at skrive: npm installer serielport SQL -modulet skal også installeres for at kunne oprette forbindelse til SQL -databasen: npm installere mysql NodeJS - Serial Port Mit første trin med NodeJS programmet var at læse de udskrevne data og sende pwm lysstyrke til Arduino. Dette blev gjort ved at åbne seriel forbindelse på samme braudrate og port. Når forbindelsen var etableret, læste jeg indgående beskeder og udskriver det på konsolvinduet. Problem opstod, da jeg forsøgte at skrive pwm -værdien for at styre lysstyrken.
Det blev ved med at kaste fejl: Port Ikke åben, min første løsning var at ringe til skrivefunktionen, når der er indgående data. Dette var dog en dårlig løsning, og jeg var ganske utilfreds med løsningen, selvom den virkede, ville den kun sende, når potværdien blev ændret. Eksempelkoden til det serielle modul ville ikke fungere, enten ved at smide den samme fejl. Jeg fandt senere ud af, at programmet forsøgte at udføre skrivefunktionen uden at åbne porten, hvilket resulterede i den fejl. Jeg kom udenom dette problem ved at bruge funktionen setInterval ()
NodeJS - MySQL MySQL -biblioteket blev brugt (npm install MySQL) til at oprette forbindelse til SQL -databasen, da serveren på et fjernt sted blev serverens IP -adresse brugt i stedet for localhost.
var con opbevarer forbindelsesoplysningerne i JSON -format, når forbindelsen er oprettet, kan databasen efterspørges. 2 funktioner blev oprettet, en til opdatering af tabellen, anden valg med parametre, der tog SQL -forespørgslen. Opdateringstabellen kaldes, når der modtages en ny potværdi, og forespørgsel om lysstyrkekontrol kører med jævne mellemrum.
NodeJSCode Link
Trin 5: Trin 4: Webgrænsefladen
Webgrænseflade
Hovedsiden blev skrevet i PHP, da jeg allerede havde nogle erfaringer fra mine CO323 -databaser og webmodulet på universitetet. HTML -tabel og -formular blev brugt til at vise sql -data.
PHP SQL -adgangskode: Link Rul til webgrænsefladesektionen.
HTML & CSS * Javascript -webstedskode: Link Rul til bunden
Sidste webside
Anbefalede:
Vejrstation: ESP8266 Med dyb søvn, SQL, tegning efter kolbe og plott: 3 trin
Weather Station: ESP8266 Med Deep Sleep, SQL, Graphing by Flask & Plotly: Ville det være sjovt at kende temperaturen, fugtigheden eller lysintensiteten på din altan? Jeg ved, jeg ville. Så jeg lavede en simpel vejrstation til at indsamle sådanne data. De følgende afsnit er de trin, jeg tog for at bygge en. Lad os komme i gang