Агуулгын хүснэгт:

Arduino дээр суурилсан GSM/SMS алсын удирдлагын хэсэг: 16 алхам (зурагтай)
Arduino дээр суурилсан GSM/SMS алсын удирдлагын хэсэг: 16 алхам (зурагтай)

Видео: Arduino дээр суурилсан GSM/SMS алсын удирдлагын хэсэг: 16 алхам (зурагтай)

Видео: Arduino дээр суурилсан GSM/SMS алсын удирдлагын хэсэг: 16 алхам (зурагтай)
Видео: Carstart mongolia машины алсын асаалт 2024, Арваннэгдүгээр
Anonim
Arduino дээр суурилсан GSM/SMS алсын удирдлагын хэсэг
Arduino дээр суурилсан GSM/SMS алсын удирдлагын хэсэг

! ! ! Үгүй ээ!

Миний орон нутгийн гар утасны цамхаг шинэчлэгдэж байгаа тул би энэ GSM модулийг ашиглахаа больсон. Шинэ цамхаг 2G төхөөрөмжийг дэмжихээ больсон. Тиймээс би энэ төслийг цаашид дэмжих боломжгүй болно.

Хобби сонирхогчдод зориулсан маш олон төрлийн GSM модулиуд байдаг тул бидний ихэнх нь үүнийг худалдаж авахаа больсон. Би SIM800L модулийг орон нутгаас худалдаж аваад модулийн өөр өөр командуудаар тоглож дууссан.

Arduino Uno болон Arduino IDE -ийг ашиглан би санаагаа бодит болгож чадсан. Энэ нь амаргүй байсан бөгөөд ГАНЦААР ТОМ АСУУДАЛ нь зөвхөн 2KB SRAM -ийн хязгаарлалт байсан юм. Интернет болон өөр өөр форум дээр маш их судалгаа хийсний дараа би энэ хязгаарлалтыг даван туулж чадсан юм.

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

Хязгаарлагдмал 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 мессежийг хянах боломжтой
  • Хэрэглэгчид зөвхөн МАСТЕР ХЭРЭГЛЭГЧИЙН өгсөн хуваарилагдсан гаралтыг удирдах боломжтой

Бусад онцлог шинж чанарууд

  • Дуудлагад хариу өгөхгүй байгаа тул энэ нэгж рүү залгах нь үнэ төлбөргүй байдаг.
  • Нэгжийг дуудах үед дуудлага 2 секундын дараа л буурах болно. Энэ нь тухайн дуудлагад хариу өгсөн гэсэн дуудлага өгсөн хүний баталгаа юм.
  • Хэрэв SIM картын үйлчилгээ үзүүлэгч нь USSD мессежийг дэмждэг бол MASTER USER -ээс үлдэгдлийн лавлагаа авах боломжтой. Үлдэгдлийг агуулсан USSD мессежийг MASTER USER руу дамжуулах болно.

Алхам 1: Цахилгаан хангамж

Цахилгаан хангамж
Цахилгаан хангамж

Төхөөрөмжийг стандарт хамгаалалтын системд (дохиоллын систем, цахилгаан гаражийн хаалга, цахилгаан хаалганы мотор) холбох боломжтой болгохын тулд уг төхөөрөмжийг ихэвчлэн ийм системд байдаг 12V тогтмол гүйдэлээс тэжээх болно.

Эрчим хүчийг 12V IN ба 0V терминал дээр ашигладаг бөгөөд 1А гал хамгаалагчаар хамгаалагдсан байдаг. Нэмэлт 12V OUT терминалууд байдаг бөгөөд гал хамгаалагчаар хамгаалагдсан байдаг.

Диод D1 нь төхөөрөмжийг 12V шугам дээрх урвуу туйлт холболтоос хамгаалдаг.

C1 ба C2 конденсаторууд нь 12V тэжээлийн шугам дээр байгаа аливаа дуу чимээг шүүнэ. 12В тэжээлийг нэгжийн релеийг тэжээхэд ашигладаг.

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

Хүчдэл зохицуулагч дээр дулаан шингээгч шаардлагагүй.

Алхам 2: Дижитал оролт

Дижитал оролт
Дижитал оролт
Дижитал оролт
Дижитал оролт

Дижитал оролтын дохио нь бүгд 12V бөгөөд 5V микро контроллертой холбогдсон байх ёстой. Үүний тулд opto холбогчийг 5V системээс 12V дохиог тусгаарлахад ашигладаг.

1K оролтын эсэргүүцэл нь opto холбогч руу оролтын гүйдлийг ойролцоогоор 10 мА хүртэл хязгаарладаг.

Орон зайн хязгаарлагдмал байдлаас шалтгаалан компьютерийн самбар дээр 5V татах эсэргүүцэлтэй байх зай байхгүй байв. Микро хянагч нь оролтын тээглүүрийг сул татах боломжийг олгодог.

Опто холбогчийн оролт (LOW) дээр дохио байхгүй бол opto холбогч LED -ээр гүйдэл гүйхгүй. Тиймээс opto coupler транзисторыг унтраадаг. Микро хянагчийн сул татах нь коллекторыг бараг 5V хүртэл татах бөгөөд микро хянагчийн хувьд логикийг ОЛОН гэж үзэх болно.

Опто холбогчийн оролтод 12V (HIGH) хүч хэрэглэвэл 10mA орчим нь opto coupler LED -ээр дамжина. Тиймээс opto coupler транзисторыг асаах болно. Энэ нь коллекторыг бараг 0В хүртэл буулгаж, микро хянагчийн логик LOW гэж үзэх болно.

Микро хянагчийн харж буй оролт нь 12V оролттой харьцуулахад урвуу байгааг анхаарна уу.

Оролтын зүүг унших ердийн код дараах байдлаар харагдаж байна.

boolean Input = digitalRead (inputpin);

Урвуу дохиог засахын тулд дараах кодыг ашиглана уу.

boolean Input =! digitalRead (inputpin); // АНХААР! уншихын өмнө

Одоо микро хянагчийн харж буй оролт нь 12V оролтын оролттой тохирч байх болно.

Эцсийн оролтын хэлхээ нь 4 дижитал оролтоос бүрдэнэ. Оролт бүр нь компьютерийн самбар дээрх терминалуудтай холбогддог.

Алхам 3: Дижитал гаралт

Дижитал гаралт
Дижитал гаралт
Дижитал гаралт
Дижитал гаралт
Дижитал гаралт
Дижитал гаралт

Ердийн үед хамгийн бага тооны реле ажилладаг хэлхээний хувьд транзисторын драйверын хэлхээг зурагт үзүүлсэн шиг ашиглах нь хамгийн сайн арга юм. Энэ нь энгийн, хямд, үр дүнтэй байдаг.

Резисторууд нь доошоо бууж, транзисторын суурийн гүйдлийн хязгаарлалтыг өгдөг. Транзисторыг реле жолоодох боломжтой гүйдлийг нэмэгдүүлэхэд ашигладаг. Транзистор нь микро хянагчийн зүүгээс ердөө 1 мА хүчээр цэнэглэгдсэн тохиолдолд 100 мА ачааг сольж чаддаг. Ихэнх төрлийн релейн хувьд хангалттай. Диод нь нисдэг диод бөгөөд реле солих үед хэлхээг өндөр хүчдэлийн үсрэлтээс хамгаалдаг. Энэхүү хэлхээг ашиглах давуу тал нь реле ажиллах хүчдэл нь микро хянагчийн хүчдэлээс ялгаатай байж болно. Тиймээс 5V реле ашиглахын оронд 48V хүртэлх аливаа тогтмол гүйдлийн хүчдэлийг ашиглаж болно.

ULN2803 -ийг танилцуулж байна

Төсөлд илүү их реле шаардагдах тусам бүрэлдэхүүн хэсгүүдийн тоо өндөр болно. Энэ нь ПХБ -ийн дизайныг улам хүндрүүлж, ПХБ -ийн үнэ цэнэтэй зайг ашиглах болно. Гэхдээ ULN2803 шиг транзисторын массивыг ашиглах нь ПХБ -ийн хэмжээг бага байлгахад туслах болно. ULN2803 нь микро контроллерийн 3.3V ба 5V оролтод хамгийн тохиромжтой бөгөөд 48V DC хүртэл реле жолоодох боломжтой. Энэхүү ULN2803 нь 8 тусдаа транзисторын хэлхээтэй бөгөөд хэлхээ бүр нь реле солиход шаардлагатай бүх бүрэлдэхүүн хэсгүүдээр тоноглогдсон байдаг.

Эцсийн гаралтын хэлхээ нь ULN3803 -ээс бүрдэх бөгөөд 4 12V тогтмол гүйдлийн гаралтын релейг жолооддог. Релений контакт бүрийг PC Board -ийн терминал дээр авах боломжтой.

Алхам 4: Микро хянагчийн осциллятор

Бичил хянагчийн осциллятор
Бичил хянагчийн осциллятор
Бичил хянагчийн осциллятор
Бичил хянагчийн осциллятор
Бичил хянагчийн осциллятор
Бичил хянагчийн осциллятор

Осцилляторын хэлхээ

Микро хянагч зөв ажиллахын тулд осциллятор хэрэгтэй. Arduino Uno загварыг хадгалахын тулд хэлхээ нь 16MHz стандарт осцилляторыг ашиглах болно. Хоёр сонголт боломжтой:

Болор

Энэ аргыг ачаалах хоёр конденсатортой холбогдсон болор ашигладаг. Энэ бол хамгийн түгээмэл сонголт юм.

Резонатор

Резонатор бол үндсэндээ болор, хоёр ачаалах конденсатор бөгөөд 3 зүү бүхий нэг багц юм. Энэ нь бүрэлдэхүүн хэсгүүдийн хэмжээг бууруулж, компьютерийн самбар дээрх зайг нэмэгдүүлэх болно.

Бүрэлдэхүүн хэсгүүдийн тоог аль болох бага байлгахын тулд би 16MHz резонатор ашиглахаар шийдсэн.

Алхам 5: Заагч LED

Заагч LED
Заагч LED
Заагч LED
Заагч LED

Зарим LED байхгүй бол ямар ч хэлхээ байх вэ? Компьютерийн самбар дээр 3 мм -ийн LED -ийг суурилуулсан болно.

1K резисторийг LED-ээр дамжуулж буй гүйдлийг 5мА-аас бага байлгахад ашигладаг. 3мм өндөр тод LED ашиглах үед гэрэл нь маш сайн байдаг.

LED -ийн статусыг хялбархан тайлбарлахын тулд хоёр өнгийг ашигладаг. Хоёр LED -ийг анивчдаг заалттай хослуулснаар зөвхөн хоёр LED -ээс маш их мэдээлэл олж авах боломжтой.

Улаан LED

Улаан LED нь алдааны нөхцөл, удаан саатал, буруу командыг зааж өгдөг.

Ногоон LED

Ногоон LED нь эрүүл,/эсвэл зөв оролт, командыг зааж өгдөг.

Алхам 6: Микро процессорыг дахин тохируулах хэлхээ

Бичил процессорыг дахин тохируулах хэлхээ
Бичил процессорыг дахин тохируулах хэлхээ

Аюулгүй байдлын үүднээс нэгжийн зарим функцийг төхөөрөмжийг асааснаас хойш эхний 10 минутын дотор л ашиглах боломжтой.

Дахин тохируулах товчлуураар төхөөрөмжийг дахин тохируулахын тулд төхөөрөмжийн тэжээлийг унтраах шаардлагагүй болно.

Хэрхэн ажилладаг

10K эсэргүүцэл нь RESET шугамыг 5V -ийн ойролцоо байлгах болно. Товчлуурыг дарахад RESET шугамыг 0V хүртэл татах бөгөөд ингэснээр микро хянагчийг анхны байдалд нь оруулах болно. Товчлуурыг суллахад RESET мөр %v рүү буцаж микро хянагчийг буцаана.

Алхам 7: SIM800L модуль

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

Төхөөрөмжийн зүрх нь SIM800L GSM модуль юм. Энэ модуль нь микро контроллер дээр зөвхөн 3 I/O зүү ашигладаг.

Модуль нь стандарт хянагчийн портоор микро хянагчтай холбогддог.

  • Нэгжийн бүх командыг стандарт AT командыг ашиглан цуваа портоор илгээдэг.
  • Ирж буй дуудлага эсвэл SMS хүлээн авах үед мэдээллийг ASCII текст ашиглан цуваа портоор дамжуулан микро хянагч руу илгээдэг.

Орон зай хэмнэхийн тулд GSM модулийг 7 зүү толгой ашиглан компьютерийн самбар дээр холбодог. Энэ нь 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 боломжтой бол SMS -ийн дэлгэрэнгүй мэдээллийг GSM модулийн цуваа порт руу илгээнэ үү

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: Микро хянагч

Микро хянагч
Микро хянагч
Микро хянагч
Микро хянагч
Микро хянагч
Микро хянагч

Микро хянагч нь Arduino Uno дээр ашиглагддаг AtMega328p стандарт юм. Тиймээс кодыг хоёуланг нь харьцуулж болно. Самбар дээр хялбархан програмчлах боломжийг олгохын тулд 6 зүү бүхий програмчлалын толгойг компьютерийн самбар дээр байрлуулах боломжтой.

