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

Հուսալի, անվտանգ, հարմարեցված SMS հեռակառավարիչ (Arduino/pfodApp) - կոդավորումը չի պահանջվում. 4 քայլ
Հուսալի, անվտանգ, հարմարեցված SMS հեռակառավարիչ (Arduino/pfodApp) - կոդավորումը չի պահանջվում. 4 քայլ

Video: Հուսալի, անվտանգ, հարմարեցված SMS հեռակառավարիչ (Arduino/pfodApp) - կոդավորումը չի պահանջվում. 4 քայլ

Video: Հուսալի, անվտանգ, հարմարեցված SMS հեռակառավարիչ (Arduino/pfodApp) - կոդավորումը չի պահանջվում. 4 քայլ
Video: Let's Drive This Abandoned Rat Infested Vintage School Bus Out of The Forest! Will It Run and Drive? 2024, Նոյեմբեր
Anonim
Հուսալի, ապահով, հարմարեցված SMS հեռակառավարիչ (Arduino/pfodApp) - կոդավորում չի պահանջվում
Հուսալի, ապահով, հարմարեցված SMS հեռակառավարիչ (Arduino/pfodApp) - կոդավորում չի պահանջվում

Թարմացնել 2018 թ. Հուլիսի 6 -ին. SIM5320- ի միջոցով այս նախագծի 3G/2G տարբերակը հասանելի է այստեղ

Թարմացում ՝ 2015 թվականի մայիսի 19 -ին. Օգտագործեք pfodParser գրադարանը ՝ 2.5 և ավելի տարբերակ: Այն շտկում է հաղորդված խնդիրը, որը թույլ չի տալիս բավականաչափ ժամանակ տրամադրել վահանին ցանցին միանալուց հետո:

Ներածություն

Ինչպե՞ս է pfodSMS հեռակառավարումը տարբերվում այլ իրականացումներից.

  • Հուսալի է. Հրամանները միշտ արձագանքում են, իսկ կորած հաղորդագրությունները նորից պահանջվում են
  • Այն անվտանգ է - օգտագործում է 128 բիթանոց գաղտնաբառի պաշտպանություն
  • Այն չի պահանջում որևէ երրորդ կողմի վեբ ծառայության հաշիվներ. Անհրաժեշտ է միայն ակտիվ SIM քարտ (առանց քորոցի)
  • Այն հարմարեցված է. Դուք կարող եք օգտագործել pfodDesigner- ը `ձեր սեփական ընտրացանկը ստեղծելու համար
  • Դա հեշտ է. PfodDesigner- ը ստեղծում է ամբողջ ծածկագիրը: Ձեզ հարկավոր չէ որևէ կոդավորում կատարել:
  • Այն ճկուն է. Բոլոր pfod էկրանները հասանելի են SMS- ի միջոցով, ինչպես նաև ենթամենյուներ, բազմակի և մեկ ընտրության ցուցակ, տեքստի մուտքագրում, տվյալների մուտքագրում և գծագրում:

Տեսեք pfodSMS հաղորդագրությունների ձևավորում, թե ինչպես է SMS- ի կապը հուսալի: Տեսեք մարտահրավեր և արձագանքման անվտանգություն ինտերնետին միացած pfodDevices- ի համար ՝ 128 բիթանոց անվտանգության մանրամասների համար: Տեսեք pfodDesigner, Android / Arduino ընտրացանկերը ՝ պարզեցված ՝ ձեր անհատական ընտրացանկը նախագծելու մանրամասների համար: Տե՛ս pfodSpecification.pdf ՝ բոլոր pfod հաղորդագրությունների և էկրանների մանրամասների համար, որոնք կարող եք ինքներդ ավելացնել:

Օրինակ Projectրագրի - SMS տաք ջրի վերահսկում

Որպես օրինակելի նախագիծ, այս հրահանգը նկարագրում է, թե ինչպես միացնել և անջատել տաք ջրատաքացուցիչը SMS- ի միջոցով և ստուգել, թե արդյոք այն միացված է կամ անջատված է: Այն տեղադրելու համար ձեզ հարկավոր կլինի էլեկտրիկ:

Քայլ 1: Արագ մեկնարկ - SMS հեռակառավարում

Արագ մեկնարկ - SMS հեռակառավարում
Արագ մեկնարկ - SMS հեռակառավարում
Արագ մեկնարկ - SMS հեռակառավարում
Արագ մեկնարկ - SMS հեռակառավարում

Ահա արագ մեկնարկի ուղեցույց ՝ ձեր սեփական SMS տաք ջրի վերահսկման կառուցման համար:

  1. Գնեք այս ցուցակի մասերը..
  2. Տեղադրեք Arduino IDE 1.5.8 տարբերակը և ներբեռնեք և տեղադրեք pfodParser գրադարանը:
  3. Ներբեռնեք անվճար pfodDesigner ծրագիրը:
  4. Նախագծեք ձեր անհատական ընտրացանկը ՝ ձեր Android բջջային հեռախոսում թվային ներածումը միացնելու և անջատելու համար:
  5. Ստեղծեք կոդը ՝ որպես կապ ընտրելով SeeedStudio SIM900 GPRS վահանը: (Կա նաև տարբերակ IteadStudio SIM900 վահանի համար):
  6. Ձեր բջջայինից փոխանցված կոդը փոխանցեք IDE- ին (տե՛ս pfodAppForAndroidGettingStarted.pdf մանրամասների համար), ավելացրեք ձեր գաղտնի գաղտնաբառը, կազմեք և ներբեռնեք Arduino Mega 2560:
  7. Տեղադրեք ձեր SIM քարտը GPRS վահանում և միացրեք վահանը Mega 2560 -ին: Համոզվեք, որ սերիական հղումները դրված են Hardware Serial- ի վրա, ինչպես ցույց է տրված վերևում:
  8. Թվային ելքը միացրեք պինդ վիճակին կամ նորմալ ռելեին D3- ի և GND- ի միջև (կամ այն, ինչ երբևէ ընտրել եք pfodDesigner- ում): Տեսեք, թե ինչպես կարելի է ռելեներ ավելացնել Arduino- ին `ռելեներ ավելի մանրամասն իմանալու համար:
  9. Կիրառեք USB հզորությունը Mega- ում: Գրադարանի ծածկագիրը ձեզ համար հզորացնում է GPRS վահանը:
  10. Տեղադրեք pfodApp- ը ձեր Android բջջային հեռախոսում և SMS կապ հաստատեք վահանի SIM հեռախոսի համարին: (մանրամասների համար տե՛ս pfodAppForAndroidGettingStarted.pdf): Կապի գաղտնաբառ սահմանեք, եթե այն ավելացնեք..
  11. Միացեք և տեսեք SMS- ով ցուցադրվող ձեր անհատական ընտրացանկը: Սեղմեք կոճակը ՝ ռելեն միացնելու կամ անջատելու համար:
  12. Ստացեք ձեր էլեկտրիկին տեղադրել ռելեը ձեր տաք ջրի միացումում և միացրեք USB հոսանքի աղբյուրը ՝ Mega- ն և վահանը սնուցելու համար:

Քայլ 2: Լրացուցիչ մանրամասներ

pfodDesigner

PfodDesigner- ը կստեղծի ձեզ անհրաժեշտ բոլոր ծածկագրերը ՝ պինդ վիճակը կամ այլ ռելեներ միացնելու և անջատելու համար, սակայն pfodParser գրադարանում SMS միացումն ապահովում է բոլոր pfod էկրանները, այնպես որ սկսելուց հետո կարող եք ավելացնել ենթամենյուներ, թվային սահիչներ, բազմատեքստային սահիչներ, տեքստի մուտքագրման էկրաններ, տվյալների մուտքագրում և գծագրում բոլորը SMS- ի միջոցով: Ստուգեք pfodSpecification.pdf- ը `աջակցվող բոլոր էկրանների և հաղորդագրությունների համար:

Ստեղծված կոդը այստեղ է: Այն չունի հուշում և ընդամենը մեկ անջատիչ ՝ հաղորդագրությունը կարճ պահելու համար: Երկար մենյուները ուղարկվում են բազմաթիվ SMS հաղորդագրությունների միջոցով, որոնց ժամանումը երկար է տևում: Եթե ունեք երկար ընտրացանկ, pfodParser գրադարանի sms միացման ծածկագիրը այս ամենի համար կարգավորում է ձեզ:

Ձեր SMS կապին գաղտնաբառ ավելացնելու համար փոփոխեք տողը

parser.connect (& pfodSMS); // միացրեք վերլուծիչը SMS հոսքին `parser.connect- ի նման մի բան (& pfodSMS, F (" 173057F7A706AF9BBE65D51122A14CEE "));

բայց օգտագործեք ձեր սեփական գաղտնաբառը մինչև 32 վեցանկյունանիշ, 0..9 A.. F: 32 վեցանկյունանիշից կարճ գաղտնաբառերը տեղադրված են 0 -ով: Տե՛ս Simple Wifi/Internet pfodDevice 128bit անվտանգությամբ (Arduino) ՝ պատահական գաղտնաբառ ստեղծելու և այն QR կոդ մուտքագրելու համար ՝ ձեր Android- ին հեշտ մուտքագրելու համար: Տես նաև pfodAppForAndroidGettingStarted.pdf

PfodDesigner- ը նաև կստեղծի կոդ bluetooth և wifi կապերի համար սերիական և Ethernet- ի միջոցով SPI- ի միջոցով, բոլորը ՝ լրացուցիչ 128 բիթանոց անվտանգությամբ

pfodApp

Առաջին բանը, որ պետք է գիտակցել, այն է, որ SMS- ն անհետանում է և կարող է ընդհանրապես չհասնել այնտեղ կամ շարքից դուրս գալ: Այսպիսով, երբ միանում եք pfodApp- ի հետ, որոշակի ուշացում կլինի մինչև SMS- ի պատասխանը: Եթե հաղորդագրությունը կորել կամ հետաձգվել է, pfodApp- ն ինքնաբերաբար կուղարկի այն 3 րոպե հետո: 5 նման փորձերից հետո pfodApp- ը ձեզ կասի, որ կապը կորած է: 3 րոպե ժամանակը կարող եք հարմարեցնել pfodApp- ի կապի խմբագրման էկրանին:

Եթե գաղտնաբառ եք ավելացնում, ապա վեց SMS հաղորդագրություն կա (յուրաքանչյուրը երեքը), մինչև հիմնական ընտրացանկը ստանա pfodApp- ը: Այս լրացուցիչ հաղորդագրությունները տեղի են ունենում միայն սկզբնական կապի վրա, որից հետո գաղտնաբառ օգտագործելիս լրացուցիչ հաղորդագրություններ չկան: Այսպիսով, սկսեք առանց գաղտնաբառի ՝ տեսնելու համար, որ ամեն ինչ աշխատում է, այնուհետև ավելացրեք գաղտնաբառը ավելի ուշ:

SMS/GPRS վահան

Հնարավոր խնդիրները SIM քարտերն են, որոնք պաշտպանված են փին համարներով կամ թույլատրված չեն ցանցին միանալու համար: Pfod գրադարանը ինքնաբերաբար հզորացնում է GPRS վահանը և փնտրում է «զանգը պատրաստ է» պատասխանը: Եթե այդ պատասխանը չի հասնում, գրադարանն անջատվում է և նորից փորձում, այնպես որ, եթե տեսնում եք, որ GPRS վահանի էներգիայի լույսը միանում է 20 վայրկյան, ապա անջատվում, ցանցին միանալու խնդիր է առաջանում: Հանեք SIM քարտը և փորձեք այն սովորական հեռախոսի մեջ: Ստուգեք, որ ձեզ չի պահանջվում կապի համար:

Եթե դա խնդիրը չէ, ապա ստիպված կլինեք միացնել գործարկման վրիպազերծումը, ինչպես նկարագրված է ստորև, որպեսզի տեսնեք, թե ինչ է կատարվում:

Mega / GPRS վահանի հզորացում

Վահանը ձգում է մինչև 2A իմպուլսային և մինչև 0.5A անընդհատ: Ենթադրելով 12 Վ մարտկոցի լիցքավորում, 0.5 Ա -ն գերազանցում է Մեգայի հզորությունը նավի վրա: Այսպիսով, այս վահանը ՉԻ պետք է սնուցվի Mega- ի 7V- ից 12V մուտքի վրա: Այլընտրանքը USB միացման միջոցով Mega- ի և վահանի սնուցումն է: Ես օգտագործել եմ 1 Ա USB պաշար: Փորձարկման համար ես օգտագործել եմ Belkin սնուցվող հանգույցը (F4U020), որպեսզի կանխեմ իմ համակարգչի USB պորտից ավելորդ հոսանքի հեռացումը:

12 Վ մարտկոցի մատակարարման համար ես առաջարկում եմ օգտագործել որակյալ Ավտոմոբիլային USB 5V լիցքավորիչ ՝ 1 Ա կամ ավելի բարձր: Ավտոմոբիլային USB 5V որակյալ մատակարարումը պետք է նախագծված լինի մեքենայի էլեկտրական համակարգերում տեղի ունեցող լարման բարձրացման համար, ուստի այն պետք է հարմար լինի 12 Վ լիցքավորման համակարգերի մեծ մասի համար:

Պինդ վիճակի ռելե

Քանի որ այս օրինակի նախագիծը վերահսկում է Տաք ջրատաքացուցիչը (դիմադրողական բեռ), Պինդ վիճակի ռելեդը իդեալական է: Եթե ցանկանում եք միացնել կամ անջատել շարժիչները, գործարկել գեներատորներ և այլն, խոսեք ձեր էլեկտրիկի հետ աշխատանքի համար համապատասխան ռելեի մասին: Եթե Ձեզ անհրաժեշտ է բարձր հզորության ռելե, ապա կարող եք օգտագործել arduino տախտակի մի փոքր ռելեի սկավառակ ՝ հոսանքի ռելեն միացնելու և անջատելու համար:

Կան բազմաթիվ տարբերակներ `պինդ վիճակի ռելե: Համոզվեք, որ այն գնում եք, որը կարող է կարգավորել ձեր տաքացուցիչի հոսանքը և լարումը և կարող է կառավարվել 5 Վ լարման հոսանքի միջոցով և Arduino ելքային պինից հասանելի մի քանի միլիամպերով: Այստեղ օգտագործվողը ՝ FOTEK SSR-40 DA- ն, միանում է մինչև 380VAC 40Ap- ի վրա և վերահսկվում է ցանկացած բանով, որը գերազանցում է 3 Վ լարը և տևում է 7 մԱ-ից պակաս:

Դուք պետք է օգտագործեք ջեռուցման լվացարան, և դուք պետք է քսեք ջերմամեկուսիչ նյութի կամ ջերմային քսուք պինդ վիճակի ռելեի հետևի մասում, նախքան այն տաքացուցիչին ամրացնելը: Գաղափարն այն է, որ մակերեսն ամբողջությամբ ծածկվի գլխի լվացարանի ամենաբարակ շերտով `մետաղի մակերեսի մանրադիտակային հովիտները լրացնելու համար: Երբ միացված է պինդ վիճակի անջատիչը նվազում է 1.6 Վ -ով, որն արտադրում է 16 Վտ ջերմություն 10Ամ -ում: Heatերմամեկուսիչ սարքը պետք է ազատվի այս ջերմությունից, այնպես որ այն պետք է տեղադրվի ազատ օդում, ոչ թե պլաստիկ տուփի ներսում:

Հետաձգումները չարիք են

GPRS վահանը ցանկացած պահի SMS հաղորդագրություններ է փոխանցում Սերիական կապի միջոցով, և ձեր հիմնական հանգույցը () պետք է զանգի cmd = parser.parse (); հաճախ սերիական տվյալները մշակելու համար մինչև Arduino գրադարանի ծածկագրում 64 բայթ բուֆերի լրացումը և տվյալների կորուստը:.

Այսպիսով, դուք պետք է ձեր հիմնական հանգույցը () արագ աշխատեցնեք: Դուք երբեք չպետք է օգտագործեք delay () և պետք է ստուգեք, որ ձեր օգտագործած գրադարաններից ոչ մեկը ուշացում չունի: Օգտագործելով SIM200- ի կանխադրված 19200 baud փոխարժեքը Hardware Serial- ի միջոցով, ես անհրաժեշտ չեմ համարել Arduino գրադարանի կոդի բուֆերի չափը մեծացնելը: Ես չեմ օգտագործում Software Serial, միայն Serial and Serial1, Hardware Serial կապեր, և գրեթե բոլոր հաղորդագրությունները, որոնք ուղարկում է pfodApp- ը, շատ փոքր են ՝ 10 կամ 12 բայթ: Այնուամենայնիվ, ցանկության դեպքում կարող եք մեծացնել Arduino բուֆերի չափը ՝ փոփոխելով HardwareSerial.h- ի սահմանումը #սահմանել SERIAL_BUFFER_SIZE 64 -ից մինչև #սահմանել SERIAL_BUFFER_SIZE 128

Այնուամենայնիվ, այն, ինչ ես գտա, այն էր, որ եթե միացնեմ վրիպազերծման ելքը, ինչպես նկարագրված է ստորև, ես պետք է շատ արագ արագություն ունենայի տերմինալային կապի համար, հակառակ դեպքում տերմինալին վրիպազերծման հաղորդագրություններ ուղարկելու հետաձգումը պատճառ դարձավ, որ SMS հաղորդագրությունների մասերը բաց թողնվեն:.

Տեղադրում

Ես ավելացրեցի պտուտակավոր տերմինալի վահան, այնպես որ ես ունեի մի բան, որին կարող էի միացնել Solid State ռելեի լարերը: Ես դեռ իմ էլեկտրիկին չեմ դրել վերահսկիչը: Այն պետք է տեղադրվի մեկուսացված տուփի մեջ, բայց ջերմատախտակը դուրս է գալիս անցքից և միացված է տաք ջրի հոսանքի լարին:

Քայլ 3. Հետագա բարելավումների վերաբերյալ առաջարկություններ `ահազանգեր, տվյալների գրանցում և գծագրում

Վերոնշյալ ծրագրի օրինակն այն է, թե ինչպես է ջուրը միացված կամ անջատված, և թույլ է տալիս միացնել այն: Բայց SMS կապը կարգավորում է բոլոր pfod հաղորդագրությունները (տես pfodSpecification.pdf)

Եթե ձեր arduino- ին ավելացնեք ջերմաստիճանի տվիչ, կարող եք նաև ուղարկել ջերմաստիճանի մոնիտոր և պարբերաբար պարբերաբար ընթերցումներ ուղարկել: Bluetooth- ի, wifi- ի կամ SMS- ի համար տվյալների ընթերցումը հետ ուղարկելը նույնն է, պարզապես ավելացրեք կոդը, ինչպես ստորև բերված նմուշը: Տվյալների գրանցում և գծագրում տես տվյալների մուտքագրման և գծագրման ավելի մանրամասն և օրինակների համար:

parser.println (ժամանակ); parser.print (','); parser.println (ջերմաստիճան);

Երբ pfodSMS գրադարանը տեսնում է println () նոր տողը, այն հում տվյալները կուղարկի որպես SMS: Ձեր բջջային հեռախոսում պարզապես թողեք pfodApp- ը աշխատի հետին պլանում և ձեր բջջային հեռախոսը ձեզ կտեղեկացնի, երբ SMS ստացվի: Նորից բացեք pfodApp- ը ՝ այն առջև բերելու համար, այնուհետև բջջայինի ընտրացանկից բացեք Raw Data էկրանը ՝ տվյալները տեսնելու համար: Նշում. PfodSMS հաղորդագրությունները UTF-8 նիշ են `միացման և հաղորդագրության համարների հետ միասին, կոդավորելով Base64 ծածկագրման միջոցով, որպեսզի դրանք սովորական տեքստի տեսք չունենան: Բոլոր մանրամասների համար տես pfodSMS հաղորդագրությունների ձևավորումը:

Դուք կարող եք օգտագործել նույն գործընթացը ՝ ահազանգ ուղարկելու համար, երբ ինչ -որ բան հեռակա կարգով փոխվում է: այսինքն parser.println (F («Արտաքին ջերմաստիճանը 0 below-ից ցածր»)); Նշում. տողի ℃ UTF-8 նիշը: pfodSMS- ը բոլոր UTF-8 նիշերը փոխանցում է pfodApp- ին:

Քայլ 4. Սխալների շտկում PfodParser գրադարանում SMS միացումից օգտվելիս

PfodParser գրադարանում SMS միացումն օգտագործելիս կարգաբերում
PfodParser գրադարանում SMS միացումն օգտագործելիս կարգաբերում
PfodParser գրադարանում SMS միացումն օգտագործելիս կարգաբերում
PfodParser գրադարանում SMS միացումն օգտագործելիս կարգաբերում

PfodDesigner- ը ստեղծում է կոդ, որն աշխատում է, բայց գուցե ցանկանաք կարգաբերել ձեր սեփական լրացուցիչ կոդը կամ դիտել, թե ինչ է կատարվում GPRS վահանի գործարկման կամ SMS հաղորդագրություններ ստանալու ընթացքում: Կան մի քանի մոտեցումներ, որոնք կարող եք կիրառել:

Սխալների կարգաբերում

Եթե կարգաբերում եք ձեր սեփական կոդը, կարող եք պարզապես մեկնաբանել pfodSMS գիծը և վերլուծիչը միացնել Serial- ին, այնուհետև հեռացնել GPRS վահանը և գործարկել Mega- ն Arduino տերմինալից: այսինքն `փոխեք կարգավորումը () -ին

//pfodSMS.init(&Serial, 9); // մի գործարկեք GPRS վահանի parser.connect (& Սերիա); // միացրեք վերլուծիչը Serial- ին `SMS հոսքի փոխարեն

Այնուհետև Arduino տերմինալից կարող եք մուտքագրել {.}, Որպեսզի Mega- ն վերադարձնի հիմնական ընտրացանկը, այնուհետև ուղարկեք հետադարձ հրաման, որը ցանկանում եք կատարել, օրինակ. {A`1} ՝ ռելեն միացնելու և {A`0} ՝ անջատելու համար: (The pfodApp- ը սովորաբար ուղարկում է այս հաղորդագրությունները ձեզ համար, երբ սեղմում եք սահողին): Այնուհետև ավելացրեք վրիպազերծման լրացուցիչ parser.println () ՝ ձեր ավելացրած լրացուցիչ ծածկագիրը վերահսկելու համար:

GPRS վահանի մոնիտորինգ

Եթե ցանկանում եք տեսնել, թե ինչ է անում GPRS վահանը: Ինչպես է այն սկսվում, SMS հաղորդագրություններ ստանում և այլն: Հետո դուք պետք է փոխեք վահանի լարերը և միացրեք այն Mega Serial1 (սերիական մեկ) և ազատեք Serial (USB) կապը Arduino IDE մոնիտորի վրիպազերծման համար:

GPRS վահանը Mega 2560 Serial1- ին միացնելու համար հեռացրեք վերևում ներկայացված հղումները և լարերը ավելացրեք Mega- ի TX1 և RX1 կապում:

Այնուհետեւ փոխեք setup () ծածկագիրը

void setup () {Serial1.begin (19200); // փոխել Serial- ը Serial 1 Serial.begin (57600); // Ո NOTՇԱԴՐՈԹՅՈՆ արագ սահուն արագությունը USB սերիայի պորտի համար // Arduino IDE մոնիտորին: for (int i = 3; i> 0; i--) {// սպասեք մի քանի վայրկյան ՝ տեսնելու համար, թե արդյոք մեզ ծրագրում են ուշացում (1000); } pinMode (cmd_A_pin, OUTPUT); pfodSMS.setDebugStream (և սերիական); // պետք է դա անել նախքան pfod_SMS.init // կամ ցանկացած այլ pfod_SMS մեթոդ զանգել // սկզբնականացնել SMS- ը և միացնել վերլուծիչը // հաջորդ տողը փոխել Serial1 pfodSMS.init (& Serial1, 9); // միացրեք Տեսած GPRS վահանը V2- ին Serial1- ին Serial parser.setDebugStream- ի փոխարեն (& Serial); // պետք է դա անել նախքան parser.connect // կամ ցանկացած այլ վերլուծիչ մեթոդ զանգահարեք parser.connect (& pfodSMS); // միացրեք վերլուծիչը SMS հոսքին}

Այժմ կարող եք մեկնաբանել pfodParser գրադարանի Debug- ի որոշ կարգավորումներ pfodSMS_SIM900.cpp ֆայլի հասցեով:

Օրինակ ՝ չմեկնաբանելով #սահմանեք DEBUG_SETUP- ը տպելու է (վրիպազերծման հոսքին) այն, ինչ կատարվում է GPRS վահանը միացնելիս և այն պատրաստելով SMS հաղորդագրություններ ստանալու համար:

Չմեկնաբանելով #սահմանեք DEBUG- ը շատ տեղեկություններ կտա ստացվող SMS հաղորդագրությունների վերաբերյալ:

Վերջ!

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