Բովանդակություն:

Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք. 6 քայլ
Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք. 6 քայլ

Video: Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք. 6 քայլ

Video: Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք. 6 քայլ
Video: RGB LED Hypnotic Light от Junk Box - переработка вещей 2024, Հուլիսի
Anonim
Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք
Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք
Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք
Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք
Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք
Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք

Նախագիծը ՝ Mahmed.tech

Ամսաթիվը ՝ 2017 թվականի հուլիսի 14

Դժվարության մակարդակ. Սկսնակ `ծրագրավորման որոշակի գիտելիքներով:

Սարքավորման պահանջ

- Arduino Uno, Nano, Mega (կարծում եմ, որ սերիական կապով MCU- ի մեծ մասը կաշխատի)

- Մեկ LED և ընթացիկ սահմանափակող դիմադրություն: Օգտագործեք այս հաշվիչը, եթե վստահ չեք: Ohms Law Calculator

- 10K պոտենցիոմետր:

Softwareրագրային ապահովման պահանջ

- Arduino IDE

- Node. JS (սա ծրագրակազմ է համակարգչում, տեղադրումը շատ պարզ է)

- MySQL Server (իմ գտած ամենահեշտ ձևը էժան վեբ հոստինգ օգտագործելն է: Դուք նաև կարող եք անվճար տիրույթի անուններ ստանալ)

Օգտագործված ծրագրավորման և սցենարային լեզու.

Arduino (փոփոխված C/C ++), JavaScript (Nodejs), PHP, HTML և CSS

ՆերածությունԱյս նախագիծը մի խոսքով. Վերահսկել Arduino միկրոկառավարիչը վեբ ինտերֆեյսից: Հետևաբար, ցանկացած էլեկտրական սարք վերահսկեք ինտերնետից ցանկացած վայրից: Wantedանկանում էի ընդլայնել ծրագրավորման և վեբ զարգացման իմ ընկալումը և ինչն է ավելի լավ դա անել, քան պարզ, բայց արդյունավետ նախագիծ անել: Սարքավորումը նվազագույնի է հասցված, այնպես որ ես կարող եմ ավելի շատ կենտրոնանալ ծրագրային ապահովման վրա: Հետևաբար, ես գնացի մի պարզ LED, կաթսայի տեղադրմամբ: Կաթսան կուղարկի տվյալներ, իսկ led- ը կստանա (PWM պայծառություն): NodeJS- ի միջոցով սերիական տվյալները կարդացվել են (պոտենցիոմետրի արժեք) և գրվել (led պայծառություն): Այս նախագծի դժվար մասը հեռավոր վայրից (վեբ սերվեր) մուտքային տվյալների ստացումն էր

Քայլ 1: Softwareրագրային ապահովման տրամաբանություն. Համակարգի ճարտարապետություն

Softwareրագրային ապահովման տրամաբանություն. Համակարգի ճարտարապետություն
Softwareրագրային ապահովման տրամաբանություն. Համակարգի ճարտարապետություն

Պոտենցիոմետրի տվյալներ

Սա սկսվում է Arduino- ից, կարդալ զամբյուղի արժեքը սերիական տպագիր է: Այնուամենայնիվ, այս անգամ մենք կօգտագործենք Node. JS արժեքը կարդալու համար: NodeJS- ը սերիական հաղորդակցություն կբացի նույն նավահանգստի հետ, որով Arduino- ն միացված է և կկարդա տպված զամբյուղի արժեքը: NodeJS- ը այնուհետև տվյալները կբեռնի հեռավոր SQL տվյալների բազայում, դա տեղի կունենա ամեն անգամ, երբ զամբյուղի նոր արժեքը տպվի: Վեբ էջը կկապվի SQL տվյալների բազայի սահմանված միջակայքին և կվերցնի պոտենցիոմետրի արժեքը: Այնուհետև այն կցուցադրվի վեբ էջում:

Առաջնորդվող տվյալներ

LED- ի համար PWM- ի պայծառությունը օգտագործողը սահմանում է հեռավոր վեբ էջում, ուստի նրա ճանապարհորդությունը սկսվում է սպեկտրի հակառակ ծայրից: Մուտքագրված տվյալները պահվում են SQL տվյալների բազայում, տվյալների բազայի յուրաքանչյուր սահմանված ընդմիջում ստուգվում է led PWM- ի փոփոխության համար, դա արվում է NodeJS- ի կողմից: Եթե արժեքը տարբերվում է նախորդ արժեքից, ապա նոր արժեքը սերիական ավտոբուսի միջոցով կուղարկվի Arduino- ին: Arduino- ն փոխում է led- ի ելքային PWM արժեքը `փոխելով դրա պայծառությունը:

Օմսի օրենքի հաշվիչը օգտագործում է բանաձևի V = IR և P = IV = I²R = V²/R Այս նախագծի համար ես կօգտագործեմ կապույտ լեդ: Սա կարևոր է, քանի որ լույսի հաճախականությունը մեծանում է, լարման անկումը նույնպես մեծանում է: Քանի որ կապույտ լույսն ավելի բարձր հաճախականություն ունի `համեմատած կարմիր լուսադիոդի հետ: Սա նշանակում է ավելի բարձր առաջային լարում: Կախված մակնիշից, տեսակից և չափից ՝ աշխատանքային միջակայքը կարող է տարբեր լինել: Իմ կարգաբերման համար ես օգտագործեցի 220 Ω դիմադրություն ՝ անընդմեջ ՝ բացասական գետնին և դրական PWM կապին Arduino- ում: Կաթսան միացված էր անալոգային քորոցին: 5VCC- ի մի ծայրով GND- ով մյուսը և միջին քորոցը միացված է անալոգային կապին (իմ դեպքում `A0):

Քայլ 2: Քայլ 1: Սարքավորման լարերի միացում

Քայլ 1: Սարքավորումների միացում
Քայլ 1: Սարքավորումների միացում

Սա շատ պարզ է. Պարզապես միացրեք ձեր ընթացիկ սահմանափակող դիմադրությունը շարքով LED- ի հետ, համոզվեք, որ դուք ճիշտ եք շրջված: Մի կետը կգնա GND- ին, իսկ մյուսը `Arduino pin- ին: Իմ տեղադրման համար ես օգտագործեցի 12 -րդ կապը led- ի և A7- ի Pot- ի համար: Ես սխեմատիկ չունեմ, քանի որ դրա շատ պարզ միացումն է: Այնուամենայնիվ, ես դա գտա առցանց (պատկեր)

Քայլ 3: Քայլ 2. Arduino

Նախ, լապտերը և կաթսան ստուգվեցին, եթե դրանք աշխատում էին ինչպես և սպասվում էր: Դա պայմանավորված էր մի պարզ ծրագրով, որտեղ կաթսայի արժեքը վերահսկում է led- ը: Ես օգտագործել եմ սահմանափակման գործառույթը `0 -ից 1023 -ը 0 -ից 255 -ը փոխելու համար, բայց պարզ /4 -ը նույնպես աշխատում է: Կաթսայի արժեքը հարթեցվել է ՝ 10 հաջորդական ընթերցումներից միջին միջին ցուցանիշը վերցնելով, այն ուղղված է բծերի հեռացմանը: (Այնուամենայնիվ, այս հարթեցումը խնդիրներ առաջացրեց NodeJS- ի հետ, ուստի այն ջնջվեց նախագծի ավելի ուշ `դրա մասին ավելին)

Կոդ Arduino

Սերիա կարդալ / գրել Հաջորդ քայլը օգտվողի մուտքն է Arduino ide- ի կողմից տրամադրված սերիական մոնիտորի պատուհանների միջոցով `պայծառությունը սահմանելու համար: Դա անելու համար օգտագործվում է serial.parseInt () - ը, որը վերցնում է ամբողջ արժեք և անտեսում տողը: Բացի այդ, սխալի ստուգումը ավելացվում է ծածկագրին: PWM արժեքի վավեր տիրույթը 0 - 255 է, երբ օգտվողը մուտքագրում է> 255, այն նշանակում է 255 արժեքը, և եթե օգտագործողը մուտքագրում է արժեք կամ <+/- 5, ես դա արել եմ ընթերցումը ավելի կայուն դարձնելու համար, քանի որ այն տատանում է. Ինչու է սա SQL- ի թարմացման հետ կապված մեծ խնդիր, դրա մասին ավելի ուշ:

Քայլ 4: Քայլ 3: NodeJS

Ես չեմ պատրաստվում ցույց տալ ձեզ, թե ինչպես ստանալ կամ կարգաբերել և տեղադրել SQL սերվեր: Կան բազմաթիվ տոննա ձեռնարկներ:

NodeJS ծրագրի 3 հիմնական ասպեկտ կա

Կարդացեք սերիական տվյալները

Գրեք սերիական տվյալներ

Թարմացրեք SQL տվյալների բազան

NodeJS- ում սերիական կապ հաստատելու համար պետք է ներբեռնել սերիական պորտ կոչվող մոդուլը, որը կարելի է անել npm հրամանի միջոցով: Բացեք CMD- ը այն թղթապանակի վրա, որտեղ կպահպանվի NodeJS ծրագիրը, տեղադրեք ՝ մուտքագրելով ՝ մուտքագրելով. Npm տեղադրել սերիալպորտ Նաև SQL մոդուլը պետք է տեղադրվի, որպեսզի կարողանա միանալ sql տվյալների բազային. Npm տեղադրել mysql NodeJS - սերիական նավահանգիստ ծրագիրը կարդալ տպագիր տվյալները և pwm պայծառությունն ուղարկել Arduino- ին: Դա արվել է ՝ նույն բրաուդրաթում և միացքում սերիական միացում բացելով: Երբ կապը հաստատվեց, ես կարդացի մուտքային հաղորդագրությունները և տպեցի այն վահանակի պատուհանի վրա: Խնդիր առաջացավ, երբ ես փորձեցի գրել pwm արժեքը ՝ պայծառությունը վերահսկելու համար:

Այն անընդհատ սխալներ էր նետում. Պորտը բաց չէ, իմ սկզբնական լուծումը մուտքի տվյալների առկայության դեպքում գրելու գործառույթն էր: Այնուամենայնիվ, սա վատ շտկում էր, և ես լիովին դժգոհ էի լուծումից, չնայած այն աշխատում էր, այն կուղարկվեր միայն այն դեպքում, երբ կաթսայի արժեքը փոխվեր: Սերիական մոդուլի օրինակելի կոդը չի աշխատի ՝ նույն սխալը նետելով: Հետագայում ես պարզեցի, որ ծրագիրը փորձում է կատարել գրելու գործառույթը ՝ առանց նավահանգիստը բացելու, ինչը հանգեցրեց այդ սխալի: Ես այս խնդրին բախվեցի ՝ օգտագործելով setInterval () գործառույթը

NodeJS - MySQL MySQL գրադարանը օգտագործվել է (npm տեղադրել MySQL) SQL տվյալների բազային միանալու համար, քանի որ հեռավոր վայրում գտնվող սերվերի փոխարեն սերվերի IP հասցեն օգտագործվել է localhost- ի փոխարեն:

var con- ն պահում է կապի տեղեկատվությունը JSON ձևաչափով, երբ կապը հաջողությամբ կատարվի, տվյալների բազան կարող է պահանջվել: Ստեղծվել է 2 գործառույթ ՝ մեկը աղյուսակը թարմացնելու համար, մյուսը ՝ ընտրելով SQL հարցման պարամետրերով: Թարմացման աղյուսակը կոչվում է, երբ ստացվում է զամբյուղի նոր արժեք, և պայծառության ստուգման հարցումը պարբերաբար կգործի:

NodeJSC կոդի հղում

Քայլ 5: Քայլ 4: Վեբ ինտերֆեյս

Քայլ 4: Վեբ ինտերֆեյս
Քայլ 4: Վեբ ինտերֆեյս

Վեբ ինտերֆեյս

Հիմնական վեբ էջը գրված էր PHP- ով, քանի որ ես արդեն ունեի որոշ փորձ իմ համալսարանի CO323 տվյալների շտեմարաններից և վեբ մոդուլից: Html աղյուսակը և ձևը օգտագործվել են sql տվյալները ցուցադրելու համար:

PHP SQL մուտքի կոդ. Հղում Ոլորել դեպի վեբ ինտերֆեյսի բաժին:

HTML & CSS * Javascript վեբ էջի ծածկագիր. Հղում Ոլորել դեպի ներքև

Վերջնական վեբ էջ

Խորհուրդ ենք տալիս: