Мазмуну:

Arduino негизделген GSM/SMS алыстан башкаруу бирдиги: 16 кадам (сүрөттөр менен)
Arduino негизделген GSM/SMS алыстан башкаруу бирдиги: 16 кадам (сүрөттөр менен)

Video: Arduino негизделген GSM/SMS алыстан башкаруу бирдиги: 16 кадам (сүрөттөр менен)

Video: Arduino негизделген GSM/SMS алыстан башкаруу бирдиги: 16 кадам (сүрөттөр менен)
Video: Deprem anında neler yapılmalı? 2024, Ноябрь
Anonim
Arduino негизделген GSM/SMS Remote Control Unit
Arduino негизделген GSM/SMS Remote Control Unit

! ! ! N O T I C E!

Жергиликтүү уюлдук телефон мунарасы менин аймагында жаңыртылгандыктан, мен бул GSM модулун колдоно албай калдым. Жаңы мунара мындан ары 2G түзмөктөрүн колдобойт. Ошондуктан, мен мындан ары бул долбоорго эч кандай колдоо көрсөтө албайм.

Хоббист үчүн GSM модулдарынын кеңири диапазону бар болгондуктан, көбүбүз аны сатып алууну токтоттук. Мен SIM800L модулун жергиликтүү түрдө сатып алдым жана модулдун ар кандай буйруктары менен ойноп бүттүм.

Arduino Uno жана Arduino IDEди колдонуу менен мен өз ойлорумду чындыкка айланта алдым. Бул оңой келген жок, анткени БИР ЭҢ ЧОН МАСЕЛЕ болгону 2KB SRAM менен чектелген. Интернетте жана ар кандай форумдарда көп изилдөөлөрдөн кийин, мен бул чектөөнү жеңе алдым.

Программалоонун ар кандай ыкмалары, Arduino компиляторун жакшыраак түшүнүү жана кошумча эстутум үчүн SIM картаны жана EEPROMду колдонуу бул долбоорду сактап калды. Кодго бир аз өзгөртүүлөр киргизилгенден кийин, бир жуманын ичинде туруктуу прототип түзүлүп, сыналган.

Чектелген SRAMдын бир кемчилиги - бул дисплей жана колдонуучу ачкычтары менен жабдылган эмес. Бул кодду толугу менен кайра жазууга алып келди. Колдонуучу интерфейси жок болгондуктан, долбоорду улантуунун бирден -бир варианты - бирдикти, ошондой эле колдонуучуларды конфигурациялоо үчүн SMS билдирүүлөрдү колдонуу.

Бул кызыктуу долбоор болуп чыкты жана өнүгүү улантылган сайын дагы келечектер кошулду.

Менин негизги максатым Arduino Uno, же бул учурда ATMEGA328p менен биригүү жана бетине орнотуучу компоненттерди колдонбоо болчу. Бул жалпыга бирдикти көчүрүү жана курууну жеңилдетет.

Бирдиктин өзгөчөлүгү:

  • Бирдикте эң көп 250 колдонуучу программаланышы мүмкүн
  • Төрт санарип чыгаруу
  • Төрт санарип киргизүү
  • Ар бир чыгаруу PULSE же ON/OFF чыгаруу катары конфигурацияланат
  • Чыгуу импульсунун узактыгын 0,5.. 10 секунддун ортосунда коюуга болот
  • Ар бир киргизүүнү ӨЧҮРҮП күйгүзүү үчүн конфигурациялоого болот.
  • Ар бир киргизүүнү ON күйгүзүүнү OFF күйгүзүү үчүн конфигурациялоого болот
  • Ар бир киргизүү кечигүү убактысын 0 секунддан 1 саатка чейин коюуга болот
  • Киргизүүлөрдөгү өзгөртүүлөр үчүн SMS билдирүүлөр 5 башка колдонуучуга жөнөтүлүшү мүмкүн
  • Ар бир киргизүү үчүн аттар жана статус текст колдонуучу тарабынан коюлушу мүмкүн
  • Ар бир чыгаруу үчүн аттар жана статус тексттери колдонуучу тарабынан коюлушу мүмкүн
  • Бирдик USSD билдирүү аркылуу SIM картанын балансы тууралуу билдирүүлөрдү алуу үчүн конфигурацияланышы мүмкүн.
  • Бардык колдонуучулар бирдиктин I/O статусун жаңыртуусун талап кыла алышат
  • Бардык колдонуучулар жеке билдирүүлөрдү SMS билдирүүлөрү аркылуу көзөмөлдөй алышат
  • Бардык колдонуучулар бирдикке чалуу менен жеке чыгууларды көзөмөлдөй алышат

Коопсуздук өзгөчөлүктөрү

  • Баштапкы орнотуу бирдикте турганда гана жасалышы мүмкүн.
  • Баштапкы орнотууну MASTER USER гана аткара алат
  • Баштапкы орнотуу буйруктары он мүнөттөн кийин автоматтык түрдө өчүрүлөт.
  • Белгилүү колдонуучулардан келген чалуулар жана SMS гана блокту башкара алат
  • Колдонуучулар MASTER USER тарабынан дайындалган чыгымдарды гана иштете алышат

Башка өзгөчөлүктөр

  • Бул бөлүмгө чалуулар бекер, анткени чалуу эч качан жооп бербейт.
  • Аппарат чакырылганда, чалуу 2 секунддан кийин гана түшөт. Бул чалууга бирдиктин чалууга жооп бергенин ырастоо.
  • Эгерде SIM карта тейлөөчүсү USSD билдирүүлөрдү колдосо, балансты сурап билүү MASTER USER тарабынан жүргүзүлүшү мүмкүн. Баланс камтылган USSD билдирүүсү MASTER USERге жөнөтүлөт.

1 -кадам: Электр менен камсыздоо

Электр камсыздоо
Электр камсыздоо

Бирдик стандарттык коопсуздук тутумдарына (сигнализация системалары, электр гараж эшиктери, электр дарбазаларынын моторлору) туташтырылышы үчүн, блок мындай системаларда кадимкидей жеткиликтүү болгон 12В туруктуу токтон иштейт.

Power 12V IN жана 0V терминалдарда колдонулат, жана 1A сактандыргыч менен корголгон. Кошумча 12V OUT терминалдары бар, ошондой эле сактандыруучу менен корголгон.

Диод D1 бирдигин 12V линияларындагы тескери полярдык туташуулардан коргойт.

C1 жана C2 конденсаторлору 12В берүү линияларында болгон ызы -чууну чыпкалайт. 12В камсыздоо агрегаттын релесин иштетүү үчүн колдонулат.

5V камсыздоо LM7805L чыңалуу жөндөгүчүнөн турат жана SIM800L GSM модулуна, ошондой эле микро процессорго керектүү туруктуу +5V чыгарат. C3 жана C4 конденсаторлору +5V камсыздоо линиясында болушу мүмкүн болгон ар кандай ызы -чууну чыпкалайт. Салыштырмалуу чоң көлөмдөгү электролит конденсаторлору колдонулган, анткени SIM800L GSM модулу өткөрүүдө бир аз күч колдонот.

Чыңалуу жөндөгүчүнө жылуулук берүүчү керек эмес.

2 -кадам: Санарип киргизүү

Санариптик кирүүлөр
Санариптик кирүүлөр
Санариптик кирүүлөр
Санариптик кирүүлөр

Санариптик кирүү сигналдарынын бардыгы 12В, алар 5В микро контроллери менен туташуусу керек. Бул үчүн, оптикалык кошкучтар 5В системасынан 12В сигналдарды изоляциялоо үчүн колдонулат.

1K киргизүү каршылыгы 10mA тегерегиндеги opto кошкучка киргизүү агымын чектейт.

Улам мейкиндик чектелгендиктен, 5В тартылуу каршылыгы үчүн ПК тактасында бош орун жок болчу. Микроконтроллер кирүү казыктарын алсыз тартууну иштетүү үчүн орнотулган.

Opto кошкучтун киришинде (LOW) эч кандай сигнал жок болсо, opto coupler LED аркылуу эч кандай ток өтпөйт. Ошентип, opto кошкуч транзистору өчүрүлөт. Микроконтроллердин алсыз тартылышы коллекторду дээрлик 5В чейин көтөрөт жана микро контроллер тарабынан ЖОГОРКУ логика катары каралат.

Opto кошкучтун киришине 12V (HIGH) колдонулганда, 10mA тегерегинде опто кошкуч LED аркылуу агат. Ошентип, opto кошкуч транзистору күйгүзүлөт. Бул коллекторду дээрлик 0Вге түшүрөт жана микро контролер тарабынан LOW логика катары каралат.

Микроконтроллер көргөн кирүү 12V киришине салыштырмалуу тескери экенин эске алыңыз.

Кирүү пинин окуу үчүн кадимки код төмөнкүдөй көрүнөт:

логикалык Киргизүү = digitalRead (inputpin);

Тескери сигналды оңдоо үчүн төмөнкү кодду колдонуңуз:

логикалык Киргизүү =! digitalRead (inputpin); // Кетүү ! окуу алдында

Эми, микро контролер көргөн кириш 12В киришиндеги кирүүгө туура келет.

Акыркы киргизүү схемасы 4 санариптик кирүүдөн турат. Ар бир киргизүү PC тактасындагы терминалдарга туташтырылган.

3 -кадам: Санарип жыйынтыктар

Санарип чыгуулар
Санарип чыгуулар
Санарип чыгуулар
Санарип чыгуулар
Санарип чыгуулар
Санарип чыгуулар

Адатта, бир реле минималдуу гана рулду башкаргандыктан, эң жакшы ыкма транзистор драйверинин схемасын көрсөтүлгөндөй колдонуу. Бул жөнөкөй, арзан жана натыйжалуу.

Резисторлор жерге түшүүнү жана транзистордук базанын токту чектөөсүн камсыз кылат. Транзистор релени айдоо үчүн жеткиликтүү токту көбөйтүү үчүн колдонулат. Микроконтролдоочу пинден 1мА гана тартылганда, транзистор 100мА жүктү алмаштыра алат. Реленин көпчүлүк түрлөрү үчүн жетиштүү. Диод-бул релени которуу учурунда схеманы жогорку чыңалуудан коргоочу, артка чегинүүчү диод. Бул схеманы колдонуунун кошумча артыкчылыгы реленин иштөө чыңалуусу микро контроллердин чыңалуусунан айырмаланышы мүмкүн. Ошентип, 5В релесин колдонуунун ордуна, 48Вга чейин каалаган DC чыңалуусун колдонсо болот.

ULN2803 менен тааныштыруу

Долбоорго канчалык көп реле керек болсо, компоненттердин саны ошончолук жогору болот. Бул PCB дизайнын татаалдаштырат жана баалуу PCB мейкиндигин колдонушу мүмкүн. Бирок ULN2803 сыяктуу транзистор массивин колдонуу PCB өлчөмүн кичине сактоого жардам берет. ULN2803 микро контролердун 3.3V жана 5V кириштери үчүн идеалдуу келет жана 48В DCге чейин релелерди башкара алат. Бул ULN2803дө 8 жеке транзистордук схемалар бар, ар бир схема релени алмаштыруу үчүн зарыл болгон бардык компоненттер менен жабдылган.

Акыркы чыгаруу схемасы ULN3803 турат, 4 12V DC чыгаруу релесин айдайт. Эстафетанын ар бир байланышы PC Board терминалдарында жеткиликтүү.

4 -кадам: Микро контроллер осциллятору

Микроконтроллер осциллятору
Микроконтроллер осциллятору
Микроконтроллер осциллятору
Микроконтроллер осциллятору
Микроконтроллер осциллятору
Микроконтроллер осциллятору

Осциллятордук схема

Микроконтроллердин туура иштеши үчүн осциллятор керек. Arduino Uno дизайнын сактоо үчүн, схема 16 МГц стандарттуу осцилляторун колдонот. Эки вариант бар:

Кристалл

Бул ыкма эки жүктөөчү конденсаторго туташкан кристаллды колдонот. Бул эң кеңири таралган вариант.

Резонатор

Резонатор негизинен кристалл жана эки жүктөөчү конденсаторлор болуп саналат. Бул компоненттердин көлөмүн азайтат жана ЖК тактасында бош орунду көбөйтөт.

Компоненттердин санын мүмкүн болушунча аз кармоо үчүн мен 16 МГц резонаторун колдонууну чечтим.

5 -кадам: LED көрсөткүчтөрү

LED көрсөткүчтөр
LED көрсөткүчтөр
Жарык диоддор
Жарык диоддор

Кээ бир светодиодсуз кандай схема болот? Жөндөө 3мм диоддор үчүн PC тактасында жүргүзүлгөн.

1K резисторлор 5мАдан азыраак LED аркылуу токту чектөө үчүн колдонулат, 3мм бийик жаркыраган диоддорду колдонгондо, жарыктуулугу эң сонун.

Жарык диоддорун оңой чечмелөө үчүн эки түс колдонулат. Жарык берүүчү индикаторлор менен эки LEDди бириктирүү менен, бир гана эки LEDдан бир топ маалыматты алууга болот.

Кызыл LED

Кызыл LED мүчүлүштүктөрдүн шарттарын, узакка созулушун, туура эмес буйруктарды көрсөтүү үчүн колдонулат.

Жашыл LED

Жашыл LED дени сак жана/же туура киргизүүлөрдү жана буйруктарды көрсөтүү үчүн колдонулат.

6 -кадам: Микро процессордун баштапкы абалга келүү схемасы

Микро процессордун баштапкы абалга келтирүү схемасы
Микро процессордун баштапкы абалга келтирүү схемасы

Коопсуздук максатында, бирдиктин кээ бир функциялары блокту иштеткенден кийин алгачкы 10 мүнөттө гана жеткиликтүү.

Баштапкы абалга келтирүү баскычы менен, бирдикти баштапкы абалга келтирүү үчүн бирдиктин кубаттуулугун өчүрүүнүн кажети жок.

Бул кантип иштейт

10K каршылыгы RESET линиясын 5Вга жакын сактайт. Кнопка басылганда, RESET линиясы 0Vга тартылат, ошентип микро контроллерди баштапкы абалга келтирет. Кнопка бошотулганда, RESET линиясы микро контроллерди артка кайтарып, %vге кайтат.

7 -кадам: SIM800L модулу

SIM800L модулу
SIM800L модулу
SIM800L модулу
SIM800L модулу
SIM800L модулу
SIM800L модулу

Бирдиктин жүрөгү SIM800L GSM модулу. Бул модуль микро контроллерде 3 гана I/O казыгын колдонот.

Модул стандарттык сериялык порт аркылуу микро контроллерге интерфейс кылат.

  • Бирдикке бардык буйруктар стандарттык AT командаларын колдонуу менен сериялык порт аркылуу жөнөтүлөт.
  • Кирүүчү чалууда же SMS келгенде маалымат ASCII текстин колдонуу менен сериялык порт аркылуу микро контролерге жөнөтүлөт.

Орунду үнөмдөө үчүн GSM модулу 7-пин баш аркылуу PC Boardго туташтырылган. Бул GSM модулун алып салууну жеңилдетет. Бул колдонуучуга модулдун астындагы SIM картаны оңой эле салып/алып салууга мүмкүнчүлүк берет.

Активдүү SIM -карта талап кылынат, жана SIM -карта SMS билдирүүлөрдү жөнөтүүгө жана кабыл алууга жөндөмдүү болушу керек.

SIM800L GSM модулун орнотуу

Бөлүктү иштеткенде, GSM модулун баштапкы абалга келтирүүчү пин бир секундага төмөн тартылат. Бул GSM модулу электр менен камсыздоо турукташкандан кийин гана ишке киришин камсыздайт. GSM модулу кайра жүктөө үчүн бир нече секунд талап кылынат, андыктан модулга AT буйруктарын жөнөтүүдөн мурун 5 секунд күтө туруңуз.

GSM модулу микро контролер менен туура байланышууга конфигурацияланганын камсыз кылуу үчүн, ишке киргизүүдө төмөнкү AT буйруктары колдонулат:

AT

GSM модулунун бар же жок экендигин аныктоо үчүн колдонулат

AT+CREG?

Бул буйрукту GSM модулу уюлдук байланыш тармагында катталганга чейин сурамжылоо

AT+CMGF = 1

SMS билдирүү режимин ASCIIге коюңуз

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

SMS жеткиликтүү болсо, GSM модулунун сериялык портуна SMS маалыматын жөнөтүңүз

AT+CMGD = 1, 4

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-пин программалоо башы PC тактасында жеткиликтүү.

Бирдиктин ар кандай бөлүмдөрү микро процессорго туташкан жана төмөнкүлөрдү камтыйт:

  • Төрт санарип киргизүү
  • Төрт санарип чыгаруу
  • Осциллятор
  • Эки көрсөткүчтүү LED
  • Режимди кайра коюу
  • SIM800L GSM модулу

GSM модулуна жана андан бардык байланыш SoftwareSerial () функциясын колдонуу менен жүзөгө ашырылат. Бул ыкма иштеп чыгуу баскычында Arduino IDE үчүн негизги сериялык портту бошотуу үчүн колдонулган.

2KB SRAM жана 1KB EEPROM менен бирдикке байланыштырыла турган бир нече колдонуучуну сактоо үчүн жетиштүү эстутум жок. SRAMди бошотуу үчүн колдонуучунун бардык маалыматы GSM модулундагы SIM картада сакталат. Бул түзүлүш менен бирдик 250гө чейин ар кандай колдонуучуларды тейлей алат.

Бирдиктин конфигурация маалыматтары EEPROMда сакталат, ошону менен колдонуучу маалыматтарын жана тутум маалыматтарын бири -биринен ажыратат.

Дагы бир нече запастык I/O казыктары бар, бирок, LCD дисплейди жана/же клавиатураны кошуу мүмкүнчүлүгү SoftWareSerial () буферлерди кабыл алуу жана берүү SRAMдын чоң көлөмүнөн улам мүмкүн болгон жок, Бирдикте эч кандай колдонуучу интерфейси жок болгондуктан, бардык орнотуулар жана колдонуучулар SMS билдирүүлөрдү колдонуу менен программаланышат.

9 -кадам: SRAM эс тутумун оптималдаштыруу

SRAM эс тутумун оптималдаштыруу
SRAM эс тутумун оптималдаштыруу

Иштеп чыгуу стадиясында, Arduino IDE кодду түзүүдө SRAM эс тутуму төмөн экенин билдирди. Муну жеңүү үчүн бир нече ыкмалар колдонулган.

Сериялык портко алынган маалыматтарды чектөө

GSM модулу бардык билдирүүлөрдү микро контролерге сериялык портко кабарлайт. Кээ бир SMS билдирүүлөрдү алганда, алынган билдирүүнүн жалпы узундугу 200 белгиден ашышы мүмкүн. Бул тез эле AtMega чипинде жеткиликтүү болгон SRAMдын бардыгын керектей алат жана туруктуулук көйгөйлөрүн жаратат.

Мунун алдын алуу үчүн GSM модулунан келген КАНДАЙ билдирүүнүн биринчи 200 белгиси гана колдонулат. Төмөндөгү мисал, бул Counter өзгөрмөсүндө алынган символдорду эсептөө аркылуу кантип жасаларын көрсөтөт.

// программалык камсыздоонун сериялык портунан маалыматтарды издөө

// ----------------------------------------------- RxString = ""; Counter = 0; while (SSerial.available ()) {delay (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 Monitorдо көрсөтүлүүчү көп маалымат мааниге ээ болот. Төмөнкү мисалды алыңыз:

Serial.println ("Конкреттүү аракеттер күтүлүүдө");

"Конкреттүү аракеттерди күтүүдө" сабы оңдолгон жана өзгөртө албайт.

Кодду түзүү учурунда компилятор FLASH эс тутумуна "Конкреттүү аракеттерди күтүү" сабын киргизет.

Кошумча катары, компилятор саптын "Serial.print" же "Serial.println" көрсөтмөсү тарабынан колдонулганын көрөт. Микро жүктөө учурунда бул туруктуу SRAM эс тутумуна да коюлат.

Serial.print () функцияларындагы "F" префиксин колдонуу менен, ал компиляторго бул сап FLASH эс тутумунда гана бар экенин айтат. Бул мисал үчүн, сап 28 белгиден турат. Бул SRAMда бошотулуучу 28 байт.

Serial.println (F ("Конкреттүү аракеттерди күтүүдө"));

Бул ыкма SoftwareSerial.print () буйруктарына да тиешелүү. GSM модулу AT буйруктарында иштегендиктен, коддо көптөгөн SoftwareSerial.print ("xxxx") буйруктары бар. "F" префиксин колдонуу SRAMдын дээрлик 300 байтын бошотту.

Аппараттык сериялык портту колдонбоңуз

Кодду мүчүлүштүктөрдү оңдоодон кийин, ALL Serial.print () буйруктарын алып салуу менен аппараттык сериялык порт өчүрүлдү. Бул SRAMдын бир нече кошумча байтын бошотту.

Коддо калган Serial.print () буйруктары жок, кошумча 128 байт SRAM жеткиликтүү болду. Бул аппараттык сериялык портту коддон алып салуу менен жасалды. Бул 64 байт берүү жана 64 байт алуу буферин күчөтөт.

// Serial.begin (9600); // аппараттык сериялык порт өчүрүлгөн

Саптар үчүн EEPROM колдонуу

Ар бир киргизүү жана чыгаруу үчүн үч сап сакталууга тийиш. Алар каналдын аты, канал күйүп турганда жана канал өчкөндө сап.

Жалпысынан 8 I/O каналы менен, алардын болот

  • Ар бир 10 белгиден турган канал аттарын камтыган 8 сап
  • Арнеги 10 символдон турган 8 сап
  • Арнасы 10 белгиден турган, каналдын сыпаттамасы камтылган 8 сап

Бул SRAMдын 240 байтына чейин жарнамалайт. Бул саптарды SRAMда сактоонун ордуна, алар EEPROMде сакталат. Бул кошумча 240 байт SRAM бошотту.

Туура узундуктагы декларациялоочу жип

Өзгөрмөлөр адатта коддун башында жарыяланат. Саптын өзгөрмөсүн жарыялоодо кеңири таралган ката, биз сапты символдордун туура саны менен жарыя кылбайбыз.

String GSM_Nr = "";

String GSM_Name = ""; String GSM_Msg = "";

Иштетүү учурунда микро контроллер SRAMда бул өзгөрмөлөр үчүн эстутум бөлбөйт. Бул кийинчерээк бул саптар колдонулганда туруксуздукка алып келиши мүмкүн.

Мунун алдын алуу үчүн, сап программалык камсыздоодо колдонула турган символдордун туура санын жарыялаңыз.

GSM_Nr сапы "1000000000";

GSM_Name сабы = "2000000000"; GSM_Msg сабы = "3000000000";

Ошол эле белгилер менен саптарды кантип жарыя кылбаганымды байкаңыз. Эгерде сиз бул саптардын бардыгын "1234567890" деп билдирсеңиз, анда компилятор үч өзгөрмөнүн бир эле сабын көрөт жана саптардын бирине SRAMда жетиштүү эс бөлөт.

10 -кадам: Программалык камсыздоонун сериялык буферинин өлчөмү

Программалык камсыздоонун сериялык буферинин өлчөмү
Программалык камсыздоонун сериялык буферинин өлчөмү

Төмөнкү коддо программалык камсыздоонун сериялык портунан 200 белгиге чейин окууга болорун байкайсыз.

// программалык камсыздоонун сериялык портунан маалыматтарды издөө

// ----------------------------------------------- RxString = ""; Counter = 0; while (SSerial.available ()) {delay (1); // буферге жаңы маалыматтарды жайгаштыруу үчүн убакыт берүү үчүн кыска кечигүү // жаңы белгини алуу RxChar = char (SSerial.read ()); // сапка биринчи 200 белгини кошуу, эгерде (Counter <200) {RxString.concat (RxChar); Counter = Counter + 1; }}

Бул программалык камсыздоонун сериялык порту үчүн 200 байттан кем эмес буферди талап кылат. демейки боюнча, программалык камсыздоонун сериялык портунун буфери болгону 64 байт. Бул буферди көбөйтүү үчүн төмөнкү файлды издеңиз:

SoftwareSerial.h

Файлды текст редактору менен ачыңыз жана буфердин өлчөмүн 200гө өзгөртүңүз.

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

*Аныктамалар ********************************************** ******************************/ #ifndef _SS_MAX_RX_BUFF #define _SS_MAX_RX_BUFF 200 // RX буфер өлчөмү #endif

11 -кадам: PC тактасын жасоо

ЖК тактасын жасоо
ЖК тактасын жасоо

PC Board Cadsoft Eagle акысыз версиясын колдонуу менен иштелип чыккан (менимче, аты өзгөрдү).

  • PC Board - бул бир жактуу дизайн.
  • Эч кандай бетке орнотуучу компоненттер колдонулбайт.
  • Бардык компоненттер SIM800L модулун кошкондо, PC тактасына орнотулган.
  • Эч кандай тышкы компоненттер же туташуулар талап кылынбайт
  • Зым секиргичтер таза көрүнүш үчүн компоненттердин астына катылган.

Мен компьютер такталарын жасоо үчүн төмөнкү ыкманы колдоном:

  • PC Board сүрөтү лазердик принтердин жардамы менен Press-n-Peelге басылат.
  • Press-n-Peel андан кийин PC Boardтун таза бөлүгүнүн үстүнө жайгаштырылат жана кандайдыр бир скотч менен бекитилет.
  • PC Board сүрөтү андан кийин Press-n-Peelден бош ПК тактасына ламинатор аркылуу тактаны өткөрүп берүү менен өткөрүлөт. Мен үчүн 10 өтмөк эң жакшы иштейт.
  • PC Board бөлмө температурасына чейин муздагандан кийин, Press-n-Peel акырындык менен коллегиядан көтөрүлөт.
  • PC Board анда ысык сууда эриген аммоний персульфатынын кристаллдарын колдонуу менен чегилген.
  • Чөгүп кеткенден кийин көк Пресс-н-Пил жана кара тонер чегилген ПК тактасын ацетон менен тазалоо аркылуу алынып салынат.
  • Такта Dremel менен өлчөмүнө чейин кесилет
  • Бардык тешик компоненттери үчүн тешиктер 1мм бургулоочу тешиктин жардамы менен тешилет.
  • Терминалдын бурама туташтыргычтары 1.2 мм бургулоочу тешиктин жардамы менен тешилет.

12 -кадам: ЖК Башкармасынын Ассамблеясы

ЖК Башкармасынын Ассамблеясы
ЖК Башкармасынын Ассамблеясы
ЖК Башкармасынын Ассамблеясы
ЖК Башкармасынын Ассамблеясы
ЖК Башкармасынын Ассамблеясы
ЖК Башкармасынын Ассамблеясы
ЖК Башкармасынын Ассамблеясы
ЖК Башкармасынын Ассамблеясы

Чогуу эң кичине компоненттерди кошуу менен жана эң чоң компоненттерге чейин иштөө менен жасалат.

SIM800 модулун кошпогондо, ушул Нускамада колдонулган бардык компоненттер менин жергиликтүү провайдеримден алынган. Алар дайыма запасы бар деп ойлойт. Сураныч, алардын Түштүк Африка вебсайтын карап көрүңүз:

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

ЭСКЕРТҮҮ! Адегенде ATMEGA328p IC астында жайгашкан эки секиргичти ширетүү

Тартип төмөнкүчө:

  • Резисторлор жана диод
  • Кайра коюу баскычы
  • IC Sockets
  • Чыңалуу жөндөгүчү
  • Башкы төөнөгүчтөр
  • Чакан конденсаторлор
  • LED
  • Сактандыргыч кармагыч
  • Терминалдык блоктор
  • Реле
  • Электролиттик конденсаторлор

IC'лерди киргизүүдөн мурун, бирдигин 12Vга туташтырып, бардык чыңалуулардын туура экенин текшериңиз.

Акыр -аягы, ачык -айкын лакты колдонуп, аны коргоо үчүн ЖК тактасынын жез жагын жабыңыз.

Лак кургатылганда, ICлерди киргизиңиз, бирок GSM модулун AtMega программаланганга чейин калтырыңыз.

13 -кадам: AtMega328p программалоо

AtMega328p программалоо
AtMega328p программалоо
AtMega328p программалоо
AtMega328p программалоо
AtMega328p программалоо
AtMega328p программалоо

# # Программалык камсыздоону 3.02 версиясына жогорулатуу # #

Түзмөккө кубат калыбына келгенде, MASTER USERге SMS жөнөтүү иштетилди

Мен аппаратты программалоо үчүн программалоо калканы бар Arduino Uno колдонуп жатам. Arduino Uno программисти катары кантип колдонуу керектиги жөнүндө көбүрөөк маалымат алуу үчүн бул Нускамага кайрылыңыз:

Arduino UNO AtMega328P программисти катары

GSM модулун программалоо башына кирүү үчүн ЖК тактасынан алып салуу керек. GSM модулун алып жатканда антенна зымына зыян келтирбөө үчүн этият болуңуз.

Программист менен блоктун ортосундагы программалоо кабелин PC тактасындагы программалоо башын колдонуп туташтырыңыз.

Тышкы 12В жабдууну программалоо үчүн кереги жок. PC Board Ардуинодон программалоо кабели аркылуу иштейт.

Тиркелген файлды Arduino IDEде ачыңыз жана аны бирдикке программалаңыз.

Программалоодон кийин программалоо кабелин алып, GSM модулун салыңыз.

Агрегат азыр колдонууга даяр.

14 -кадам: Бирдикти туташтыруу

Бирдикти туташтыруу
Бирдикти туташтыруу
Бирдикти туташтыруу
Бирдикти туташтыруу
Бирдикти туташтыруу
Бирдикти туташтыруу

Бирдикке бардык туташуулар бурама терминалдар аркылуу жүргүзүлөт.

Бирдикти иштетүү

GSM модулуна катталган SIM -картаны киргизгениңизди жана SIM -карта SMS билдирүүлөрдү жөнөтүүгө жана кабыл алууга жөндөмдүү экенин текшериңиз.

12V DC кубаттуулугун 12V IN жана 0V терминалдарынын бирине туташтырыңыз. Күйгүзүлгөндөн кийин, PC тактасындагы кызыл LED күйөт. Болжол менен бир мүнөттүн ичинде GSM модулу уюлдук байланыш тармагына туташышы керек. Кызыл LED өчөт, ал эми GSM модулундагы кызыл LED тез жаркырайт.

Бул этапка жеткенден кийин, аппарат конфигурациялоого даяр.

Киргизүү байланыштары

Санариптик кирүүлөр 12В иштейт. Киргизүүнү күйгүзүү үчүн, кирүүгө 12В колдонуу керек. 12В алып салуу кирүүнү өчүрөт.

Чыгуу байланыштары

Ар бир чыгаруу өзгөрүү байланышынан турат. Ар бир байланышты керектүү түрдө өткөрүңүз.

15 -кадам: Алгачкы орнотуу

Баштапкы орнотуу
Баштапкы орнотуу

Бирдиктин баштапкы орнотуулары бардык параметрлердин заводдук демейки абалга келтирилишин камсыз кылуу үчүн жана SIM карта колдонуучунун маалыматын туура форматта кабыл алуу үчүн конфигурацияланган болушу керек.

Бардык буйруктар SMSке негизделгендиктен, орнотууну ишке ашыруу үчүн сизге башка телефон керек болот.

Баштапкы орнотуу үчүн, сиз бирдикте болушуңуз керек.

MASTER USER телефон номерин коюңуз

Бирдикти MASTER USER гана конфигурациялай алгандыктан, бул кадам биринчи аткарылышы керек.

  • Агрегат кубатталууга тийиш.
  • Reset баскычын басып, кое бериңиз жана ЖК тактасындагы кызыл LED өчкөнчө күтө туруңуз.
  • GSM модулундагы NET LED тез жаркырайт.
  • Бирдик азыр баштапкы орнотуу буйруктарын кабыл алууга даяр. Бул 10 мүнөттүн ичинде аткарылышы керек.
  • MASTER камтылган SMS билдирүүсүн жөнөтүңүз, бирдиктин телефон номерине.
  • Кабыл алынса, ЖК тактасындагы жашыл LED эки жолу жаркырайт.
  • MASTER USER азыр программаланган.

Аппаратты заводдук демейки абалына кайтарыңыз

МАСТЕР КОЛДОНУУЧУ программалангандан кийин, агрегаттын жөндөөлөрү заводдун демейки абалына коюлушу керек.

  • Бирдиктин телефон номерине бир гана CLEARALL менен SMS билдирүү жөнөтүңүз.
  • Эгерде кабыл алынса, ЖК тактасындагы жашыл жана кызыл LED секундасына бир жолу жаркырап күйөт. Аппарат демейки жөндөөлөрү менен калыбына келтирилди.
  • Бардык орнотуулар заводдун баштапкы абалына кайтарылды.
  • Кайра жүктөө баскычын басып, коё бериңиз.

SIM картаны форматтоо

Акыркы кадам - SIM картада сакталган бардык маалыматты өчүрүү жана аны ушул блокто колдонуу үчүн конфигурациялоо.

  • Reset баскычын басып, кое бериңиз жана ЖК тактасындагы кызыл LED өчкөнчө күтө туруңуз.
  • GSM модулундагы NET LED тез жаркырайт.
  • Бирдик азыр баштапкы орнотуу буйруктарын кабыл алууга даяр. Бул 10 мүнөттүн ичинде аткарылышы керек.
  • Бирдиктин телефон номерине бир гана ERASESIM менен SMS билдирүү жөнөтүңүз.
  • Эгерде кабыл алынса, ЖК тактасындагы жашыл LED дарактардын убактысын күйгүзөт.

Азыр бирдик конфигурацияланды жана колдонууга даяр.

16 -кадам: SMS буйруктары

SMS буйруктары
SMS буйруктары

Бирдик колдонгон үч түрдүү буйрук бар. Бардык буйруктар SMS аркылуу жөнөтүлөт жана бардыгы төмөнкү форматта:

БУЙРУК,,,,,,

  • NORMAL USER командаларынан башка бардык буйруктар чоң -кичине сезгич.
  • Параметрлер чоң -кичине сезгич эмес.

Баштапкы орнотуу буйруктары

MASTER, аты

SMS жөнөтүүчүнүн телефон номери MASTER USER телефон номери катары колдонулат. бирдиктин сүрөттөмөсүн бул жерге кошсо болот.

CLEARALL

Аппаратты заводдук демейки абалга келтирүү

CLEARSIM

SIM картадан бардык маалыматтарды тазалоо

КАЛПЫНА КЕЛТИРҮҮ

Бирдигин кайра жүктөңүз

MASTER USER Бирдикти конфигурациялоо үчүн буйруктар

OUTMODE, c, m, t ЭСКЕРТҮҮ! ! ! ЭМЕС КОЛДОНУЛГАН

Конкреттүү каналдарды PULSED, TIMED же LATCHING чыгууларын коюңуз. t - TIMED чыгаруу үчүн мүнөттөрдөгү убакыт узактыгы

PULSE, cccc

Конкреттүү каналдарды PULSED чыгууларга коюңуз. Эгер коюлбаса, каналдар LATCHING чыгышы катары коюлат.

PULSETIME, t Импульстуу чыгаруунун узактыгын секундада коет (0.. 10s)

INPUTON, cccc

Тургула турган каналдарды орнотуңуз жана абал ӨЧҮКТөн КҮЙҮККӨ өзгөргөндө SMS билдирүүсүн жөнөтүңүз

INPUTOFF, cccc

Күйгүзүлүүчү каналдарды орнотуңуз жана абал ON (ӨЧҮК) абалынан ӨЧҮКкө өзгөргөндө SMS билдирүү жөнөтүңүз

INTIME, c, t

Статус өзгөрүүлөрүн секундада аныктоо үчүн киргизүү кечигүү убакытын белгилейт

INTEXT, ch, аты, күйүк, өчүк

Текстке жана өчүрүү текстине ар бир кирүүчү каналдын атын коюңуз

OUTTEXT, ch, аты, күйгүзүү, өчүрүү

Текстке жана өчүрүү текстине ар бир чыгаруу каналынын атын коюңуз

Кошуу, жайгашкан жери, номери, Билдирүүлөр, SMS чыгуулары, киргизүүлөр

Колдонуучуга чыгуучу жана кирүүчү каналдар дайындалып, "жайгашкан жери" боюнча SIM картага колдонуучуну кошуңуз

Дел, жайгашкан жери

Колдонуучуну SIM картанын эстутумунан "жайгашкан жеринен" жок кылуу

ChannelName

ChannelName аты менен импульс чыгарат

ChannelName, onText же ChannelName, offText

Чыгарууну ChannelName жана onText/offText аты менен күйгүзүп/өчүрөт

Кадимки Колдонуучу бирдигин көзөмөлдөө үчүн

???? I/O статусун жаңыртууну сурануу. Статус SMS оригинаторго жөнөтүлөт.

ChannelName

ChannelName аты менен импульс чыгарат

ChannelName, onText

Чыгууну ChannelName аты менен жана тексттин статусун күйгүзөт

ChannelName, offText Чыгарууну ChannelName аты менен өчүрөт жана тексттин текстин өчүрөт

Командалардын кеңири сүрөттөлүшү үчүн тиркелген PDF документине кайрылыңыз.

Сунушталууда: