SIM800L V2.0 GSM / GPRS, Arduino ile uyumlu dört bantlı bir GSM / GPRS modülüdür. Modül, GSM işlevlerini (çağrılar ve SMS) ve GPRS'i uygulamak için kullanılır. Bu modülün avantajı, 5V'luk bir gerilime sahip olan ve doğrudan bir Arduino'ya veya 5V besleme gerilimi olan başka herhangi bir sisteme bağlanmasına izin veren TTL arayüzüdür. Piyasadaki çoğu GSM / GPRS modülü regülatör veya seviye dönüştürme bağlantıları gerektirirken, SIM800L V.2 GSM / GPRS'de ek arayüz seviyesi dönüştürme devreleri gerekmez.

İşte SIM800L V.2 GSM / GPRS kullanan bir proje örneği. Projenin amacı, bir SMS kontrolörü kullanarak anahtarları kontrol etmektir. Evdeki lama, vantilatör vb. Ev aletlerinin çoğunu kolayca açıp kapatabilirsiniz.

SIM800L V.2 GSM / GPRS modülünün özellikleri

SIM800L V.2 GSM / GPRS modülünün tüm teknik özellikleri aşağıdadır:
  • 3.3V ve 5V Arduino uyumlu mikrodenetleyiciler ile uyumlu TTL seri arayüz.
  • SIM800L modülünün bir TTL seri arayüzü vardır.
  • Anten fişi.
  • Ağ desteği: Dört bant 850/900/1800/1900 MHz, önemli ölçüde azaltılmış pil tüketimiyle arama, SMS ve veri iletimi yapabilen.
  • VDD TTL UART arayüzü, böylece 51MCU, ARM veya MSP430 gibi MCU'yu doğrudan bağlayabilirsiniz. VDD fişi, TTL voltajına uymak için kullanılır.
  • Modeli: SIMCOM SIM800L
  • Çalışma voltajı: 3.7V ila 5V;
  • boyutlar: 40mm x 28mm x 3mm
  • GPRS çoklu yuva sınıfı 12/10
  • GPRS toplu hizmet sınıfı B
  • GSM faz 2/2 + ile uyumlu
  • Sınıf 4 (850/900 MHz'de 2 Watt)
  • Sınıf 1 (1Wat @ 1800 / 1900MHz)

Gerekli malzemeler

ESP8266, geçen yıl Arduino'da cihaz yaratma işiyle uğraşan herkes için gerçek bir haber oldu. Pahalı muadilini aşan yeteneklere sahip ve aynı zamanda AT + ile uyumlu, ucuz bir mikro denetleyici.

Arduino denize düşmedi ve şimdi bu modül resmi olarak kartın desteklediği listelere eklendi ve buna göre gittikçe daha fazla kullanıcı wi-fi bağlantısı için Çinli mk'ye katılacak. Ancak sistemde, bir esp8266 kartının yeterli olmayacağı modülün yerini izlemek gerekir. Esp8266 sim800l burada işe yarar.

Akıllı evler ve çok sayıda el işi için, ister uzak bir kapı ister normal bir izci olsun, kartın bulunduğu yerin bildirilmesi gerekir. Esp8266 sim800'ü birleştirerek oluşturabileceğiniz el sanatlarının sadece kısa bir listesi:

  1. Akıllı ev. Hemen hemen her akıllı ev teknolojisi, bir nesneye yaklaşıldığında belirli modellere göre ayarlanabilir. Ama neden hareket sensörleri kurun, sim800'ü bir wi-fi kartına basitçe bağlayabiliyorsanız, bir parça giysiye bir pille bir mikron dikin (neyse ki, çok fazla enerji gerekmez) ve kullanıcı yaklaştığında ışığı otomatik olarak açın veya kapıyı açın.
  2. Çeşitli izleme cihazları. Gizlilik hakkınızı ihlal eden yasadışı hatalardan ve diğer cihazlardan bahsetmiyoruz. Bununla birlikte, mk arduino'dan ayrı olarak çalışabilir ve ona bir sim800 takarsanız, cihazın genel boyutları bir kibrit kutusunu aşmayacaktır. Her şeyi metal bir kutuya sarın ve anahtarlara anahtarlık olarak takın. Artık otoparkta bir akıllı telefon, anahtarlar ve hatta arabanızı bulmak çok daha kolay olacak.
  3. Robotik ve ilgili alanlar. Burada modern sanal zekanın ve sinir ağlarının gelişimi hakkında uzun süre konuşabilirsiniz, ancak çoğu zaman bölgenin bir haritasını oluşturup içinde gezinmek için yeterli sensör yoktur. Ve böyle bir şey yapıyorsanız, gps modülü işe yarayacaktır. Özellikle dronlarla eşleştirildiğinde kullanışlıdır.

Projenin nihai amacına karar verdiğinizde, sorunun nüanslarını anlamalısınız. Cihazların yukarıda belirtilen mikrodenetleyiciye bağlanması, standart Arduino kartları ile aynıdır, tek fark mevcut pin sayısındadır. GPS izleyicinin çalışması için, mikro denetleyici tarafından verilen standart 5 voltun aksine 3,7 ila 4,2 volt gerekir. Devre kartı oluşturulurken bu dikkate alınmalı ve yardımcı güç kaynakları buna göre seçilmelidir. Veya son sisteme başka ne bağlayacağınıza bağlı olarak transformatör ve dirençler kurun.

Ağa kayıt olurken, modül yaklaşık 2A'ya ihtiyaç duyacaktır, ancak bu onun en yüksek tüketimidir ve gelecekte gerekli akım 1-1,2 A'ya düşecektir.

İzleyiciyi sisteme bağladığınız anda, onu başlatmanız ve ilk komutları göndermeniz gerekecek, AT ve AT + en uygunudur. Ancak bu eylemlerden sonra modül nihayet veri göndermeye ve isteklerinize yanıt vermeye başlayacaktır, bu nedenle bağladıysanız endişelenmeyin, diyot yanıp söner, ancak komut dosyalarına tepki verilmez. Çevrimiçi kaydolmak için Sim800i'yi ilk kez kullandığınızda etkinleştirmeniz yeterlidir.

Ayrıca, Sim800i'yi ESP8266'ya bir alternatif olarak düşünmemelisiniz, bu forumlardaki birçok kullanıcının günah işlediği şeydir. Bu tür ifadelere rastladıysanız yazarın hayatında hiç arduino ile çalışmadığını rahatlıkla söyleyebilirsiniz. Her şeyden önce, yardımcı kart ile mikro denetleyiciyi karşılaştırmak anlamsızdır. Cihazlardan birinin kablosuz İnternet üzerinden istekleri koordine etmek, göndermek ve almak için tasarlandığından ve ikincisinin bir GSM GPRS modülü olduğundan bahsetmiyorum bile. Buna göre, birbirlerini iyi tamamlarlar ancak alternatif değildirler.

SIM800l'den esp8266'ya bağlantı şeması

Pin çıkışı standarttan daha fazlasıdır. Gücü olan pimi 3,7-4,2 Volt aralığında voltaj sağlayabilen bir kaynağa veya bir transformatöre bağlayın. TX, RX pinine gider ve tersi de geçerlidir. Lehimlemeyi tamamlar ve güç kaynağını bağlayarak modülün çalışmasını test etmeye karar verir vermez, diyotlar doğru bağlantıyı işaret edecektir. Daha sonra, yukarıda açıklanan yönteme göre modülü etkinleştirmeye devam eder ve kontrol için AT komutlarını kullanabilirsiniz. Yardımcı bir kitaplık veya ağır bir ortam yüklemek istiyorsanız, Arduino sistemine bir bellek kartı bağlama konusunda bilgi sahibi olmalısınız.

Öncelikle port hızını ve modül bilgisini test edelim, bunun için "AT + IPR?" ve sırasıyla "AT + CPAS". Her şey yolundaysa ve bilgiler hatasız görüntüleniyorsa, sinyal seviyesini ve modülün görebileceği operatörleri kontrol etmeye ve test etmeye devam edebilirsiniz.

En önemlisi, Sim800i, temel kitaplıkları kullanarak belirtilen numaraları aramanıza ve aramaları almanıza olanak tanır.

Ayrıca katılımıyla sistemlerin kullanımına da alan açıyor. Gelen bir aramada bir şey başlatan belirli bir komut dosyası yazmak istiyorsanız, modülün komut satırında "RING" cümlesiyle yanıt verdiğini unutmayın.

Bu tür bir işlevsellik, parmak izi veya anahtar kartı yerine belirli bir numarayı arayarak kapıyı açabileceğiniz ölçüde, yüzlerce otonom kontrol sistemi oluşturmanıza olanak tanır. Ancak, elbette, iyi bir koruma seviyesi için, beyaz bir sayı listesi kaydetmeye değer.

Sim800l gsm modülünü mk esp8266'ya bağlama uygulamasına bir örnek

Yukarıdaki pinleri bağlayıp lehimledikten sonra modül yanıp sönmeye başlamalıdır. Ağda kimlik doğrulama gerçekleşir gerçekleşmez, diyotlar daha az yanıp söner.

Işık sinyallerinin frekansında bir azalma meydana gelmediyse, mobil operatörünüzün sim800I ağının kabul edilip edilmediğinden ve herhangi bir hata olup olmadığından emin olmak için AT komutlarını kullanmak faydalı olacaktır. Ayrıca doğru pin düzenini ve antenli SIM kartın nasıl takıldığını kontrol edin, bunlarda bir hata olabilir.

Ve tabii ki sistemi pencereye yaklaştırın, çok katlı bir binadaysanız, sinyali alamaması oldukça olasıdır.

Herkese merhaba! GSM hakkında uzun zamandır konuşmadık. Öyleyse başlayalım. Sevgili Çinliler SIM800L adlı yeni bir bütçe modülünü oynamaya başladı. Evet, evet, bu modül kendi firmaları SIMCOM tarafından üretilmektedir. İlk başta test etmekten korktum, Rusya'nın genişliğinde olmadığını söylüyorlar ve bu modülün ağlarımızla koklayacağına dair bir garanti yok. Başka bir modülden flaş yapmak istemedim, ama iki hamamböceğini bir terlikle öldürdüğüm için çok şanslıydım. Bu modülü parçalamamı memnuniyetle sağlayan harika mağaza ChipResistor'u tamamen unutmuşum.
Bu mucize böyle görünüyor.

Çok fazla değil, modülün kendisi, mikro simler için bir tutucu, tantal, bir çift seramik, bir direnç ve bir LED karta takılı. İşin garibi, Çinliler bu modülü Arduina için bir kalkan olarak konumlandırıyorlar. Arduin 5 volt ve çoğunlukla USB'den güç alıyor gibi görünüyor ve eğer bellek beni yarı yolda bırakmazsa, SIMcom modülleri 3.6V'den 4.2'ye kadar yer ve aynı zamanda zirvede 2A istiyorlar. Pekala, tamam, onu hata ayıklama panosuna bağladım ve ... Çince !!! Daha ucuz hale getirmek için herhangi bir şey. Bu modül 5 volttan itibaren çalışmaz. Hafızam beni hayal kırıklığına uğratmadı. Kısacası, nasıl çalıştırılacağı konusunda uzun süre tartışabilirsiniz, ancak size bu sorunu kolayca çözebilecek harika bir cihaz göstereceğim. SIM800L ile aynı yerden, yani ChipResistor'dan satın alabilirsiniz. Modül, 3A'ya kadar bir aşağı inme dürtüsüdür.

Sonra bu modülü alıp giriş ve çıkış tellerini lehimliyoruz. Krediyi ekmek kızartma makinesine bağlayıp 4 volta ayarlıyoruz.

İşte şematik, üstten görünüm.

Benim kaosum buna benziyor.

Kısa bir tane kontrol ediyoruz, bir SIM kart takıyoruz, USB-RS232'yi bağlayıp güç veriyoruz. Hiçbir şey sigara içmiyorsa ve modüldeki LED yanıp sönüyorsa, her şey yolunda demektir. Sonra, bir terminal başlatıyoruz, PuTTYn'im var ve ilk komutu veriyoruz AT... Alındıysa yanıt olarak tamam sonra her şey çalışır.

Bingo! Sonra atarız + COPS AT? ve yanıt olarak operatörünüzü aldıysanız, düzeltmek için şu komutu yazarak kendinizi arayın ATD89161234567;... Noktalı virgül gerekli! Modül geçerse, ağlarımızla çalışıyor demektir. Bir arı üzerinde test ettim. Şimdi hepsi bu kadar diyorsam, o zaman beni yumurta ve domatesle yıkayacaklar, ama bunu istemiyorum))) O halde bundan yararlı bir şey bir araya getirelim. Örneğin bir alarm. Modülü MK'ye vidalayacağız ve birkaç bacağın durumunu izleyeceğiz. Bacakta değişiklikler görünür görünmez, derhal bu değişikliği bildiren bir SMS göndereceğiz. ATmegs32a, MK olarak hareket edecektir. PB2 ve PB3 ayaklarındaki düğmeleri vidalayın. Düğmelerin ortak bir GND'si vardır ve yukarı çekmek için yerleşik dirençler kullanıyoruz. Modülle çalışmak için, başlatma ve SMS iletimi gibi birkaç işlev yazacağız. İyi hadi gidelim.