Төхөөрөмжийн янз бүрийн хэсгүүд нь микро процессортой холбогдсон бөгөөд үүнд дараахь зүйлс орно.

  • Дөрвөн дижитал оролт
  • Дөрвөн дижитал гаралт
  • Осциллятор
  • Хоёр заагч LED
  • Хэлхээг дахин тохируулах
  • SIM800L GSM модуль

GSM модуль руу орох болон гарах бүх харилцаа холбоо SoftwareSerial () функцийг ашиглан хийгддэг. Энэхүү аргыг хөгжүүлэлтийн үе шатанд Arduino IDE -ийн үндсэн цуваа портыг чөлөөлөхөд ашигласан болно.

Зөвхөн 2KB SRAM, 1KB EEPROM -тэй тул төхөөрөмжид холбогдож болох хэд хэдэн хэрэглэгчийг хадгалах хангалттай санах ой байхгүй байна. SRAM -ийг суллахын тулд хэрэглэгчийн бүх мэдээллийг GSM модулийн SIM карт дээр хадгалдаг. Энэхүү зохицуулалтаар уг төхөөрөмж нь 250 хүртэлх хэрэглэгчийг хангах боломжтой юм.

Төхөөрөмжийн тохиргооны өгөгдлийг EEPROM -д хадгалдаг бөгөөд ингэснээр хэрэглэгчийн өгөгдөл болон системийн өгөгдлийг бие биенээсээ тусгаарладаг.

Хэд хэдэн нөөц I/O зүү байсаар байгаа боловч SoftWareSerial () буферийг хүлээн авах, дамжуулах ажилд их хэмжээний SRAM ашигладаг тул LCD дэлгэц ба/эсвэл гар нэмэх сонголт боломжгүй байсан.

Нэгж дээр ямар ч төрлийн хэрэглэгчийн интерфэйс байхгүй тул бүх тохиргоо, хэрэглэгчид SMS мессеж ашиглан програмчлагдсан байдаг.

Алхам 9: SRAM санах ойг оновчтой болгох

SRAM санах ойг оновчтой болгох
SRAM санах ойг оновчтой болгох

Хөгжүүлэлтийн эхэн үед Arduino IDE нь кодыг эмхэтгэхдээ SRAM санах ой багатай гэж мэдээлсэн. Үүнийг даван туулахын тулд хэд хэдэн аргыг ашигласан.

Цуваа порт дээр хүлээн авсан өгөгдлийг хязгаарлах

GSM модуль нь бүх мессежийг микро хянагч руу цуваа порт руу мэдээлэх болно. Зарим SMS мессеж хүлээн авах үед хүлээн авсан зурвасын нийт урт нь 200 тэмдэгтээс хэтрэх боломжтой. Энэ нь AtMega чип дээр байгаа бүх SRAM -ийг хурдан ашиглах боломжтой бөгөөд тогтвортой байдалд асуудал үүсгэнэ.

Үүнээс сэргийлэхийн тулд GSM модулаас хүлээн авсан аливаа мессежийн эхний 200 тэмдэгтийг л ашиглах болно. Доорх жишээ нь Counter хувьсагчийн хүлээн авсан тэмдэгтүүдийг тоолох замаар үүнийг хэрхэн яаж хийхийг харуулж байна.

// програм хангамжийн цуваа портоос өгөгдөл хайх

// ----------------------------------------------- RxString = ""; Тоологч = 0; while (SSerial.available ()) {delay (1); // буферт шинэ өгөгдөл оруулах цагийг өгөх богино хугацааны саатал // шинэ тэмдэгт авах RxChar = char (SSerial.read ()); // мөрт эхний 200 тэмдэгтийг нэмнэ үү (Counter <200) {RxString.concat (RxChar); Тоологч = Тоолуур + 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" угтварыг ашигласнаар бараг 300 байтын SRAM чөлөөлөгдсөн.

Тоног төхөөрөмжийн цуваа портыг бүү ашигла

Код дибаг хийсний дараа ALL Serial.print () тушаалуудыг устгаснаар тоног төхөөрөмжийн цуваа порт идэвхгүй болсон. Энэ нь SRAM -ийн нэмэлт хэдэн байтыг чөлөөлсөн.

Кодонд үлдсэн Serial.print () команд байхгүй бол 128 байтын нэмэлт SRAM боломжтой болсон. Үүнийг техник хангамжийн цуваа портыг кодоос хасах замаар хийсэн. Энэ нь 64 байтын дамжуулалт, 64 байтын хүлээн авах буферийг хурдасгадаг.

// Serial.begin (9600); // тоног төхөөрөмжийн цуваа порт идэвхгүй болсон

Мөрүүдэд EEPROM ашиглах

Оролт, гаралт бүрийн хувьд гурван мөрийг хадгалах шаардлагатай байв. Эдгээр нь сувгийн нэр, суваг асаалттай үед мөр, суваг унтарсан үед тэмдэгт мөр болно.

Нийт 8 I/O сувагтай бол тэднийх байх болно

  • Сувгийн нэрийг агуулсан 8 мөр, тус бүр 10 тэмдэгттэй
  • Тайлбар дээр тус бүр 10 тэмдэгтээс бүрдсэн суваг агуулсан 8 мөр
  • Унтраах суваг агуулсан 8 мөр, тус бүр 10 тэмдэгтээс бүрдсэн урт

Энэ нь 240 байт хүртэлх SRAM -ийг зарладаг. Эдгээр мөрүүдийг SRAM -д хадгалахын оронд EEPROM -д хадгалдаг. Энэ нь SRAM -ийн нэмэлт 240 байтыг чөлөөлсөн.

Зөв урттай мөрийг зарлаж байна

Хувьсагчийг ихэвчлэн кодын эхэнд зарладаг. Тэмдэгтийн хувьсагчийг зарлахад гардаг нийтлэг алдаа бол бид тэмдэгтүүдийн зөв тоогоор тэмдэгт мөрийг зарладаггүй явдал юм.

GSM_Nr мөр = "";

GSM_Name мөр = ""; GSM_Msg мөр = "";

Эхлэх үед микро хянагч эдгээр хувьсагчдад зориулж SRAM -д санах ой хуваарилахгүй. Эдгээр мөрүүдийг ашиглах үед энэ нь хожим тогтворгүй байдалд хүргэж болзошгүй юм.

Үүнээс урьдчилан сэргийлэхийн тулд уг мөрийг програм хангамжид ашиглах зөв тооны тэмдэгт бүхий мөрүүдийг зарлана уу.

GSM_Nr мөр = "1000000000";

GSM_Name мөр = "2000000000"; String GSM_Msg = "3000000000";

Би ижил тэмдэгт бүхий мөрүүдийг хэрхэн зарлаагүйг анзаараарай. Хэрэв та эдгээр мөрүүдийг бүгдийг нь "1234567890" гэж зарлавал хөрвүүлэгч нь гурван хувьсагчтай ижил мөрийг харах бөгөөд зөвхөн нэг мөрөнд SRAM -д хангалттай санах ой хуваарилна.

Алхам 10: Програм хангамжийн цуваа буферийн хэмжээ

Програм хангамжийн цуваа буферийн хэмжээ
Програм хангамжийн цуваа буферийн хэмжээ

Дараах кодонд програм хангамжийн цуваа портоос 200 хүртэлх тэмдэгт унших боломжтойг та анзаарах болно.

// програм хангамжийн цуваа портоос өгөгдөл хайх

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

Энэ нь програм хангамжийн цуваа портын хувьд дор хаяж 200 байтын буфер шаарддаг. Анхдагч байдлаар, програм хангамжийн цуваа порт буфер нь ердөө 64 байт юм. Энэ буферийг нэмэгдүүлэхийн тулд дараах файлыг хайна уу.

SoftwareSerial.h

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

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

*Тодорхойлолт ********************************************** ******************************/ #ifndef _SS_MAX_RX_BUFF #define _SS_MAX_RX_BUFF 200 // RX буферийн хэмжээ #endif

Алхам 11: PC -ийн самбар хийх

PC -ийн самбар хийх
PC -ийн самбар хийх

Компьютерийн самбарыг Cadsoft Eagle -ийн үнэгүй хувилбарыг ашиглан бүтээсэн (нэр өөрчлөгдсөн гэж би бодож байна).

  • PC Board бол нэг талт загвар юм.
  • Гадаргуу дээр холбох эд ангиудыг ашигладаггүй.
  • SIM800L модулийг оруулаад бүх бүрэлдэхүүн хэсгүүдийг компьютерийн самбар дээр суулгасан болно.
  • Гадны эд анги, холболт шаардлагагүй
  • Утас холбогчийг илүү цэвэрхэн харагдуулахын тулд эд ангиудын доор нуусан байдаг.

Компьютерийн самбар хийхийн тулд би дараахь аргыг ашигладаг.

  • PC Board-ийн зургийг лазер принтер ашиглан Press-n-Peel дээр хэвлэв.
  • Press-n-Peel-ийг дараа нь цэвэрхэн компьютерийн самбар дээр байрлуулж, соронзон хальсаар бэхлэнэ.
  • PC Board-ийн зургийг дараа нь Press-n-Peel-ээс хоосон PC Board руу шилжүүлж самбарыг ламинатороор дамжуулна. Миний хувьд 10 дамжуулалт хамгийн сайн ажилладаг.
  • PC самбарыг өрөөний температурт хөргөсний дараа Press-n-Peel-ийг самбараас аажмаар дээшлүүлнэ.
  • Дараа нь компьютерийн самбарыг халуун усанд ууссан аммонийн персулфатын талст ашиглан сийлбэрлэнэ.
  • Сийлбэр хийсний дараа цэнхэр Press-n-Peel болон хар тонерыг сийлсэн компьютерийн самбарыг ацетоноор цэвэрлэснээр арилгадаг.
  • Дараа нь самбарыг Dremel ашиглан хэмжээгээр нь огтолно
  • Нүхний бүх эд ангиудын нүхийг 1 мм-ийн өрмийн тусламжтайгаар өрөмддөг.
  • Терминал шураг холбогчийг 1.2 мм өрмийн тусламжтайгаар өрөмддөг.

Алхам 12: PC ТУЗ -ийн угсралт

PC ТУЗ -ийн угсралт
PC ТУЗ -ийн угсралт
PC ТУЗ -ийн угсралт
PC ТУЗ -ийн угсралт
PC ТУЗ -ийн угсралт
PC ТУЗ -ийн угсралт
PC ТУЗ -ийн угсралт
PC ТУЗ -ийн угсралт

Угсрах ажлыг эхлээд хамгийн жижиг бүрэлдэхүүн хэсгүүдийг нэмж, хамгийн том эд ангиуд хүртэл хийж гүйцэтгэдэг.

SIM800 модулийг эс тооцвол энэхүү зааварт заасан бүх бүрэлдэхүүн хэсгүүдийг миний дотоодын нийлүүлэгчдээс авсан болно. Тэд үргэлж хувьцаа эзэмшдэг гэж боддог. Тэдний Өмнөд Африкийн вэбсайтыг үзээрэй.

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

ТАЙЛБАР! ATMEGA328p IC -ийн доор байрлах хоёр холбогчийг эхлээд гагнах

Захиалга дараах байдалтай байна.

  • Резистор ба диод
  • Дахин тохируулах товч
  • IC залгуур
  • Хүчдэл зохицуулагч
  • Толгойн зүү
  • Жижиг конденсаторууд
  • LED
  • Гал хамгаалагч
  • Терминал блокууд
  • Релей
  • Электролитийн конденсаторууд

IC -ийг оруулахын өмнө төхөөрөмжийг 12V -т холбож, бүх хүчдэлийг зөв эсэхийг шалгаарай.

Эцэст нь, тунгалаг лак ашиглан PC -ийн хавтангийн зэс хэсгийг таглаж, гадны нөлөөнөөс хамгаална.

Лак хатсаны дараа IC -ийг оруулна уу, гэхдээ GSM модулийг AtMega програмчлагдах хүртэл үлдээнэ үү.

Алхам 13: AtMega328p програмчлах

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

# # Firmware 3.02 хувилбар руу шинэчлэх # #

Төхөөрөмжийн хүчийг сэргээх үед SMS -ийг MASTER USER руу илгээхийг идэвхжүүлсэн

Би төхөөрөмжийг програмчлахдаа програмчлалын бамбайтай Arduino Uno ашиглаж байна. Arduino Uno програмист хэрхэн ашиглах талаар нэмэлт мэдээлэл авахыг хүсвэл энэхүү зааврыг үзнэ үү.

Arduino UNO нь AtMega328P програмистаар ажилладаг

Програмчлалын толгой хэсэгт нэвтрэхийн тулд GSM модулийг компьютерийн самбараас хасах шаардлагатай. GSM модулийг салгахдаа антенны утсыг гэмтээхгүй байхыг анхаарна уу.

Компьютерийн самбар дээрх програмчлалын толгой ашиглан програмчлагч ба нэгжийн хооронд програмчлалын кабелийг холбоно уу.

Төхөөрөмжийг програмчлахад гадны 12V хүчдэл шаардлагагүй болно. PC -ийн самбарыг програмчлалын кабелиар Arduino -аас тэжээх болно.

Arduino IDE дээр хавсаргасан файлыг нээгээд нэгж рүү програмчилна уу.

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

Одоо уг төхөөрөмжийг ашиглахад бэлэн болсон байна.

Алхам 14: төхөөрөмжийг холбох

Нэгжийг холбож байна
Нэгжийг холбож байна
Нэгжийг холбож байна
Нэгжийг холбож байна
Нэгжийг холбож байна
Нэгжийг холбож байна

Төхөөрөмжийн бүх холболтыг шураг хавчаараар гүйцэтгэдэг.

Нэгжийг эрчим хүчээр хангах

Та бүртгүүлсэн SIM картыг GSM модульд оруулсан эсэх, SIM карт нь SMS мессеж илгээх, хүлээн авах боломжтой эсэхийг шалгаарай.

12V тогтмол гүйдлийн тэжээлийг 12V IN ба 0V -ийн аль ч терминал руу холбоно уу. Цахилгаан ассаны дараа компьютерын самбар дээрх улаан LED асах болно. Нэг минутын дотор GSM модуль гар утасны сүлжээнд холбогдсон байх ёстой. Улаан LED унтрах бөгөөд GSM модуль дээрх улаан LED хурдан анивчих болно.

Энэ үе шатанд хүрсний дараа төхөөрөмжийг тохируулахад бэлэн болно.

Оролтын холболтууд

Тоон оролт нь 12 В хүчдэл дээр ажилладаг. Оролтыг асаахын тулд оролтонд 12V хүчдэл оруулах шаардлагатай. 12V -ийг салгаснаар оролт унтрах болно.

Гаралтын холболтууд

Гаралт бүр нь солих контактаас бүрдэнэ. Холбоо барих хүн бүрийг шаардлагатай бол утсаар холбоно уу.

Алхам 15: Анхны тохиргоо

Анхны тохиргоо
Анхны тохиргоо

Бүх параметрүүдийг үйлдвэрийн өгөгдмөл болгож, SIM картыг хэрэглэгчийн мэдээллийг зөв форматаар хүлээн авахаар тохируулахын тулд нэгжийн анхны тохиргоог хийх ёстой.

Бүх командууд SMS дээр суурилсан тул тохиргоог хийхийн тулд танд өөр утас хэрэгтэй болно.

Эхний тохиргоог хийхийн тулд та төхөөрөмж дээр байх ёстой.

MASTER USER утасны дугаарыг тохируулна уу

Зөвхөн МАСТЕР ХЭРЭГЛЭГЧ уг төхөөрөмжийг тохируулж чаддаг тул эхлээд энэ алхамыг хийх ёстой.

  • Төхөөрөмжийг тэжээлээр хангах ёстой.
  • Дахин тохируулах товчийг дараад компьютерийн самбар дээрх улаан LED унтрахыг хүлээнэ үү.
  • GSM модуль дээрх NET LED хурдан асах болно.
  • Одоо төхөөрөмж анхны тохиргооны тушаалуудыг хүлээн авахад бэлэн боллоо. Үүнийг 10 минутын дотор хийх ёстой.
  • MASTER, тодорхойлолтыг агуулсан SMS мессежийг нэгжийн утасны дугаар руу илгээнэ үү.
  • Хэрэв хүлээн авбал компьютерийн самбар дээрх ногоон LED хоёр удаа анивчих болно.
  • MASTER USER програмыг одоо програмчилсан болно.

Төхөөрөмжийг үйлдвэрийн тохиргоо руу буцаана уу

MASTER USER програмчлагдсаны дараа нэгжийн тохиргоог үйлдвэрийн тохиргоотой хийх ёстой.

  • Нэгжийн утасны дугаар руу зөвхөн CLEARALL гэсэн мессеж илгээнэ үү.
  • Хэрэв хүлээн авбал компьютерийн самбар дээрх ногоон, улаан LED нь секундэд нэг удаа анивчих болно. Төхөөрөмжийг үйлдвэрийн тохиргоогоор сэргээсэн болно.
  • Бүх тохиргоог үйлдвэрийн тохиргоонд буцааж өгсөн.
  • Төхөөрөмжийг дахин ачаалахын тулд Reset товчийг дарж суллана уу.

SIM картыг форматлах

Сүүлийн алхам бол SIM карт дээр хадгалагдсан бүх мэдээллийг устгаж, энэ төхөөрөмжид ашиглахаар тохируулах явдал юм.

  • Дахин тохируулах товчийг дараад компьютерийн самбар дээрх улаан LED унтрахыг хүлээнэ үү.
  • GSM модуль дээрх NET LED хурдан асах болно.
  • Одоо төхөөрөмж анхны тохиргооны тушаалуудыг хүлээн авахад бэлэн боллоо. Үүнийг 10 минутын дотор хийх ёстой.
  • Зөвхөн ERASESIM гэсэн мессежийг нэгжийн утасны дугаар руу илгээнэ үү.
  • Хэрэв хүлээн авбал компьютерийн самбар дээрх ногоон LED модны удаа анивчих болно.

Одоо уг төхөөрөмжийг тохируулсан бөгөөд ашиглахад бэлэн болсон байна.

Алхам 16: SMS тушаалууд

SMS тушаалууд
SMS тушаалууд

Нэгжийн ашигладаг гурван өөр төрлийн команд байдаг. Бүх тушаалыг SMS -ээр илгээдэг бөгөөд бүгд дараах форматтай байна.

ТУШААЛ,,,,,,

  • NORMAL USER командыг эс тооцвол бүх команд том үсгийг томруулдаг.
  • Параметрүүд нь жижиг үсгийг эмзэглэдэггүй.

Эхний тохиргооны командууд

МАСТЕР, нэр

SMS илгээгчийн утасны дугаарыг MASTER USER утасны дугаар болгон ашигладаг. a нэгжийн тайлбарыг энд нэмж болно.

БҮГДИЙГ ЦЭВЭРЛЭ

Төхөөрөмжийг үйлдвэрийн анхны байдалд нь оруулна уу

ЦЭВЭРЛЭХ

SIM картаас бүх өгөгдлийг устгах

ДАХИН тохируулах

Нэгжийг дахин ачаална уу

MASTER USER Төхөөрөмжийг тохируулах командууд

OUTMODE, c, m, t АНХААР! ! ! ХЭРЭГЖҮҮЛСЭН

Тодорхой сувгуудыг PULSED, TIMED эсвэл LATCHING гаралттай байхаар тохируулна уу. t нь TIMED гаралтын минутын үргэлжлэх хугацаа юм

PULSE, cccc

Тодорхой сувгуудыг PULSED гаралт болгон тохируулна уу. Хэрэв тохируулаагүй бол сувгуудыг LATCHING гаралт гэж тохируулна.

PULSETIME, t Импульсийн гаралтын хугацааг секундээр тохируулна (0.. 10 сек)

INPUTON, cccc

Ажиллах ёстой сувгуудыг тохируулж, төлөв нь OFF -аас ON руу шилжих үед SMS мессеж илгээнэ үү

INPUTOFF, cccc

Ашиглах ёстой сувгуудыг тохируулж, төлөвийг ON -аас OFF болгож өөрчлөх үед SMS мессеж илгээнэ үү

INTIME, c, t

Статусын өөрчлөлтийг секундын дотор илрүүлэх оролтын саатлын хугацааг тохируулна

INTEXT, ch, нэр, асаах, унтраах

Текст болон унтраах текст дээр оролтын суваг бүрийн нэрийг тохируулна уу

OUTTEXT, ch, нэр, асаах, унтраах

Текст болон унтраах текст дээр гаралтын суваг бүрийн нэрийг тохируулна уу

Нэмэх, байршил, дугаар, дуудлагын мэдээлэл, SMS гаралт, оролт

Санах ойн 'байршил' хэсэгт хэрэглэгчийг гаралт, оролтын сувгийг оноосон SIM картанд оруулах

Дэл, байршил

SIM картын санах ойн 'байршлаас' хэрэглэгчийг устгах

Сувгийн нэр

ChannelName нэртэй импульсийн гаралт

ChannelName, onText эсвэл ChannelName, offText

ChannelName, onText/offText нэртэй гаралтыг асаах/унтраах болно

Төхөөрөмжийг хянах ердийн хэрэглэгчийн командууд

???? I/O -ийн статусыг шинэчлэх хүсэлт гаргах. Статусын SMS гаргагч руу илгээх болно.

Сувгийн нэр

ChannelName нэртэй импульсийн гаралт

ChannelName, onText

ChannelName -ийн нэрээр гаралтыг асааж, текстийн статусын текстийг асаах болно

ChannelName, offText нь ChannelName нэр болон статусын текстийг унтраах болно

Командын дэлгэрэнгүй тайлбарыг хавсаргасан PDF баримтаас үзнэ үү.

Зөвлөмж болгож буй: