Përmbajtje:
- Hapi 1: Logjika e Softuerit: Arkitektura e Sistemit
- Hapi 2: Hapi 1: Instalimet e pajisjeve
- Hapi 3: Hapi 2: Arduino
- Hapi 4: Hapi 3: NodeJS
- Hapi 5: Hapi 4: Ndërfaqja në internet
- Hapi 6: Rezultati
Video: Projekti Arduino: Kontrolloni Elektronikën në Internet Duke Përdorur Nodejs + SQL Database & Website: 6 Hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:24
Projekti Nga: Mahmed.tech
Data e Krijimit: 14 Korrik 2017
Niveli i Vështirësisë: Fillestar me disa njohuri programimi.
Kërkesa për harduer:
- Arduino Uno, Nano, Mega (mendoj se shumica e MCU me lidhjen serike do të funksionojë)
- Rezistencë kufizuese e vetme LED & aktuale. Përdoreni këtë kalkulator nëse nuk jeni të sigurt: Llogaritësi i ligjit Ohms
- Potenciometër 10K.
Kërkesa për softuer:
- Arduino IDE
- Node. JS (ky është një program kompjuterik, shumë i thjeshtë për t’u instaluar)
- MySQL Server (mënyra më e lehtë që kam gjetur është të përdor një web hosting të lirë. Ju gjithashtu mund të merrni emra domain falas)
Gjuha e programimit dhe skriptimit e përdorur:
Arduino (Modifikuar C/C ++), JavaScript (Nodejs), PHP, HTML & CSS
HyrjeKy projekt me pak fjalë: Kontrolli i një mikrokontrolluesi Arduino nga një ndërfaqe në internet. Prandaj kontrolloni çdo pajisje elektrike nga kudo me internet. Doja të shtrija kuptueshmërinë time mbi programimin dhe zhvillimin e uebit dhe çfarë mënyrë më të mirë për ta bërë këtë sesa të bëja një projekt të thjeshtë por efektiv. Pajisja është mbajtur në minimum, kështu që unë mund të përqendrohem më shumë në softuer. Prandaj unë shkova me një instalim të thjeshtë LED, tenxhere. Tenxhere do të dërgojë të dhëna dhe led do të marrë (shkëlqim PWM). Duke përdorur NodeJS, të dhënat serike u lexuan (vlera e potenciometrit) dhe u shkruan (shkëlqimi i udhëhequr). Pjesa e vështirë e këtij projekti ishte marrja e të dhënave hyrëse nga një vend i largët (web server)
Hapi 1: Logjika e Softuerit: Arkitektura e Sistemit
Të dhënat e potenciometrit:
Kjo fillon në Arduino, vlera e tenxhere e lexuar është printim serik. Sidoqoftë, këtë herë ne do të përdorim Node. JS për të lexuar vlerën. NodeJS do të hapë komunikimin serik në të njëjtën port me të cilin Arduino është i lidhur dhe do të lexojë vlerën e tenxhere të shtypur. NodeJS pastaj do të ngarkojë të dhënat në një bazë të dhënash të largët SQL, kjo do të ndodhë sa herë që një vlerë e re tenxhere është e shtypur. Një faqe në internet do të lidhet me intervalin e vendosur të bazës së të dhënave SQL dhe do të marrë vlerën e potenciometrit. Kjo pastaj do të shfaqet në faqen në internet.
Të dhënat e udhëhequra:
Për led, shkëlqimi PWM do të vendoset nga përdoruesi në një faqe në internet të largët, kështu që udhëtimi i tij fillon në skajin e kundërt të spektrit. Të dhënat hyrëse ruhen në një bazë të dhënash SQL, çdo interval i caktuar i bazës së të dhënave kontrollohet për një ndryshim në led PWM, kjo bëhet nga NodeJS. Nëse vlera është e ndryshme nga vlera e mëparshme, atëherë vlera e re do t'i dërgohet Arduino përmes një autobusi serial. Arduino ndryshon vlerën dalëse të PWM të led për të ndryshuar shkëlqimin e tij.
Llogaritësi i ligjit Ohms përdor V = IR të formulës dhe P = IV = I²R = V²/R Për këtë projekt, unë do të përdor një led blu. Kjo është e rëndësishme sepse me rritjen e frekuencës së dritës rënia e tensionit gjithashtu rritet. Meqenëse drita blu ka një frekuencë më të lartë në krahasim me diçka si një led të kuq. Kjo do të thotë një tension më i lartë përpara. Në varësi të markës, llojit dhe madhësisë, sfera e punës do të ndryshojë. Për konfigurimin tim, kam përdorur një rezistencë 220 Ω në seri, negative në tokë dhe pozitive në një kunj PWM në një Arduino. Tenxhere ishte e lidhur me një kunj analog. Me 5VCC një fund GND tjetri dhe kunja e mesme e lidhur me një kunj analog (A0 në rastin tim).
Hapi 2: Hapi 1: Instalimet e pajisjeve
Kjo është shumë e thjeshtë: Thjesht lidhni rezistencën tuaj aktuale kufizuese në seri me LED, sigurohuni që të jeni drejtuar në rrugën e duhur. Një pikë do të shkojë te GND ndërsa një fund tjetër do të shkojë tek pin Arduino. Për konfigurimin tim, kam përdorur pin 12 për led dhe A7 për Pot. Unë nuk kam një skemë që nga qarku i tij shumë i thjeshtë. Sidoqoftë, e gjeta këtë në internet (imazhi)
Hapi 3: Hapi 2: Arduino
Së pari, plumbi dhe tenxhere u kontrolluan nëse po punonin siç pritej. Kjo u zbrit nga një program i thjeshtë ku vlera e tenxhere kontrollon led. Kam përdorur funksionin e kufizimit për të ndryshuar gamën e tenxhereve nga 0 në 1023 në 0 në 255, por një i thjeshtë /4 funksionon gjithashtu. Vlera e tenxhere u zbut duke marrë mesataren mesatare nga 10 lexime të njëpasnjëshme, kjo është për të hequr thumba. (Sidoqoftë, ky zbutje shkaktoi probleme me NodeJS kështu që kjo u hoq më vonë në projekt - më shumë për këtë)
Kodi Arduino
Lexoni / Shkruani Serial Hapi tjetër është marrja e hyrjes së përdoruesit përmes dritareve të monitorit serik të siguruar nga Arduino ide për të vendosur shkëlqimin. Për ta bërë këtë, përdoret serial.parseInt () i cili merr një vlerë të plotë dhe injoron vargun. Gjithashtu, një kontroll i gabimit i shtohet kodit. Gama e vlefshme e një vlere PWM është 0 - 255, kur një përdorues fut> 255 atëherë i jep vlerën 255 dhe nëse përdoruesi fut vlerën ose <+/- 5 e kam bërë këtë për ta bërë leximin më të qëndrueshëm pasi ishte luhatje Me Pse ky është një problem i madh që lidhet me azhurnimin e SQL, më shumë për këtë më vonë.
Hapi 4: Hapi 3: NodeJS
Unë nuk do t'ju tregoj se si të krijoni ose konfiguroni serverin SQL. Ka mijëra mësime atje.
Ekzistojnë 3 aspekte kryesore të programit NodeJS:
Lexoni të dhënat serike
Shkruani të dhënat serike
Përditësoni bazën e të dhënave SQL
Për të bërë një lidhje serike brenda NodeJS, duhet të shkarkohet një modul i quajtur serialport i cili mund të bëhet duke përdorur komandën npm. Hapni CMD në dosjen ku do të mbahet programi NodeJS, instaloni duke shtypur: npm install serialport Gjithashtu moduli SQL duhet të instalohet për të qenë në gjendje të lidhet me bazën e të dhënave sql: npm instaloni mysql NodeJS - Port Serial Hapi im i parë me NodeJS programi ishte leximi i të dhënave të shtypura dhe dërgimi i shkëlqimit pwm në Arduino. Kjo u bë duke hapur lidhjen serike në të njëjtën braudrate dhe port. Pasi u krijua lidhja, lexova mesazhet në hyrje dhe e printova në dritaren e tastierës. Problemi u ngrit kur u përpoqa të shkruaj vlerën e pwm për të kontrolluar shkëlqimin.
Vazhdonte të hidhte gabime: Porti Jo i Hapur, zgjidhja ime fillestare ishte të thërrisja funksionin e shkrimit kur ka të dhëna hyrëse. Sidoqoftë, kjo ishte një rregullim i keq dhe unë isha mjaft i pakënaqur me zgjidhjen, edhe pse funksionoi do të dërgonte vetëm kur vlera e tenxhere të ndryshohej. Kodi shembull për modulin serik nuk do të funksiononte duke hedhur të njëjtin gabim. Më vonë zbulova se programi po përpiqej të ekzekutonte funksionin e shkrimit pa hapur portën, gjë që rezultoi në atë gabim. Unë erdha rreth këtij problemi duke përdorur funksionin setInterval ()
NodeJS - MySQL Biblioteka MySQL u përdor (npm instaloni MySQL) për t'u lidhur me bazën e të dhënave SQL pasi serveri në një vend të largët u përdor adresa IP e serverit në vend të localhost.
var con mban informacionin e lidhjes në formatin JSON, pasi lidhja të jetë bërë me sukses, baza e të dhënave mund të kërkohet. 2 funksione u krijuan një për azhurnimin e tabelës tjetër duke zgjedhur duke zgjedhur parametrat në pyetjen SQL. Tabela e azhurnimit thirret kur merret një vlerë e re e tenxhere dhe pyetja e kontrollit të shkëlqimit do të funksionojë periodikisht.
Lidhja NodeJSCode
Hapi 5: Hapi 4: Ndërfaqja në internet
Ndërfaqja e uebit
Faqja kryesore e internetit u shkrua në PHP pasi unë tashmë kisha disa që kishin një përvojë nga bazat e mia të të dhënave CO323 dhe modulin e uebit në universitet. Tabela & forma Html u përdor për të shfaqur të dhënat sql.
Kodi i Qasjes PHP SQL: Link Shkoni te seksioni i ndërfaqes në internet.
HTML & CSS * Kodi i faqes në internet Javascript: Link Shkoni në fund
Uebfaqja Përfundimtare
Recommended:
Stacioni i motit: ESP8266 Me gjumë të thellë, SQL, Grafikimi sipas shisheve & Plotësisht: 3 hapa
Stacioni i motit: ESP8266 Me gjumë të thellë, SQL, grafikim sipas shisheve dhe komplotit: A do të ishte kënaqësi të njihnit temperaturën, lagështinë ose intensitetin e dritës në ballkonin tuaj? E di që do ta bëja. Kështu që unë bëra një stacion të thjeshtë moti për të mbledhur të dhëna të tilla. Seksionet e mëposhtme janë hapat që kam ndërmarrë për të ndërtuar një. Le të fillojmë