SIM900A GSM moduli. Dasturiy ta'minot va undan foydalanish. GSM SIM900A-ni Arduino-ga ulash

Quyida tasvirlangan SIM900-dan foydalanish tajribasi modul bilan biroz ishlaganlarga ko'proq foydali bo'ladi. Ushbu mikrosxemani endi o'rganishni boshlagan va undan Internet orqali ma'lumot almashish uchun foydalanishni rejalashtirgan o'quvchilar uchun biz ushbu mavzu bo'yicha bir qator darslarni tayyorladik. Bu yerda.

Shunday qilib, SIM900 - bu SIM buyrug'idan AT buyruqlari bilan boshqariladigan, SMS yuborish, qo'ng'iroq qilish, to'g'ridan-to'g'ri CSD ulanishini tashkil qilish va GPRS orqali ma'lumot almashish imkoniyatiga ega bo'lgan GSM moduli.

Mening qo'limda Xitoydan buyurtma qilingan Arduino platformasiga mos keladigan SIM900 GPRS qalqoni bor edi.

Kengashda SIM900 chipining o'zi, mikrofon va minigarnituralar uchun ulagichlar, quvvat manbai tugmasi (tashqi ulagichdan yoki Arduino-dan), antenna, ish rejimlarini ko'rsatish uchun bir nechta LED, akkumulyator ulagichi (agar sizga real vaqtda soat kerak bo'lsa), yoqish / o'chirish tugmasi mavjud. Yaxshi tavsif Men ishlab chiqaruvchini vikidan topdim ... Shuningdek, turli xil rejimlarda modemni boshqarish uchun kod mavjud.

Ishlab chiqaruvchiga ko'ra, taxta Arduino Uno bilan to'liq mos keladi. Haqiqatan ham, SIM900 kartasi oddiygina Uno-ga ulanadi va darhol ishlay boshlaydi. Biroq, ma'lum bo'lishicha, Arduino Uno ba'zi funktsiyalarni amalga oshirish uchun "zaif" bo'lib chiqishi mumkin, ammo men bu haqda quyida gaplashaman.

Arduino Mega kengashi ba'zi cheklovlarga ega. Buning sababi shundaki, Mega, Unodan farqli o'laroq, 7 va 8 pinlari dasturiy ta'minot seriyali (USART dasturiy ta'minot) sifatida foydalanish uchun mavjud emas. Bu USART interfeysini 0 va 1 oyoqlariga almashtirish orqali hal qilinadi; buning uchun SIM900 kartasida o'tish moslamalari mavjud.

Umuman olganda, kartani USART interfeysi bilan har qanday tekshirgichga ulash mumkin. Masalan, men modemni STM32F4 tekshiruvi yordamida boshqarishga harakat qildim.

SIM900: SMS va qo'ng'iroqlar

SMS-xabarlar va qo'ng'iroqlarni almashish uchun modul sinovlari "portlash bilan" bo'ldi! Modul ushbu vazifalarni muammosiz hal qildi, buning uchun men faqat c nusxasini ko'chirdim o'sha sayt, ushbu kodni Arduino Uno-ga kompilyatsiya qildi va ko'rsatdi:

// Serial Relay - Arduino kompyuter bilan GPRS Shield o'rtasida // ketma-ket bog'lanishni o'rnatadi // 19200 bps tezlikda 8-N-1 // Kompyuter UART uskunasiga ulangan // GPRS Shield dasturiy ta'minotga ulangan UART #include SoftwareSerial GPRS (7, 8); imzosiz char buferi; // ketma-ket port orqali ma'lumotlarni olish uchun buferlar qatori int count \u003d 0; // bufer qatorini bekor qilish uchun hisoblagich () (GPRS.begin (19200); // GPRS bod tezligi Serial.begin (19200); // Arduino bod tezligining ketma-ket porti.) void loop () (agar (GPRS) .available ()) // agar sana dasturiy ta'minot portidan \u003d\u003d\u003e ma'lumotlar gprs shield-dan kelayotgan bo'lsa ((GPRS.available ()) // ma'lumotni char qatoriga o'qish (buffer \u003d GPRS.read (); // ma'lumotlar qatoriga yozish, agar (count \u003d\u003d 64) break;) Serial.write (buffer, count); // agar ma'lumotlar uzatish tugamasa, buferni apparat portiga yozing clearBufferArray (); // saqlanadigan joyni tozalash uchun clearBufferArray funktsiyasini chaqiring. massivdan olingan ma'lumotlar \u003d 0; // while loopni hisoblagichini nolga qo'ying), agar (Serial.available ()) // agar ma'lumotlar qattiq portda mavjud bo'lsa \u003d\u003d\u003e ma'lumotlar kompyuter yoki noutbukdan GPRS.write (Serial .read ()); // uni GPRS ekraniga yozing) void clearBufferArray () // funktsiyasi buferli qatorni tozalash uchun (for (int i \u003d 0; i

Buyruqlarni modulga yuborish uchun u kompyuterga ulangan bo'lishi kerak. Buni Arduino USB porti yordamida amalga oshirish mumkin. Buning uchun kompyuterda har qanday MAQOMOTI portining monitoriga ehtiyoj bor. Uni yuklab olish mumkin bu erdanyoki siz Arduino IDE-ga o'rnatilgan monitordan foydalanishingiz mumkin.

Yoritilgan Arduino dasturi faqat foydalanuvchi buyruqlarini "tutib" ularni modulga yuboradi va keyin SIM900 javoblarini foydalanuvchiga qaytaradi. Shunday qilib, AT buyruqlarini modulga qo'lda rejimida uzatish, men SMS xabarlarni qabul qilish va uzatishni sinovdan o'tkazdim va mikrofon va minigarniturani mos keladigan ulagichlarga ulab, SIM900 modulidan mobil telefon sifatida foydalandim.

SIM900 yordamida GPRS ma'lumot uzatish

Men SIM900 ni boshqarish uchun Arduino UNO platformasidan foydalangan holda GPRS orqali ma'lumotlarni uzatish bo'yicha birinchi tajribalarimni boshladim (u qo'lida bo'lgani uchun). Dastlab, men Apatche uchun server bilan xosting sotib oldim va GET so'rovlariga mohirona javob beradigan oddiy dasturni joylashtirdim. Bo'ldi! Men hali ham kompyuterdan Arduino boshqaruvchisiga buyruqlar yubordim, bu esa o'z navbatida ularni SIM900-ga yubordi.

GET so'rovlari etarlicha qisqa (100 belgigacha) bo'lgan taqdirda hammasi to'g'ri ishladi. Ammo so'rovlar uzayishi bilanoq, muvaffaqiyatsizliklar boshlandi: so'rovlar to'liq uzatilmadi. Arduino boshqaruv dasturini bir necha qatorga ko'paytirganda / kamaytirganda ham nosozliklar paydo bo'lishi yoki yo'qolishi mumkinligi aniqlandi. Keyinchalik, muvaffaqiyatsizliklar Arduino UNO SIM900 bilan aloqa qilish uchun foydalanadigan USART dasturiy ta'minoti bilan bog'liq bo'lib chiqdi, chunki bunday USART butunlay kontroller yadrosi aylanishiga bog'liq. Ma'lumotlarning oz miqdori bilan ular doimo uzatish uchun vaqt topadilar va ularning miqdori oshishi bilan translyatsiya natijasi dastur tsiklining davomiyligiga bog'liq.

Yuqorida aytilganlarning barchasidan xulosa: SIM900 bilan aloqa o'rnatishda USART dasturidan foydalanishga yo'l qo'yilmaydi, ayniqsa ko'p miqdordagi uzatiladigan ma'lumotlar haqida.

Arduino Uno-da faqat bitta "temir" USART interfeysi mavjud, u kompyuter bilan almashish uchun ishlatilgan, shuning uchun men uni "temir" USART-larning etishmasligidan aziyat chekmaydigan Arduino Mega-ga almashtirish bilan UNO dan voz kechishga majbur bo'ldim. Bunday "quyma" dan so'ng qurilmaning ishlashi barqaror va to'g'ri bo'ldi.

SIM900: TCP-IP to'plami yoki HTTP? Nima yaxshi?

Modemni boshqarish bo'yicha qo'llanmani o'rganayotib, AT buyruqlarining ikki guruhi borligini aniqladim. Birinchi guruh o'rnatilgan TCP-IP to'plami orqali ma'lumotlarni uzatish uchun ishlatiladi, ikkinchisi esa SIM900 ichki mantig'i tomonidan amalga oshirilgan HTTP protokolidan foydalanadi. Ushbu usullar o'rtasidagi farq nimada, ularning har birining ijobiy va salbiy tomonlari nimada ekanligini bilishga urinib ko'rgan Google va Yandeksni qancha qiynamasam ham, hech narsa topolmadim, shuning uchun ikkalasini ham sinab ko'rdim va shu erda amaliy tajribam bilan o'rtoqlashdim.

Ikkala usul ham ishlaydi va mavjud bo'lish huquqiga ega.

TCP-IP stekini ishga tushirish biroz qiyinroq (modulga ko'proq buyruqlar yuborilishi kerak) va boshqarish biroz qiyinroq. So'rov yuborish uchun siz ulanishni ochishingiz, javobni kutishingiz va uni to'g'ri yopishingiz kerak.

HTTP, oddiy so'zlar bilan aytganda, SIM900-ga o'rnatilgan brauzer. Boshlash oson, server bilan almashinuvni boshlash uchun siz seans ochishingiz kerak. Shu bilan birga, har bir so'rov bo'yicha ulanishni ochish va yopish va boshqa "tashkiliy vazifalarni" hal qilish SIM900 yelkasiga tushadi. Bu juda qulay, bundan tashqari, shu bilan ma'lumotlarni uzatish biroz tezroq bo'ladi, chunki SIM900 barcha "yordamchi operatsiyalarni" boshqarish pultidan ko'ra tezroq bajarishi mumkin.

Shunday qilib, almashinuv usulini tanlashda men hali ham HTTP protokoliga qaror qildim.

Serverga noto'g'ri GET so'rovi

GPRS orqali ma'lumotlarni uzatish bo'yicha ishim boshida men xato qildim, bu menga bir kundan ortiq azob berishga olib keldi. GET so'rovlari orqali server bilan o'zaro aloqada bo'lish tajribasi etarli bo'lmaganligi sababli, men Internetda yuzaki bilimlarga ega bo'lib, quyidagi shaklda so'rov o'tkazdim:

Http://xxx.ru/d_command.php?UC\u003d1111 HTTP / 1.1 ni oling
XOST: xxx.ru

Ushbu so'rov to'g'ri emas, lekin uni disk raskadrovka uchun so'rov yuborgan brauzer va proksi-server tomonidan juda yaxshi tanib olindi - shuning uchun men so'rovni to'g'ri deb hisobladim.

Eng ajablanarli tomoni shundaki, SIM900 ham "yomon" so'rovni yaxshi uddaladi (va men TCP-IP stek orqali so'rovlar yubordim). Ammo yaxshi kunlardan birida server bunday so'rovlarga 404 xato bilan javob berishni boshladi.Bu noaniq holatlar tufayli yuz berdi, yoki xosting provayderi so'rovni qayta ishlash algoritmlarini o'zgartirdi (u buni rad etadi) yoki uyali aloqa operatori buni amalga oshirdi. Ammo haqiqat qolmoqda. Keyin men xuddi shu so'rovni HTTP orqali yuborishga harakat qildim - barchasi ishladi. Bu SIM900 modulining ichki HTTP protokoli (men aytganimdek, aslida o'rnatilgan brauzer) noto'g'ri so'rovlarni to'g'ri tahlil qilish va uni tarmoqqa to'g'ri shaklda tarqatish imkoniyatiga ega ekanligi bilan izohlanadi. Bu HTTP-dan foydalanishning yana bir ortiqcha (shubhali), chunki bu dasturchiga ba'zi noaniqliklarga yo'l qo'yadi. Umuman olganda, albatta, so'rov to'g'ri yozilgan bo'lishi kerak va quyidagicha bo'lishi kerak:

/D_command.php?UC\u003d1111 HTTP / 1.1 ni oling
XOST: xxx.ru

Bunday to'g'ri so'rov bilan SIM900 TCP-IP to'plami va HTTP orqali muvaffaqiyatli aloqa o'rnatadi.

SIM900 muzlaydi

Ba'zan, GPRS orqali almashinishda vaziyatlar yuzaga keladi, undan keyin modul muzlatib qo'yishi mumkin. Buning sababi, tarmoq orqali kelgan noto'g'ri ma'lumotlar va SIM900-ni hayajonga solib qo'yganligi yoki SIM900 "kutganidek emas" qabul qilgan modul va boshqaruv moslamalarini almashtirish liniyalaridagi aralashuvlar yoki boshqa noma'lum muammolar bo'lishi mumkin. Chip ishlab chiqaruvchisi bu sodir bo'lishi mumkinligini ogohlantiradi va bunday holatlarda PWRKEY kirishida qo'llaniladigan impulslarning maxsus ketma-ketligi yordamida modulni qayta ishga tushirishni taklif qiladi.

Biroq, ma'lum bo'lishicha, bu har doim ham yordam bera olmaydi - bunday qayta ishga tushirilgandan so'ng, modul hali ham "buggy" "uyg'onishi" mumkin. Va agar siz modul uchun DataSheet-ni diqqat bilan o'qib chiqsangiz, ishlab chiqaruvchi bu haqda bizni ham ogohlantiradi. Hujjatlar quyidagilarni tavsiya qiladi:

Izoh: SIM900 AT buyrug'i "AT + CPOWD \u003d 1" va PWRKEY piniga javob bera olmasa, tashqi reset pinidan foydalanish o'rniga to'g'ridan-to'g'ri VBAT quvvat manbaini o'chirib qo'yish tavsiya etiladi.

Shuning uchun modulni qayta ishga tushirishning eng to'g'ri usuli bu (VBAT oyog'idan) quvvatni butunlay chiqarib tashlash, pauzani ushlab turish (hech bo'lmaganda bir soniya bo'lsa ham) va quvvatni qayta ishlatishdir. Modulni taxtada qayta yoqish uchun boshqaruvchi tomonidan boshqariladigan o'rni yoki tranzistorli kalitni berish yaxshiroqdir.

Xulosa

Kelajakda men bir qator o'quv maqolalarini chiqarishni rejalashtirmoqdaman, unda sizga provayderdan xosting sotib olishdan va yozishni boshqarish dasturi kodidan boshlab, server veb-ilovasi va SIM900 o'rtasida almashinuvni qanday tashkil qilish kerakligini aytib o'taman.

Xayr! Yangilanishlarni kuzatib boring LAZY SMART .

Va nihoyat, men DIY muhitidagi eng mashhur GSM modulini o'rganishni boshladim - GSM900. GSM moduli nima? Bu uyali telefonning funktsiyalarini amalga oshiradigan qurilma. Boshqacha qilib aytganda, GSM900 sizga boshqa uyali aloqa abonentlariga qo'ng'iroq qilish, qo'ng'iroqlarni qabul qilish, SMS-xabarlarni yuborish va qabul qilish imkoniyatini beradi. Va, albatta, GPRS protokoli yordamida ma'lumotlarni uzatish.

Menga ushbu modul juda aniq maqsad uchun kerak edi: masofadan boshqariladigan yoritish tizimi uchun loyiha paydo bo'ldi. Ushbu muammoni hal qilishning eng oson usuli - SMS-xabarlar: bitta sms yuborildi - chiroq yondi, boshqasi yuborildi - o'chirildi. Masofadan boshqarish pultlari kerak emas, ammo barchada telefon mavjud (hatto uysizlar ham). Aslida, ushbu maqolada men GSM900 modulidan foydalanish uchun ushbu variantni ko'rib chiqaman.

1. Dasturiy ta'minot

Taqdir taqozosi bilan mening qo'limda GSM900A moduli bor edi. Ushbu narsaning tiklanishi haqida birinchi bo'lib kelgan forumni o'qib chiqib, ushbu nomdagi A harfi modul Osiyo mintaqasiga tegishli ekanligini anglatadi. Shuning uchun u bizning operatorlarimiz bilan ishlamaydi. Umidsizlik 🙁

Yaxshiyamki, o'sha forumdagi quyidagi xabarlarda tinchlantiruvchi ma'lumotlar mavjud edi :) Ma'lum bo'lishicha, hammasi ham yomon emas va modul bizning mintaqamizda ishlashi uchun uni yangilash kerak. Ushbu jarayon bizning hamkasbimiz Alex-EXE-ning blogida yaxshi tasvirlangan: "barchasi bir xil" proshivka sim900
Men ham xuddi shunday qilishga harakat qilaman, lekin undan ham batafsilroq va modulimning o'ziga xos xususiyatlarini inobatga olgan holda.

Agar sizda to'g'ri modul bo'lsa va dasturiy ta'minot talab qilinmasa, darhol №2 bo'limiga o'tishingiz mumkin.

Asboblar

Shunday qilib, avval barcha kerakli vositalarni tayyorlaylik. Birinchidan, Internetda osongina topish mumkin bo'lgan SIM900 Series Tools Develop dasturini yuklab olish to'g'ridan-to'g'ri proshivka uchun talab qilinadi.

Ikkinchidan, 1137B02SIM900M64_ST_ENHANCE dasturiy ta'minotining o'zi ham foydalidir, bu ham osonlikcha chiqarib olinadi ().

Va nihoyat, uchinchidan, bizga modul bilan tajriba o'tkazish uchun yaxshi terminal kerak bo'ladi. Men odatda TeraTerm-dan foydalanaman, lekin bu safar uning imkoniyatlari kam edi (yoki men buni tushunmadim). Men aqlli ism bilan monster o'rnatishim kerak edi.

USB-UART ko'prigiga ulanish

Endi biz RX va TX liniyalarini ko'prikka ulaymiz. Ikkinchisi uchun men CP2102 dan foydalanganman. Mening vaziyatimda, mantiqdan farqli o'laroq, ko'prikning RX va TX GSM modulining RX va TXlariga nosimmetrik tarzda bog'langan (va odatdagidek ko'ndalang emas).

Shuningdek, siz modulni barqaror va kuchli manbadan quvvatlantirishingiz kerak, chunki moduldagi eng yuqori oqim 2A ga yetishi mumkin (go'yo). 4 x AA batareyasi ishlaydi. To'liq ulanish diagrammasi quyidagicha:

SIM900
CP2102 Gnd Gnd
CP2102 + 5V VCC_MCU
CP2102 RX SIMR
CP2102 TX SIMT
Tashqi manba + 5V VCC5
Tashqi Gnd manbai Gnd
RST

Ushbu modelda asl holatini tiklash tugmasi mavjud emas, shuning uchun dasturiy ta'minot uchun biz RST pinini erga bir necha soniya davomida tashlab qo'yishimiz kerak. Buning uchun uni hozircha osmonda osib qo'yamiz.

Modulni oldindan sozlash

Qurilma dasturidan oldin biz modulga ulanamiz va uning UART tezligini o'zgartiramiz. Buning uchun Terminalni ishga tushiring, to'g'ri portni tanlang va bod tezligini o'rnating - 9600. Shundan so'ng "Ulanish" tugmachasini bosing.

Modul bilan barcha aloqa AT buyruqlari orqali amalga oshiriladi.

Modulga aytadigan birinchi narsa eng ibtidoiy AT buyrug'i bo'ladi: "AT". Bu modul "OK" so'zi bilan javob berishi kerak bo'lgan pingning bir turi.

Agar hamma narsa yaxshi bo'lsa va modul haqiqatan ham bizga "OK" deb javob bergan bo'lsa, biz tezlikni o'rnatish uchun buyruq yuboramiz:

AT + IPR \u003d 115200

Buyruqning oxirida xizmat aravachasi qaytishi kerak - CR. ASCII jadvalida u 13 kodiga ega (yoki o'n oltinchi raqamda 0x0D). Agar siz "+ CR" katakchasini terminalimizdagi kirish chizig'i qarshisiga qo'ysangiz, belgi avtomatik ravishda almashtiriladi. Boshqa terminallar ham shunga o'xshash sozlamalarga ega.

Kiritilgan buyruqqa javoban biz yana olamiz - "OK".

Firmware protsedurasini tezlashtirish uchun bizga ushbu parametr kerak. Aks holda, Alex-EXE o'z blogida ta'kidlaganidek, dasturiy ta'minot taxminan bir soat davom etadi.

Dastur sozlamalari

Barcha simlar kerakli joylarda tiqilib, modul proshivka uchun tayyorlangandan so'ng, SIM900 Series download Tools Develop dasturini ishga tushiring. Dasturni sozlash faqat bir nechta punktlardan iborat:

  • maqsad maydonida maqsadli chipni ko'rsating. Negadir men proshivkani SIM900A-ga yuklay olmadim, shuning uchun "SIM900" ni tanladim;
  • port maydonida to'g'ri portni tanlang;
  • Bod tezligini 115200 ga o'rnating;
  • nihoyat, biz Core File maydonida proshivka faylini ko'rsatamiz (cla kengaytmasi bo'lgan fayl).

Hamma narsani sozlash bilan.

Dasturiy ta'minot

Endi biz oltita muhim qadamni qat'iy va doimiy ravishda amalga oshirmoqdamiz.

  • Biz quvvatni modulga ulaymiz (bizning 4 ta batareyamiz). Qizil quvvat chiroqchasi yonib, holat lampasi miltillay boshlashi kerak.
  • Biz USB-UART-ni kompyuterga ulaymiz.
  • Biz RST simini erga qisqartiramiz (bu vaqt davomida u havoda osilganligini eslang).
  • Dasturda Yuklashni boshlash tugmasini bosing.
  • Aqliy ravishda uchgacha hisoblang va RSTni erdan ko'taring.

Qurilma tugagandan 6 daqiqa oldin kutamiz.

Firmware-dan keyin bizda nima bor

Birinchidan, modul endi operatorlarimiz bilan ishlashi mumkin. Ikkinchidan, biz kengaytirilgan proshivka o'rnatdik, masalan, uyali minoralardan modul koordinatalarini olish, elektron pochta bilan ishlash va qo'shimcha 2,5 MB xotiraga kirish.

2. GSM moduli bilan tajribalar

Endi modul bilan har xil foydali amallarni bajarishga harakat qilaylik. Birinchidan, PIN-kodni kiriting (agar mavjud bo'lsa):

AT + CPIN \u003d 8899

Modulning javobi:

CPIN: tayyor.

Shundan so'ng biz moduldan ba'zi ma'lumotlarni olamiz.

AT + GMR - proshivka identifikatori. AT + GSN - IMEI. AT + CPAS - holat (0 - ishlashga tayyor, 2 - noma'lum, 3 - kiruvchi qo'ng'iroq, 4 - ovozli ulanish). AT + COPS? - operator haqida ma'lumot.

Telefon qo'ng'iroqlari

Endi biz bir nechta raqamni teramiz. Bu buyruq yordamida amalga oshiriladi:

ATD + 790XXXXXXXX;

Buyruqning oxiridagi vergul juda muhim, bu haqda unutmang!

Agar UART sessiyasi paytida kimdir qurilmaga qo'ng'iroq qilsa, xabar qaytariladi:

Qo'ng'iroqqa quyidagi buyruq bilan javob berishingiz mumkin (telefonni ko'taring).

Agar modulga minigarnituralar va mikrofon ulangan bo'lsa, u holda siz odatdagi uyali telefonda bo'lgani kabi uzoqdan joylashgan abonent bilan ham bog'lanishingiz mumkin.

Buyruq qo'ng'iroqni tugatadi:

SMS yuborish

Birinchidan, xabarlarning matn rejimini yoqamiz:

AT + CMGF \u003d 1

va kodlashni o'rnating:

AT + CSCS \u003d "GSM"

Modul, shuningdek, avtomatlashtirilgan tizimlar uchun qulay bo'lgan boshqa kodlashni qo'llab-quvvatlaydi. Ammo tajribalar uchun telefon raqamlarda ko'rsatilgan va xabarlar matni ASCII kodlashda yozilgan GSM rejimidan foydalanish biz uchun eng qulaydir. Endi kimgadir xabar yuboramiz:

AT + CMGS \u003d "+ 79123456789"

Va buyruq oxirida bir vaqtning o'zida ikkita xizmat belgilarini qo'shishingiz kerak: CR va LF. Terminalda buni CR \u003d CR + LF belgisini belgilash yoki satr oxiriga qo'lda qo'shish orqali amalga oshirish mumkin: AT + CMGS \u003d "+ 79123456789 ″ & 0D & 0A

Ushbu buyruqni kiritgandan so'ng, javob "\u003e" belgisi bo'ladi, bu xabarning boshlanishini anglatadi. Biz bir nechta matn yozamiz:

Salom Dunyo!

Xabar oxirida biz ikkitadan birini yuborishimiz kerak bo'ladi maxsus belgilar... Xabar yuborish uchun ASCII jadvalidan 26 raqamli belgini kiriting. Yuborishni bekor qilish uchun 27 raqamli belgini kiriting.

Belgini kod orqali yuborish uchun biz foydalanadigan terminalda siz ikkita iboradan birini ishlatishingiz mumkin: o'n oltinchi formatda: $ 1A va o'nli kasrda: # 026

SMS qabul qilish

Agar sessiya davomida qurilmaga SMS kelib tushsa, quyidagi formatdagi xabar qaytariladi:

CMTI: "SM", 4

bu erda 4 kiruvchi o'qilmagan xabarning soni.

AT + CMGR \u003d 4

Bunga javoban biz quyidagilarni olamiz:

CMGR: "REC READ", "+ 790XXXXXXXX", "", "13.09.21, 11: 57: 46 + 24" Salom Dunyo! OK

Umuman olganda, hamma narsa oddiy. Bu bizning rejalarimizni amalga oshirishimiz uchun etarli. GFM900 imkoniyatlarini chuqurroq o'rganish uchun men boshqa maqolani o'qishni maslahat beraman Alex-EXE: buyruqlar gsm modem sim900

3. Mikrokontroller bilan o'zaro ta'sir

Odatda, boshqarish tashqi qurilmalar GSM900 modulini boshqa mikrokontroller bilan ulash shart emas. Siz o'zingizning dasturingizni ushbu modulga qo'shishingiz mumkin, bu esa bepul GPIO pinlari yordamida xohlaganingizni qiladi. Biroq, aksariyat tayyor taxtalarda GPIO simlari ulanmagan, shuning uchun mo'ljallangan qurilmaning prototipini yaratish uchun biz oddiy arduino Uno / Nano.

Arduino va GSM900 bir xil UART interfeysi orqali aloqa o'rnatadilar. Buning uchun quyidagi ikkita qurilmani quyidagicha ulaymiz:

GSM900 GND VCC_MCU SIMT SIMR
Arduino Uno GND + 5V RX TX

Endi biz SMS-xabarlarni qabul qiladigan va bir necha soniya davomida # 13-oyoqdagi LEDni yoqadigan dastur tuzamiz. Biz qandaydir tashqi qurilmani boshqarishni taqlid qilamiz.

Const String spin \u003d "1234"; const int rel_pin \u003d 13; String ss \u003d ""; // SendPin () pin kodini yuborish (String cmd \u003d "AT + CPIN \u003d" + spin + char (0x0D); Serial.print (cmd);) // LEDni 2 soniya davomida yoqish qabul qilinmagan qabul qilish SMS (String s)) digitalWrite (rel_pin, HIGH); kechikish (2000); digitalWrite (rel_pin, LOW);) // moduldan kelgan qatorni ajratib ko'ring void parseString (String src) (bool collect \u003d false; String s \u003d ""; for (bayt i \u003d 0; i

Biz dasturni Arduino-ga yuklaymiz va tizimni sinovdan o'tkazamiz. Agar hamma narsa to'g'ri bajarilgan bo'lsa, qurilmaga SMS xabar yuborish LEDni 2 soniya davomida yoqadi. Albatta, LED o'rniga siz qishloq uyidagi isitish qozoni ulangan kuchli o'rni yoqishingiz / o'chirishingiz mumkin.

Arduino loyihalaridagi GSM va GPRS moduli odatdagi uyali aloqa orqali uzoq avtonom qurilmalarga ulanish imkonini beradi. Biz buyruqlarni qurilmalarga yuborishimiz va ulardan SMS buyruqlar yordamida yoki GPRS orqali ochiq Internet aloqasi orqali ma'lumot olishimiz mumkin. Ushbu maqolada biz Arduino uchun eng mashhur modullarni ko'rib chiqamiz, ulanishni aniqlaymiz va dasturlash misollarini ko'rib chiqamiz.

GSM GPRS modullari

GSM moduli odatdagi Arduino platalarining imkoniyatlarini kengaytirish uchun ishlatiladi - SMS yuborish, qo'ng'iroq qilish, GPRS orqali ma'lumot almashish. Har xil turdagi modullar mavjud, eng ko'p ishlatiladigan SIM900, SIM800L, A6, A7.

SIM900 modulining tavsifi

SIM900 moduli turli xil avtomatlashtirilgan tizimlarda qo'llaniladi. UART interfeysi boshqa qurilmalar bilan ma'lumot almashish uchun ishlatiladi. Modul qo'ng'iroq qilish, matnli xabarlar almashish imkoniyatini beradi. Modulning ishi SIMCom Wireless Solution tomonidan yaratilgan SIM900 komponentida chiqariladi.

Texnik xususiyatlari:

  • 4.8-5.2V kuchlanish oralig'i;
  • Oddiy rejimda oqim 450 mA ga etadi, impuls rejimida maksimal oqim 2 A ga teng;
  • 2G qo'llab-quvvatlash;
  • Etkazish quvvati: 1 Vt 1800 va 1900 MGts, 2 Vt 850 va 900 MGts;
  • Ichki TCP va UDP protokollari mavjud;
  • GPRS ko'p uyali sinf 10/8;
  • Ishlash harorati -30C dan 75C gacha.

Qurilmadan foydalanib siz transport yo'nalishini GLONASS yoki GPS qurilmasi bilan kuzatib borishingiz mumkin. SMS-xabarlarni yuborish qobiliyati simsiz signalizatsiya va turli xil xavfsizlik tizimlarida qo'llaniladi.

SIM800L modulining tavsifi

Modul SIM800L komponentiga asoslangan bo'lib, SMS yuborish, qo'ng'iroq qilish va GPRS orqali ma'lumot almashish uchun ishlatiladi. Modulda micro SIM-karta o'rnatilgan. Qurilmada o'rnatilgan antenna va tashqi antennani ulashingiz mumkin bo'lgan ulagich mavjud. Modulga quvvat tashqi manbadan yoki DC-DC konvertori orqali beriladi. Boshqarish kompyuter yordamida UART, Arduino, Raspberry Pi yoki shunga o'xshash qurilmalar orqali amalga oshiriladi.

Texnik xususiyatlari:

  • Kuchlanish diapazoni 3.7V - 4.2V;
  • 900/1800/1900 MGts 4-tarmoqli tarmoqni qo'llab-quvvatlash;
  • GPRS klassi 12 (85,6 kB / s);
  • Maksimal oqim 500mA;
  • 2G qo'llab-quvvatlash;
  • To'rt chastota diapazonida avtomatik qidirish;
  • Ishlash harorati -30C dan 75C gacha.

A6 modulining tavsifi

A6 moduli AI-THINKER tomonidan 2016 yilda ishlab chiqilgan. Qurilma SMS-xabarlarni almashish va GPRS orqali ma'lumot almashish uchun ishlatiladi. Kengash kam quvvat sarfi va kichik o'lchamlari bilan ajralib turadi. Qurilma Rossiya uyali aloqa operatorlari bilan to'liq mos keladi.

Texnik xususiyatlari:

  • Kuchlanish diapazoni 4,5 - 5,5V;
  • 5V quvvat manbai;
  • Ishlash harorati oralig'i -30C dan 80C gacha;
  • Maksimal oqim sarfi 900mA;
  • GPRS 10-sinf;
  • PPP, TCP, UDP, MUX protokollarini qo'llab-quvvatlaydi.

Modul mikrosim kartalarini qo'llab-quvvatlaydi.

A7 modulining tavsifi

A7 AI-THINKER-ning so'nggi moduli. O'zining oldingisiga nisbatan A6 qurilmaning dizaynini soddalashtirish uchun ichki GPS-ga ega.

Texnik xususiyatlari:

  • Ishlash kuchlanish diapazoni 3.3V-4.6V;
  • Besleme quvvati 5V;
  • 850/900/1800/1900 MGts chastotalari;
  • GPRS 10-sinf: Maks. 85,6 kbit / s;
  • Echo va shovqinni bostirish.

Qurilma micro SIM-kartalarni qo'llab-quvvatlaydi. Ushbu modul qo'ng'iroqlarni almashtirish, SMS xabarlarni yuborish, GPRS ma'lumotlarni uzatish, GPS signallarini qabul qilishni qo'llab-quvvatlaydi.

Arduino uchun GSM modullarini qaerdan sotib olish mumkin

An'anaga ko'ra, boshlashdan oldin, bir nechta maslahatlar va Aliexpress sotuvchilariga foydali havolalar.

Juda sifatli KEYES SIM900 GSM GPRS moduli Ishonchli etkazib beruvchidan arduino uchun SIM800C moduli
SIM900 GPRS / GSM moduliga asoslangan Arduino-ga mos keladigan ishlab chiqarish qalqoni Arzon mini A6 GPRS GSM moduli

GSM GPRS qalqonini Arduino-ga ulash

Ushbu bo'limda biz GSM modullarini aduino platasiga ulash masalalarini ko'rib chiqamiz. Deyarli barcha misollar Arduino Uno-ga asoslangan, ammo misollarning aksariyati Mega, Nano va boshqalarga to'g'ri keladi.

SIM800 modulini ulash

Ulanish uchun sizga Arduino taxtasi, SIM800L moduli, pastga tushadigan kuchlanish konvertori, ulanish uchun simlar va 12V kuchlanishli akkumulyator kerak. SIM800L moduli Arduino uchun nostandart bo'lgan 3,7V kuchlanishni talab qiladi, buning uchun siz pastga tushadigan kuchlanish konvertoriga ehtiyoj sezasiz.

SIM800 modulining ulanishi rasmda ko'rsatilgan.

Arduino platasi kompyuterga USB kabeli orqali ulangan bo'lishi kerak. 12 V batareyani konvertor orqali ulang: -12 V Arduino eriga, erdan konvertorga salbiygacha, + 12V konvertorga ijobiygacha. TX va RX modulidan chiqadigan chiqindilar Arduino ustidagi 2 va 3 pinlariga ulangan bo'lishi kerak. Bir nechta modullarni har qanday raqamli pinlarga ulash mumkin.

A6 modulini ulash

A6 moduli SIM900 ga qaraganda arzonroq va Arduino-ga ulanish juda oson. Modul 5V quvvatga ega, shuning uchun ulanish uchun qo'shimcha kuchlanishni kamaytiruvchi elementlar talab qilinmaydi.

Ulanish uchun sizga Arduino taxtasi kerak bo'ladi (bu holda, Arduino UNO ko'rib chiqiladi), GSM moduli A6, ulanish simlari. Ulanish diagrammasi rasmda ko'rsatilgan.

GSM modulidan RX pimi Arduino platasidagi TX ga, TX pimi Arduino ustidagi RX piniga ulangan bo'lishi kerak. Moduldan erga ulanish mikrokontrolderga ulangan. GSM modulidagi Vcc pimi PWR_KEY ga ulangan bo'lishi kerak.

GSM-GPRS qalqoni orqali ulanish

Ulanishdan oldin qalqon kuchlanishiga e'tibor berish muhimdir. Qo'ng'iroq paytida yoki ma'lumotni yuborishda oqim 15-2 A qiymatiga yetishi mumkin, shuning uchun siz qalqonni to'g'ridan-to'g'ri Arduino-dan quvvatlamasligingiz kerak.

Arduino-ga ulanishdan oldin siz GSM-GPRS qalqoniga SIM-kartani o'rnatishingiz kerak. Shuningdek, rasmda ko'rsatilgandek TX va RX o'tish moslamalarini o'rnatishingiz kerak.

Ulanish quyidagicha amalga oshiriladi - qalqondan birinchi aloqa (rasmdagi sariq sim) Arduino ustidagi TX ga ulanishi kerak. Ikkinchi pim (yashil sim) Arduinoda RX ga ulanadi. Yer qalqoni aruino er bilan bog'lanadi. Mikrokontroller USB kabeli orqali quvvatlanadi.

Qalqon va Arduino taxtasi o'rtasidagi ulanish tartibi rasmda ko'rsatilgan.

Ishlash uchun siz GPRS_Shield_Arduino kutubxonasini o'rnatishingiz kerak.

O'rnatilgan sxemaning to'g'riligini tekshirish uchun siz quyidagilarni bajarishingiz kerak: Arduino-da RESET va GND-ni ulang (bu ma'lumotlar to'g'ridan-to'g'ri qalqondan kompyuterga uzatiladi), SIM-kartani qalqonga joylashtiring va qalqonning kuchini yoqing. Arduino platasi kompyuterga ulangan bo'lishi kerak va quvvat tugmasi bosilgan bo'lishi kerak. Har bir narsa to'g'ri ulangan bo'lsa, qizil LED yonadi va yashil yonadi.

AT buyruqlari orqali o'zaro ta'sirning qisqacha tavsifi

AT buyruqlari - bu qisqa matn satrlaridan iborat modem uchun maxsus buyruqlar to'plami. Modem unga berilgan buyruqni tanishi uchun satrlar at harflari bilan boshlanishi kerak. Modem buyruq rejimida bo'lganda mag'lubiyat qabul qilinadi. In buyruqlar kommunikatsion dastur yordamida yoki klaviaturadan qo'lda yuborilishi mumkin. Deyarli barcha buyruqlarni 3 rejimga bo'lish mumkin - test rejimi, unda modul buyruqni qo'llab-quvvatlaydimi yoki yo'qmi deb javob beradi; o'qish - joriy buyruq parametrlarini chiqarish; yozib olish - yangi qiymatlar yozib olinadi.

Eng ko'p ishlatiladigan AT buyruqlar ro'yxati:

  • In - modulning to'g'ri ulanganligini tekshirish uchun. Agar hamma narsa yaxshi bo'lsa, u OKni qaytaradi.
  • A / - oldingi buyruqni takrorlang.
  • AT + IPR? - port tezligi haqida ma'lumot olish. Javob + IPR bo'ladi: 0 OK (0 bu holda avtomatik).
  • AT + ICF? - uzatishni sozlash. Javob + ICF bo'ladi: bit, parite.
  • AT + IFC? - uzatishni boshqarish. Javob + IFC bo'ladi: moduldan terminal, terminaldan modul (0 - boshqaruv yo'q, 1 - dasturiy ta'minotni boshqarish, 2 - apparatni boshqarish).
  • AT + GCAP - modulning imkoniyatlarini ko'rsatadi. Namunaviy javob - + GCAP: + FCLASS, + CGSM.
  • AT + GSN - IMEI modulini olish. Javobning namunasi 01322600XXXXXXX.
  • AT + COPS? - mavjud operatorlarni ko'rsatadi.
  • AT + CPAS - modul holati. Javob + CPAS: 0. 0 - ishlashga tayyor, 3 - kiruvchi qo'ng'iroq, 4 - ovozli ulanish, 2 - noma'lum.
  • AT + CCLK? - joriy vaqt va sana haqida ma'lumot.
  • AT + CLIP \u003d 1 - qo'ng'iroq qiluvchi identifikatorini yoqish / o'chirish. 1 - yoqilgan, 0 - o'chirilgan.
  • AT + CSCB \u003d 0 - maxsus SMS xabarlarni qabul qilish. 0 - yoqilgan, 1 - o'chirilgan.
  • AT + CSCS \u003d “GSM” - SMS xabarlarni kodlash. Siz quyidagi kodlashlardan birini tanlashingiz mumkin: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1.
  • AT + CMEE \u003d 0 - xato haqida ma'lumot olish.
  • AT + CPIN \u003d XXXX - SIM-kartaning pin-kodini kiriting.
  • AT&F - zavod parametrlariga qaytarish.
  • AT + CPOWD \u003d 1 - modulni shoshilinch (0) yoki normal (1) o'chirish.
  • ATD + 790XXXXXXXX - + 790XXXXXXXX raqamiga qo'ng'iroq qilish.
  • ATA - qo'ng'iroqqa javob.
  • AT + CMGS \u003d "+ 790XXXXXXXX"\u003e SMS-testlar - + 790XXXXXXXX raqamiga SMS xabar yuborish.

Bunday holda, SIM900 moduli uchun asosiy buyruqlar ko'rib chiqiladi. Turli xil modullar uchun buyruqlar biroz farq qilishi mumkin. Modul uchun ma'lumotlar orqali yuboriladi maxsus dastur Kompyuteringizga o'rnatiladigan "terminal". Shuningdek, Arduino IDE portidagi monitor orqali buyruqlarni modulga yuborishingiz mumkin.

GSM moduli bilan ishlash uchun eskizlar

Masalan, SIM900 yordamida SMS yuborish

Xabar yuborishdan oldin siz modulni sozlashingiz kerak. Avvalo, siz tarjima qilishingiz kerak matn formati uzatilgan xabar. Buning uchun AT + CMGF \u003d 1 buyrug'i mavjud. Kodlashni AT + CSCS \u003d "GSM" buyrug'i bilan GSM-ga o'tkazish kerak. Ushbu kodlash eng qulaydir, chunki u erda belgilar ASCII kodida ifodalanadi, ular kompilyator osongina tushunishi mumkin.

Keyin siz SMS xabar yozishingiz kerak. Buning uchun AT + CMGS \u003d "+ 79XXXXXXXXX" r abonent raqami bilan buyruq yuboriladi, bunga javoban SMS matnini kiritish tavsiya etiladi. Sizga xabar yuborish kerak. Tugatgandan so'ng siz Ctrl + Z kombinatsiyalangan kodini yuborishingiz kerak, modul matnni manzilga yuborishga imkon beradi. Xabar yuborilgandan so'ng, OK qaytadi.

Modul bilan o'zaro ta'sir har bir yangi xabarga berilgan indekslarga asoslanadi. Ushbu indeks yordamida qaysi xabarni o'chirish yoki o'qish kerakligini ko'rsatish uchun foydalanish mumkin.

SMS qabul qilish. SMS-xabarlarni o'qish uchun AT + CNMI \u003d 2,2,0,0,0 buyrug'idan foydalaning. Modul matnli xabarni olganida, u + CMTI seriyali portiga yuboradi: "SM", 2 (bu holda, 2 - xabarning tartib raqami). Uni o'qish uchun AT + CMGR \u003d 2 buyrug'ini yuborishingiz kerak.

Ovozli qo'ng'iroq qabul qilinmoqda. Avvalo, suhbat uchun siz karnay va mikrofonni modulga ulashingiz kerak. Qo'ng'iroqni qabul qilganingizda, u qaysi raqam orqali amalga oshirilganligi ko'rsatiladi. Ishni bajarish uchun siz GSM kutubxonasini yoqishingiz kerak:

# shu jumladan

Agar SIM-karta bloklangan bo'lsa, uning pin-kodini kiritishingiz kerak. Agar pin-kod talab qilinmasa, ushbu maydon bo'sh qoldirilishi kerak.

#PINNUMBERni aniqlash ""

O'rnatishda () kompyuterga ma'lumotlarni uzatishni boshlash kerak. Keyingi qadam - tarmoqqa ulanish holatini kuzatish uchun mahalliy o'zgaruvchini yaratish. SIM-karta tarmoqqa ulanmaguncha eskiz ishlamaydi.

boolean notConnected \u003d rost;

Tarmoqqa ulanish uchun gsmAccess.begin () funktsiyasi ishlatiladi. Ulanish o'rnatilganda, GSM_READY qiymati qaytadi.

vcs.hangCall (); - modem qo'ng'iroqlarni qabul qilishga tayyorligini ko'rsatadigan funktsiya.

getvoiceCallStatus () - eskizning holatini aniqlaydi. Agar kimdir qo'ng'iroq qilsa, u RECEIVINGCALL raqamini qaytaradi. Raqamni yozib olish uchun retrieveCallingNumber () funktsiyasidan foydalaning. Qo'ng'iroq qabul qilinganda, TALKING qaytadi. Keyin eskiz ramzni kutadi yangi qatorsuhbatni to'xtatish.

GPRS ulanishini o'rnating va ma'lumotlarni uzoq serverga yuboring

Birinchidan, siz ketma-ket ma'lumot uzatishni ta'minlash va GSM moduli va Arduino mikrokontrollerini bog'lash imkonini beruvchi SoftwareSerial kutubxonasini o'rnatishingiz kerak.

Ma'lumotlarni serverga yuborish uchun siz quyidagi buyruqlarni yuborishingiz kerak:

AT + SAPBR \u003d 1.1 - Tashuvchining ochilishi.

Keyingi uchta buyruq tarmoqqa ulanish sozlamalarini o'rnatish bilan bog'liq.

AT + SAPBR \u003d 3.1, \\ "APN \\", \\ "internet.mts.ru \\" - tanlov operator mts, kirish nuqtasi nomi.

AT + SAPBR \u003d 3,1, \\ ”USER \\”, \\ ”mts \\” - mts foydalanuvchisi tanlovi.

AT + SAPBR \u003d 3,1, \\ "PWD \\", \\ "mts \\"

AT + SAPBR \u003d 1.1 - ulanishni o'rnatish.

AT + HTTPINIT - http-ni ishga tushiring.

AT + HTTPPARA \u003d "URL", - URL manzili.

AT + HTTPREAD - javobni kutish.

AT + HTTPTERM - http-ni to'xtatish.

Agar hamma narsa to'g'ri bajarilgan bo'lsa, port monitorida AT buyruqlari bo'lgan chiziqlar paydo bo'ladi. Agar modem bilan aloqa mavjud bo'lmasa, u birma-bir qatorni ko'rsatadi. Qachon muvaffaqiyatli o'rnatish GPRS ulanishi, moduldagi LED miltillay boshlaydi.

GSM / GPRS SIM900 Shield taxtasini ko'rib chiqish

Arduino GPRS / GSM Shield platasi (1-rasm) ma'lumotlarni uzoqda qabul qilish va uzatish uchun mobil GSM aloqasidan foydalanish imkoniyatini beradi. Buni uchta usulda bajarish mumkin:

    yuborish / qabul qilish qisqa yordamida matnli xabarlar (SMS);

    cSD texnologiyalari asosida ovozli (audio) buyruqlarni yuborish (standart ma'lumotlarni uzatish texnologiyasi gSM tarmoqlari) va / yoki DTMF (Dual Tone Multi-Frequency analog signalterish uchun ishlatilgan telefon raqami);

    paketli ma'lumotlarni uzatish GPRS texnologiyasi asosida.

    Kengash SIMCom SIM900 moduliga asoslangan.

Shuningdek, u quyidagilarni o'z ichiga oladi:

    sIM-karta uyasi;

    audio kirish va chiqish uchun 3,5 mm raz'em;

    tashqi antenna uchun ulagich.

Kengash bilan aloqa AT buyruqlar to'plami yordamida ketma-ket ulanish orqali amalga oshiriladi. Bortdagi o'tish moslamalari yordamida aloqa uchun ishlatiladigan kontaktlarni o'rnatish mumkin: SoftwareSerial orqali ishlash uchun 0-1 yoki 2-3 (ba'zi taxtalarda) 7-8 apparat kontaktlari.

Shakl 1. GPS GPRS qalqoni.

GSM GPRS SIM900 Shield taxtasini ikki usulda yoqish mumkin:

    apparat (PWRKEY tugmachasini bosish);

    dasturiy ta'minot.

Arduino platasiga ulanish

GSM GPRS SIM900 Shield Arduino plitalari uchun qalqon formatida tayyorlangan. Qalqonning (taroqlarning) kontaktlari osongina taxta konnektorlariga kiritiladi va shu bilan "sendvich" hosil bo'ladi (2-rasm).


Shakl 2. Arduino kartasiga GPS GPRS qalqonini o'rnatish.

AT buyruqlari yordamida GSM GPRS SIM900 modulini boshqarish

Nazoratni ko'rib chiqing gSM moduli AT buyruqlari yordamida GPRS ekrani. Buning uchun modulni o'rnating va uni kompyuterga ulang. Arduino tomonidan kompyuter va GSM GPRS qalqoni o'rtasida ma'lumotni karta orqali yuborish va qabul qilishning eskizlari Listing 1da ko'rsatilgan.


Ro'yxat 1

# shu jumladan

// ob'ekt yaratish

SoftwareSerial grs (7, 8); // RX, TX

// valyuta kursi

# GSMbaud 9600-ni aniqlang

Serial.begin (9600);

gsm.begin (GSMbaud);

Serial.println ("Boshlash");

agar (Serial.available ()) {

str1 \u003d Serial.readStringUntil ("\\ n");

str1.toCharArray (bufer, hh.length () + 1);

gsm.write (bufer);

gsm.board.write ("\\ n");

agar (gsm.available ()) {

Serial.write (gprs.read ());

Eskizni arduino platasiga yuklang, ketma-ket port monitorini oching va rejimni sozlash buyruqlarini kiriting:

Modulning GPRS tarmog'iga ulanishini tekshirish buyrug'i, bu sizning javobingizga javob berganda doimo takrorlanishi kerak.

Biz operatorning kirish nuqtasiga ulanamiz. "Bilayn" uchun:

AT + CGDCONT \u003d 1, "IP", "internet.beeline.ru"

AT + CSTT \u003d "internet.beeline.ru", "", ""

Internetga ulanishni sozlash:

AT + CGACT \u003d 1.1

Internet-resursga murojaat qilish

Barcha ulanish jarayoni 3-rasmda keltirilgan.


Shakl 3. GSM GPRS SIM800 moduli bilan ketma-ket port monitorida ishlash jarayoni.

Arduino doskasidan sms xabarlarni yuborish misoli

Xona harorati ma'lum bir qiymatdan pastga tushganda sms-xabarlarni yuborishdan foydalanishning bir misolini ko'rib chiqamiz. Bizga quyidagi tafsilotlar kerak:

    gSM GPRS Shield moduli - 1 dona;

    sim karta uyali aloqa operatori ijobiy qoldiq bilan;

    quvvat manbai 12V - 1 dona;

Ulanish diagrammasi 4-rasmda keltirilgan.


Shakl 4. Havoning past haroratida SMS-xabarlarni yuborish uchun ulanish diagrammasi.

Eskiz yozishni boshlaymiz. Har 30 soniyada biz namlik va harorat ma'lumotlarini DHT11 sensoridan olamiz. Biz DHT kutubxonasidan foydalanamiz. Agar harorat kritik darajadan past bo'lsa, biz TELEFON doimiysida ko'rsatilgan raqamga sms yuboramiz. Va biz 10 daqiqa pauza qilamiz.

Eskizning tarkibi 2-ro'yxatda keltirilgan.


Listing 2

// kutubxonalarni ulash

# shu jumladan

# "DHT.h" ni o'z ichiga oladi

// sms yuborish uchun telefon

#Telefon_NUMBER "+7928222222" raqamini aniqlang

// ob'ektlarni yaratish

SoftwareSerial gsm (7, 8);

DHT sensori DHT (2, DHT22);

// harorat chegarasi

# TEMPP-ni aniqlang 18

imzosiz uzun millissend;

// ketma-ket portni ishga tushiring

Serial.begin (9600);

// DHT sensorini ishga tushiring

sensorDHT.begin ();

// SoftwareSerial dasturini ishga tushiring

gsm.begin (9600);

agar (millis () - millissend\u003e 30 * 1000) (// har 30 soniyada o'qishlar?

// DHT sensoridan ma'lumotlarni oling

int h \u003d sensorDHT.readHumidity ();

int t \u003d sensorDHT.readTemperature ();

agar (t

// sms yuborish

// 10 daqiqa kuting

kechikish (10 * 60 * 1000);

millissend \u003d millis ();

// sms yuborish

bekor SendSMS (int t) {

// matn rejimini o'rnating

gsm.print ("AT + CMGF \u003d 1 \\ r");

// telefon

gsm.println (PHONE_NUMBER);

gsm.println ("\\" ");

// ma'lumotlarni yuborish t

// o'tkazmaning tugashi

gsm.println ((char) 26);

Biz eskizni yuklaymiz, tanlangan telefon raqamiga SMS-xabar kelgan taqdirda juda muhim haroratda tekshiramiz.


Shakl 5. Yig'ish diagrammasi.

Keling, GSM GPRS ekran modulida joylashgan sim-kartaga SMS-xabar yuborishda ma'lumotlarni qabul qilish uchun dasturiy ta'minot yarataylik. Eskizning mazmuni 3-ro'yxatda keltirilgan.


Ro'yxat 3

// kutubxonalarni ulash

# shu jumladan

# "DHT.h" ni o'z ichiga oladi

// ob'ektlarni yaratish

SoftwareSerial gsm (7, 8);

DHT sensori DHT (2, DHT22);

// o'zgaruvchilar

String telefon \u003d ""

String str1 \u003d ""; //

mantiqiy isSMS \u003d noto'g'ri;

// ketma-ket portni ulang

Serial.begin (9600);

// DHT sensorini ishga tushiring

// SoftwareSerial dasturini ishga tushiring

gsm.begin (9600);

// Xabarlarni qabul qilishni sozlash

gsm.print ("AT + CMGF \u003d 1 \\ r");

gsm.print ("AT + IFC \u003d 1, 1 \\ r");

gsm.print ("AT + CPBS \u003d \\" SM \\ "\\ r");

gsm.print ("AT + CNMI \u003d 1,2,2,1,0 \\ r");

agar (gsm.available ()) {

char c \u003d gsm.read ();

agar ("\\ r" \u003d\u003d c) (

if (isSMS) (// joriy satr - sms xabar,

if (! str1.compareTo ("tmp")) (// matn sms - tmp

// kiruvchi raqamga sms yuboring

// ma'lumot olish

int t \u003d dht.readTemperature ();

// Matn rejimini o'rnatish uchun AT buyrug'i

gsm.print ("AT + CMGF \u003d 1 \\ r");

// qabul qiluvchining telefon raqami

gsm.println ("AT + CMGS \u003d \\" ");

gsm.println (telefon);

gsm.println ("\\" ");

// xabar - harorat ma'lumotlari

// o'tkazmaning tugashi

gsm.println ((char) 26);

Serial.println (currStr);

agar (str1.startsWith ("+ CMT")) {

Serial.println (str1);

// xabardan telefon raqamini chiqarib oling

telefon \u003d str1.substring (7,19);

Serial.println (telefon);

// joriy satr "+ CMT" bilan boshlanadigan bo'lsa,

// keyin keyingi satr xabar bo'ladi

else if ("\\ n"! \u003d c) {

str1 + \u003d String (c);

Biz eskizni doskaga yuklaymiz, sim kartaga tmp matni bilan SMS xabar yuboramiz va javob sifatida harorat ma'lumotlari bilan SMS xabar olamiz.

Tez-tez so'raladigan savollar

1. Arduino bilan ketma-ket port orqali aloqa yo'q.

    Plitaning quvvatini tekshiring.

    Jumperlarning to'g'ri o'rnatilganligini tekshiring.

2. SMS-xabarlar yuborilmaydi

    Tashqi quvvat manbai GSM GPRS ekranini tekshiring.

    Sim-kartadagi qoldiqni tekshiring.

Antennali GPRS / GSM SIM900-ni himoya qiling
Arduino uchun mos keladigan SIM900 GPRS / GSM Shield Development Board to'rt tarmoqli to'plami

GSM va GPRS standartlariga muvofiq uyali tarmoqlarda Arduino va shunga o'xshash mikrokontroller qurilmalarining ishlashi uchun modul. Avtomatlashtirish va boshqarish tizimlarida foydalanish uchun mo'ljallangan. Boshqa modullar bilan ma'lumotlar almashinuvi UART interfeysi orqali amalga oshiriladi. Antennali Shield GPRS / GSM SIM900 UART interfeysi orqali to'g'ridan-to'g'ri mikrokontroller bilan aloqa qilishi yoki shaxsiy kompyuter bilan birgalikda kompyuter-UART interfeysi konvertori yordamida ishlashi mumkin. Bu modemlarni boshqarish uchun ishlatiladigan buyruqlar klassi darajasidagi dasturiy ta'minotning mosligi - AT buyruqlari tufayli mumkin.
Ob'ektlar mobil aloqa doirasidagi ma'lumotlar almashinuvi orqali nazorat qilinadi va boshqariladi. Ovozli aloqa, SMS, MMS yuborish va boshqa ko'plab funktsiyalar va xizmatlarni taqdim etadi. Modul SIM900 komponentiga asoslangan.

SIM900 komponenti haqida jurnaldan rus tilidagi maqola. Komponent SIMCom Wireless Solutions tomonidan ishlab chiqilgan. SIMCom veb-saytining rus tilidagi versiyasi mavjud. Komponent tomonidagi GSM modul platasida antenna, minigarnituralar va mikrofonni ulash uchun ulagichlar mavjud. Plitaning lehim qismida modul soatining ishlashini qo'llab-quvvatlaydigan 3-voltli CR1220 akkumulyatori va sim-kartani o'rnatish uchun idish mavjud.
Qurilmaning dasturlaridan biri bu GLONASS yoki GPS moslamasi bilan birgalikda transport vositalarining harakatlanishini kuzatib borish tizimidir. SMS-xabarlarni yuborish modulni dispetcherlik, simsiz signalizatsiya va xavfsizlik tizimlarida ishlatishga imkon beradi. Hodisalar natijasida turli xil SMS-xabarlarni yuborish mumkin: "34-sonli uyning 2-liftining favqulodda to'xtashi", "Avtomobil eshigi ochiq", "Bodrum ochiq", "Voltaj 220 V o'chirilgan", "Kottecning old eshigi ochiq", "Yoritgich yoqilgan", " Issiqxonadagi harorat juda muhim ». Modul uzoq masofalarga harakatlanadigan harakatlanuvchi moslamalarni kuzatish va boshqarish uchun ajralmas hisoblanadi. Yoki operatorni harakatsiz ob'ektdan uzoq masofaga ko'chirishda.

Antennali Shield GPRS / GSM SIM900 SIM900 komponentining ishlashini o'rganish uchun keng imkoniyatlar yaratadi. SIM900 komponentini o'rnatish eng zamonaviy texnologiyalar yordamida amalga oshiriladi, bu esa laboratoriya sharoitida SIM900 bosilgan elektron platasiga lehimlashni juda qiyinlashtiradi. SIM900 o'rnatilgan modulga ega bo'lsangiz, SIM900 komponentidan foydalanib tajriba o'tkazishingiz mumkin. O'zimiz ishlab chiqishda SIM900 komponentidan foydalanganda dasturiy ta'minotni disk raskadrovka qilish va elektron echimlarni tekshirish mumkin bo'ladi.

Xususiyatlari

Ovqat
kuchlanish, V
nominal 5
4.8-5.2 oralig'i
joriy
normal rejim 50-450 mA
1,5 mA uyqu rejimida
cheklovchi impuls 2 A
1,8 va 3 V quvvat manbaiga ega sim-kartalarni qo'llab-quvvatlaydi
Aloqa oralig'i 850, 900, 1800, 1900 MGts
2G tarmog'ini qo'llab-quvvatlaydi
Turli xil diapazonlarda uzatish quvvati
1W 1800 va 1900 MGts
2W 850 va 900 MGts
GSM 2/2 + bosqichiga mos keladi
O'rnatilgan TCP va UDP protokollari
Ma'lumotlarni uzatish klassi GPRS ko'p uyali sinf 10/8
HR, FR, EFR, AMR audio kodeklari, aks sadolarni bekor qilish
14,4 kbit / s gacha bo'lgan CSD
PPP to'plami
MUX (07.10)
HTTP va FTP protokollari
DTMF signallarini yuborish va ovoz yozish moslamasidagi kabi yozuvlarni ijro etish mumkin
RTC-ni qo'llab-quvvatlash
Harorat, ℃
ish paytida havo -30 ... 75
saqlash -45 ... 90
o'lchamlari 86 x 58 x 19 mm

Boshqarish komponentlari

Power select tugmasi quvvat manbaini o'rnatadi: tashqi, koaksial ulagichga yoki Arduino mikrokontroller modulining quvvat manbaiga ulangan.

Quvvat tugmasi bosilganda va 2 soniya ushlab turilganda quvvatni yoqadi yoki o'chiradi.

Ko'rsatkich

Modul holati 3 LED bilan ko'rsatilgan:
PWR (yashil) - modul quvvat ko'rsatkichi,
Status (qizil) - SIM900 komponentining quvvat ko'rsatkichi,
Net Light (yashil) - tarmoqqa ulanish.
Net Light LED xabarlari.
Yopiq - SIM900 ishlamayapti.
Bir necha soniya ichida ko'rsatilgan vaqt oralig'ida miltillovchi:
0,064 yoqilgan va 0,8 o'chirilgan - tarmoq aniqlanmadi,
0,064 yoqilgan va 0,3 o'chirilgan tarmoq aniqlandi,
0,064 yoqilgan, 0,03 o'chirilgan - GPRS ulangan.

Kontaktlar

SIM900 komponenti UART portini o'z ichiga oladi, uning signallari komponent pinlariga chiqadi va Shield GPRS / GSM SIM900 modulining qaysi kontaktlari bilan SIM900 komponentining UART porti D0, D1 yoki D7, D8 ga ulanishini o'rnatadigan o'tish moslamalariga ulanadi.
UART Shield GPRS / GSM ulanishi mumkin: Shield GPRS / GSM modulining TXD va RXD pinlari orqali MK ning apparat interfeysiga D0, D1 ishlatiladi. Yoki arduino yordamida taqlid qilingan dastur uchun Shield GPRS / GSM modulining D7 va D8 kontaktlari ishlatiladi. To'liq UART interfeysi taxtaning burchagida 10 ta signal piniga ega: R1, DCD, DSR, CTS, RTS, GND, 2V8, TX, RX, DTR.
12 ta imzolangan GPIO raqamli I / U pinlari taxtaning burchagida joylashgan. PWM1, PWM2 ning 2 ta PWM chiqishi mavjud. ADC kirish pimi ADC. O'rnatilgan vaqt hisoblagich interfeysi 4 ta pinga ega. PIN-kodni belgilash: DISP_CLK, DISP_DATA, DISP_D / C, DISP_CS.
Kontakt D9 SIM900-ni yoqish yoki o'chirishni dasturiy boshqarish uchun ishlatiladi.
Antenna ulagichi taxtaga o'rnatilgan.

SIM900 komponentining pin tayinlanishi.

Tashqi quvvatni yoqish va o'chirish

D9 boshqaruv kirish qismidagi signal yordamida siz modulning elektr ta'minotini yoqishingiz yoki o'chirishingiz mumkin. Vaziyatni o'zgartirish uchun D9 ga 1 s puls yuboriladi. Vaziyat o'zgarishi puls boshlanganidan 3,2 soniyadan keyin sodir bo'ladi.

Modulni yoqish. Modul besleme zo'riqishida, tashqi boshqaruv pulsi va STATUS quvvat ko'rsatkichi grafikalari.

Modul asosiy qurilma tomonidan boshqarilganda, u Quvvat tugmachasini ishlatmasdan, ya'ni quvvat ishlatilgandan so'ng darhol yoqilishi kerak. Buning uchun MK dasturiga bir nechta buyruqlar qo'shing.

PowerUpOrDownni bekor qilish ()
{
pinMode (9, OUTPUT);
digitalWrite (9, LOW);
kechikish (1000);
digitalWrite (9, yuqori);
kechikish (2000);
digitalWrite (9, LOW);
kechikish (3000);
}

Dasturdagi ushbu buyruqlar guruhidan modulni o'chirish uchun foydalanish mumkin. Bundan tashqari, AT buyrug'ini yuborish orqali GSM modulini o'chirib qo'yishingiz mumkin.

Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: