İçindekiler:

Arduino Hücresel Kalkan Eğitimi: 9 Adım (Resimlerle)
Arduino Hücresel Kalkan Eğitimi: 9 Adım (Resimlerle)

Video: Arduino Hücresel Kalkan Eğitimi: 9 Adım (Resimlerle)

Video: Arduino Hücresel Kalkan Eğitimi: 9 Adım (Resimlerle)
Video: 3 GÜNDE NASIL KODLAMA ÖĞRENİLİR? Kendi Oyununu ve Animasyonunu Yap-3. 2024, Temmuz
Anonim
Arduino Hücresel Kalkan Eğitimi
Arduino Hücresel Kalkan Eğitimi

Arduino Hücresel Kalkanı, cep telefonu görüşmeleri yapmanızı ve metin mesajları göndermenizi sağlar. Bu kalkanın beyni, çoğu standart cep telefonunun birçok görevini yerine getirebilen sağlam bir hücresel modül olan SM5100B'dir. Bu kalkan, hücresel bir ağa bağlanmak için bir SIM kartın kullanılmasını gerektirir. Aşağıdaki öğretici, kalkanı başlatmak ve hem metin mesajları gönderip almak hem de telefon görüşmeleri yapmak için basit bir eğitimdir. Modülün işlevselliği hakkında daha fazla bilgi edinmek için Sparkfun'un ürün sayfasındaki veri sayfalarını kontrol ettiğinizden emin olun.

1. Adım: Git Eşyaları Al

Git Eşyalarını Al
Git Eşyalarını Al

İhtiyacın olacak:

(x1) Hücresel kalkan (x1) İstiflenebilir Arduino başlıkları (x1) Dört bantlı anten (x1) Arduino Uno

(Bu sayfadaki bazı bağlantıların bağlı kuruluş bağlantıları olduğunu unutmayın. Bu, ürünün maliyetini sizin için değiştirmez. Aldığım geliri yeni projeler yapmak için yeniden yatırırım. Alternatif tedarikçiler için herhangi bir öneriniz varsa, lütfen bana izin verin. bilmek.)

Adım 2: Lehim Başlıkları

Lehim Başlıkları
Lehim Başlıkları
Lehim Başlıkları
Lehim Başlıkları
Lehim Başlıkları
Lehim Başlıkları

Başlıkları kalkanın içine yerleştirin ve yerlerine lehimleyin.

3. Adım: Ekle

Sokmak
Sokmak
Sokmak
Sokmak

Başlık pinlerini Arduino üzerindeki soketlere takın.

4. Adım: Çözümleyici

yeniden lehimleyici
yeniden lehimleyici

Anten kablosunun SM5100B modülüne bağlantısı genellikle çok iyi değildir. Bağlantıyı sağlamak için kablo bağlantılarının her birini modüle yeniden lehimleyin.

Adım 5: Anteni Takın

Anteni Takın
Anteni Takın
Anteni Takın
Anteni Takın

Anteni anten kablosuna geçirin.

6. Adım: SIM Kartı Takın

SIM Kartı Takın
SIM Kartı Takın
SIM Kartı Takın
SIM Kartı Takın
SIM Kartı Takın
SIM Kartı Takın
SIM Kartı Takın
SIM Kartı Takın

SIM kartı SIM kart yuvasına sağlam bir şekilde takın.

7. Adım: Başlatın

başlat
başlat

Arduino'da aşağıdaki kodu çalıştırın:

