Turinys:

„Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę: 6 žingsniai
„Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę: 6 žingsniai

Video: „Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę: 6 žingsniai

Video: „Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę: 6 žingsniai
Video: What is a Server? Servers vs Desktops Explained 2024, Lapkritis
Anonim
„Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę
„Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę
„Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę
„Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę
„Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę
„Arduino“projektas: elektronikos valdymas internetu naudojant „Nodejs + SQL“duomenų bazę ir svetainę

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

Programinės įrangos logika: sistemos architektūra
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

1 žingsnis: aparatinės įrangos prijungimas
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

4 žingsnis: žiniatinklio sąsaja
4 žingsnis: ž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: