Turinys:
- 1 žingsnis: programinės įrangos logika: sistemos architektūra
- 2 veiksmas: 1 žingsnis: aparatinės įrangos prijungimas
- 3 žingsnis: 2 žingsnis: „Arduino“
- 4 žingsnis: 3 žingsnis: „NodeJS“
- 5 veiksmas: 4 veiksmas: žiniatinklio sąsaja
- 6 žingsnis: rezultatas
Video: „Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Projektas: Mahmed.tech
Sukūrimo data: 2017 m. Liepos 14 d
Sunkumo lygis: pradedantysis, turintis tam tikrų programavimo žinių.
Techninės įrangos reikalavimas:
- Arduino Uno, Nano, Mega (manau, kad dauguma MCU su nuosekliu ryšiu veiks)
- Vienas LED ir srovės ribojimo rezistorius. Jei nesate tikri, naudokite šį skaičiuotuvą: Omo dėsnio skaičiuoklė
- 10K potenciometras.
Programinės įrangos reikalavimas:
- „Arduino IDE“
- Node. JS (tai programinė įranga kompiuteryje, labai paprasta įdiegti)
- „MySQL Server“(paprasčiausias būdas, kurį radau, yra naudoti pigų žiniatinklio prieglobą. Taip pat galite gauti nemokamų domenų vardų)
Naudojama programavimo ir scenarijų kalba:
„Arduino“(modifikuotas C/C ++), „JavaScript“(„Nodejs“), PHP, HTML ir CSS
Šis projektas trumpai: „Arduino“mikrovaldiklio valdymas iš žiniatinklio sąsajos. Todėl valdykite bet kurį elektros prietaisą iš bet kurios vietos, kurioje yra internetas. Norėjau išplėsti savo supratimą apie programavimą ir žiniatinklio kūrimą ir ką geriau tai padaryti, nei padaryti paprastą, bet veiksmingą projektą. Techninė įranga yra minimali, todėl galėčiau daugiau dėmesio skirti programinei įrangai. Taigi aš pasirinkau paprastą LED, puodo sąranką. Puodas siųs duomenis, o ledas gaus (PWM ryškumas). Naudojant „NodeJS“, buvo nuskaityti serijiniai duomenys (potenciometro vertė) ir užrašyti (šviesos diodų ryškumas). Sunkioji šio projekto dalis buvo gauti įvesties duomenis iš nuotolinės vietos (žiniatinklio serverio)
1 žingsnis: programinės įrangos logika: sistemos architektūra
Potenciometro duomenys:
Tai prasideda „Arduino“, skaitymo puodo vertė yra serijinė spauda. Tačiau šį kartą reikšmei skaityti naudosime „Node. JS“. „NodeJS“atidarys nuoseklųjį ryšį į tą patį prievadą, prie kurio prijungtas „Arduino“, ir perskaitys atspausdintą puodo vertę. Tada „NodeJS“įkels duomenis į nuotolinę SQL duomenų bazę, tai atsitiks kiekvieną kartą, kai bus atspausdinta nauja puodo vertė. Tinklalapis prisijungs prie SQL duomenų bazės nustatymo intervalo ir gaus potenciometro vertę. Tada tai bus rodoma tinklalapyje.
Led duomenys:
Vadovams PWM ryškumą vartotojas nustatys nuotoliniame tinklalapyje, todėl jo kelionė prasideda priešingame spektro gale. Įvesties duomenys išsaugomi SQL duomenų bazėje, kiekvieną nustatytą intervalą duomenų bazė tikrina, ar nepasikeitė vedamas PWM, tai daro „NodeJS“. Jei vertė skiriasi nuo ankstesnės, nauja vertė bus siunčiama į „Arduino“per nuosekliąją magistralę. „Arduino“keičia šviesos diodo išvesties PWM vertę, kad pakeistų jo ryškumą.
Omo dėsnio skaičiuoklė naudoja formulę V = IR ir P = IV = I²R = V²/R Šiam projektui naudosiu mėlyną lemputę. Tai svarbu, nes didėjant šviesos dažniui didėja ir įtampos kritimas. Kadangi mėlyna šviesa turi didesnį dažnį, nei kažkas panašaus į raudoną lemputę. Tai reiškia didesnę priekinę įtampą. Priklausomai nuo gamintojo, tipo ir dydžio, darbo diapazonas skirsis. Savo sąrankai aš naudoju 220 Ω rezistorių nuosekliai, neigiamai įžemintas ir teigiamas PWM kaiščiui „Arduino“. Puodas buvo prijungtas prie analoginio kaiščio. Kai 5VCC vienas galas GND, kitas ir vidurinis kaištis prijungtas prie analoginio kaiščio (mano atveju A0).
2 veiksmas: 1 žingsnis: aparatinės įrangos prijungimas
Tai labai paprasta: tiesiog nuosekliai prijunkite dabartinį ribojantį rezistorių prie šviesos diodo, kad įsitikintumėte, jog jūsų apšvietimas yra teisingas. Vienas taškas bus skirtas GND, o kitas galas bus skirtas Arduino kaiščiui. Savo sąrankai aš naudoju 12 kaištį, skirtą LED, o A7 - puodui. Aš neturiu schemos, nes jos labai paprasta grandinė. Tačiau radau tai internete (nuotrauka)
3 žingsnis: 2 žingsnis: „Arduino“
Pirmiausia buvo patikrinta, ar lemputė ir puodas veikia taip, kaip tikėtasi. Tai nulėmė paprasta programa, kurioje indikatoriaus vertė valdo indikatorių. Aš naudoju apribojimo funkciją, kad pakeisčiau puodo diapazoną nuo 0 iki 1023 į 0 iki 255, tačiau taip pat veikia paprastas /4. Puodo vertė buvo išlyginta, paėmus vidutinį 10 iš eilės rodmenų vidurkį, tai yra, kad būtų pašalinti smaigaliai. (Tačiau šis išlyginimas sukėlė problemų su „NodeJS“, todėl vėliau šis projektas buvo pašalintas - daugiau apie tai)
Kodas Arduino
Kitas žingsnis yra vartotojo įvestis per „Arduino ide“pateiktus serijinio monitoriaus langus, kad būtų nustatytas ryškumas. Norėdami tai padaryti, naudojamas serial.parseInt (), kuris paima sveiką skaičių ir ignoruoja eilutę. Be to, prie kodo pridedamas klaidų tikrinimas. Tinkamas PWM vertės diapazonas yra 0–255, kai vartotojas įveda> 255, jis priskiria reikšmę 255, o jei vartotojas įveda reikšmę arba <+/- 5, tai padariau, kad rodmuo būtų stabilesnis, nes jis buvo svyravimas. Kodėl tai yra didelė problema, susijusi su SQL atnaujinimu, daugiau apie tai vėliau.
4 žingsnis: 3 žingsnis: „NodeJS“
Aš nesiruošiu jums parodyti, kaip gauti ar nustatyti ir nustatyti SQL serverį. Ten yra daugybė pamokų.
Yra 3 pagrindiniai „NodeJS“programos aspektai:
Skaitykite serijos duomenis
Rašykite serijos duomenis
Atnaujinkite SQL duomenų bazę
Norėdami sukurti nuoseklųjį ryšį „NodeJS“, turite atsisiųsti modulį, pavadintą serialport, kurį galima padaryti naudojant komandą npm. Atidarykite CMD aplanke, kuriame bus saugoma „NodeJS“programa, įdiekite įvesdami: npm install serialport Taip pat turi būti įdiegtas SQL modulis, kad būtų galima prisijungti prie „SQL“duomenų bazės: npm install mysql „NodeJS“- nuoseklusis prievadas Pirmasis mano žingsnis naudojant „NodeJS“Programa turėjo skaityti atspausdintus duomenis ir siųsti „Pwm“ryškumą „Arduino“. Tai buvo padaryta atidarius nuoseklųjį ryšį tame pačiame braudrate ir uoste. Kai ryšys buvo užmegztas, perskaičiau gaunamus pranešimus ir atspausdinau juos ant konsolės lango. Problema iškilo, kai bandžiau parašyti pwm vertę, kad valdytų ryškumą.
Jis nuolat metė klaidas: prievadas neatidarytas, mano pirminis sprendimas buvo iškviesti rašymo funkciją, kai yra gaunamų duomenų. Tačiau tai buvo blogas sprendimas, ir aš buvau nepatenkintas sprendimu, nors jis ir veikė, jis atsiųs tik tada, kai bus pakeista puodo vertė. Pavyzdinis serijinio modulio kodas neveiks, nes bus įvesta ta pati klaida. Vėliau sužinojau, kad programa bandė vykdyti rašymo funkciją neatidarius prievado, todėl įvyko klaida. Šią problemą išsprendžiau naudodamas funkciją setInterval ()
„MySQL“biblioteka buvo naudojama (npm įdiegti „MySQL“) prisijungti prie SQL duomenų bazės, nes serveris, esantis atokioje vietoje, buvo naudojamas serverio IP adresas, o ne „localhost“.
„var con“saugo ryšio informaciją JSON formatu, sėkmingai užmezgus ryšį, duomenų bazė gali būti užklausta. Buvo sukurtos 2 funkcijos, skirtos atnaujinti lentelę, o kitas pasirinkti naudojant SQL užklausos parametrus. Atnaujinimo lentelė iškviečiama, kai gaunama nauja puodo vertė ir periodiškai vykdoma ryškumo tikrinimo užklausa.
„NodeJSCode“nuoroda
5 veiksmas: 4 veiksmas: žiniatinklio sąsaja
Žiniatinklio sąsaja
Pagrindinis tinklalapis buvo parašytas PHP, nes jau turėjau tam tikrą patirtį iš savo CO323 duomenų bazių ir žiniatinklio modulio universitete. HTML lentelė ir forma buvo naudojama SQL duomenims rodyti.
PHP SQL prieigos kodas: Nuoroda Pereikite prie žiniatinklio sąsajos skyriaus.
HTML ir CSS * „Javascript“tinklalapio kodas: nuoroda Slinkite į apačią
Galutinis tinklalapis
Rekomenduojamas:
Kaip sukurti pagrindinę svetainę naudojant „Notepad“: 4 žingsniai
Kaip sukurti pagrindinę svetainę naudojant „Notepad“: ar kas nors susimąstė: „Kaip sukurti svetainę iš pagrindinės rašymo programos?“Na, aišku, ne konkrečiai … Bet kokiu atveju, čia aš jums parodysiu, kaip sukurti PAGRINDINĮ svetainę naudojant tik užrašų knygelę
Svetainė filmui su Shelly: 4 žingsniai
Gyvenamasis kambarys filmui su Shelly: projekto santrauka Kaip sukurti labai paprastą automatizavimą naudojant „Google“namų rutiną, kad mano kambario svetainė būtų patogi žiūrėti filmą
Medinė RC valtis, kurią galite valdyti rankiniu būdu arba per svetainę: 9 žingsniai
Medinė RC valtis, kurią galite valdyti rankiniu būdu arba per svetainę: Sveiki, aš esu „Howest“studentas ir aš sukūriau medinę RC valtį, kurią galite valdyti per valdiklį arba per svetainę. Aš pavargau nuo rc transporto priemonių gedimo taip greitai ir aš norėjau kuo nors pasimėgauti, kai gyvenau prie jūros
Sukurkite savo svetainę pradedantiesiems: 5 žingsniai
Sukurti savo svetainę pradedantiesiems: Nesvarbu, ar kada nors svajojote būti kompiuterių programuotoju, ar kada nors naudojotės svetaine, kuri, pripažinkime, yra beveik visi, informacinės technologijos tapo verslo pagrindu. Nors programavimas iš pradžių gali pasirodyti šiek tiek bauginantis, mano tikslas
Kaip sukurti svetainę (žingsnis po žingsnio vadovas): 4 žingsniai
Kaip sukurti svetainę (žingsnis po žingsnio vadovas): Šiame vadove aš jums parodysiu, kaip dauguma žiniatinklio kūrėjų kuria savo svetaines ir kaip galite išvengti brangių svetainių kūrėjų, kurie dažnai yra per riboti didesnei svetainei. Aš taip pat padėti išvengti kai kurių klaidų, kurias padariau pradėdamas