Sisukord:
- Samm 1: Tarkvara loogika: süsteemi arhitektuur
- 2. samm: 1. samm: riistvara juhtmestik
- 3. samm: 2. samm: Arduino
- 4. samm: 3. samm: NodeJS
- 5. samm: 4. samm: veebiliides
- 6. samm: tulemus
Video: Arduino projekt: elektroonika juhtimine Interneti kaudu, kasutades Nodejs + SQL andmebaasi ja veebisaiti: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Projekti autor: Mahmed.tech
Valmistamise kuupäev: 14. juuli 2017
Raskusaste: algaja, kellel on teatud programmeerimisalased teadmised.
Riistvara nõue:
- Arduino Uno, Nano, Mega (ma arvan, et enamik jadaühendusega MCU -sid töötab)
- Üks LED ja voolu piirav takisti. Kasutage seda kalkulaatorit, kui te pole kindel: Ohmi seaduse kalkulaator
- 10K potentsiomeeter.
Tarkvara nõue:
- Arduino IDE
- Node. JS (see on tarkvara arvutis, väga lihtne paigaldada)
- MySQL Server (lihtsaim viis, mille leidsin, on odava veebimajutuse kasutamine. Samuti saate tasuta domeeninimesid)
Programmeerimis- ja skriptikeel:
Arduino (muudetud C/C ++), JavaScript (Nodejs), PHP, HTML ja CSS
Sissejuhatus See projekt lühidalt: Arduino mikrokontrolleri juhtimine veebiliidese kaudu. Seetõttu kontrollige kõiki elektriseadmeid kõikjal, kus on internet. Tahtsin laiendada oma arusaamist programmeerimisest ja veebiarendusest ning mis oleks parem viis seda teha kui lihtsa, kuid tõhusa projekti tegemine. Riistvara hoitakse minimaalsel tasemel, et saaksin rohkem keskenduda tarkvarale. Seetõttu läksin lihtsa LED -i ja potti seadistamisega. Pott saadab andmeid ja LED võtab vastu (PWM heledus). NodeJS -i abil loeti seeriaandmeid (potentsiomeetri väärtus) ja kirjutati (led -heledus). Selle projekti keeruline osa oli sisendandmete hankimine kaugest asukohast (veebiserver)
Samm 1: Tarkvara loogika: süsteemi arhitektuur
Potentsiomeetri andmed:
See algab Arduino'st, loe poti väärtus on seeriaprint. Seekord kasutame väärtuse lugemiseks siiski Node. JS. NodeJS avab jadaühenduse samasse porti, kuhu Arduino on ühendatud, ja loeb prinditud poti väärtuse. Seejärel laadib NodeJS andmed üles kaugesse SQL -andmebaasi, see juhtub iga kord, kui uus poti väärtus prinditakse. Veebileht loob ühenduse SQL -andmebaasi seatud intervalliga ja saab potentsiomeetri väärtuse. Seejärel kuvatakse see veebisaidil.
Led andmed:
LED -i jaoks määrab PWM -i heleduse kasutaja kauglehel, nii et selle teekond algab spektri vastasotsast. Sisendandmed salvestatakse SQL -andmebaasi, iga määratud ajavahemiku järel kontrollitakse andmebaasi LED -PWM -i muutusi, seda teeb NodeJS. Kui väärtus erineb eelmisest, saadetakse uus väärtus Arduinole jadasiini kaudu. Arduino muudab LED -i väljundi PWM -väärtust, et muuta selle heledust.
Ohmi seaduse kalkulaator kasutab valemit V = IR ja P = IV = I²R = V²/R Selle projekti jaoks kasutan sinist LED -i. See on oluline, sest valguse sageduse kasvades suureneb ka pingelangus. Kuna sinisel valgusel on kõrgem sagedus kui midagi punase LED -i sarnast. See tähendab suuremat edasipinget. Sõltuvalt tootest, tüübist ja suurusest on tööpiirkond erinev. Seadistamiseks kasutasin 220 Ω takisti järjestikku, negatiivne maapinnale ja positiivne PWM -pinnile Arduino peal. Pott oli ühendatud analoogpistikuga. 5VCC üks ots GND teine ja keskmine tihvt on ühendatud analoogpingega (minu puhul A0).
2. samm: 1. samm: riistvara juhtmestik
See on väga lihtne: lihtsalt ühendage oma praegune piiravatakisti järjestikku LED -iga ja veenduge, et juhtimine oleks õige. Üks punkt läheb GND -le, teine ots aga Arduino tihvtile. Seadistamiseks kasutasin LED -i jaoks tihvti 12 ja poti jaoks A7. Mul pole skeemi, kuna see on väga lihtne ahel. Siiski leidsin selle veebist (pilt)
3. samm: 2. samm: Arduino
Esiteks kontrolliti ledi ja potti, kas need töötasid ootuspäraselt. Selle vähendas lihtne programm, kus poti väärtus juhib LED -e. Kasutasin piiramisfunktsiooni, et muuta pottide vahemikku 0 kuni 1023 kuni 0 kuni 255, kuid lihtne /4 töötab ka. Poti väärtust tasandati, võttes kümne järjestikuse näidu keskmise keskmise, see tähendab naastude eemaldamist. (Kuid see silumine põhjustas probleeme NodeJS -iga, nii et see eemaldati hiljem projektist - rohkem sellest)
Kood Arduino
Järgmine samm on heleduse seadistamiseks kasutaja sisendi võtmine Arduino ide pakutavate jadamonitori akende kaudu. Selleks kasutatakse serial.parseInt (), mis võtab täisarvu ja ignoreerib stringi. Samuti lisatakse koodile veakontroll. PWM väärtuse kehtiv vahemik on 0–255, kui kasutaja sisestab> 255, määrab see väärtuse 255 ja kui kasutaja sisestab väärtuse või <+/- 5, olen seda teinud, et muuta näit stabiilsemaks, kuna see oli kõikumine. Miks on see SQL -i värskendamisega seotud suur probleem, sellest lähemalt hiljem.
4. samm: 3. samm: NodeJS
Ma ei näita teile, kuidas SQL -serverit hankida või seadistada. Seal on palju õpetusi.
Programmil NodeJS on kolm peamist aspekti:
Seeriaandmete lugemine
Kirjutage seeriaandmeid
Värskendage SQL -andmebaasi
Jadaühenduse loomiseks NodeJS -is tuleb alla laadida moodul nimega serialport, mida saab teha käsuga npm. Avage CMD kaustas, kus NodeJS -i programmi hoitakse, installige see, tippides: npm install serialport Samuti peab SQL -andmebaasiga ühenduse loomiseks olema installitud SQL -moodul: npm install mysql NodeJS - jadaport Minu esimene samm NodeJS -iga programm pidi lugema prinditud andmeid ja saatma Arduinole pwm heleduse. Seda tehti, avades jadaühenduse samal braudrateel ja pordil. Kui ühendus oli loodud, lugesin sissetulevaid sõnumeid ja printisin selle konsooli aknale. Probleem tekkis, kui proovisin heleduse reguleerimiseks pwm väärtust kirjutada.
See viskas pidevalt vigu: port pole avatud, minu esialgne lahendus oli helistada kirjutamisfunktsioonile, kui saabuvad andmed on olemas. Kuid see oli halb lahendus ja ma olin lahendusega üsna rahul, kuigi see töötas, saadab see alles siis, kui potti väärtust muudetakse. Seeriamooduli näidiskood ei töötaks ka sama vea korral. Hiljem sain teada, et programm üritas kirjutamisfunktsiooni täita ilma pordi avamata, mille tulemuseks oli see tõrge. Selle probleemi lahendasin funktsiooni setInterval () abil
NodeJS - MySQL SQL -andmebaasiga ühenduse loomiseks kasutati MySQL -i teeki (npm install MySQL), kuna server kauges kohas kasutati localhost -i asemel serveri IP -aadressi.
var con hoiab ühenduse teavet JSON -vormingus, kui ühendus on edukalt loodud, saab andmebaasi pärida. Loodi 2 funktsiooni, üks tabeli värskendamiseks, teine SQL -päringu võtvate parameetritega. Värskendustabelit kutsutakse, kui uus poti väärtus on vastu võetud ja heleduse kontrollipäring käivitatakse perioodiliselt.
NodeJSCode link
5. samm: 4. samm: veebiliides
Veebiliides
Peamine veebileht oli kirjutatud PHP -s, kuna mul oli juba mõningaid kogemusi oma CO323 andmebaasidest ja ülikooli veebimoodulist. SQL -i andmete kuvamiseks kasutati HTML -i tabelit ja vormi.
PHP SQL -pääsukood: link Kerige veebiliidese jaotiseni.
HTML ja CSS * Javascripti veebilehe kood: link Kerige alla
Lõplik veebileht
Soovitan:
Ilmajaam: ESP8266 koos sügava unerežiimi, SQL -i, kolvi ja graafilise joonistamisega: 3 sammu
Ilmajaam: ESP8266 Deep Sleep, SQL, Flask & Plotly joonistamine: Kas oleks lõbus teada oma rõdu temperatuuri, niiskust või valguse intensiivsust? Ma tean, et tahaksin. Seega tegin selliste andmete kogumiseks lihtsa ilmajaama. Järgmised lõigud on sammud, mida ma selle ehitamiseks võtsin. Alustame