Eğitimler
MKRGSMExamplesMakeVoiceCall
Gerekli Donanım
- Arduino MKR GSM 1400
- anten
- SIM kart
Devre
Kod
İlk olarak, MKRGSM kütüphanesini içe aktarın
#include <MKRGSM.h>
SIM kartların işlevlerinin kilidini açan bir PIN numarası olabilir. SIM'inizin PIN kodunu tanımlayın. SIM'inizde PIN yoksa boş bırakabilirsiniz:
#define PINNUMBER ""
Kullanacağınız sınıfların örneklerini başlatın. Hem GSM hem de GSMVoiceCall sınıfına ihtiyacınız olacak.
GSMVoiceCall vcs;
Aramak istediğiniz telefon numarasını saklamak için bazı değişkenler oluşturun:
char charbuffer [ 20 ] ;
setup
, bilgisayara seri bir bağlantı açın. Bunu Arduino ya bir telefon numarası göndermek için kullanacaksınız. Bağlantıyı açtıktan sonra, Seri Monitöre çizimin başladığını belirten bir mesaj gönderin.
Seri . başlar ( 9600 ) ;
Seri . println ( "Sesli Arama Yap" ) ;
Bağlantı durumunu izlemek için yerel bir değişken oluşturun. SIM'in ağa bağlanmasına kadar çizimin başlamasını önlemek için bunu kullanırsınız:
gsmAccess.begin()
çağırarak ağa bağlanın. SIM kartın PIN kodunu argüman olarak alır. Bunu bir while()
döngüsünün içine yerleştirerek, bağlantının durumunu sürekli olarak kontrol edebilirsiniz. Modem bağlandığında, gsmAccess()
GSM_READY
değerini döndürür. notConnected
değişkenini true
veya false
olarak ayarlamak için notConnected
bayrak olarak kullanın. Bağlandıktan sonra, setup
geri kalanı çalışır.
{
eğer ( gsmAccess. başlar ( PINNUMBER ) == GSM_READY )
notConnected = yanlış ;
Başka
{
Seri . println ( "Bağlı değil" ) ;
gecikme ( 1000 ) ;
}
}
Seri monitöre bazı bilgilerle setup
tamamlayın.
Seri . println ( "Aranacak telefon numarasını girin." ) ;
}
loop
, seri monitörden gelen baytları kabul eder ve sesli aramanızı bağlar.
İlk olarak, okunmayı bekleyen herhangi bir bilgi olup olmadığını görmek için seri arabelleği kontrol edin. Varsa, yerel bir değişkende saklayın:
{
(Seri. mevcuttur ()> 0) ise
{
char inChar = Seri . read ( ) ;
Arabellek yeni satır karakteri içeriyorsa, girilen numaranın 20 basamaktan kısa olup olmadığını kontrol edin (teorik olarak, bundan daha fazla basamaklı bir numarayı asla arayamazsınız).
{
eğer ( remoteNumber. uzunluk ( ) < 20 )
{
Seri monitöre aradığınız numarayı yazdırın.
Seri . println ( remoteNumber ) ;
Seri . println ( ) ;
Aranacak numara remoteNumber
adlı remoteNumber
. voiceCall()
işlevi bir char
dizisi gerektirir. charbuffer
adlı diziye charbuffer
.
remoteNumber.toCharArray(charbuffer, 20);
Aramayı yapmak için vcs.voiceCall()
kullanarak ulaşmak istediğiniz numarayı vcs.voiceCall()
. voiceCall()
çağrının durumunu döndürür; a 1
bağlı olduğunu gösterir. Bağlantının durumunu getvoiceCallStatus()
ile kontrol edebilirsiniz.
Aramanızın bağlantısını kesmek için hangCall()
işlevini başlatmak üzere yeni bir satır karakteri gönderin.
{
Seri . println ( "Çağrı Kuruldu. Sona kadar satır girin" ) ;
while ( Serial . read ( ) ! = ' \ n ' && ( vcs. getvoiceCallStatus ( ) == KONUŞMA ) ) ;
vcs. hangCall ( ) ;
}
Çağrı tamamlandıktan sonra, telefon numarasını saklayan değişkeni temizleyin:
remoteNumber = "" ;
Seri . println ( "Aranacak telefon numarasını girin." ) ;
}
Seri monitöre girdiğiniz sayı 20 basamaktan uzunsa, remoteNumber
Dizesini temizleyin ve yeniden başlayın:
{
Seri . println ( "Bir telefon numarası için çok uzun. Unutuyorum" ) ;
remoteNumber = "" ;
}
}
Seri monitörden bilgi okurken, gelen karakter yeni satır veya satır başı değilse, remoteNumber
ekleyin ve loop
kapatın.
{
// gönderilecek mesaja en son karakteri ekleyin:
eğer ( inChar ! = ' \ r ' )
remoteNumber + = inChar ;
}
}
}
Kodunuz yüklendikten sonra seri monitörü açın. "Aramak için telefon numarasını girin" mesajını gördüğünüzde, bir telefon numarası yazın ve "geri dön" tuşuna basın. Seri monitörün yalnızca dönüşte yeni satır karakteri gönderecek şekilde ayarlandığından emin olun.
Çizimin tamamı aşağıdadır.
Sesli Arama Yap
Bu çizim, MKR GSM 1400 kartı için sesli arama yapar.
seri monitörden girdiğiniz bir uzak telefon numarası.
Çalıştırmak için seri monitörü açın ve
HAZIR mesajına bir telefon numarası yazın. Seri monitörün
return tuşuna bastığınızda yeni satırsonu gönderecek şekilde ayarlanmıştır.
Devre:
* MKR GSM 1400 kartı
* Anten
* Sesli arama gönderebilen SIM kart
Mart 2012'de oluşturuldu
ile Javier Zorzano
* /
// kütüphaneler
#include <MKRGSM.h>
#include "arduino_secrets.h"
// Lütfen hassas verilerinizi Gizli sekmesine veya arduino_secrets.h girin
// PIN numarası
const char PINNUMBER [ ] = SECRET_PINNUMBER ;
// kütüphane örneğini başlat
GSM gsmAccess ; // hata ayıklama için bir 'true' parametresi dahil et
GSMVoiceCall vcs ;
String remoteNumber = "" ; // arayacağınız numara
char charbuffer [ 20 ] ;
void setup ( ) {
// seri iletişimi başlatın ve portun açılmasını bekleyin:
Seri . başlar ( 9600 ) ;
while ( ! Seri ) {
; // seri portun bağlanmasını bekleyin. Yalnızca yerel USB bağlantı noktası için gereklidir
}
Seri . println ( "Sesli Arama Yap" ) ;
// bağlantı durumu
bool bağlı = yanlış ;
// GSM kalkanını başlat
// SIM'iniz PIN içeriyorsa, tırnak işaretleri halinde begin () parametresi olarak iletin
while ( ! bağlı ) {
eğer ( gsmAccess. başlar ( PINNUMBER ) == GSM_READY ) {
bağlı = doğru ;
} başka {
Seri . println ( "Bağlı değil" ) ;
gecikme ( 1000 ) ;
}
}
Seri . println ( "GSM başlatıldı." ) ;
Seri . println ( "Aranacak telefon numarasını girin." ) ;
}
void loop ( ) {
// Dizeye gelen karakterleri ekleyin:
while ( Seri . kullanılabilir ( ) > 0 ) {
char inChar = Seri . read ( ) ;
// eğer yeni bir satırsa, arama yapmanız gerekir:
if ( inChar == ' \ n ' ) {
// telefon numarasının çok uzun olmadığından emin olun:
if ( remoteNumber. uzunluk ( ) < 20 ) {
// kullanıcıya aradığınızı bildirin:
Seri . print ( "Şu numaraya sesleniyor:" ) ;
Seri . println ( remoteNumber ) ;
Seri . println ( ) ;
// Uzak numarayı ara
remoteNumber. toCharArray ( karbüratör , 20 ) ;
// Alıcı ucun aramayı yanıtlayıp karşılamadığını kontrol edin
if ( vcs. voiceCall ( charbuffer ) ) {
Seri . println ( "Çağrı Kuruldu. Sona kadar satır girin" ) ;
// Satırdan bazı girdiler bekleyin
while ( Serial . read ( ) ! = ' \ n ' && ( vcs. getvoiceCallStatus ( ) == KONUŞMA ) ) ;
// Ve telefonu kapat
vcs. hangCall ( ) ;
}
Seri . println ( "Çağrı Tamamlandı" ) ;
remoteNumber = "" ;
Seri . println ( "Aranacak telefon numarasını girin." ) ;
} başka {
Seri . println ( "Bir telefon numarası için çok uzun. Unutuyorum" ) ;
remoteNumber = "" ;
}
} başka {
// gönderilecek mesaja en son karakteri ekleyin:
eğer ( inChar ! = ' \ r ' ) {
remoteNumber + = inChar ;
}
}
}
}
See Also
- GSMinşaatçı
- GSM.begin()
- GSM.shutdown()
- GSMVoiceCallinşaatçı
- getVoiceCallStatus()
- ready()
- voiceCall()
- answerCall()
- hangCall()
- retrieveCallingNumber()
- Arduino MKR GSM 1400- Komple ürün açıklaması.
- Getting started with the MKR GSM 1400- Her şeyi dakikalar içinde kurun.
- MKRGSM library- GSM Kütüphanesi için referansınız.
- MKRGSMExamplesReceiveVoiceCall- Çağrı alınır ve bağlanır, aranan numara seri monitörde gösterilir ve çağrı kapatılır.
- MKRGSMExamplesReceiveSMS- SMS mesajı nasıl alınır.
- MKRGSMExamplesSendSMS- Seri monitörden bir SMS giriş numarası ve metni nasıl gönderilir.
- MKRGSMExamplesWebServer- Bir istemciden istek alındığında Analog girişlerde okunan değeri geri gönderen bir web sunucusu.
- MKRGSMExamplesWebClient- Arduino.cc ana sayfasına bağlanın ve içindekileri seri monitör penceresinde yazdırın.
- MKRGSMToolsTestGPRS- Verilen APN ve kimlik bilgileriyle GPRS üzerinden internete erişmeye çalışır.