İlk olarak, projeyi axlib kod üretecini kullanarak yapılandıralım. Bunun için 7372800'de MK ATmega32, harici kuvars'ı seçiyoruz (UART iletimi sırasında hataları azaltmak için böyle bir kristal gereklidir) ... UART'ı 9600 hız için yapılandıralım. Projeyi oluşturduktan sonra AtmelStudio 6'da açın. Öncelikle bir dosya oluşturun sim800l.h projenin kökünde ve dahil edin. #Dahil etmek #include "main_init.h" #include "axlib / usart.h" #include "sim800l.h" Şimdi oluşturduğumuz dosyaya gidin ve ihtiyacımız olan tanımları oraya girin. // İlk komut, tavsiye Tamam #define SIM800L_AT_AT "AT" // Ona bir SMS mesajı göndermek için abonenin numarasını girme komutu #define SIM800L_AT_SMS "AT + CMGS \u003d \\" " // Cep formatının ayarlanması #define SIM800L_AT_SMS_SET "AT + CMGF \u003d 1" Vergi, basitlik tanımlarını yazdık, şimdi karmaşık bir başlatma işlevi yazıyoruz. void sim800l_init (void) (usart_str_rn (SIM800L_AT_AT);) Bu fonksiyonun tüm karmaşıklığı, basitçe AT komutunu modüle iletmemizde yatmaktadır. Modül bu komutla çalışmaya başlamalıdır. Bir sonraki işlev biraz daha karmaşıktır. BYTE sim800l_send_sms (BYTE * num, BYTE * text, BYTE length) ( // Modülden yanıt almak için dizi BYTE str \u003d (0); _delay_ms (1000); // Aktarım modunu ayarlama usart_str_rn (SIM800L_AT_SMS_SET); // Abonenin telefon numarasını gönderin usart_str_out (SIM800L_AT_SMS, 9); usart_str_out (sayı, 12); usart_str_rn ("\\" "); // Metin girişinin başlamasını bekliyorum _delay_ms (3000); // Metni gönder usart_str_out (metin, uzunluk); str \u003d 0x1A; str \u003d 0; usart_str_rn (str); // Bekle tamam usart_str_in (str, 18); eğer (! ((str \u003d\u003d 0x4F) & (str \u003d\u003d 0x4B))) 0x34 döndür; 0x30 döndür; ) Burada bu modülün ucuzluğunun tüm özünü anladım. Bu bok, tutarlı bir şekilde cevap vermeyi tamamen reddetti. Sapkın olmadığım anda ve verilerin gelmesi için devasa zaman aşımları ve şekillendirilmiş gecikmeler belirledim. Kısacası, zaman içinde süzülen ve gecikmelerle karşılaşan cevaplar üzerine tükürdü. İş için bu çok fazla karışmaz. Ucuzluğun bedelini ödüyoruz. İşleve göre gidelim. Öncelikle paket aktarım ayarını dürtün. Bu, modülün telefon numarasını aldıktan sonra veri göndermesi ve ardından metnin kabul edilmesini beklemesi için gereklidir. Ardından SMS attığımız abonenin telefon numarasını aktarıyoruz. Bunu bu fonksiyonun argümanından alıyoruz. Bir şey var! Telefon numarası şu biçimde olmalıdır: +79161234567. +7 zorunlu, bu modül 900'dekinin aksine anlamıyor 8. Abonenin numarasını aktardıktan sonra 3 saniye aptalız. Tüm bu süre boyunca, modül yavaşça sayıyı çiğner ve hangi algoritmayı cehennemle bilir, tam bu gecikmelerde patlatıldım, bize bir simge ile metin girmemiz için bir davetiye verir > Davetiyeyi çiğnemek ve tükürmek için 3 saniye yeterlidir. 3 saniye sonra mesajın metnini atıyoruz. Bunu ayrıca bu fonksiyonun argümanından ve oradan UART fonksiyonları metninin uzunluğundan alıyoruz. Sonuçta, kaç tane mektup göndereceğinizi bilmiyoruz. Yakından bakarsan bir bayt görebilirsin 0x1A mesaj metninin sonunda. Bu komut Ctrl + Z metin iletimini bitirmek için gerekli. Modül bu komutu aldığında her şeyi bırakacak ve bir SMS gönderecektir. Hepsi bu dosya ile bitti, ana program dosyasına gidin. #define BUTTON_1 "Nazhata knopka 1" #define BUTTON_2 "Nazhata knopka 2" // GSM modülünün başlatılması sim800l_init (); // Okumak için G / Ç bağlantı noktalarını ayarlayın DDRB \u003d 0x00; // Dahili bir dirençle kaldırmayı açın PORTB | \u003d (1 // Eğer (! (PINB & (1 // Düğmeyi bırakana kadar bekle)) iken (! (PINB & (1 // Eğer (! (PINB & (1 // Düğmeyi bırakana kadar bekliyoruz (! (PINB & (1 Burada ne görüyoruz? Önceden hazırlanmış metinle iki tanım. Ardından modülü başlatıyoruz. Daha sonra B portunun 2 ve 3 numaralı bacaklarını girişe göre ayarlıyoruz ve dahili direnci güç kaynağı plus'a çekiyoruz. Ardından, sonsuz bir döngüde, düğme basışlarını kontrol ediyoruz. Düğmelerden herhangi birine basılır basılmaz, hemen sonsuz bir döngünün içine düşer ve düğme bırakılana kadar bekleriz. Düğme bırakıldıktan sonra, önceden hazırlanmış bir metin ile SMS gönderme işlevini çağırıyoruz. Hepsi bu kadar.))) Projeyi axlib üreteci tarafından oluşturulabileceği ve buradan kopyalanıp yapıştırılabileceği için göndermeyeceğim. Oh evet, telefonda bulduğum şey bu.))


Fiva 09.10.16 23:29

Mt-sistemine göre, 800 serisi, sözde 2016 sonunda kullanımdan kaldırılacak olan 900 serisinin alıcısıdır. Bu nedenle, bu tür sinir bozucu pervazları sıkışmış cevaplar olarak okumak oldukça garip.
belki verilerdeki yenilikler? Yoksa, tamamen 900'e benzeterek, gerçekten aydınlanmadan komutlar mı attınız?

Alexey 09.10.16 23:39

Bu duraklamalar, terminal aracılığıyla onunla iletişim kurduğumda bile beni uyardı. Bağlantı noktasının yavaşladığını düşündüm, ancak aynı şarkı dizüstü bilgisayarda.

Yuri 03/05/17 20:36

Bana modülü nasıl yapacağımı söyle, USSD'nin talebi üzerine denge gönder, Avr bacaklarındaki seviyeyi oku ve ayarla. Genel olarak "Akıllı Ev" yapmak istiyorum Teşekkürler

Alexey 16.03.2017 12:36
Oleg 28.03.2017 02:43


geçti \\ n, simmodül ile çalışmak gerekli mi yoksa her ihtimale karşı mı?
/ "Karakteri burada ne yapar

#define SIM800L_AT_SMS "AT + CMGS \u003d \\" "

usart_str_out (SIM800L_AT_SMS, 9);
usart_str_out (sayı, 12);
usart_str_rn ("\\" ");
burada da / "/ r / n
neden terminalde olduğu gibi usart_str_rn (AT + CMGS \u003d "+ 7xxxxxxxxxx") değil mi?
VE

usart_str_out (metin, uzunluk);
str \u003d 0x1A; anlaşılabilir
str \u003d 0; neden sıfır?
usart_str_rn (str); ve / r / n?

Alexey 28.03.2017 12:33

-\u003e / "karakteri burada ne yapar?
Bu karakterleri basit karakterlere dönüştürmek için \\ karakteri servis karakterlerinin önüne yerleştirilir. Önemli olan nokta, çift tırnak bir hizmet karakteri olmasıdır. Bir diziyi bir diziye geçirmek için kullanılır. Ve derleyicinin bunu tam olarak bir sembol olarak okuması için, servis sembollerinin önüne bir ters eğik çizgi yerleştirilir.
Misal:


BYTE data \u003d "Bazı metinler \\" Tırnak içindeki metinler \\ "";

Şimdi iç tırnak işaretleri diziye semboller olarak yazılacaktır.

-\u003e terminalde olduğu gibi neden usart_str_rn (AT + CMGS \u003d "+ 7xxxxxxxxxx") aynı anda değil?

Çünkü fonksiyon, argüman olarak abone numarasına sahip dizinin ilk elemanına bir gösterici alır. Hemen yazarsanız, SMS sonsuza kadar yalnızca bu aboneye gönderilecektir. Ve sadece kodu yeniden yazarak değiştirmek mümkün olacaktır.

-\u003e Lütfen açıklayınız. Neden işlevde usart_str_rn
geçti \\ n

Çünkü SIMCOM modülünün dokümantasyonu satır sonu ve satır sonu kodunun komutun sonunda girilmesini gerektirir.

Oleg 28.03.2017 14:05

Teşekkürler, Alexey bunu fark etti, 1A iletiminde bir sorunum var, hizmet sembolleri tablosunda \\ ... ile bir kombinasyon yok.

Alexey 28.03.2017 15:04

Ve Ctrl + z sembolü neye benzemeli? Veya örneğin bir boşluk, bir sekme. Bu nedenle kod ile iletilir. Örneğin \\ r \\ n iki bayt 0x0D, 0x0A olarak yazılabilir. Bu aynı.

Oleg 28.03.2017 16:59

Anladım, komada böyle gitti


str \u003d 0x4D;
str \u003d 0x4B;
str \u003d 0x4D; // test için üç harfli metin.
str \u003d 0x1A;
str \u003d 0;
usart_str_rn (str);
, Muhtemelen bir dizge olarak metin yapabilirim, ancak 1A yalnızca bir dizi aracılığıyla elde edilir, bir şekilde daha kolay olamaz mı?

Alexey 28.03.2017 17:14

void usart_char_out (BYTE verileri)

Bağlantı noktasına sadece bir bayt gönderir.

Evgeniy 05/07/17 17:47

BYTE sim800l_send_sms (BYTE * num, BYTE * text, BYTE length)
{
// Modülden yanıt almak için dizi
BYTE str \u003d (0);
başka kaynak
// Bekle tamam
usart_str_in (str, 18);
eğer (! ((str \u003d\u003d 0x4F) & (str \u003d\u003d 0x4B))) 0x34 döndür;
Açıkça str olarak bildirilmişse, dizideki 14 ve 15 indeksi nereden geldi?

Alexey 17.05.2017 20:05

Ve işte burada çok keçe bir botum. Dizi 10 hücre değil, 20)))

Evgeniy 05/08/17 20:13

Olur)) Böylece bir yazım hatası olduğunu anladım. Kodumu yazmaya başladım, temel aldım ve hemen gördüm

Alexey 05/08/17 21:34

Size L yerine SIM800C kullanmanızı tavsiye ederim. Aynı para ama C modülünde mavi bir diş var.

Evgeniy 05/12/17 06:43

Evet, sadece 800C modüllerim var. Alexey, okuduktan sonra str boş, sorun ne olabilir? Modüle giden komutlar kaybolur ve modül yanıt verir (günlük analizcisi tarafından kontrol edilir), ancak str boştur
// Bekle tamam
usart_str_in (str, 18);
eğer (! ((str \u003d\u003d

Evgeniy 05/12/17 18:57

Alexei. Usart_str_in işlevinde sorunun ne olduğunu anladım, 18 baytlık bir kabul vardı ve modül yalnızca 9 bayt ile yanıt verdi, bu nedenle işlev bu yanıtı bir zaman aşımı olarak algıladı. (BYTE usart_str_in (BYTE * str, BYTE sayısı)
{
BYTE çıkışı \u003d 0;
BYTE verileri \u003d 0;
BYTE zaman aşımı \u003d 0;

While (count\u003e data) // burada iken 18\u003e 9 - zaman aşımı
{
data \u003d GetData ();

// 250 ms içinde veri gelmediyse
// sonra işlevden çıkın ve 0'a dönün
eğer (zaman aşımı\u003e \u003d 250)
{
ClearBuffer ();
geri dönün;
}

Zaman aşımı ++;
_delay_ms (1);
}

Out \u003d OutBufferStr (str, sayım);
geri dönün;
}
Peki ya cevabın ne kadar süreceğini bilmiyorsan?

Alexey 05/12/17 20:03

Birden fazla bayt almak için arabelleği yoklayın ve ardından tüm paketi arabellekten çıkarmak için bekleyin.

Evgeniy 05/12/17 20:21

Alexey, fikri tam olarak anlamıyorum, lütfen açıkla lütfen

Alexey 05/12/17 20:58


ana ()
{

// Arabellekte alınan bayt sayısı
BYTE len_pocket \u003d 0;

// Veri dizisi
BYTE verileri \u003d (0);

süre (1)
{
// Arabellekte ne olduğunu görün
len_pocket \u003d usart_data ();

// Arabelleğe bir şey gelip gelmediğini kontrol edin
eğer (len_pocket\u003e 0)
{
// Geldiyse bekle
// hesaplamayı duraklat (1000 / (bit hızı / 10)) * maksimum bayt.
// Örnek bit hızı 19200, maks. Bayt 40. (1000/1920) * 40 \u003d 20,8ms

// Tüm baytların alındığından emin olmak için duraklatın
_delay_ms (22);

// Alınan bayt sayısını al
len_pocket \u003d usart_data ();

// Veriyi diziye yaz
usart_str_in (veri, len_pocket);

// Artık veri dizisi alınan tüm baytları içerir.
}
}
}

Evgeniy 05/12/17 21:25

Alexey, teşekkürler, fikri net bir şekilde anladım, deneyeceğim. Ayrıca iki köle ve efendiyi sormak istedim, hattı çekerken bağlantı kaybını, modellemeye çalıştınız mı?

Alexey 05.12.2017 22:18

Henüz değil. Çok fazla iş. Genel olarak, onun yüzünden siteyi unuttum.

Oleg 07.08.2017 23:28

Alexey, mk 5v destekli ve modül 3.3v ise seviyeleri nasıl eşleştireceğimizi söyle bize? Ali'de bir KIS-3R33S güç kaynağı modülü buldum, bir çıkış kontrolü var, gücü keserek SIM modülünü yeniden başlatmanın herhangi bir anlamı var mı, yoksa sıfırlama ve modülün çıkışı çıkışı yeterli olacak mı?

Alexey 07.09.2017 12:28

Öncelikle, modüle katılmak için 3.3v'ye değil 3v'ye ihtiyacınız var. Bunu yapmak için, RXD MK'nin üst kol direncinin girişinde olacağı ve alt kol direncinin ortak sinyale bağlanacağı dirençli bir bölücü koymak yeterlidir.
İkincisi. Modül donmuşsa, güç kaynağıyla oynayarak yeniden başlatmaya başlayabilirsiniz. Modül çalışırsa, bu kesinlikle imkansızdır, çünkü modüldeki bellenimin ölmesine neden olabilir. Yeniden başlatma, bacak PWR veya AT komutu ile sarsılarak yapılmalıdır.

Oleg 09.07.2017 12:44

Teşekkür ederim, ilk şey açık.
İkincisi, modül yanıt vermezse ve ilk ve pwr sarsıntıları çalışmazsa, pwr'siz veya ilk olmadan pcb modülleri olduğu için, böyle bir kesin kesim planlanır, soru şu ki, tüm cihaz kapatıldığında ürün yazılımı nasıl oluyor, herhangi bir öneri var mı?

Alexey 07/09/17 14:48

Bu bir Çin böceği. Kişilere lehimleyin. Çinliler özellikle buharlı değiller, hatta yiyecekleri her zaman doğru şekilde uygulamıyorlar. Keşke ucuz olsaydı.

Oleg 07.09.2017 15:05

Ve modül kilitlendiğinde, bu ilk önce pwr'yi veya ilkini çekiyor ve eğer pvr ve rezet güç kaynağını doğru şekilde nasıl bozacağına yardımcı olmazsa?

Alexey 07/09/17 19:29

Sıkıca takılırsa, gücü üç saniye boyunca kesin. Ve sonra kurallara göre gönderin ve başlatın.

Igor 09/12/19 19:21

Bz fiyat tekliflerinin sayısını MC52i modeme nasıl aktaracağımı söyle
// Abonenin telefon numarasını gönderin
usart_str_out (SIM800L_AT_SMS, 9);
usart_str_out (sayı, 12);
usart_str_rn ("" ");

GSM GPRS SIM800L modülü(SIM800L) Antenli MicroSIM
SIM800L GPRS GSM Modülü MicroSIM Kart Çekirdek Kartı Dört bantlı TTL Seri Bağlantı Noktası

SIMCom Wireless Solutions tarafından geliştirilen SIM800L bileşenine dayalı minyatür GSM / GPRS hücresel iletişim modülü. SIMCom web sitesinin Rusça versiyonu. SIM800L bileşeninin standart kontrol arayüzü, çağrı, SMS mesajı göndermek ve dijital GPRS verisi alışverişi yapmak için GSM / GPRS 850/900/1800/1900 MHz şebekelerinin servislerine erişim sağlar. Yerleşik bir antenle birlikte gelir, ayrıca sinyal kalitesini iyileştirmek için ek antenler de bağlayabilirsiniz.
Modül, bir USB-UART arayüz dönüştürücü aracılığıyla kişisel bir bilgisayar kullanılarak veya doğrudan kendi geliştirdiği bir mikro denetleyici modülü veya Arduino, Raspberry Pi ve benzeri bir UART aracılığıyla kontrol edilebilir.
SIM800L bileşeninde uygulanan bir TCP / IP protokol yığını vardır. MediaTek MT6260SA yongası ve RFMD RF7176 alıcı-verici yongası içerir.
SMS mesajı gönderme işlevi sayesinde, antenli GSM GPRS SIM800 MicroSIM modülü en çok gönderim, kablosuz sinyalizasyon ve güvenlik sistemlerinde kullanılır. Aynı zamanda çeşitli olaylar sonucunda şu tipte mesajlar gönderilir: "17 numaralı binanın 3. asansörünün acil durdurması", "Garaj açık", "Bodrum kapısı açık", "220 aşırı yük devre dışı", "Isıtma sistemi kaçağı", "Isıtma kazanı kapalı" , "Seradaki sıcaklık normalin altında".
GSM GPRS SIM800 MicroSIM modülüne bir hoparlör ve mikrofon bağlanır. Modülden arama yapabilir ve alabilirsiniz.

Teknik Özellikler

Gıda
voltaj, V
nominal 4
3.4-4.4 aralığı
akım
bekleme 0,7 mA
500 mA sınırı
UART arayüzünün yüksek seviyesinin maksimum voltajı 2,8 V'tur.
UART hızı 1200-115200 baud
Dört bantlı EGSM900, DCS1800, GSM850, PCS1900
Farklı bantlarda iletim gücü
DCS1800, PCS1900 1W
GSM850, EGSM900 2W
Otomatik olarak dört frekans bandını arar
2G ağını destekler
Bağlı hoparlör empedansı 8 Ohm
Elektret mikrofon
UART üzerinden AT komutlarıyla kontrol edilir (3GPP TS 27.007, 27.005 SIMCOM gelişmiş AT Komutları)
AT kontrol komutlarının iletim hızının otomatik belirlenmesi
GPRS verilerini gönderme ve alma (TCP / IP, HTTP, vb.)
Maks GPRS veri hızı 85.6 Kbaud
CS-1, CS-2, CS-3 ve CS-4 kodlaması
GSM 07.10 protokolünü destekler
2.4, 4.8, 9.6 ve 14.4 Kbaud'da Paket Yayın Kontrol Kanalı (PBCCH) CSD'yi destekler
Yapılandırılmamış USSD katma değerli hizmetler için destek
PAP'yi (Şifre Doğrulama Protokolü) destekler
RTC desteği
3 ve 1,8 V SIM kartları destekler
Sıcaklık, ℃
çalışma sırasında hava -30 ... 75
depolama -45 ... 90
Boyutlar 25 x 25 mm

Gösterge

GSM GPRS modülü açıldığında kart üzerindeki LED hızlıca yanıp söner. Bir mobil operatör ile bağlantı kurulduğunda, yanıp sönen frekans azalır. Mobil operatör ile iletişim kesilirse, LED hızlı bir şekilde tekrar yanıp söner.


LED'in hızlı yanıp sönmesi, yayında bir mobil istasyon sinyali arandığını gösterir.

Bağ

Bazı kontakların isimleri ve sinyallerin, hatların işlevleri.

Sinyal kalitesini iyileştirmek için bir anten bağlanmıştır. UART arayüzünün giriş voltajının aşılması SIM800 modülüne zarar verecektir. 2.8 V çıkışlı USB-UART dönüştürücü yoktur.Mevcut dönüştürücüler UART çıkışında daha yüksek bir voltaja sahiptir. Bu nedenle, dönüştürücü çıkışı ile GSM GPRS SIM800 modülünün girişi arasına bir direnç voltaj bölücü yerleştirilir.

Sahip olduğunuz arayüz dönüştürücünün U_usbttl çıkış gerilimine bağlı olarak bölücüdeki direnç değerleri şekilde gösterilen formüle göre hesaplanır. Hesaplanırken, birkaç kilo-ohm mertebesinde direnç değerleri için çaba gösterilmelidir.

İlk adımlar

Cihazın işlevselliğini kontrol etmek için bir PC'ye ve küçük bir nakit hesabı olan bir sim karta sahip olmak yeterlidir. Çalışabilirlik kontrolü, modülü bir PC'ye bağlamak için iki yöntem kullanılarak gerçekleştirilebilir: bir USB-UART arayüz dönüştürücü veya Arduino UNO kullanılarak. Arduino'suz bir doğrulama yöntemini düşünelim. SIM kartı, kontakların düzenine dikkat ederek GSM GPRS modülüne takın. Bilgisayarı USB-UART arayüz dönüştürücü aracılığıyla yukarıda gösterildiği gibi cihaza bağlayın. Güç kaynağını anma gerilimi ile bağlayın. Bekleyin, mobil operatöre bağlanmak için LED'in yanıp sönmesine odaklanın. Bilgisayarda terminal programını başlatın. Veriler büyük harflerle girilmelidir. Terminal programını kullanarak, bağlantı portu üzerinden GSM GPRS SIM800 modülüne aşağıdaki komutları gönderin.

AT
Modül yanıtı tamam

AT + CSQ
Modül yanıtı + CSQ: 18.0 Tamam

Bu komut, sinyal gücü hakkında bilgi verir. İlk sayı sinyal seviyesidir, 18 değeri -78 dBm anlamına gelir. İkinci sayı, hatalı olarak alınan bitlerin sayısıdır, "0" değeri,% 0,2'den daha düşük bir hata oranını gösterir, bu da iyi iletişimi gösterir.


Modüle bir ATI komutu göndermeyi deneyin.

USB - UART dönüştürücünüz yoksa Arduino UNO'yu kullanabilirsiniz. Bir direnç voltaj bölücü kullanarak SIM800L'nin RX pinini Arduino UNO dijital sinyalinin 11. pinine bağlayın. Direnç değerleri, Arduino UNO'nun besleme voltajı dikkate alınarak yeniden hesaplanmalıdır. SIM800L'nin TX pinini Arduino UNO dijital sinyalinin 10. pinine bağlayın. Programı aşağıda metni verilen arduino'ya yükleyin. UART'ın işlevselliğini çoğaltan bir yazılım kullanarak Arduino'nun herhangi bir dijital pinine bir seri arayüz uygulamanıza izin veren SoftwareSerial kütüphanesini kullanır.

#Dahil etmek
SoftwareSerial mySerial (10, 11); // RX, TX
geçersiz kurulum ()
{
// Seri iletişimi açın ve bağlantı noktasının açılmasını bekleyin:
Serial.begin (9600);
mySerial.begin (9600);
}
geçersiz döngü () // defalarca koş
{
eğer (mySerial.available ())
Serial.write (mySerial.read ());
eğer (Serial.available ())
{
while (Serial.available ())
{
mySerial.write (Serial.read ());
}
mySerial.println ();
}
}

Programın metni ve birçok faydalı bilgi. Artık Arduino seri monitör üzerinden AT komutları gönderebilirsiniz.

Rusça ve yabancı sitelerde, SMS gönderebileceğiniz, sensör kontaklarının durumunu izleyebileceğiniz ve izlenen kontakların durumundaki değişiklik zamanını siteye gönderebileceğiniz ve alınan verileri sitede bir günlük şeklinde kaydedebileceğiniz Arduino programlarının metinleri yayınlanır.

Arduino projelerindeki GSM ve GPRS modülü, normal hücresel iletişim yoluyla uzak otonom cihazlara bağlanmanıza izin verir. Cihazlara komutlar gönderebilir ve bunlardan SMS komutları kullanarak veya GPRS üzerinden açık bir İnternet bağlantısı aracılığıyla bilgi alabiliriz. Bu yazıda, Arduino için en popüler modüllere bakacağız, bağlantıyı çözeceğiz ve programlama örneklerini ele alacağız.

GSM GPRS Modülleri

GSM modülü, geleneksel Arduino kartlarının yeteneklerini genişletmek için kullanılır - SMS gönderme, arama yapma, GPRS üzerinden veri alışverişi. Çeşitli modül türleri vardır, en yaygın kullanılanlar SIM900, SIM800L, A6, A7'dir.

SIM900 modülünün açıklaması

SIM900 modülü, çeşitli otomatik sistemlerde kullanılır. UART arayüzü, diğer cihazlarla veri alışverişi yapmak için kullanılır. Modül, arama yapma, metin mesajı alışverişi yapma yeteneği sağlar. Modülün çalışması, SIMCom Kablosuz Çözümü tarafından oluşturulan SIM900 bileşeninde yayınlanır.

Özellikler:

  • Voltaj aralığı 4.8-5.2V;
  • Normal modda akım 450 mA'ya ulaşır, darbe modunda maksimum akım 2 A'dır;
  • 2G desteği;
  • İletim gücü: 1 W 1800 ve 1900 MHz, 2 W 850 ve 900 MHz;
  • Yerleşik TCP ve UDP protokolleri vardır;
  • GPRS çok yuvalı sınıf 10/8;
  • -30C ile 75C arası çalışma sıcaklığı.

Cihazı kullanarak, bir GLONASS veya GPS cihazı ile birlikte ulaşım rotasını takip edebilirsiniz. SMS mesajı gönderme yeteneği, kablosuz alarm ve çeşitli güvenlik sistemlerinde kullanılmaktadır.

SIM800L modülünün açıklaması

Modül SIM800L bileşenini temel alır ve GPRS üzerinden SMS göndermek, arama yapmak ve veri alışverişi yapmak için kullanılır. Modüle bir mikro SIM kart takılmıştır. Cihazın yerleşik bir anteni ve harici bir anten bağlayabileceğiniz bir konektörü vardır. Modüle giden güç, harici bir kaynaktan veya bir DC-DC dönüştürücü aracılığıyla sağlanır. Kontrol bir bilgisayar kullanılarak UART, Arduino, Raspberry Pi veya benzeri cihazlarla gerçekleştirilir.

Özellikler:

  • Voltaj aralığı 3.7V - 4.2V;
  • 4 bantlı bir ağ 900/1800/1900 MHz desteği;
  • GPRS sınıfı 12 (85,6 kB / s);
  • Maksimum akım 500mA;
  • 2G desteği;
  • Dört frekans aralığında otomatik arama;
  • -30C ile 75C arası çalışma sıcaklığı.

A6 modülünün açıklaması

A6 modülü, 2016 yılında AI-THINKER tarafından geliştirilmiştir. Cihaz, SMS mesajlarının alış verişi ve GPRS üzerinden veri alışverişi için kullanılır. Kart, düşük güç tüketimi ve küçük boyut ile karakterizedir. Cihaz, Rus mobil operatörleri ile tamamen uyumludur.

Özellikler:

  • Voltaj aralığı 4,5 - 5,5V;
  • Güç kaynağı 5V;
  • Çalışma sıcaklığı aralığı -30C ila 80C arasındadır;
  • Maksimum akım tüketimi 900mA;
  • GPRS Sınıf 10;
  • PPP, TCP, UDP, MUX protokollerini destekler.

Modül, mikrosim kartlarını destekler.

A7 modülünün açıklaması

A7, AI-THINKER'ın en yeni modülüdür. Selefi ile karşılaştırıldığında, A6, cihazın tasarımını basitleştirmek için yerleşik GPS'e sahiptir.

Özellikler:

  • Çalışma voltajı aralığı 3.3V-4.6V;
  • Besleme gerilimi 5V;
  • 850/900/1800/1900 MHz frekansları;
  • GPRS Sınıf 10: Maks. 85.6 kbps;
  • Yankı ve gürültü bastırma.

Cihaz, mikro SIM kartları destekler. Modül, çağrı alışverişini, SMS mesajlaşmasını, GPRS veri iletimini, GPS sinyal alımını destekler.

Arduino için GSM modülleri nereden alınır

Geleneksel olarak, başlamadan önce birkaç ipucu ve Aliexpress satıcılarına faydalı bağlantılar.

Çok yüksek kaliteli KEYES SIM900 GSM GPRS modülü Güvenilir bir tedarikçiden arduino için SIM800C modülü
SIM900 GPRS / GSM modülüne dayalı Arduino uyumlu geliştirme kalkanı Ucuz mini A6 GPRS GSM modülü

GSM GPRS kalkanını Arduino ya bağlama

Bu bölümde GSM modüllerini aduino kartına bağlama konularını ele alacağız. Neredeyse tüm örnekler Arduino Uno'ya dayanmaktadır, ancak örneklerin çoğu Mega, Nano, vb. Panolar için geçerli olacaktır.

SIM800 modülünü bağlama

Bağlanmak için bir Arduino kartına, bir SIM800L modülüne, bir voltaj düşürücü dönüştürücüye, bağlantı için kablolara ve bir 12V aküye ihtiyacınız vardır. SIM800L modülü, Arduino için standart olmayan 3.7V voltaj gerektirir, bunun için bir voltaj düşürme dönüştürücüsüne ihtiyacınız vardır.

SIM800 modülünün pin çıkışı şekilde gösterilmiştir.

Arduino kartı, bir USB kablosuyla bir bilgisayara bağlanmalıdır. 12 V bataryayı dönüştürücü vasıtasıyla bağlayın: -12 V Arduino topraklamasına, yerden dönüştürücüye eksi, + 12V dönüştürücüye artı artı. TX ve RX modülünden gelen çıkışlar Arduino'daki 2 ve 3 pinlerine bağlanmalıdır. Herhangi bir dijital pime birkaç modül bağlanabilir.

A6 modülünü bağlama

A6 modülü SIM900'den daha ucuzdur ve Arduino'ya bağlanması çok kolaydır. Modül 5V ile güçlendirilmiştir, bu nedenle bağlantı için ek voltaj düşürücü elemanlara gerek yoktur.

Bağlanmak için bir Arduino kartına (bu durumda Arduino UNO olarak kabul edilir), GSM modülü A6, bağlantı kablolarına ihtiyacınız olacaktır. Bağlantı şeması şekilde gösterilmiştir.

GSM modülünden gelen RX pini Arduino kartındaki TX'e bağlanmalı, TX pini Arduino'daki RX pinine bağlanmalıdır. Modülden topraklama mikrodenetleyicide toprağa bağlanır. GSM modülündeki Vcc pini PWR_KEY'e bağlanmalıdır.

GSM-GPRS kalkanı üzerinden bağlantı

Bağlamadan önce ekran voltajına dikkat etmek önemlidir. Bir arama veya veri gönderme sırasındaki akım 15-2 A değerlerine ulaşabilir, bu nedenle kalkanı doğrudan Arduino'dan beslememelisiniz.

Arduino'ya bağlanmadan önce, GSM-GPRS kalkanına bir SIM kart takmanız gerekir. Ayrıca TX ve RX atlama tellerini şekilde gösterildiği gibi ayarlamanız gerekir.

Bağlantı şu şekilde yapılır - blendajdan gelen ilk kontak (şekilde sarı kablo) Arduino'daki TX'e bağlanmalıdır. İkinci pin (yeşil kablo) Arduino'daki RX'e bağlanır. Kalkan toprağı aruino toprağına bağlanır. Mikrodenetleyici bir USB kablosuyla beslenir.

Kalkan ile Arduino kartı arasındaki bağlantının düzeni şekilde gösterilmiştir.

Çalışmak için GPRS_Shield_Arduino kitaplığını kurmanız gerekir.

Birleştirilmiş devrenin doğruluğunu kontrol etmek için aşağıdakileri yapmanız gerekir: RESET ve GND'yi Arduino'ya bağlayın (bu, verilerin doğrudan blendajdan bilgisayara iletilmesine yol açacaktır), SIM kartı blendajın içine yerleştirin ve kalkanın gücünü açın. Arduino kartı bilgisayara bağlanmalı ve güç düğmesine basılmalıdır. Her şey doğru şekilde bağlanırsa, kırmızı LED yanar ve yeşil yanıp söner.

AT komutları aracılığıyla etkileşimin kısa açıklaması

AT komutları, kısa metin dizilerinden oluşan, modeme özgü komutlar kümesidir. Modemin kendisine verilen komutu tanıması için satırların 'dan başlaması gerekir. Dize, modem komut kipindeyken kabul edilecektir. AT komutları, iletişim yazılımı kullanılarak veya klavyeden manuel olarak gönderilebilir. Hemen hemen tüm komutlar 3 moda bölünebilir - modülün komutu destekleyip desteklemediğini yanıtladığı test modu; okuma - mevcut komut parametrelerini yayınlamak; kayıt - yeni değerler kaydedilecektir.

En çok kullanılan AT komutlarının listesi:

  • AT - modülün doğru şekilde bağlanıp bağlanmadığını kontrol etmek için. Her şey yolundaysa, Tamam döndürür.
  • A / - önceki komutu tekrarlayın.
  • AT + IPR? - bağlantı noktası hızı hakkında bilgi almak. Cevap + IPR olacaktır: 0 Tamam (bu durumda 0 otomatiktir).
  • AT + ICF? - iletim ayarı. Cevap + ICF: bit, parite olacaktır.
  • AT + IFC? - iletim kontrolü. Cevap + IFC olacaktır: modülden terminal, terminalden modül (0 - kontrol yok, 1 - yazılım kontrolü, 2 - donanım kontrolü).
  • AT + GCAP - modülün yeteneklerini gösterir. Örnek yanıt - + GCAP: + FCLASS, + CGSM.
  • AT + GSN - IMEI modülü alınıyor. Örnek cevap 01322600XXXXXXX.
  • + COPS AT? - mevcut operatörleri gösterir.
  • AT + CPAS - modül durumu. Cevap + CPAS: 0. 0 - çalışmaya hazır, 3 - gelen arama, 4 - sesli bağlantı, 2 - bilinmiyor.
  • AT + CCLK? - geçerli saat ve tarih hakkında bilgi.
  • AT + CLIP \u003d 1 - arayan kimliğini etkinleştir / devre dışı bırak. 1 - etkin, 0 - devre dışı.
  • AT + CSCB \u003d 0 - özel SMS mesajları alın. 0 - etkin, 1 - devre dışı.
  • AT + CSCS \u003d "GSM" - SMS mesajlarının kodlanması. Aşağıdaki kodlamalardan birini seçebilirsiniz: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1.
  • AT + CMEE \u003d 0 - hata hakkında bilgi almak.
  • AT + CPIN \u003d XXXX - SIM kartın pin kodunu girin.
  • AT&F - fabrika ayarlarına sıfırlayın.
  • AT + CPOWD \u003d 1 - modülün acil (0) veya normal (1) kapatılması.
  • ATD + 790XXXXXXXX - numarayı arayın + 790XXXXXXXX.
  • ATA - çağrı yanıtı.
  • AT + CMGS \u003d "+ 790XXXXXXXX"\u003e SMS testi - + 790XXXXXXXX numarasına bir SMS mesajı gönderme.

Bu durumda, SIM900 modülü için temel komutlar dikkate alınır. Farklı modüller için komutlar biraz farklılık gösterebilir. Modüle ilişkin veriler, bilgisayara kurulması gereken özel bir program "terminali" aracılığıyla sağlanacaktır. Ayrıca Arduino IDE'deki port monitörü üzerinden modüle komutlar gönderebilirsiniz.

GSM modülüyle çalışmak için çizimler

Örnek olarak SIM900 kullanarak SMS gönderme

Mesaj göndermeden önce modülü yapılandırmanız gerekir. Her şeyden önce, iletilen mesajı metin formatına çevirmeniz gerekir. Bunun için AT + CMGF \u003d 1 komutu vardır. Kodlamayı GSM'ye AT + CSCS \u003d "GSM" komutu ile aktarmak gerekir. Karakterler derleyicinin kolayca anlayabileceği ASCII kodunda temsil edildiğinden, bu kodlama en uygun olanıdır.

Ardından bir SMS mesajı yazmanız gerekir. Bunun için abonenin AT + CMGS \u003d "+ 79XXXXXXXXX" numarası ile bir komut gönderilir, yanıt olarak bir SMS metni yazılması önerilir. Bir mesaj göndermeniz gerekiyor. Tamamlandıktan sonra, Ctrl + Z kombinasyon kodunu göndermeniz gerekir, modül metnin muhatabına gönderilmesine izin verecektir. Mesaj gönderildiğinde OK olarak dönecektir.

Modülle etkileşim, her yeni mesaja atanan dizinlere dayanır. Bu indeks, hangi mesajın silineceğini veya okunacağını belirtmek için kullanılabilir.

SMS alınıyor. SMS mesajlarını okumak için AT + CNMI \u003d 2,2,0,0,0 komutunu kullanın. Modül bir metin mesajı aldığında, + CMTI: "SM", 2 seri portuna gönderecektir (bu durumda, 2 mesajın sıra numarasıdır). Okumak için AT + CMGR \u003d 2 komutunu göndermeniz gerekir.

Bir sesli arama alınıyor. Öncelikle, bir konuşma için modüle bir hoparlör ve mikrofon bağlamanız gerekir. Bir çağrı aldığınızda, çağrının yapıldığı numara gösterilecektir. Çalışmayı gerçekleştirmek için GSM kitaplığını etkinleştirmeniz gerekir:

#Dahil etmek

SIM kart bloke olmuşsa, pin kodunu girmeniz gerekir. Pin kodu gerekmiyorsa bu alan boş bırakılmalıdır.

#define PINNUMBER “”

Setup () 'da, bilgisayara veri aktarımının başlatılması gerçekleştirilmelidir. Sonraki adım, ağ bağlantısının durumunu izlemek için yerel bir değişken oluşturmaktır. Çizim, SIM kart ağa bağlanana kadar çalışmayacaktır.

boolean notConnected \u003d doğru;

GsmAccess.begin () işlevi ağa bağlanmak için kullanılır. Bağlantı kurulduğunda, GSM_READY değeri dönecektir.

vcs.hangCall (); - modemin aramaları almaya hazır olduğunu gösteren bir işlev.

getvoiceCallStatus () - Eskizin durumunu belirler. Biri ararsa RECEIVINGCALL döndürür. Numarayı kaydetmek için retrieveCallingNumber () işlevini kullanın. Çağrı cevaplandığında KONUŞMA geri dönecektir. Taslak daha sonra yeni satırın konuşmayı iptal etmesini bekleyecektir.

GPRS bağlantısı kurun ve uzak sunucuya veri gönderin

Öncelikle, seri bilgi aktarımı sağlamanıza ve GSM modülü ile Arduino mikrodenetleyiciyi bağlamanıza izin veren SoftwareSerial kütüphanesini kurmanız gerekir.

Sunucuya veri göndermek için aşağıdaki komutları göndermeniz gerekir:

AT + SAPBR \u003d 1.1 - Taşıyıcı açma.

Sonraki üç komut, ağ bağlantısı ayarlarının ayarlanmasıyla ilgilidir.

AT + SAPBR \u003d 3,1, \\ ”APN \\”, \\ ”internet.mts.ru \\” - operatör mts, erişim noktası adını seçin.

AT + SAPBR \u003d 3,1, \\ ”KULLANICI \\”, \\ ”mts \\” - mts kullanıcısının seçimi.

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

AT + SAPBR \u003d 1.1 - bağlantı kurulması.

AT + HTTPINIT - http'yi başlatın.

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

AT + HTTPREAD - bir yanıt bekleniyor.

AT + HTTPTERM - http'yi durdurun.

Her şey doğru yapılırsa, bağlantı noktası monitöründe AT komutlarının bulunduğu satırlar görünecektir. Modemle bağlantı yoksa, her seferinde bir hat gösterecektir. GPRS bağlantısı başarıyla kurulmuşsa, modül üzerindeki LED yanıp sönmeye başlayacaktır.