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

Arduino- ի վրա հիմնված GSM/SMS հեռակառավարման միավոր ՝ 16 քայլ (նկարներով)
Arduino- ի վրա հիմնված GSM/SMS հեռակառավարման միավոր ՝ 16 քայլ (նկարներով)

Video: Arduino- ի վրա հիմնված GSM/SMS հեռակառավարման միավոր ՝ 16 քայլ (նկարներով)

Video: Arduino- ի վրա հիմնված GSM/SMS հեռակառավարման միավոր ՝ 16 քայլ (նկարներով)
Video: Arduino GSM Project: How to send Security Alert message to multiple numbers using gsm module 2024, Նոյեմբեր
Anonim
Arduino- ի վրա հիմնված GSM/SMS հեռակառավարման միավոր
Arduino- ի վրա հիմնված GSM/SMS հեռակառավարման միավոր

! ! ! N O T I C E!

Իմ տարածքում բջջային հեռախոսների աշտարակի արդիականացման պատճառով ես այլևս ի վիճակի չեմ օգտագործել այս GSM մոդուլը: Ավելի նոր աշտարակը այլևս չի ապահովում 2G սարքեր: Հետեւաբար, ես այլեւս չեմ կարող որեւէ աջակցություն ցուցաբերել այս նախագծին:

Հետաքրքրասերների համար մատչելի GSM մոդուլների այսպիսի լայն տեսականիով, մեզանից շատերը վերջացրեցին դրանցից մեկի գնումը: Ես տեղում գնել եմ SIM800L մոդուլ և ավարտեցի խաղը մոդուլի տարբեր հրամանների հետ:

Օգտագործելով Arduino Uno- ն և Arduino IDE- ն ՝ ես կարողացա իմ գաղափարներն իրականություն դարձնել: Սա հեշտ բան չեղավ, քանի որ ՄԻԱՅՆ ՄԵIG ՀԱՐSԸ ընդամենը 2 ԿԲ SRAM- ի սահմանափակումն էր: Ինտերնետում և տարբեր ֆորումներում կատարված բազմաթիվ հետազոտություններից հետո ես կարողացա հաղթահարել այս սահմանափակումը:

Differentրագրավորման տարբեր տեխնիկա, Arduino կոմպիլյատորի շատ ավելի լավ պատկերացում և SIM քարտի և EEPROM- ի լրացուցիչ հիշողության համար օգտագործումը փրկեց այս նախագիծը: Կոդի որոշ փոփոխություններից հետո կայուն նախատիպը կառուցվեց և փորձարկվեց մեկ շաբաթվա ընթացքում:

Սահմանափակ SRAM- ի թերությունն այն էր, որ միավորը հնարավոր չէր տեղադրել էկրանով և օգտագործողի բանալիներով: Սա հանգեցրեց ծածկագրի ամբողջական վերաշարադրմանը: Առանց ինտերֆեյսի, նախագծին շարունակելու միակ տարբերակը մնում էր օգտագործել SMS հաղորդագրությունները `միավորը, ինչպես նաև օգտագործողները կազմաձևելու համար:

Սա հուզիչ նախագիծ ստացվեց, և զարգացման շարունակմանը զուգընթաց ավելացվեցին ավելի շատ ապագա:

Իմ հիմնական նպատակն էր մնալ Arduino Uno- ի կամ այս դեպքում ATMEGA328p- ի հետ և չօգտագործել մակերևույթի վրա ամրացնող որևէ բաղադրիչ: Սա լայն հասարակության համար ավելի հեշտ կդարձնի միավորը պատճենելն ու կառուցելը:

Միավորի բնութագիրը

  • Սարքի վրա կարող են ծրագրավորվել առավելագույնը 250 օգտվող
  • Չորս թվային ելք
  • Չորս թվային մուտք
  • Յուրաքանչյուր ելք կարող է կազմաձևվել որպես PULSE կամ ON/OFF ելք
  • Ելքային զարկերակի տևողությունը կարող է սահմանվել 0.5.. 10 վայրկյանի միջև
  • Յուրաքանչյուր մուտքագրում կարող է կազմաձևվել այնպես, որ OFF- ը միացնի փոփոխություններին:
  • Յուրաքանչյուր մուտք կարող է կազմաձևվել ՝ միացնելով դեպի անջատված փոփոխությունները
  • Յուրաքանչյուր մուտքագրման հետաձգման ժամանակը կարող է սահմանվել 0 վայրկյանից մինչև 1 ժամ
  • Մուտքային տվյալների փոփոխությունների համար SMS հաղորդագրությունները կարող են ուղարկվել 5 տարբեր օգտվողների
  • Յուրաքանչյուր մուտքի համար անունները և կարգավիճակի տեքստը կարող է սահմանվել օգտագործողի կողմից
  • Յուրաքանչյուր ելքի համար անունները և կարգավիճակի տեքստը կարող է սահմանվել օգտագործողի կողմից
  • Սարքը կարող է կազմաձևվել ՝ SIM քարտի հաշվեկշռի հաղորդագրություններ ստանալու համար USSD հաղորդագրությունների միջոցով:
  • Բոլոր օգտվողները կարող են պահանջել միավորի I/O կարգավիճակի թարմացումներ
  • Բոլոր օգտվողները կարող են SMS հաղորդագրությունների միջոցով վերահսկել առանձին ելքերը
  • Բոլոր օգտվողները կարող են վերահսկել առանձին ելքերը `զանգահարելով միավորին

Անվտանգության առանձնահատկություններ

  • Սարքի նախնական կարգավորումը կարող է կատարվել միայն սարքում գտնվելու ընթացքում:
  • Նախնական կարգավորումը կարող է կատարել միայն MASTER USER- ը
  • Նախնական տեղադրման հրամանները ինքնաբերաբար անջատվում են տասը րոպե հետո:
  • Միայն հայտնի օգտվողներից ստացված զանգերն ու SMS- ները կարող են վերահսկել սարքը
  • Օգտվողները կարող են գործածել միայն MASTER USER- ի կողմից իրենց տրված ելքերը

Այլ առանձնահատկություններ

  • Այս միավորի զանգերն անվճար են, քանի որ զանգը երբեք չի պատասխանում:
  • Երբ միավորը կանչվում է, զանգը կդադարի միայն 2 վայրկյանից հետո: Սա հաստատում է զանգողին, որ ստորաբաժանումն արձագանքել է զանգին:
  • Եթե SIM քարտի ծառայություն մատուցողն աջակցում է USSD հաղորդագրություններին, մնացորդի վերաբերյալ հարցումներ կարող է կատարել ՎԱՐՊԵՏ ՕԳՏԱԳՈՐՈԸ: USSD հաղորդագրությունը, որը պարունակում է մնացորդ, այնուհետև կուղարկվի ՎԱՐՊԵՏ ՕԳՏԱԳՈՐԻՉ:

Քայլ 1: Էներգամատակարարում

Էներգամատակարարում
Էներգամատակարարում

Որպեսզի սարքը կարողանա միացվել անվտանգության ստանդարտ համակարգերին (ահազանգման համակարգեր, ավտոտնակի էլեկտրական դռներ, էլեկտրական դարպասների շարժիչներ), միավորը սնուցվելու է 12 Վ լարման հոսանքից, որը սովորաբար հասանելի է նման համակարգերում:

Էլեկտրաէներգիան օգտագործվում է 12V IN և 0V տերմինալների վրա և պաշտպանված է 1A ապահովիչով: Առկա են լրացուցիչ 12V OUT տերմինալներ, որոնք նույնպես պաշտպանված են ապահովիչով:

Դիոդ D1- ը պաշտպանում է միավորը 12V գծերի հակառակ բևեռայնության միացումներից:

C1 և C2 կոնդենսատորները զտում են 12 Վ լարման գծերում առկա ցանկացած աղմուկ: 12 Վ լարման աղբյուրը օգտագործվում է էներգաբլոկի ռելեներ սնուցելու համար:

5 Վ էլեկտրամատակարարումը բաղկացած է LM7805L լարման կարգավորիչից և թողարկում է կայուն +5 Վ, որն անհրաժեշտ է SIM800L GSM մոդուլի, ինչպես նաև միկրոպրոցեսորի համար: C3 և C4 կոնդենսատորները զտում են ցանկացած աղմուկ, որը կարող է առկա լինել +5V մատակարարման գծում: Օգտագործվեցին համեմատաբար մեծ չափի էլեկտրոլիտիկ կոնդենսատորներ, քանի որ SIM800L GSM մոդուլը փոխանցման ժամանակ բավականին քիչ էներգիա է օգտագործում:

Լարման կարգավորիչի վրա ջերմահաղորդիչ չի պահանջվում:

Քայլ 2: Թվային մուտքագրումներ

Թվային մուտքագրումներ
Թվային մուտքագրումներ
Թվային մուտքագրումներ
Թվային մուտքագրումներ

Թվային մուտքային ազդանշանները բոլորը 12 Վ են, և դրանք պետք է միացված լինեն 5 Վ միկրո վերահսկիչի հետ: Դրա համար օպտո միակցիչները օգտագործվում են 5 Վ համակարգից 12 Վ ազդանշանները մեկուսացնելու համար:

1K մուտքային ռեզիստորը սահմանափակում է օպտո միակցիչի մուտքային հոսանքը մինչև 10 մԱ:

Տիեզերքի սահմանափակության պատճառով համակարգչային տախտակի վրա ազատ տարածք չկար 5V ձգվող դիմադրիչների համար: Միկրոհսկիչը ստեղծվել է, որպեսզի մուտքային կապումներն թույլ քաշքշուկներ թույլ տան:

Օպտո միակցիչի մուտքի վրա (OWԱOWՐ) ազդանշանի բացակայության դեպքում օպտո կցորդիչի LED- ով հոսանք չի հոսելու: Այսպիսով, օպտո միակցիչի տրանզիստորը անջատված է: Միկրոկառավարիչի թույլ ձգումը կոլեկտորը կհասցնի գրեթե 5 Վ լարման, և միկրոկառավարիչի կողմից կդիտվի որպես տրամաբանական ԲԱՐՁՐ:

Օպտո միակցիչի մուտքի վրա 12 Վ լարման կիրառմամբ (Բարձր), մոտ 10 մԱ հոսում է օպտո կցորդիչի LED- ով: Այսպիսով, օպտո միակցիչի տրանզիստորը միացված կլինի: Սա կիջեցնի կոլեկտորը գրեթե 0 Վ -ի և միկրոհսկիչի կողմից կդիտվի որպես տրամաբանական OWԱOWՐ:

Նկատի ունեցեք, որ միկրոհսկիչի տեսած մուտքը շրջված է 12 Վ մուտքի համեմատ:

Սովորական ծածկագիրը ՝ մուտքի քորոցը կարդալու համար, հետևյալն է.

բուլյան մուտքագրում = digitalRead (մուտքագրում);

Շրջված ազդանշանը շտկելու համար օգտագործեք հետևյալ ծածկագիրը.

բուլյան մուտքագրում =! digitalRead (մուտքագրում); // ՆՇՈՄ ընթերցվածի դիմաց

Այժմ, միկրոհսկիչի տեսած մուտքը կհամապատասխանի 12 Վ մուտքի մուտքին:

Վերջնական մուտքային սխեման բաղկացած է 4 թվային մուտքից: Յուրաքանչյուր մուտք միացված է PC տախտակի տերմինալներին:

Քայլ 3: Թվային արդյունքներ

Թվային արդյունքներ
Թվային արդյունքներ
Թվային արդյունքներ
Թվային արդյունքներ
Թվային արդյունքներ
Թվային արդյունքներ

Սովորաբար, երբ միացումն աշխատում է միայն նվազագույն թվով ռելեներ, լավագույն միջոցը տրանզիստորների շարժիչային սխեման օգտագործելն է, ինչպես ցույց է տրված: Դա պարզ է, ցածր գնով և արդյունավետ:

Ռեզիստորները ապահովում են ձգում դեպի գետնին և տրանզիստորային բազայի հոսանքի սահմանափակում: Տրանզիստորը օգտագործվում է ռելե վարելու համար առկա հոսանքի ավելացման համար: Միկրոհսկիչի պինից վերցված ընդամենը 1 մԱ -ով, տրանզիստորը կարող է փոխել 100 մԱ բեռ: Ավելի քան բավարար ռելեներ տեսակի մեծամասնության համար: Դիոդը թռիչքային դիոդ է, որը պաշտպանում է շրջանը բարձր լարման ցատկումից ռելեի անջատման ժամանակ: Այս սխեմայի օգտագործման լրացուցիչ առավելությունն այն է, որ ռելեի աշխատանքային լարումը կարող է տարբերվել միկրոհսկիչի լարումից: Այսպիսով, 5 Վ ռելե օգտագործելու փոխարեն, կարելի է օգտագործել մինչև 48 Վ լարման ցանկացած DC լարում:

Ներկայացնում ենք ULN2803- ը

Որքան ավելի շատ ռելեներ են պահանջում նախագիծը, այնքան ավելի մեծ է բաղադրիչների քանակը: Սա կդարձնի PCB- ի դիզայնը ավելի դժվար և կարող է օգտագործել PCB- ի արժեքավոր տարածք: Բայց տրանզիստորային զանգվածի օգտագործումը, ինչպես ULN2803- ը, անպայման կօգնի պահպանել PCB- ի չափը փոքր: ULN2803- ը իդեալականորեն պիտանի է միկրոկառավարիչից 3.3V և 5V մուտքերի համար և կարող է ռելեներ վարել մինչև 48V DC: Այս ULN2803- ն ունի 8 անհատական տրանզիստորային սխեմաներ, որոնցից յուրաքանչյուրը տեղադրված է ռելե փոխարկելու համար անհրաժեշտ բոլոր բաղադրիչներով:

Վերջնական ելքային սխեման բաղկացած է ULN3803- ից, որը վարում է 4 12V DC ելքային ռելեներ: Ռելեի յուրաքանչյուր կոնտակտ հասանելի է PC Board տերմինալներին:

Քայլ 4: Micro Controller Oscillator

Micro Controller Oscillator
Micro Controller Oscillator
Micro Controller Oscillator
Micro Controller Oscillator
Micro Controller Oscillator
Micro Controller Oscillator

Օսիլյատոր միացում

Միկրոհսկիչին անհրաժեշտ է տատանում `ճիշտ գործելու համար: Arduino Uno- ի դիզայնին մնալու համար շղթան կօգտագործի 16 ՄՀց ստանդարտ տատանում: Երկու տարբերակ կա.

Բյուրեղյա

Այս մեթոդը օգտագործում է բյուրեղ, որը միացված է երկու բեռնիչ կոնդենսատորների: Սա ամենատարածված տարբերակն է:

Ռեզոնատոր

Ռեզոնատորը հիմնականում բյուրեղ է և երկու բեռնիչ կոնդենսատոր `մեկ 3 պինանոց փաթեթում: Սա նվազեցնում է բաղադրիչների քանակը և մեծացնում է PC տախտակի վրա առկա տարածքը:

Բաղադրիչների քանակը հնարավորինս ցածր պահելու համար ես նախընտրեցի օգտագործել 16 ՄՀց ռեզոնատոր:

Քայլ 5: icուցանիշ LED- ները

Indուցանիշ LED- ներ
Indուցանիշ LED- ներ
Indուցանիշ LED- ներ
Indուցանիշ LED- ներ

Ինչպիսի՞ն կլինի ցանկացած միացում առանց որոշ LED- ների: Համակարգչային տախտակի վրա դրվել է 3 մմ LED լուսադիոդների առկայություն:

1K ռեզիստորներն օգտագործվում են LED- ի միջոցով հոսանքը 5 մԱ-ից պակաս սահմանելու համար, 3 մմ բարձր լուսադիոդներ օգտագործելիս պայծառությունը գերազանց է:

Կարգավիճակի LED- ների հեշտ մեկնաբանման համար օգտագործվում են երկու գույն: Երկու LED- ները համակցելով բռնկվող ցուցումներով, բավական մեծ տեղեկատվություն կարելի է ստանալ միայն երկու LED- ից:

Կարմիր LED

Կարմիր LED- ն օգտագործվում է `նշելու անսարքության պայմանները, երկար ձգձգումները, ցանկացած սխալ հրամանները:

Կանաչ LED

Կանաչ LED- ն օգտագործվում է առողջ և/կամ ճիշտ մուտքերն ու հրամանները նշելու համար:

Քայլ 6: Միկրոպրոցեսորային վերականգնման միացում

Միկրոպրոցեսորային վերականգնման միացում
Միկրոպրոցեսորային վերականգնման միացում

Անվտանգության նկատառումներից ելնելով, միավորի որոշ գործառույթներ հասանելի են միայն սարքը միացնելուց հետո առաջին 10 րոպեների ընթացքում:

Վերականգնման կոճակով սարքը սնուցման կարիք չունի անջատելու համար:

Ինչպես է դա աշխատում

10K ռեզիստորը կպահպանի RESET գիծը մոտ 5V- ի մոտ: Երբ կոճակը սեղմվում է, RESET գիծը կձգվի 0 Վ -ի, դրանով իսկ միկրոկառավարիչը կվերականգնվի: Երբ կոճակը բաց է թողնվում, RESET տողը վերադառնում է %v ՝ վերականգնելով միկրոհսկիչը:

Քայլ 7: SIM800L մոդուլ

SIM800L մոդուլ
SIM800L մոդուլ
SIM800L մոդուլ
SIM800L մոդուլ
SIM800L մոդուլ
SIM800L մոդուլ

Սարքի սիրտը SIM800L GSM մոդուլն է: Այս մոդուլը օգտագործում է ընդամենը 3 մուտքային/ելքային կապ միկրոհսկիչի վրա:

Մոդուլը միանում է միկրոհսկիչին `ստանդարտ սերիական պորտի միջոցով:

  • Բոլոր հրամանները միավորին ուղարկվում են սերիական նավահանգստի միջոցով `օգտագործելով ստանդարտ AT հրամաններ:
  • Մուտքային զանգի կամ SMS- ի ստացման դեպքում տեղեկատվությունը միկրոհսկիչին ուղարկվում է սերիական պորտի միջոցով `օգտագործելով ASCII տեքստը:

Տիեզերք խնայելու համար GSM մոդուլը միացված է համակարգչային տախտակին 7-պինային վերնագրի միջոցով: Սա հեշտացնում է GSM մոդուլի հեռացումը: Սա նաև հնարավորություն է տալիս օգտագործողին հեշտությամբ տեղադրել/հեռացնել SIM քարտը մոդուլի ներքևում:

Պահանջվում է ակտիվ SIM քարտ, և SIM քարտը պետք է կարողանա ուղարկել և ստանալ SMS հաղորդագրություններ:

SIM800L GSM մոդուլի կարգավորումը

Սարքը միացնելիս GSM մոդուլի վերակայման քորոցը մեկ վայրկյան ցածր է քաշվում: Սա ապահովում է, որ GSM մոդուլը գործարկվի միայն էներգիայի մատակարարման կայունացումից հետո: GSM մոդուլի վերագործարկումը տևում է մի քանի վայրկյան, այնպես որ սպասեք 5 վայրկյան ՝ նախքան մոդուլին AT ցանկացած հրաման ուղարկելը:

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

AT

օգտագործվում է GSM մոդուլի առկայության որոշման համար

AT+CREG?

Հարցման ենթարկեք այս հրամանը, մինչև GSM մոդուլը գրանցվի բջջային հեռախոսների ցանցում

AT+CMGF = 1

SMS հաղորդագրությունների ռեժիմը սահմանեք ASCII- ի վրա

AT+CNMI = 1, 2, 0, 0, 0

Եթե SMS- ն մատչելի է, ուղարկեք SMS- ի մանրամասները GSM մոդուլի սերիական պորտին

AT+CMGD = 1, 4

Deնջել SIM քարտում պահված ցանկացած SMS հաղորդագրություն

AT+CPBS = / "SM

GSM մոդուլի հեռախոսագիրքը սահմանեք SIM քարտի վրա

AT+COPS = 2, այնուհետև AT+CLTS = 1, այնուհետև AT+COPS = 0

Սահմանեք GSM մոդուլի ժամանակը բջջային հեռախոսի ցանցի ժամանակի վրա

Սպասեք 5 վայրկյան, մինչև ժամանակը կարգավորվի

AT+CUSD = 1

Միացնել USSD հաղորդագրությունների գործառույթը

Քայլ 8: Միկրոհսկիչ

Միկրո վերահսկիչ
Միկրո վերահսկիչ
Միկրո վերահսկիչ
Միկրո վերահսկիչ
Միկրո վերահսկիչ
Միկրո վերահսկիչ

Միկրոհսկիչը ստանդարտ AtMega328p է, նույնը, ինչ օգտագործվում էր Arduino Uno- ում: Այսպիսով, ծածկագիրը համեմատելի է երկուսի հետ: Ինքնաթիռի հեշտ ծրագրավորումը թույլ տալու համար 6-պինանոց ծրագրավորման վերնագիրը հասանելի է ԱՀ-ի տախտակին:

Միավորի տարբեր հատվածները միացված են միկրո պրոցեսորին և ներառում են հետևյալը.

  • Չորս թվային մուտք
  • Չորս թվային ելք
  • Տատանվողը
  • Երկու ցուցիչ LED
  • Վերագործարկեք միացում
  • SIM800L GSM մոդուլ

GSM մոդուլից դեպի և դուրս եկող բոլոր հաղորդակցությունները կատարվում են օգտագործելով SoftwareSerial () գործառույթը: Այս մեթոդը մշակվեց Arduino IDE- ի հիմնական սերիական նավահանգիստը մշակելու փուլում:

Միայն 2KB SRAM և 1KB EEPROM- ով, բավարար հիշողություն չկա ավելի քան մի քանի օգտվող պահելու համար, որոնք կարող են կապված լինել սարքի հետ: SRAM- ն ազատելու համար օգտագործողի ամբողջ տեղեկատվությունը պահվում է GSM մոդուլի SIM քարտի վրա: Այս պայմանավորվածությամբ, միավորը կարող է սպասարկել մինչև 250 տարբեր օգտվողների:

Միավորի կազմաձևման տվյալները պահվում են EEPROM- ում ՝ դրանով իսկ բաժանելով օգտվողի տվյալները և համակարգի տվյալները միմյանցից:

Դեռևս կան մի քանի պահեստային մուտքի/ելք, սակայն LCD էկրան և (կամ) ստեղնաշար ավելացնելու տարբերակը հնարավոր չեղավ ՝ SoftWareSerial () բրաֆերների ընդունման և փոխանցման մեծ քանակությամբ SRAM- ի պատճառով, Սարքի վրա ցանկացած տեսակի ինտերֆեյսի բացակայության պատճառով բոլոր կարգավորումները և օգտվողները ծրագրավորվում են SMS հաղորդագրությունների միջոցով:

Քայլ 9. SRAM հիշողության օպտիմիզացում

SRAM հիշողության օպտիմիզացում
SRAM հիշողության օպտիմիզացում

Մշակման բավականին վաղ փուլում Arduino IDE- ն ծածկագիրը կազմելիս հաղորդեց ցածր SRAM հիշողության մասին: Դրա հաղթահարման համար օգտագործվել են մի քանի մեթոդներ:

Սահմանափակեք սերիական նավահանգստում ստացված տվյալները

GSM մոդուլը զեկուցելու է միկրոհսկիչին բոլոր հաղորդագրությունները սերիական պորտին: Որոշ SMS հաղորդագրություններ ստանալիս ստացված հաղորդագրության ընդհանուր երկարությունը կարող է գերազանցել 200 նիշը: Սա կարող է արագ սպառել AtMega չիպի վրա առկա բոլոր SRAM- ը և կառաջացնի կայունության խնդիրներ:

դա կանխելու համար կօգտագործվեն GSM մոդուլից ստացված ցանկացած հաղորդագրության միայն առաջին 200 նիշերը: Ստորև բերված օրինակը ցույց է տալիս, թե ինչպես է դա արվում ՝ ստացված նիշերը հաշվելով փոփոխական Counter- ում:

// տվյալների որոնում ծրագրային ապահովման սերիալից

// --------------------------------------------------- RxString = ""; Հաշվիչ = 0; while (SSerial.available ()) {հետաձգում (1); // կարճ հետաձգում ՝ նոր տվյալների տեղադրման համար ժամանակ տալու համար // ստանալ նոր նիշ RxChar = char (SSerial.read ()); // ավելացնել առաջին 200 նիշը տողին, եթե (Counter <200) {RxString.concat (RxChar); Counter = Counter + 1; }}

Serial.print () ծածկագրի նվազեցում

Չնայած զարգացման ընթացքում հարմար է, Arduino Serial Monitor- ը կարող է օգտագործել շատ SRAM: Կոդը մշակվել է հնարավորինս քիչ թվով `օգտագործելով Serial.print () ծածկագիրը: Կոդի մի հատվածը փորձարկվել է աշխատելու համար, ամբողջ Serial.print () ծածկագիրը հեռացվել է ծածկագրի այդ հատվածից:

Օգտագործելով Serial.print (F (("")) ծածկագիրը

Arduino սերիական մոնիտորի վրա սովորաբար ցուցադրվող շատ տեղեկություններ ավելի իմաստալից են դառնում, երբ նկարագրություններ են ավելացվում: Վերցրեք հետևյալ օրինակը.

Serial.println («Սպասում ենք կոնկրետ գործողությունների»);

«Սպասում ենք կոնկրետ գործողությունների» տողը ամրագրված է և չի կարող փոխվել:

Կոդի կազմման ընթացքում կոմպիլյատորը FLASH հիշողության մեջ կներառի «Սպասում կոնկրետ գործողությունների» տողը:

Բացի այդ, կազմողը տեսնում է, որ տողը հաստատուն է, որն օգտագործվում է «Serial.print» կամ «Serial.println» հրահանգով: Միկրոյի գործարկման ընթացքում այս հաստատունը նույնպես տեղադրվում է SRAM հիշողության մեջ:

Serial.print () գործառույթներում օգտագործելով «F» նախածանցը, այն կազմողին ասում է, որ այս տողը հասանելի է միայն FLASH հիշողության մեջ: Այս օրինակի համար տողը պարունակում է 28 նիշ: Սա 28 բայթ է, որը կարող է ազատվել SRAM- ում:

Serial.println (F («Սպասում ենք կոնկրետ գործողությունների»));

Այս մեթոդը վերաբերում է նաև SoftwareSerial.print () հրամաններին: Քանի որ GSM մոդուլն աշխատում է AT հրամանների վրա, կոդը պարունակում է բազմաթիվ SoftwareSerial.print («xxxx») հրամաններ: Օգտագործելով «F» նախածանցը ՝ ազատեց գրեթե 300 բայթ SRAM:

Մի օգտագործեք ապարատային սերիայի պորտը

Կոդի վրիպազերծումից հետո ապարատային սերիայի նավահանգիստն անջատվեց `հեռացնելով ԲՈԼՈՐ Serial.print () հրամանները: Սա ազատեց մի քանի լրացուցիչ բայթ SRAM:

Առանց ծածկագրի մնացած Serial.print () հրամանների, հասանելի դարձավ լրացուցիչ 128 բայթ SRAM: Դա արվել է `հեռացնելով ապարատային սերիական պորտը ծածկագրից: Սա հանգեցրեց 64 բայթ փոխանցման և 64 բայթ ստացման բուֆերների ստեղծմանը:

// Serial.begin (9600); // ապարատային սերիայի պորտը անջատված է

EEPROM- ի օգտագործումը տողերի համար

Յուրաքանչյուր մուտքի և ելքի համար անհրաժեշտ էր պահել երեք տող: Դրանք են ՝ ալիքի անունը, տողը, երբ ալիքը միացված է, և լար, երբ ալիքն անջատված է:

Ընդհանուր առմամբ 8 I/O ալիքներով դրանք կլինեն

  • Ալիքի անուններ պարունակող 8 տող ՝ յուրաքանչյուրը 10 նիշ
  • 8 տող, որը պարունակում է ալիք Նկարագրության վրա, յուրաքանչյուրը ՝ 10 նիշ
  • Ալիքի նկարագրությունը պարունակող 8 տող, յուրաքանչյուրը ՝ 10 նիշ

Սա գովազդում է մինչև 240 բայթ SRAM: Այս տողերը SRAM- ում պահելու փոխարեն դրանք պահվում են EEPROM- ում: Սա ազատեց լրացուցիչ 240 բայթ SRAM:

Լարի հայտարարում ճիշտ երկարություններով

Փոփոխականները սովորաբար հայտարարվում են ծածկագրի սկզբում: Լարային փոփոխական հայտարարելիս տարածված սխալն այն է, որ մենք չենք հայտարարում տողը ճիշտ թվանշաններով:

Լար GSM_Nr = "";

Լարային GSM_Name = ""; Լարային GSM_Msg = "";

Գործարկման ընթացքում միկրոհսկիչը SRAM- ում հիշողություն չի հատկացնի այս փոփոխականների համար: Սա հետագայում կարող է անկայունություն առաջացնել, երբ այդ տողերն օգտագործվում են:

Դա կանխելու համար հայտարարեք տողերի ճիշտ նիշերով տողերը, որոնք տողը կօգտագործի ծրագրակազմում:

Լար GSM_Nr = "1000000000";

Լարային GSM_Name = "2000000000"; Լարային GSM_Msg = "3000000000";

Ուշադրություն դարձրեք, թե ինչպես ես չէի հայտարարում տողերը նույն կերպարներով: Եթե այս տողերը բոլորը հայտարարեք «1234567890» ասելով, ապա կոմպիլյատորը երեք փոփոխականների մեջ կտեսնի նույն տողը և միայն տողերից մեկի համար բավականաչափ հիշողություն կհատկացնի SRAM- ում:

Քայլ 10. Softwareրագրակազմի սերիական բուֆերի չափը

Softwareրագրակազմի սերիական բուֆերի չափը
Softwareրագրակազմի սերիական բուֆերի չափը

Հետևյալ ծածկագրում դուք կնկատեք, որ ծրագրակազմի սերիական պորտից կարելի է կարդալ մինչև 200 նիշ:

// տվյալների որոնում ծրագրային ապահովման սերիալից

// --------------------------------------------------- RxString = ""; Հաշվիչ = 0; while (SSerial.available ()) {հետաձգում (1); // կարճ հետաձգում ՝ նոր տվյալների տեղադրման համար ժամանակ տալու համար // ստանալ նոր նիշ RxChar = char (SSerial.read ()); // ավելացնել առաջին 200 նիշը տողին, եթե (Counter <200) {RxString.concat (RxChar); Counter = Counter + 1; }}

Սա պահանջում է առնվազն 200 բայթ բուֆեր `ծրագրային ապահովման սերիայի համար նույնպես: լռելյայն, ծրագրային ապահովման սերիայի պորտի բուֆերն ընդամենը 64 բայթ է: Այս բուֆերն ավելացնելու համար որոնեք հետևյալ ֆայլը.

SoftwareSerial.h

Բացեք ֆայլը տեքստային խմբագրիչով և փոխեք բուֆերի չափը մինչև 200:

/******************************************************************************

*Սահմանումներ ********************************************* *****************************

Քայլ 11: Համակարգչային տախտակի պատրաստում

ԱՀ խորհրդի պատրաստում
ԱՀ խորհրդի պատրաստում

PC Board- ը նախագծվել է Cadsoft Eagle- ի անվճար տարբերակի միջոցով (կարծում եմ, որ անունը փոխվել է):

  • PC Board- ը միակողմանի դիզայն է:
  • Մակերևույթի ամրացման բաղադրիչներ չեն օգտագործվում:
  • Բոլոր բաղադրիչները տեղադրված են համակարգչի տախտակին, ներառյալ SIM800L մոդուլը:
  • Ոչ մի արտաքին բաղադրիչ կամ միացում չի պահանջվում
  • Հաղորդալարերի ցատկիչները թաքնված են բաղադրիչների տակ `ավելի մաքուր տեսք ունենալու համար:

Ես օգտագործում եմ հետևյալ մեթոդը ՝ PC տախտակներ պատրաստելու համար.

  • PC Board- ի պատկերը տպվում է Press-n-Peel- ում ՝ օգտագործելով լազերային տպիչ:
  • Press-n-Peel- ը այնուհետև տեղադրվում է PC տախտակի մաքուր կտորի վրա և ամրացվում ժապավենով:
  • Այնուհետև PC Board- ի պատկերը Press-n-Peel- ից փոխանցվում է դատարկ PC տախտակին `տախտակը լամինատորի միջով անցնելով: Ինձ համար 10 փոխանցումներն ամենալավն են աշխատում:
  • PC Board- ի սենյակային ջերմաստիճանի սառեցումից հետո Press-n-Peel- ը դանդաղորեն հանվում է տախտակից:
  • Այնուհետև PC Board- ը փորագրվում է ՝ օգտագործելով տաք ջրում լուծված ամոնիումի պերսուլֆատ բյուրեղներ:
  • Քերծվածքից հետո կապույտ Press-n-Peel և սև տոնիկը հանվում է ՝ մաքրված գծանշված տախտակը որոշ ացետոնով մաքրելով:
  • Այնուհետեւ տախտակը կտրվում է Dremel- ի չափով
  • Բոլոր անցքերի բաղադրամասերի համար անցքեր են կատարվում 1 մմ տրամագծով:
  • Տերմինալային պտուտակային միակցիչները հորատվում են 1.2 մմ տրամագծով:

Քայլ 12: ՀԽ խորհրդի հավաքում

ՀԽ խորհրդի ժողով
ՀԽ խորհրդի ժողով
ՀԽ խորհրդի ժողով
ՀԽ խորհրդի ժողով
ՀԽ խորհրդի ժողով
ՀԽ խորհրդի ժողով
ՀԽ խորհրդի ժողով
ՀԽ խորհրդի ժողով

Մոնտաժումը կատարվում է ՝ ավելացնելով ամենափոքր բաղադրիչներն առաջինը և ձեր ճանապարհը հասնելով մինչև ամենամեծ բաղադրիչները:

Այս հրահանգի մեջ օգտագործված բոլոր բաղադրիչները, բացառությամբ SIM800 մոդուլի, ստացվել են իմ տեղական մատակարարից: Մտածում է նրանց միշտ բաժնետոմս ունենալու համար: Խնդրում ենք դիտել նրանց հարավաֆրիկյան վեբ կայքը ՝

www.shop.rabtron.co.za/catalog/index.php

ՆՇՈՒՄ! Սկզբում կպցրեք երկու թռիչքաձևերը, որոնք գտնվում են ATMEGA328p IC- ի տակ:

Պատվերը հետևյալն է.

  • Ռեզիստորներ և դիոդ
  • Վերականգնել կոճակը
  • IC վարդակներ
  • Լարման կարգավորիչ
  • Վերնագրի կապում
  • Փոքր կոնդենսատորներ
  • LED- ները
  • Ապահովիչի պահարան
  • Տերմինալային բլոկներ
  • Ռելեներ
  • Էլեկտրոլիտիկ կոնդենսատորներ

Նախքան IC- ների տեղադրումը, միացրեք սարքը 12 Վ լարման և ստուգեք բոլոր լարումները `ճիշտ լինելու համար:

Վերջապես, օգտագործելով որոշակի թափանցիկ լաք, ծածկեք ԱՀ -ի տախտակի պղնձե կողմը `այն տարրերից պաշտպանելու համար:

Երբ լաքը չորանա, տեղադրեք IC- ները, բայց թողեք GSM մոդուլը մինչև AtMega- ի ծրագրավորումը:

Քայլ 13: AtMega328p- ի ծրագրավորում

Mingրագրավորում AtMega328p
Mingրագրավորում AtMega328p
Mingրագրավորում AtMega328p
Mingրագրավորում AtMega328p
Mingրագրավորում AtMega328p
Mingրագրավորում AtMega328p

# # Fրագրակազմի բարելավում 3.02 տարբերակի # #

Միացված SMS- ները կուղարկվեն MASTER USER- ին, երբ էներգիան վերականգնվի սարքում:

Ես օգտագործում եմ Arduino Uno ծրագրավորման վահանով `միավորը ծրագրավորելու համար: Լրացուցիչ տեղեկությունների համար, թե ինչպես օգտագործել Arduino Uno- ն որպես ծրագրավորող, տե՛ս այս հրահանգը ՝

Arduino UNO As AtMega328P ծրագրավորող

GSM մոդուլը պետք է հեռացվի PC Board- ից `ծրագրավորման վերնագրին մուտք ունենալու համար: GSM մոդուլը հեռացնելիս զգույշ եղեք, որպեսզի չվնասեք ալեհավաքի մետաղալարը:

Connectրագրավորման մալուխը միացրեք ծրագրավորողի և միավորի միջև ՝ օգտագործելով ծրագրավորման վերնագիրը PC տախտակին: և էսքիզը վերբեռնեք միավորին:

Արտաքին 12 Վ լարման կարիք չկա միավորը ծրագրավորելու համար: PC Board- ը սնուցվելու է Arduino- ից `ծրագրավորման մալուխի միջոցով:

Բացեք կցված ֆայլը Arduino IDE- ում և ծրագրավորեք այն միավորին:

Mingրագրավորումից հետո հեռացրեք ծրագրավորման մալուխը և տեղադրեք GSM մոդուլը:

Այժմ միավորը պատրաստ է օգտագործման համար:

Քայլ 14: Միացրեք միավորը

Միավորի միացում
Միավորի միացում
Միավորի միացում
Միավորի միացում
Միավորի միացում
Միավորի միացում

Միավորի հետ բոլոր կապերը կատարվում են պտուտակավոր տերմինալների միջոցով:

Միավորի հզորացում

Համոզվեք, որ գրանցված SIM քարտ եք տեղադրել GSM մոդուլում, և որ SIM քարտը կարող է ուղարկել և ստանալ SMS հաղորդագրություններ:

Միացրեք 12V DC սնուցման աղբյուր 12V IN- ին և 0V տերմինալներից որևէ մեկին: Լիցքավորվելուց հետո PC- ի տախտակի կարմիր LED- ը կմիանա: Մոտ մեկ րոպեից GSM մոդուլը պետք է միացված լիներ բջջային հեռախոսների ցանցին: Կարմիր LED- ը կանջատվի, իսկ GSM մոդուլի կարմիր LED- ն արագ կթարթվի:

Այս փուլին հասնելուց հետո միավորը պատրաստ է կազմաձևման:

Մուտքային կապեր

Թվային մուտքերը աշխատում են 12 Վ լարման վրա: Մուտքը միացնելու համար մուտքի վրա անհրաժեշտ է կիրառել 12 Վ լարման: 12 Վ հեռացնելով մուտքն անջատված կլինի:

Ելքային միացումներ

Յուրաքանչյուր ելք բաղկացած է փոփոխման-փոխանցման կոնտակտից: Անհրաժեշտության դեպքում լարեք յուրաքանչյուր կոնտակտ:

Քայլ 15: Սկզբնական կարգավորում

Նախնական կարգավորում
Նախնական կարգավորում

Սարքի նախնական կարգավորումը պետք է իրականացվի `ապահովելու համար, որ բոլոր պարամետրերը գործարանային են և SIM քարտը կազմաձևված է` օգտագործողի տեղեկատվությունը ճիշտ ձևաչափով ընդունելու համար:

Քանի որ բոլոր հրամանները հիմնված են SMS- ի վրա, կարգավորումը կատարելու համար ձեզ հարկավոր կլինի մեկ այլ հեռախոս:

Նախնական տեղադրման համար դուք պետք է լինեք սարքում:

Սահմանեք MASTER USER հեռախոսահամարը

Քանի որ միայն MASTER USER- ը կարող է կազմաձևել միավորը, այս քայլը պետք է նախ իրականացվի:

  • Միավորը պետք է սնուցվի:
  • Սեղմեք և բաց թողեք «Վերականգնել» կոճակը և սպասեք, մինչև համակարգչի տախտակի կարմիր LED- ն անջատվի:
  • GSM մոդուլի NET LED- ն արագ կթարթվի:
  • Այժմ միավորը պատրաստ է ընդունել սկզբնական տեղադրման հրամանները: Դա պետք է իրականացվի 10 րոպեի ընթացքում:
  • Ուղարկեք SMS հաղորդագրություն, որը պարունակում է MASTER, նկարագրություն միավորի հեռախոսահամարին:
  • Ստանալու դեպքում ԱՀ -ի տախտակի վրա կանաչ LED- ը երկու անգամ կթարթվի:
  • MASTER USER- ն այժմ ծրագրավորված է:

Վերականգնել միավորը գործարանային կանխադրվածներին

MASTER USER- ի ծրագրավորումից հետո միավորի կարգավորումները պետք է կարգավորվեն գործարանային կանխադրվածի վրա:

  • Միավորի հեռախոսահամարին ուղարկեք SMS հաղորդագրություն միայն CLEARALL- ով:
  • Ստանալու դեպքում ԱՀ -ի տախտակի վրա կանաչ և կարմիր LED- ը այլընտրանքային առկայծում է վայրկյան մեկ անգամ: Սարքը վերականգնվել է գործարանային լռելյայն պարամետրերով:
  • Բոլոր պարամետրերը վերականգնվել են գործարանային կանխադրվածին:
  • Սեղմեք և բաց թողեք «Վերականգնել» կոճակը ՝ սարքը վերագործարկելու համար:

SIM քարտի ձևաչափում

Վերջին քայլը SIM քարտում պահվող բոլոր տեղեկությունները ջնջելն է և կարգավորել այն այս սարքում օգտագործելու համար:

  • Սեղմեք և բաց թողեք «Վերականգնել» կոճակը և սպասեք, մինչև համակարգչի տախտակի կարմիր LED- ն անջատվի:
  • GSM մոդուլի NET LED- ն արագ կթարթվի:
  • Այժմ միավորը պատրաստ է ընդունել սկզբնական տեղադրման հրամանները: Դա պետք է իրականացվի 10 րոպեի ընթացքում:
  • Միայն ERASESIM- ով SMS հաղորդագրություն ուղարկեք միավորի հեռախոսահամարին:
  • Եթե ստացվի, PC- ի տախտակի վրա կանաչ LED- ը կթարթվի ծառի ժամանակներով:

Այժմ միավորը կազմաձևված է և պատրաստ է օգտագործման համար:

Քայլ 16: SMS հրամաններ

SMS հրամաններ
SMS հրամաններ

Գոյություն ունեն երեք տարբեր տեսակի հրամաններ, որոնք օգտագործվում են ստորաբաժանման կողմից: Բոլոր հրամանները ուղարկվում են SMS- ով և բոլորը հետևյալ ձևաչափով են.

ՀՐԱՄԱՆ,,,,,

  • Բոլոր հրամանները, բացառությամբ Սովորական օգտագործողի հրամանների, մեծատառ են:
  • Պարամետրերը մեծատառ չեն:

Նախնական տեղադրման հրամաններ

ՎԱՐՊԵՏ, անուն

SMS ուղարկողի հեռախոսահամարը օգտագործվում է որպես MASTER USER հեռախոսահամար: միավորի նկարագրությունը կարող է ավելացվել այստեղ:

ՄԱՔՐԵԼ ԲՈԼՈՐԸ

Վերագործարկեք միավորը գործարանային կանխադրվածներին

ՄԱՔՐՈSՄ

Dataնջել բոլոր տվյալները SIM քարտից

Վերականգնել

Վերագործարկեք միավորը

MASTER USER Հրամաններ միավորի կազմաձևման համար

OUTMODE, c, m, t NOTE! ! ! ԴԵՌ ԿԱՏԱՐՎԱ ՉԷ

Սահմանեք որոշակի ալիքներ, որոնք ունեն PULSED, TIMED կամ LATCHING ելքեր: t- ը TIMED ելքերի համար րոպեների տևողությունն է

PULSE, cccc

Սահմանեք որոշակի ալիքներ PULSED ելքերի վրա: Եթե չկարգավորվի, ալիքները կդառնան որպես LATCHING ելքեր:

PULSETIME, t Կարգավորում է զարկերակային ելքի տևողությունը վայրկյանների ընթացքում (0.. 10 վրկ)

INPUTON, cccc

Սահմանեք ալիքներ, որոնք պետք է միացնեն և ուղարկեք SMS հաղորդագրություն, երբ վիճակը OFF- ից անցնում է ON

INPUTOFF, cccc

Սահմանեք ալիքներ, որոնք պետք է միացնեն և ուղարկեք SMS հաղորդագրություն, երբ վիճակը միացված է OFF- ին

INTIME, գ, տ

Կարգավորում է մուտքի հետաձգման ժամանակը ՝ վայրկյանների ընթացքում կարգավիճակի փոփոխությունները հայտնաբերելու համար

INTEXT, ch, անուն, միացված, անջատված

Սահմանեք յուրաքանչյուր մուտքային ալիքի անունը `տեքստի և տեքստի վրա

OUTTEXT, ch, անուն, միացված, անջատված

Սահմանեք յուրաքանչյուր ելքային ալիքի անունը `տեքստի և տեքստի վրա

Ավելացնել, գտնվելու վայրը, համարը, ազդանշանները, SMS մուտքերը, մուտքերը

Ավելացրեք օգտվողին SIM քարտին հիշողության «գտնվելու վայրում» ՝ ելքային և մուտքային ալիքներով, որոնք հատկացված են օգտագործողին

Դել, գտնվելու վայրը

Userնջել օգտվողին SIM քարտի հիշողության «գտնվելու վայրից»

Ալիքի անվանումը

Pulարկերակային ելք կլինի ChannelName անունով

ChannelName, onText կամ ChannelName, offText

Միացրեք/անջատեք ելքը ChannelName անունով և onText/offText- ով

Սովորական օգտագործողի հրամաններ միավորը վերահսկելու համար

???? Հայցել մուտքի/ելքի կարգավիճակի թարմացում: Ստատուս SMS- ը կուղարկվի հեղինակին:

Ալիքի անվանումը

Pulարկերակային ելք կլինի ChannelName անունով

Ալիքի անունը, տեքստում

Միացրեք ելքը ChannelName- ի անունով և տեքստում տեքստի կարգավիճակին

ChannelName, offText Փակելու է ելքը ChannelName անունով, և կարգավիճակի տեքստը offText

Հրամանների ավելի մանրամասն նկարագրության համար տե՛ս կից PDF փաստաթուղթը:

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