Orodha ya maudhui:
- Hatua ya 1: Mantiki ya Programu: Usanifu wa Mfumo
- Hatua ya 2: Hatua ya 1: Wiring wa vifaa
- Hatua ya 3: Hatua ya 2: Arduino
- Hatua ya 4: Hatua ya 3: NodeJS
- Hatua ya 5: Hatua ya 4: Kiolesura cha Wavuti
- Hatua ya 6: Matokeo
Video: Mradi wa Arduino: Dhibiti Elektroniki Kwenye Mtandao Kutumia Hifadhidata ya Nodejs + na SQL: 6 Hatua
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:53
Mradi Na: Mahmed.tech
Tarehe Iliyoundwa: 14 Julai 2017
Kiwango cha Ugumu: Kompyuta na ujuzi wa programu.
Mahitaji ya vifaa:
- Arduino Uno, Nano, Mega (nadhani MCU nyingi na unganisho la serial zitafanya kazi)
- LED moja na kipingamizi cha sasa cha kizuizi. Tumia kikokotoo hiki ikiwa huna uhakika: Ohms Calculator Law
- 10K Potentiometer.
Mahitaji ya Programu:
- IDU ya Arduino
- Node. JS (hii ni programu kwenye kompyuta, rahisi sana kusanikisha)
- Seva ya MySQL (njia rahisi niliyogundua ni kutumia mwenyeji wa bei rahisi. Pia unaweza kupata majina ya kikoa huru)
Lugha ya programu na maandishi imetumika:
Arduino (Iliyobadilishwa C / C ++), JavaScript (Nodejs), PHP, HTML & CSS
Utangulizi Mradi huu kwa kifupi: Kudhibiti mdhibiti mdogo wa Arduino kutoka kwa kiolesura cha wavuti. Kwa hivyo dhibiti kifaa chochote cha umeme kutoka mahali popote na mtandao. Nilitaka kunyoosha uelewa wangu wa programu na ukuzaji wa wavuti na ni njia gani nzuri ya kufanya hii kuliko kufanya mradi rahisi lakini mzuri. Vifaa vinahifadhiwa kidogo ili niweze kuzingatia zaidi programu. Kwa hivyo nilikwenda na LED rahisi, usanidi wa sufuria. Sufuria itatuma data na walioongozwa watapokea (mwangaza wa PWM). Kutumia NodeJS data ya serial ilisomwa (thamani ya potentiometer) na kuandikwa (mwangaza ulioongozwa). Sehemu ngumu ya mradi huu ilikuwa kupata data ya kuingiza kutoka eneo la mbali (seva ya wavuti)
Hatua ya 1: Mantiki ya Programu: Usanifu wa Mfumo
Takwimu za Potentiometer:
Hii inaanzia Arduino, soma thamani ya sufuria ni uchapishaji wa serial. Walakini, wakati huu tutatumia Node. JS kusoma thamani. NodeJS itafungua mawasiliano ya serial kwa bandari sawa na ambayo Arduino imeunganishwa na kusoma thamani ya sufuria iliyochapishwa. NodeJS kisha itapakia data kwenye hifadhidata ya mbali ya SQL, hii itatokea kila wakati thamani mpya ya sufuria inapochapishwa. Ukurasa wa wavuti utaunganisha kwenye hifadhidata ya seti ya hifadhidata ya SQL na upate thamani ya uwezo. Hii basi itaonyeshwa kwenye ukurasa wa wavuti.
Takwimu zilizoongozwa:
Kwa inayoongozwa mwangaza wa PWM utawekwa na mtumiaji kwenye ukurasa wa wavuti wa mbali, kwa hivyo safari yake inaanzia mwisho wa wigo. Takwimu za kuingiza zinahifadhiwa kwenye hifadhidata ya SQL, kila muda uliowekwa wa hifadhidata hukaguliwa kwa mabadiliko katika PWM iliyoongozwa, hii inafanywa na NodeJS. Ikiwa thamani ni tofauti na thamani ya hapo awali basi thamani mpya itatumwa kwa Arduino kupitia basi ya serial. Arduino inabadilisha thamani ya PWM ya pato la iliyoongozwa kubadilisha mwangaza wake.
Kikokotoo cha sheria cha Ohms hutumia fomula ya V = IR na P = IV = I²R = V² / R Kwa mradi huu, nitatumia mwongozo wa bluu. Hii ni muhimu kwa sababu kadiri mzunguko wa mwanga unavyoongezeka kushuka kwa voltage pia huongezeka. Kwa kuwa taa ya samawati ina masafa ya juu ikilinganishwa na kitu kama nyekundu iliyoongozwa. Hii inamaanisha voltage ya mbele zaidi. Kulingana na utengenezaji, aina, na saizi anuwai ya kufanya kazi itatofautiana. Kwa usanidi wangu, nilitumia kontena la 220 in katika safu, hasi chini na chanya kwa pini ya PWM kwenye Arduino. Sufuria iliunganishwa na pini ya analog. Na 5VCC mwisho mmoja GND mwingine na pini ya kati iliyounganishwa na pini ya analog (A0 kwa upande wangu).
Hatua ya 2: Hatua ya 1: Wiring wa vifaa
Hii ni rahisi sana: Unganisha tu kipinzani chako cha sasa cha upeo katika safu na LED hakikisha umeongozwa ni njia sahihi ya pande zote. Hoja moja itaenda kwa GND wakati mwisho mwingine utakwenda kwenye pini ya Arduino. Kwa usanidi wangu, nilitumia pin 12 kwa kuongozwa na A7 kwa Pot. Sina mpango tangu mzunguko wake rahisi sana. Walakini, nimepata hii mtandaoni (picha)
Hatua ya 3: Hatua ya 2: Arduino
Kwanza, risasi na sufuria zilikaguliwa ikiwa walikuwa wakifanya kazi kama inavyotarajiwa. Hii ilikuwa chini na programu rahisi ambapo thamani ya sufuria inadhibiti iliyoongozwa. Nilitumia kazi ya kukandamiza kubadilisha sufuria kutoka 0 hadi 1023 hadi 0 hadi 255, lakini rahisi / 4 inafanya kazi pia. Thamani ya sufuria ilisafishwa kwa kuchukua wastani wa wastani kutoka usomaji 10 mfululizo, hii ni kuondoa spikes. (Walakini, laini hii ilisababisha maswala na NodeJS kwa hivyo hii iliondolewa baadaye kwenye mradi - zaidi juu ya hiyo)
Nambari ya Arduino
Soma / Andika Serial Hatua inayofuata ni kuchukua pembejeo ya mtumiaji kupitia windows serial inayotolewa na maoni ya Arduino kuweka mwangaza. Ili kufanya hivyo, serial.parseInt () hutumiwa ambayo inachukua nambari kamili na inapuuza kamba. Pia, ukaguzi wa makosa umeongezwa kwenye nambari. Kiwango halali cha thamani ya PWM ni 0 - 255, mtumiaji anapoingia> 255 basi hutoa thamani 255 na ikiwa mtumiaji anaingiza thamani au <+/- 5 nimefanya hii ili usomaji uwe thabiti zaidi kwani ilikuwa mabadiliko.. Kwa nini hii ni shida kubwa inayohusiana na uppdatering wa SQL, zaidi juu ya hiyo baadaye.
Hatua ya 4: Hatua ya 3: NodeJS
Sitakuonyesha jinsi ya kupata au kuanzisha na seva ya SQL. Kuna tani za mafunzo huko nje.
Kuna hali kuu 3 kwa mpango wa NodeJS:
Soma Takwimu za Serial
Andika Takwimu za Siri
Sasisha Hifadhidata ya SQL
Ili kufanya unganisho la serial ndani ya NodeJS, moduli inayoitwa serialport inapaswa kupakuliwa ambayo inaweza kufanywa kwa kutumia amri ya npm. Fungua CMD kwenye folda ambapo mpango wa NodeJS utawekwa, weka kwa kuandika: npm install serialport Pia moduli ya SQL inapaswa kusanikishwa ili kuweza kuunganishwa na hifadhidata ya sql: npm sakinisha mysql NodeJS - Port Port Hatua yangu ya kwanza na NodeJS mpango ulikuwa kusoma data iliyochapishwa na kutuma mwangaza wa pwm kwa Arduino. Hii ilifanywa kwa kufungua unganisho la serial kwa brudrate sawa na bandari. Uunganisho ulipoanzishwa nilisoma ujumbe unaoingia na kuuchapisha kwenye dirisha la kiweko. Shida iliongezeka wakati nilijaribu kuandika thamani ya pwm kudhibiti mwangaza.
Iliendelea kutupa makosa: Port Not Open, suluhisho langu la kwanza lilikuwa kupiga kazi ya kuandika wakati kuna data inayoingia. Walakini hii ilikuwa suluhisho mbaya na sikuwa nimeridhika na suluhisho, ingawa ilifanya kazi ingeweza kutuma tu wakati thamani ya sufuria ilibadilishwa. Nambari ya mfano ya moduli ya serial haiwezi kufanya kazi ama kutupa kosa sawa. Baadaye niligundua kuwa programu hiyo ilikuwa ikijaribu kutekeleza kazi ya uandishi bila kufungua bandari, ambayo ilisababisha kosa hilo. Nilikuja kuzunguka shida hii kwa kutumia kazi ya setInterval ()
Maktaba ya MySQL ilitumika (npm kufunga MySQL) kuungana na hifadhidata ya SQL kwani seva kwenye eneo la mbali anwani ya IP ya seva ilitumika badala ya localhost.
var con inashikilia habari ya unganisho katika muundo wa JSON, mara tu unganisho limefanikiwa, hifadhidata inaweza kuulizwa kitanda. Kazi 2 ziliundwa moja kwa uppdatering meza nyingine kuchagua na vigezo kuchukua swali la SQL. Jedwali la sasisho linaitwa wakati thamani mpya ya sufuria inapokelewa na swala la kuangalia mwangaza litaendelea mara kwa mara.
Kiungo cha NodeJSCode
Hatua ya 5: Hatua ya 4: Kiolesura cha Wavuti
Kiolesura cha Wavuti
Ukurasa kuu wa wavuti uliandikwa katika PHP kwani tayari nilikuwa na uzoefu kutoka kwa Hifadhidata yangu ya CO323 na moduli ya Wavuti katika chuo kikuu. Jedwali na fomu ya html ilitumika kuonyesha data ya sql.
Nambari ya Ufikiaji ya PHP SQL: Unganisha Nenda kwa sehemu ya kiolesura cha wavuti.
HTML & CSS * Javascript Webapage Code: Unganisha Nenda chini
Ukurasa wa Mwisho wa Wavuti