Mündəricat:

Arduino Cellular Shield Tutorial: 9 Addım (Şəkillərlə birlikdə)
Arduino Cellular Shield Tutorial: 9 Addım (Şəkillərlə birlikdə)

Video: Arduino Cellular Shield Tutorial: 9 Addım (Şəkillərlə birlikdə)

Video: Arduino Cellular Shield Tutorial: 9 Addım (Şəkillərlə birlikdə)
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Iyul
Anonim
Arduino Cellular Shield Dərsliyi
Arduino Cellular Shield Dərsliyi

Arduino Cellular Shield, mobil telefon zəngləri etməyə və mətn mesajları göndərməyə imkan verir. Bu qalxanın beyni, əksər standart cib telefonlarının bir çox işini yerinə yetirə bilən güclü bir mobil moduldur SM5100B. Bu qalxan mobil şəbəkəyə qoşulmaq üçün SİM kartdan istifadə etməyi tələb edir. Aşağıdakı dərs, qalxanı işə salmaq, həm mesaj göndərmək, həm də qəbul etmək, həm də telefon danışıqları üçün çılpaq sümüklər dərsidir. Modulun funksionallığı haqqında daha çox məlumat əldə etmək üçün Sparkfun məhsul səhifəsindəki məlumat cədvəllərinə baxdığınızdan əmin olun.

Addım 1: Şeylər Alın

Get Əşyalar Al
Get Əşyalar Al

Sizə lazım olacaq:

(x1) Hüceyrə qalxanı (x1) İstifadə edilə bilən Arduino başlıqları (x1) Dörd bantlı anten (x1) Arduino Uno

(Qeyd edək ki, bu səhifədəki bəzi bağlantılar ortaq bağlantılardır. Bu sizin üçün məhsulun dəyərini dəyişmir. Əldə etdiyim gəlirləri yeni layihələr etmək üçün yenidən yatırıram. Alternativ tədarükçülər üçün hər hansı bir təklif istəyirsinizsə, mənə icazə verin. bil.)

Addım 2: Lehim Başlıqları

Lehim başlıqları
Lehim başlıqları
Lehim başlıqları
Lehim başlıqları
Lehim başlıqları
Lehim başlıqları

Başlıqları qalxana daxil edin və yerinə lehimləyin.

Addım 3: Daxil edin

Daxil edin
Daxil edin
Daxil edin
Daxil edin

Başlıq sancaqlarını Arduino yuvalarına daxil edin.

Addım 4: Yenidən satın

Yenidən satan
Yenidən satan

Anten kabelinin SM5100B moduluna qoşulması ümumiyyətlə çox yaxşı olmur. Bağlantını təmin etmək üçün kabelin hər bir moduluna yenidən lehimləyin.

Addım 5: Antenanı bağlayın

Antenanı bağlayın
Antenanı bağlayın
Antenanı bağlayın
Antenanı bağlayın

Anteni anten kabelinə bağlayın.

Addım 6: SİM kartı daxil edin

SİM kartı daxil edin
SİM kartı daxil edin
SİM kartı daxil edin
SİM kartı daxil edin
SİM kartı daxil edin
SİM kartı daxil edin
SİM kartı daxil edin
SİM kartı daxil edin

SİM kartı etibarlı şəkildə SIM kart yuvasına daxil edin.

Addım 7: Başlayın

Başlatmaq
Başlatmaq

Arduinoda aşağıdakı kodu işlədin:

/*

SparkFun Cellular Shield - Nümunə Sketch SparkFun Electronics Ryan Owens 3 tərəfindən yazılmışdır 3/Təsvir: Bu eskiz, bir Arduino Duemillanove ilə SparkFun Electronics -dən Hüceyrə Qalxanı ilə əlaqə qurmaq üçün yazılmışdır. Hüceyrə qalxanı burada əldə edilə bilər: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Bu eskizdə serial əmrləri terminal proqramından SM5100B mobil moduluna ötürülür; və mobil moduldan gələn cavablar terminalda yerləşdirilir. Ətraflı məlumatı eskiz şərhlərində tapa bilərsiniz. Cihazı istifadə etmək üçün lövhədəki SİM kart yuvasına aktivləşdirilmiş SİM kart daxil edilməlidir! Bu eskiz, Arduinianalı Mikal Hart tərəfindən yazılmış NewSoftSerial kitabxanasından istifadə edir. Kitabxana bu URL -dən yüklənə bilər: https://arduiniana.org/libraries/NewSoftSerial/ Bu kod Creative Commons Attribution Lisenziyası altında verilir. Ətraflı məlumatı burada tapa bilərsiniz: https://creativecommons.org/licenses/by/3.0/ (Kodumuzdan sərbəst istifadə edin! Zəhmət olmasa bizə lazım olan yerdə kredit verməyi unutmayın. Təşəkkürlər!) */#İnclude // NewSoftSerial -ı daxil edin kitabxana, mobil modula seriyalı əmrlər göndərir. #include // simli manipulyasiyalar üçün istifadə olunur char incoming_char = 0; // Serial Limanından gələn xarakteri saxlayacaq. SoftwareSerial hüceyrə (2, 3); // 'Saxta' serial portu yaradın. Pin 2, Rx pimi, pin 3 Tx pinidir. void setup () {// Ünsiyyət üçün serial portlarını işə salın. Serial.begin (9600); cell.begin (9600); //Gəlin başlayaq! Serial.println ("SM5100B Əlaqəsinə Başlanır …"); } void loop () {// Bir xarakter hüceyrə modulundan gəlirsə… if (cell.available ()> 0) {incoming_char = cell.read (); // Hüceyrə serial portundan xarakter alın. Serial.print (daxil olan_çarx); // Gələn simvolu terminala yazdırın. } // Bir xarakter terminaldan Arduinoya gəlirsə… if (Serial.available ()> 0) {incoming_char = Serial.read (); // Terminaldan gələn simvolu alın, əgər (incoming_char == '~') // Əgər tilde olarsa… incoming_char = 0x0D; //… başqa bir vaqona qayıdışa çevirmək əgər (incoming_char == '^') // Əgər bu yuxarı bir karetdirsə… incoming_char = 0x1A; //… ctrl-Z-ə çevirmək cell.print (incoming_char); // Xarakteri mobil modula göndərin. Serial.print (daxil olan_çarx); // Terminala yankı verin}} / * AT Komanda Dəsti üçün SM5100B Quck Referansı * Başqa cür qeyd edilmədiyi təqdirdə AT əmrləri 'enter' düyməsinə basmaqla bitər. 1.) Ölkəniz üçün uyğun GSM bandının seçildiyinə əmin olun. ABŞ üçün bant 7 -yə təyin olunmalıdır. Bandı təyin etmək üçün bu əmri istifadə edin: AT+SBAND = 7 2.) Arduino -nu qalxan quraşdırıldıqdan sonra modulun SİM kartı oxuduğunu və tanıdığını yoxlayın. Arduino portu və 9600 buad üçün açılan və açılan bir terimal pəncərəsi ilə Arduino'yu açın. Başlanğıc ardıcıllığı bu kimi görünməlidir: SM5100B Əlaqəsinə Başlama… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Modulla ünsiyyət ilk sətir göstərildikdən sonra başlayır. İkinci əlaqə xətti +SIND: 10, modulun bir SİM kartı görə biləcəyini bizə bildirir. SİM kart aşkar edilərsə, hər digər sahə 1; SİM kart aşkar edilmədikdə, hər bir sahə 0 -dır. 3.) Əmr göndərməyə başlamazdan əvvəl şəbəkə bağlantısı gözləyin. +SIND: 10 cavabından sonra modul avtomatik olaraq bir şəbəkəyə qoşulmağa çalışacaq. Aşağıdakı cavabları alana qədər gözləyin: +SIND: 11 +SIND: 3 +SIND: 4 Hüceyrə modulundan +SIND cavabı modulların vəziyyətini bildirir. Cavab mənalarının qısa bir şəkildə işlənməsi: 0 SİM kart çıxarıldı 1 SİM kart daxil edildi 2 Zəng melodiyası 3 AT modulu qismən hazırdır 4 AT modulu tamamilə hazırdır 5 buraxılmış zənglərin kimliyi 6 ID = 7 Şəbəkə xidməti olan buraxılmış zəng təcili zəng üçün əlçatandır 8 Şəbəkə itirildi 9 Səs AÇIQ 10 Hər bir telefon kitabçasının vəziyyətini ibarədən sonra göstər 11 Şəbəkəyə qeydiyyat Şəbəkədə qeydiyyatdan keçdikdən sonra qarşılıqlı əlaqəyə başlaya bilərsiniz. İşə başlamaq üçün bir neçə sadə və faydalı əmr var: Zəng etmək üçün: AT əmri-ATDxxxyyyzzzz Telefon nömrəsi: (xxx) yyy-zzz cəhd edin ---- cell.print ("ATDxxxyyyzzzz"); Telefonla zəng etsəniz, mikrofonu və hoparlörü qalxana bağlamaq üçün cihazların məlumat cədvəlinə istinad etdiyinizə əmin olun. Bir txt mesajı göndərmək üçün: AT əmri - AT+CMGF = 1 Bu əmr mətn mesajı rejimini 'mətn' olaraq təyin edir. AT əmri = AT+CMGS = "xxxyyyzzzz" (vaqon dönüşü) 'Göndəriləcək mətn' (CTRL+Z) Bu əmri təsvir etmək bir az qarışıqdır. Telefon nömrəsi (xxx) yyy-zzzz formatında ikiqat kotirovkaların içərisindədir. Təklifləri bağladıqdan sonra 'enter' düyməsini basın. Sonra göndəriləcək mətni daxil edin. CTRL+Z göndərərək AT əmrini bitirin. Bu xarakter Arduino terminalından göndərilə bilməz. Hyperterminal, Tera Term, Bray Terminal və ya X-CTU kimi alternativ bir terminal proqramı istifadə edin. SM5100B modulu bundan daha çox şey edə bilər! Modul haqqında daha çox məlumat əldə etmək üçün məhsul səhifəsindəki məlumat cədvəllərinə baxın.*/Terminaldakı serial portunu açın. Mac -da bu yazmaqla yerinə yetirilir: screen /dev/tty.usbmodemfa131 9600 (tty.usbmodemfa131 -i Arduino -nun seriya ünvanı ilə əvəz edin) Aşağıdakı ardıcıllığın geri dönməsini gözləyin: SM5100B Əlaqəsinə Başlanğıc… +SIND: 3 +SIND: 4 +SIND: 11 (Bu ardıcıllıq geri qaytarılmırsa, yuxarıdakı kodun altındakı səhv kodlarını yoxlayın və uyğun bir şəkildə düzəldin. Şimali Amerika istifadəsi üçün modulu təyin etməyiniz lazım ola bilər - aşağıya baxın - şəbəkəyə qeydiyyatdan keçməzdən əvvəl (yəni. +SIND 11)) Aşağıdakı əmrləri serial limanına göndərin: Bunu Şimali Amerika istifadəsi üçün göndərin: AT+SBAND = 7 Cari vaxtı təyin edin - yy/mm/gg: AT+CCLK = "13/05/15, 11: 02:00 "Test zəngini göndər: ATD4155551212

Addım 8: Mətn Mesajları

Mətn Mesajları
Mətn Mesajları

Arduino kitabxananıza SerialGSM yükləyin və quraşdırın.

Mətn mesajı göndərmək üçün Tronixstuff mobil modulu təlimatını ziyarət edin və 26.3 nümunə kodundan istifadə edin:

Bir mətn almaq üçün nümunə kodu işə salmaq istəyirsinizsə, 8 saylı pinə bir LED bağlayın və yerə 220 ohm müqavimət göstərən bir sıra qoyun.

Mətn mesajı göndərmək üçün Tronixstuff mobil modulu təlimatına daxil olun və 26.5 nümunə kodundan istifadə edin:

Aşağıdakı əmrlərdən birini mobil modulunuza yazın:

// LED -i #a1 -ə yandırır

// LED -i söndürür #a0

Addım 9: Səs

Səs
Səs
Səs
Səs
Səs
Səs

Torpaqlı səs kabelindən istifadə edərək mikrofonu və hoparlörü qalxana qoşun. Orta siqnal teli audio plus terminallarına, ekranlama isə qalxanın müvafiq mənfi terminallarına getməlidir. Bu kabellər eyni şəkildə mikrofon və dinamik tərəfinə bağlanmalıdır.

Səsli zəngə başlamaq üçün aşağıdakı kodu yükləyin:

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

// Zəng vur // // //********************************************************************************** #include #define BUFFSIZ 90 //Set up buffer array char at_buffer[BUFFSIZ]; char buffidx; //Network state variables int network_registered; int network_AT_ready; //Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Will hold the incoming character from the Serial Port. char incoming_char=0; //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin. SoftwareSerial cell(2, 3); void setup() { //Initialize Arduino serial port for debugging. Serial.begin(9600); //Initialize virtual serial port to talk to Phone. cell.begin(9600); //Hello World. Serial.println("Starting SM5100B Communication…"); delay(1000); //Set initial network state network_registered = 0; network_AT_ready = 0; } //Read AT strings from the cellular shield void readATString(void) { char c; buffidx= 0; // start at begninning for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; return; } if (c == '\n') { continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; return; } at_buffer[buffidx++]= c; } } } //Process the AT strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("network Network Not Available"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("network Registered"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* If called for the first time, loop until network and AT is ready */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } //LET'S MAKE A PHONE CALL! if(firstTimeInOtherLoop == 1){ //Change the 10 digit phone number to whatever you wish cell.println("ATD4155551212"); firstTimeInOtherLoop = 0; } }

To receive a voice call upload the following code

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

// ANSWER A CALL // // BUFFERING CODE BASED UPON: // // // ******************************************** ********************************** #include #define BUFFSIZ 90 // Bufer serialı char at_buffer qurun [BUFFSIZ]; char buffidx; // Şəbəkə vəziyyəti dəyişənləri int network_registered; int network_AT_ready; // Kod vəziyyəti dəyişənləri int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Serial Limanından gələn xarakteri saxlayacaq. char incoming_char = 0; // 'Saxta' serial portu yaradın. Pin 2, Rx pimi, pin 3 Tx pinidir. SoftwareSerial hüceyrə (2, 3); void setup () {// Arduino serial portunu ayıklama üçün başladın. Serial.begin (9600); // Telefonla danışmaq üçün virtual serial portunu işə salın. cell.begin (9600); // Salam Dünya. Serial.println ("SM5100B Əlaqəsinə Başlanır …"); gecikmə (1000); // İlkin şəbəkə vəziyyətini təyin edin network_registered = 0; network_AT_ready = 0; } // Hüceyrə qalxanından AT sətirlərini oxuyun void readATString (void) {char c; buffidx = 0; // (x = 0; x 0) {c = cell.read (); əgər (c == -1) {at_buffer [buffidx] = '\ 0'; qayıtmaq; } əgər (c == '\ n') {davam; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; qayıtmaq; } at_buffer [buffidx ++] = c; }}} // AT strings void ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("şəbəkə şəbəkəsi mövcud deyil"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("Şəbəkə Qeydiyyatı"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("Hazır AT şəbəkəsi"); }} void loop () { / * İlk dəfə çağırılırsa, şəbəkə və AT hazır olana qədər döndürün * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Daxil olan zəngə baxın, əgər (strstr (at_buffer, "+CPAS: 3")! = 0) {// Telefona cavab verin.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Şəkil
Şəkil

Bunu faydalı, əyləncəli və ya əyləncəli gördünüzmü? Ən son layihələrimi görmək üçün @madeineuphoria izləyin.

Tövsiyə: