İçindekiler:
- 1. Adım: Git Eşyaları Al
- Adım 2: Lehim Başlıkları
- 3. Adım: Ekle
- 4. Adım: Çözümleyici
- Adım 5: Anteni Takın
- 6. Adım: SIM Kartı Takın
- 7. Adım: Başlatın
- 8. Adım: Kısa Mesajlar
- 9. Adım: Ses
Video: Arduino Hücresel Kalkan Eğitimi: 9 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
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
İ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ı
Başlıkları kalkanın içine yerleştirin ve yerlerine lehimleyin.
3. Adım: Ekle
Başlık pinlerini Arduino üzerindeki soketlere takın.
4. Adım: Çözümleyici
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 anten kablosuna geçirin.
6. Adım: SIM Kartı Takın
SIM kartı SIM kart yuvasına sağlam bir şekilde takın.
7. Adım: Başlatın
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
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
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; } } }
Bunu faydalı, eğlenceli veya eğlenceli buldunuz mu? En son projelerimi görmek için @madeineuphoria'yı takip edin.
Önerilen:
ESP8266'yı Kullanan WiFi RGB Hücresel Lamba: 6 Adım
ESP8266'yı Kullanan WiFi RGB Hücresel Lamba: Bu yazıda, WiFi üzerinden kontrol edilebilen güzel bir RGB hücresel lamba oluşturuyoruz. Kontrol sayfası, renkleri hızlı bir şekilde değiştirmenize olanak tanıyan bir renk tekerleğinden oluşur ve ayrıca toplamda birden fazla renk oluşturmak için doğrudan RGB değerlerini belirtebilirsiniz
Eski Rus VFD Tüplerinden Arduino İçin Kalkan: Saat, Termometre, Volt Metre: 21 Adım (Resimli)
Eski Rus VFD Tüplerinden Arduino İçin Kalkan: Saat, Termometre, Volt Metre…: Bu projenin tamamlanması neredeyse yarım yıl sürdü. Bu projede ne kadar emek harcandığını anlatamam. Bu projeyi tek başıma yapmak beni sonsuza kadar götürürdü, bu yüzden arkadaşlarımdan biraz yardım aldım. Burada çok uzun bir talimatta derlenmiş çalışmamızı görebilirsiniz
LED Işıklı Kalkan Modeli: 8 Adım
LED Işıklı Kalkan Modeli: Bu proje, LED ışıkları parlatan bir kalkan modelidir. Bu projeyi yaptım çünkü bu kalkanın tasarımını gerçekten beğendim ve bu modeli projem için yapmanın harika olduğunu düşündüm. Bu kalkan, League O adlı bir oyunda bir karakterden ilham aldı
Her Litre Önemlidir! Arduino Su Dozlayıcı "Kalkan": 7 Adım (Resimli)
Her Litre Önemlidir! Arduino Su Dozlayıcı "Kalkan": Merhaba! Bu talimatla, istediğiniz miktarda su dozlayabilirsiniz. Sistem mL ve L cinsinden çalışabilir. Bir Arduino UNO, su miktarını ölçmek için bir akış ölçer, durumu göstermek için bir LCD, ayarları değiştirmek için butonlar ve ac için bir röle kullanacağız
ILI9341 Wemos D1 Mini için Dokunmatik Kalkan: 4 Adım
ILI9341 Wemos D1 Mini için Dokunmatik Kalkan: Merhaba Yapıcılar!Wemos D1 mini serisi için bir ILI9341 kalkanı yaptım. Bu kalkanı kullanarak 2.8quot'un tüm fonksiyonlarını kullanabilirim; TFT. Bir ekran olarak çalışır (elbette), ayrıca dokunmatik işlevi ve SD soketini de kullanabilirim. Bu talimat