Բովանդակություն:
- Քայլ 1: Softwareրագրային ապահովման տրամաբանություն. Համակարգի ճարտարապետություն
- Քայլ 2: Քայլ 1: Սարքավորման լարերի միացում
- Քայլ 3: Քայլ 2. Arduino
- Քայլ 4: Քայլ 3: NodeJS
- Քայլ 5: Քայլ 4: Վեբ ինտերֆեյս
- Քայլ 6: Արդյունք
Video: Arduino նախագիծ. Էլեկտրոնիկայի վերահսկում ինտերնետի միջոցով `օգտագործելով Nodejs + SQL տվյալների շտեմարան և կայք. 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Նախագիծը ՝ 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րագրային ապահովման տրամաբանություն. Համակարգի ճարտարապետություն
Պոտենցիոմետրի տվյալներ
Սա սկսվում է 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: Սարքավորման լարերի միացում
Սա շատ պարզ է. Պարզապես միացրեք ձեր ընթացիկ սահմանափակող դիմադրությունը շարքով 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: Վեբ ինտերֆեյս
Վեբ ինտերֆեյս
Հիմնական վեբ էջը գրված էր PHP- ով, քանի որ ես արդեն ունեի որոշ փորձ իմ համալսարանի CO323 տվյալների շտեմարաններից և վեբ մոդուլից: Html աղյուսակը և ձևը օգտագործվել են sql տվյալները ցուցադրելու համար:
PHP SQL մուտքի կոդ. Հղում Ոլորել դեպի վեբ ինտերֆեյսի բաժին:
HTML & CSS * Javascript վեբ էջի ծածկագիր. Հղում Ոլորել դեպի ներքև
Վերջնական վեբ էջ
Խորհուրդ ենք տալիս:
Եղանակային կայան ՝ ESP8266 Deep Sleep, SQL, Graphing by Flask & Plotly: 3 Steps
Եղանակային կայան ՝ ESP8266 Deep Sleep, SQL, Graphing by Flask & Plotly: Արդյո՞ք հաճելի կլինի իմանալ ձեր պատշգամբի ջերմաստիճանը, խոնավությունը կամ լույսի ուժգնությունը: Ես գիտեմ, որ կանեի: Այսպիսով, ես ստեղծեցի մի պարզ եղանակային կայան `նման տվյալներ հավաքելու համար: Հետևյալ բաժիններն այն քայլերն են, որոնք ես ձեռնարկել եմ մեկը ստեղծելու համար: Եկեք սկսենք: