Բովանդակություն:
- Քայլ 1: Էներգամատակարարում
- Քայլ 2: Թվային մուտքագրումներ
- Քայլ 3: Թվային արդյունքներ
- Քայլ 4: Micro Controller Oscillator
- Քայլ 5: icուցանիշ LED- ները
- Քայլ 6: Միկրոպրոցեսորային վերականգնման միացում
- Քայլ 7: SIM800L մոդուլ
- Քայլ 8: Միկրոհսկիչ
- Քայլ 9. SRAM հիշողության օպտիմիզացում
- Քայլ 10. Softwareրագրակազմի սերիական բուֆերի չափը
- Քայլ 11: Համակարգչային տախտակի պատրաստում
- Քայլ 12: ՀԽ խորհրդի հավաքում
- Քայլ 13: AtMega328p- ի ծրագրավորում
- Քայլ 14: Միացրեք միավորը
- Քայլ 15: Սկզբնական կարգավորում
- Քայլ 16: SMS հրամաններ
Video: Arduino- ի վրա հիմնված GSM/SMS հեռակառավարման միավոր ՝ 16 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
! ! ! 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
Օսիլյատոր միացում
Միկրոհսկիչին անհրաժեշտ է տատանում `ճիշտ գործելու համար: Arduino Uno- ի դիզայնին մնալու համար շղթան կօգտագործի 16 ՄՀց ստանդարտ տատանում: Երկու տարբերակ կա.
Բյուրեղյա
Այս մեթոդը օգտագործում է բյուրեղ, որը միացված է երկու բեռնիչ կոնդենսատորների: Սա ամենատարածված տարբերակն է:
Ռեզոնատոր
Ռեզոնատորը հիմնականում բյուրեղ է և երկու բեռնիչ կոնդենսատոր `մեկ 3 պինանոց փաթեթում: Սա նվազեցնում է բաղադրիչների քանակը և մեծացնում է PC տախտակի վրա առկա տարածքը:
Բաղադրիչների քանակը հնարավորինս ցածր պահելու համար ես նախընտրեցի օգտագործել 16 ՄՀց ռեզոնատոր:
Քայլ 5: icուցանիշ 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 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 հիշողության օպտիմիզացում
Մշակման բավականին վաղ փուլում 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րագրակազմի սերիական բուֆերի չափը
Հետևյալ ծածկագրում դուք կնկատեք, որ ծրագրակազմի սերիական պորտից կարելի է կարդալ մինչև 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- ի ծրագրավորում
# # 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 ուղարկողի հեռախոսահամարը օգտագործվում է որպես 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 փաստաթուղթը:
Խորհուրդ ենք տալիս:
Ավտոմատ Arduino- ի վրա հիմնված IR հեռակառավարման ջերմաստիճան `7 քայլ
Ավտոմատ Arduino- ի վրա հիմնված IR հեռակառավարման ջերմաստիճան, որը հիմնված է. Աքարշ այստեղ ՝ CETech- ից: Հոգնել եք ձայնի քնի արթնանալուց միայն այն պատճառով, որ սենյակի ջերմաստիճանը չափազանց ցածր է կամ չափազանց բարձր `ձեր բութ AC- ի պատճառով: Ապա այս նախագիծը ձեզ համար է: Այս նախագծում մենք պատրաստվում ենք մեր
Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ - IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. 4 քայլ
Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ | IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. Բարև ձեզ, այս հրահանգների մեջ մենք կդարձնենք ոչ կոնտակտային ջերմաչափ arduino- ով: Քանի որ երբեմն հեղուկի/պինդի ջերմաստիճանը չափազանց բարձր է կամ ցածր, ապա դժվար է դրա հետ կապ հաստատել և կարդալ այդ դեպքում ջերմաստիճանը
ARUPI - ցածր գնով ավտոմատ ձայնագրման միավոր/ինքնագրող ձայնագրման միավոր (ARU) Soundscape էկոլոգների համար. 8 քայլ (նկարներով)
ARUPI - -ածր ծախսերի ավտոմատ ձայնագրման միավոր/ինքնավար ձայնագրման միավոր (ARU) Soundscape բնապահպանների համար. Այս հրահանգը գրվել է Էնթոնի Թերների կողմից: Նախագիծը մշակվել է Քենթի համալսարանի հաշվողական դպրոցի Shed- ի մեծ օգնությամբ (պարոն Դանիել Նոքսը մեծ օգնություն էր): Այն ձեզ ցույց կտա, թե ինչպես կարելի է կառուցել ավտոմատ ձայնագրիչ U
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 Based Midi Generator). Բարև, այսօր ես կբացատրեմ, թե ինչպես պատրաստել ձեր սեփական եղանակի վրա հիմնված փոքր երաժշտության գեներատոր: Այն հիմնված է ESP8266- ի վրա, որը նման է Arduino- ին և արձագանքում է ջերմաստիճանին, անձրևին: և լույսի ուժգնություն: Մի ակնկալեք, որ այն ամբողջ երգեր կամ ակորդներ կհաղորդի
Ինչպես միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. 3 քայլ (նկարներով)
Ինչպե՞ս միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. Այդ գծից ամենաճկուն և էժան սարքերից են Sonoff Basic- ը և Sonoff Dual- ը: Սրանք Wi-Fi- ով միացված անջատիչներ են ՝ հիմնված հիանալի չիպի ՝ ESP8266- ի վրա: Մինչդեռ