Satura rādītājs:
- 1. darbība. Programmatūras loģika: sistēmas arhitektūra
- 2. darbība: 1. darbība: aparatūras vadu savienošana
- 3. darbība: 2. darbība: Arduino
- 4. darbība: 3. darbība: NodeJS
- 5. darbība: 4. darbība: tīmekļa saskarne
- 6. darbība: rezultāts
Video: Arduino projekts: elektronikas vadība internetā, izmantojot Nodejs + SQL datu bāzi un vietni: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Projekta autors: Mahmed.tech
Izgatavošanas datums: 2017. gada 14. jūlijs
Grūtības līmenis: iesācējs ar zināšanām par programmēšanu.
Aparatūras prasības:
- Arduino Uno, Nano, Mega (es domāju, ka lielākā daļa MCU ar sērijas savienojumu darbosies)
- Viens LED un strāvas ierobežošanas rezistors. Izmantojiet šo kalkulatoru, ja neesat pārliecināts: Omu likuma kalkulators
- 10K potenciometrs.
Prasība programmatūrai:
- Arduino IDE
- Node. JS (šī ir programmatūra datorā, ļoti vienkārši instalējama)
- MySQL serveris (vienkāršākais veids, ko es atradu, ir izmantot lētu tīmekļa mitināšanu. Jūs varat arī iegūt bezmaksas domēna vārdus)
Izmantotā programmēšanas un skriptu valoda:
Arduino (modificēts C/C ++), JavaScript (Nodejs), PHP, HTML un CSS
Šis projekts īsumā: Arduino mikrokontrollera vadīšana no tīmekļa saskarnes. Tāpēc kontrolējiet jebkuru elektrisko ierīci no jebkuras vietas ar internetu. Es gribēju paplašināt savu izpratni par programmēšanu un tīmekļa izstrādi un to, kas ir labāks veids, kā to darīt, nekā veikt vienkāršu, bet efektīvu projektu. Aparatūra ir minimāla, lai es varētu vairāk koncentrēties uz programmatūru. Tāpēc es izvēlējos vienkāršu LED, katla iestatīšanu. Katls nosūtīs datus, un LED saņems (PWM spilgtums). Izmantojot NodeJS, sērijas dati tika nolasīti (potenciometra vērtība) un uzrakstīti (gaismas spilgtums). Šī projekta sarežģītā daļa bija ievades datu iegūšana no attālas atrašanās vietas (tīmekļa servera)
1. darbība. Programmatūras loģika: sistēmas arhitektūra
Potenciometra dati:
Tas sākas ar Arduino, lasīšanas katla vērtība ir sērijveida drukāšana. Tomēr šoreiz vērtības lasīšanai izmantosim Node. JS. NodeJS atvērs sērijveida sakarus uz to pašu portu, kuram ir pievienots Arduino, un nolasa izdrukāto katla vērtību. Pēc tam NodeJS augšupielādēs datus attālā SQL datu bāzē; tas notiks katru reizi, kad tiek izdrukāta jauna katla vērtība. Tīmekļa lapa izveidos savienojumu ar SQL datu bāzes iestatīšanas intervālu un iegūs potenciometra vērtību. Pēc tam tas tiks parādīts tīmekļa vietnē.
LED dati:
Vadītajam PWM spilgtumu lietotājs iestatīs attālā tīmekļa lapā, tāpēc tā ceļojums sākas spektra pretējā galā. Ievades dati tiek saglabāti SQL datu bāzē, katrs iestatītais intervāls tiek pārbaudīts, vai datu bāzē nav izmaiņas vadītajā PWM, to veic NodeJS. Ja vērtība atšķiras no iepriekšējās vērtības, jaunā vērtība tiks nosūtīta uz Arduino, izmantojot seriālo kopni. Arduino maina LED izvades PWM vērtību, lai mainītu tā spilgtumu.
Omu likuma kalkulators izmanto formulas V = IR un P = IV = I²R = V²/R Šim projektam es izmantošu zilu LED. Tas ir svarīgi, jo, palielinoties gaismas frekvencei, palielinās arī sprieguma kritums. Tā kā zilajai gaismai ir lielāka frekvence salīdzinājumā ar kaut ko līdzīgu sarkanai gaismas diodei. Tas nozīmē lielāku priekšējo spriegumu. Atkarībā no markas, veida un izmēra darba diapazons būs atšķirīgs. Iestatīšanai es virknē izmantoju 220 Ω rezistoru, negatīvu pret zemi un pozitīvu PWM tapai Arduino. Katls bija savienots ar analogo tapu. Ar 5VCC vienu galu GND otru un vidējo tapu, kas savienots ar analogo tapu (manā gadījumā A0).
2. darbība: 1. darbība: aparatūras vadu savienošana
Tas ir ļoti vienkārši: vienkārši sērijveidā pievienojiet savu pašreizējo ierobežojošo rezistoru ar gaismas diodi, lai pārliecinātos, ka vadība ir pareiza. Viens punkts nonāks GND, bet otrs - Arduino tapai. Iestatīšanai es izmantoju tapu 12 LED un A7 podu. Man nav shēmas, jo tā ir ļoti vienkārša shēma. Tomēr es to atradu tiešsaistē (attēls)
3. darbība: 2. darbība: Arduino
Pirmkārt, tika pārbaudīts, vai vads un katls darbojas, kā paredzēts. To noteica vienkārša programma, kurā katla vērtība kontrolē LED. Es izmantoju ierobežošanas funkciju, lai mainītu katla diapazonu no 0 līdz 1023 uz 0 līdz 255, taču darbojas arī vienkāršs /4. Katla vērtība tika izlīdzināta, ņemot vidējo vidējo no 10 rādījumiem pēc kārtas, tas ir, lai novērstu tapas. (Tomēr šī izlīdzināšana radīja problēmas ar NodeJS, tāpēc tas tika noņemts vēlāk projektā - vairāk par to)
Kods Arduino
Nākamais solis ir lietotāja ievadīšana, izmantojot sērijveida monitora logus, ko nodrošina Arduino ide, lai iestatītu spilgtumu. Lai to izdarītu, tiek izmantots serial.parseInt (), kas ņem veselu skaitli un ignorē virkni. Turklāt kodam tiek pievienota kļūdu pārbaude. Derīgais PWM vērtības diapazons ir 0 - 255, kad lietotājs ievada> 255, tas piešķir vērtību 255, un, ja lietotājs ievada vērtību vai <+/- 5, es to darīju, lai lasījums būtu stabilāks, jo tas bija svārstības. Kāpēc šī ir liela problēma saistībā ar SQL atjaunināšanu, vairāk par to vēlāk.
4. darbība: 3. darbība: NodeJS
Es jums nerādīšu, kā iegūt vai iestatīt SQL serveri. Tur ir daudz pamācību.
Programmai NodeJS ir 3 galvenie aspekti:
Lasīt sērijas datus
Rakstiet sērijas datus
Atjauniniet SQL datu bāzi
Lai izveidotu sērijveida savienojumu NodeJS, ir jālejupielādē modulis ar nosaukumu serialport, ko var izdarīt, izmantojot komandu npm. Atveriet CMD mapē, kurā tiks glabāta NodeJS programma, instalējiet, ierakstot: npm install serialport Arī SQL modulis ir jāinstalē, lai varētu izveidot savienojumu ar SQL datu bāzi: npm install mysql NodeJS - Serial Port Mans pirmais solis ar NodeJS programmai bija jālasa izdrukātie dati un jānosūta pwm spilgtums Arduino. Tas tika darīts, atverot seriālo savienojumu tajā pašā bikšturā un ostā. Kad savienojums tika izveidots, es izlasīju ienākošos ziņojumus un izdrukāju tos konsoles logā. Problēma radās, mēģinot uzrakstīt pwm vērtību, lai kontrolētu spilgtumu.
Tas turpināja mest kļūdas: ports nav atvērts, mans sākotnējais risinājums bija izsaukt rakstīšanas funkciju, kad ir ienākošie dati. Tomēr tas bija slikts labojums, un es biju diezgan neapmierināts ar risinājumu, lai gan tas darbojās, tas sūtīs tikai tad, kad katla vērtība tiks mainīta. Sērijas moduļa piemēra kods nedarbosies, radot to pašu kļūdu. Vēlāk es uzzināju, ka programma mēģina izpildīt rakstīšanas funkciju, neatverot portu, kā rezultātā radās šī kļūda. Es atrisināju šo problēmu, izmantojot funkciju setInterval ()
NodeJS - MySQL MySQL bibliotēka tika izmantota (npm instalēt MySQL), lai izveidotu savienojumu ar SQL datu bāzi, jo serveris attālā vietā tika izmantota servera IP adrese, nevis localhost.
var con saglabā savienojuma informāciju JSON formātā, kad savienojums ir veiksmīgi izveidots, datu bāze var tikt vaicāta. Tika izveidotas 2 funkcijas, lai atjauninātu tabulu, citas atlasot ar parametriem, kas ņemti SQL vaicājumā. Atjaunināšanas tabula tiek izsaukta, kad tiek saņemta jauna katla vērtība un periodiski tiks izpildīts spilgtuma pārbaudes vaicājums.
NodeJSCode saite
5. darbība: 4. darbība: tīmekļa saskarne
Tīmekļa saskarne
Galvenā tīmekļa lapa tika uzrakstīta PHP, jo man jau bija zināma pieredze no manām CO323 datu bāzēm un tīmekļa moduļa universitātē. HTML tabula un forma tika izmantota, lai parādītu SQL datus.
PHP SQL piekļuves kods: saite Ritiniet līdz sadaļai tīmekļa saskarne.
HTML un CSS * Javascript tīmekļa lapas kods: saite Ritiniet līdz apakšai
Galīgā tīmekļa lapa
Ieteicams:
Meteoroloģiskā stacija: ESP8266 ar dziļu miegu, SQL, grafiku ar kolbu un zīmējumu: 3 soļi
Meteoroloģiskā stacija: ESP8266 Ar dziļu miegu, SQL, grafiku ar kolbu un zīmējumu: Vai būtu jautri uzzināt jūsu balkona temperatūru, mitrumu vai gaismas intensitāti? Es zinu, ka gribētu. Tāpēc es izveidoju vienkāršu laika staciju, lai savāktu šādus datus. Šīs sadaļas ir soļi, ko es veicu, lai izveidotu vienu. Sāksim