/*

SparkFun Hücresel Kalkan - Geçişli Örnek Taslak SparkFun Electronics Yazan Ryan Owens 3/Açıklama: Bu taslak, bir Arduino Duemillanove ile SparkFun Electronics'in bir Hücresel Kalkanı arasında arayüz oluşturmak için yazılmıştır. Hücresel kalkan buradan satın alınabilir: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Bu çizimde seri komutlar bir terminal programından SM5100B hücresel modülüne geçirilir; ve hücresel modülden gelen yanıtlar terminalde yayınlanır. Daha fazla bilgi eskiz yorumlarında bulunur. Cihazı kullanabilmek için, karttaki SIM kart yuvasına aktif bir SIM kart takılmalıdır! Bu eskiz, Arduiniana'lı Mikal Hart tarafından yazılan NewSoftSerial kitaplığını kullanır. Kitaplık şu URL'den indirilebilir: https://arduiniana.org/libraries/NewSoftSerial/ Bu kod, Creative Commons Atıf Lisansı altında sağlanır. Daha fazla bilgiyi burada bulabilirsiniz: https://creativecommons.org/licenses/by/3.0/ (Kodumuzu özgürce kullanın! Lütfen gerektiği yerde bize kredi vermeyi unutmayın. Teşekkürler!) */ #include //NewSoftSerial'ı dahil edin Hücresel modüle seri komutlar göndermek için kütüphane. #include //Dize işlemleri için kullanılır char incoming_char=0; //Seri Porttan gelen karakteri tutacaktır. YazılımSeri hücre(2, 3); //'Sahte' bir seri bağlantı noktası oluşturun. Pin 2 Rx pinidir, pin 3 Tx pinidir. void setup() { //İletişim için seri portları başlat. Seri.başla(9600); cell.begin(9600); //Başlayalım! Serial.println("SM5100B İletişimi Başlatılıyor…"); } void loop() { //Hücresel modülden bir karakter gelirse… if(cell.available() >0) { incoming_char=cell.read(); // Hücresel seri bağlantı noktasından karakteri alın. Serial.print(gelen_char); //Gelen karakteri terminale yazdırın. } //Terminalden Arduino'ya bir karakter geliyorsa… if(Serial.available() > 0) { incoming_char = Serial.read(); // Terminalden gelen karakteri alın if(incoming_char == '~') // Eğer bir tilde ise… incoming_char = 0x0D; // …satırbaşına çevir else if(incoming_char == '^') // Eğer bir yukarı düzeltme işareti ise… incoming_char = 0x1A; // …ctrl-Z'ye çevir cell.print(incoming_char); // Karakteri hücresel modüle gönder. Serial.print(gelen_char); // Terminale yankı } } /* AT Komut Seti için SM5100B Hızlı Referans *Aksi belirtilmedikçe AT komutları 'enter' tuşuna basılarak sonlandırılır. 1.) Ülkeniz için uygun GSM bandının seçildiğinden emin olun. ABD için bant 7'ye ayarlanmalıdır. Bandı ayarlamak için şu komutu kullanın: AT+SBAND=7 2.) Shield takılıyken Arduino'yu açtıktan sonra, modülün SIM kartı okuduğunu ve tanıdığını doğrulayın. Bir terim penceresi açık ve Arduino portuna ve 9600 buad'a ayarlıyken, Arduino'yu açın. Başlatma sırası şöyle görünmelidir: SM5100B İletişimi Başlatılıyor… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Modül ile iletişim ilk satır görüntülendikten sonra başlar. İkinci iletişim hattı, +SIND: 10, modülün bir SIM kartı görüp görmediğini söyler. SIM kart algılanırsa diğer her alan 1'dir; SIM kart algılanmazsa diğer her alan 0'dır. 3.) Komut göndermeye başlamadan önce ağ bağlantısının kurulmasını bekleyin. +SIND: 10 yanıtından sonra modül otomatik olarak bir ağa bağlanmayı denemeye başlayacaktır. Aşağıdaki yanıtları alana kadar bekleyin: +SIND: 11 +SIND: 3 +SIND: 4 Hücresel modülden gelen +SIND yanıtı, modüllerin durumunu bildirir. İşte yanıt anlamlarının hızlı bir özeti: 0 SIM kart çıkarıldı 1 SIM kart takıldı 2 Zil melodisi 3 AT modülü kısmen hazır 4 AT modülü tamamen hazır 5 bırakılan çağrıların kimliği 6 Kimliği= 7 olan serbest bırakılan çağrı Şebeke servisi acil arama için uygun 8 Şebeke kayboldu 9 Ses AÇIK 10 Başlangıç cümlesinden sonra her telefon rehberinin durumunu göster 11 Şebekeye kayıtlı Şebekeye kaydolduktan sonra etkileşime başlayabilirsiniz. İşte başlamak için birkaç basit ve kullanışlı komut: Bir arama yapmak için: AT komutu - ATDxxxyyyzzzz Biçimli telefon numarası: (xxx)yyy-zzz try ---- cell.print("ATDxxxyyyzzzz"); Bir telefon görüşmesi yaparsanız, kalkana bir mikrofon ve hoparlör bağlamak için cihazların veri sayfasına başvurduğunuzdan emin olun. Bir txt mesajı göndermek için: AT komutu - AT+CMGF=1 Bu komut, metin mesajı modunu 'metin' olarak ayarlar. AT komutu = AT+CMGS="xxxyyyzzzz"(satır başı)'Gönderilecek metin'(CTRL+Z) Bu komutu açıklamak biraz kafa karıştırıcı. (xxx)yyy-zzzz biçimindeki telefon numarası çift tırnak içine alınır. Alıntıları kapattıktan sonra 'enter' tuşuna basın. Ardından gönderilecek metni girin. AT komutunu CTRL+Z göndererek sonlandırın. Bu karakter Arduino'nun terminalinden gönderilemez. Hyperterminal, Tera Term, Bray Terminal veya X-CTU gibi alternatif bir terminal programı kullanın. SM5100B modülü bundan çok daha fazlasını yapabilir! Modül hakkında daha fazla bilgi edinmek için ürün sayfasındaki veri sayfalarına bakın.*/Terminaldeki seri bağlantı noktasını açın. Mac'te bu, şunu yazarak gerçekleştirilir: screen /dev/tty.usbmodemfa131 9600 (tty.usbmodemfa131'i Arduino'nuzun seri adresiyle değiştirin) Aşağıdaki sıranın döndürülmesini bekleyin: SM5100B İletişimi Başlatılıyor… +SIND: 3 +SIND: 4 +SIND: 11 (Bu sıra döndürülmezse, yukarıdaki kodun altında listelenen hata kodlarını kontrol edin ve uygun şekilde hata ayıklayın. Modülü, ağa kaydolmadan önce Kuzey Amerika kullanımı için ayarlamanız (aşağıya bakın) gerekebilir (örn. +SIND 11)) Aşağıdaki komutları seri bağlantı noktasına gönderin: Bunu Kuzey Amerika kullanımı için gönderin: AT+SBAND=7 Geçerli saati ayarlayın - yy/aa/gg: AT+CCLK="13/05/15, 11: 02:00" Test çağrısı gönder: ATD4155551212

8. Adım: Kısa Mesajlar

Metin mesajları
Metin mesajları

Arduino kitaplığınıza SerialGSM'yi indirin ve kurun.

Bir metin mesajı göndermek için Tronixstuff hücresel modül eğitimini ziyaret edin ve örnek kod 26.3'ü kullanın:https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

Bir metin almak için örnek kodu çalıştırmak isterseniz, pin 8'e bir LED bağlayın ve 220 ohm'luk bir dirençle toprağa seri bağlayın.

Bir metin mesajı göndermek için Tronixstuff hücresel modül eğitimini ziyaret edin ve 26.5 örnek kodunu kullanın:https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

Hücresel modülünüze aşağıdaki komutlardan birini kısa mesaj olarak gönderin:

//LED'i #a1'de açar

//LED'i kapatır #a0

9. Adım: Ses

Ses
Ses
Ses
Ses
Ses
Ses

Topraklanmış ses kablosu kullanarak koruyucuya bir mikrofon ve hoparlör bağlayın. Merkez sinyal kablosu ses artı terminallerine gitmeli ve ekranlama, ekrandaki ilgili negatif terminallere gitmelidir. Bu kablolar mikrofon ve hoparlör tarafına benzer şekilde bağlanmalıdır.

Bir sesli aramayı başlatmak için aşağıdaki kodu yükleyin:

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

// BİR ARAMA YAPIN // // BUFFER KODU BAZLI: // // //********************************************************************************** #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 //Tampon dizisi char at_buffer'ı ayarla [BUFFSIZ]; karakter buffidx; //Ağ durum değişkenleri int network_registered; int network_AT_ready; //kod durum değişkenleri int firstTimeInLoop = 1; int ilkTimeInOtherLoop = 1; int x; //Seri Porttan gelen karakteri tutacaktır. char incoming_char=0; //'Sahte' bir seri bağlantı noktası oluşturun. Pin 2 Rx pinidir, pin 3 Tx pinidir. YazılımSeri hücre(2, 3); void setup() { // Hata ayıklama için Arduino seri portunu başlat. Seri.başla(9600); //Telefonla konuşmak için sanal seri bağlantı noktasını başlat. cell.begin(9600); //Selam Dünya. Serial.println("SM5100B İletişimi Başlatılıyor…"); gecikme(1000); //İlk ağ durumunu ayarla network_registered = 0; network_AT_ready = 0; } //Hücresel kalkandan AT dizelerini oku void readATString(void) { char c; buffidx= 0; // (x = 0; x 0) için başlangıçtan başlayın { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; dönüş; } if (c == '\n') { devam et; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; dönüş; } at_buffer[buffidx++]= c; } } } //AT dizelerini işleyin void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("ağ Ağı Kullanılamıyor"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("ağ Kayıtlı"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("ağ HAZIR"); } } void loop() { /* İlk kez çağrıldıysa, ağ ve AT hazır olana kadar döngü */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } if(firstTimeInOtherLoop == 1){ //Gelen aramayı ara if(strstr(at_buffer, "+CPAS: 3") != 0) { //Telefona cevap ver cell.println("ATA"); firstTimeInOtherLoop = 0; } } }

resim
resim

Bunu faydalı, eğlenceli veya eğlenceli buldunuz mu? En son projelerimi görmek için @madeineuphoria'yı takip edin.

Önerilen: