Eğitimler
MKRGSMExamplesReceiveVoiceCall
Bu çizim bir Arduino MKR GSM 1400'den sesli çağrı alır. Çağrı alındıktan ve bağlandıktan sonra, çağıran numarayı gösterir ve telefonu kapatır.
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;
Gelen numarayı saklamak için bir karakter dizisi oluşturun:
setup
, bilgisayara seri bir bağlantı açın. Bağlantıyı açtıktan sonra çizimin başladığını belirten bir mesaj gönderin.
Seri . başlar ( 9600 ) ;
Seri . println ( "Sesli Çağrı Al" ) ;
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 ) ;
}
}
Modemin gelen aramaları kabul etmeye hazır olduğundan emin olmak için hangCall()
işlevini kullanın
vcs.hangCall();
Seri monitöre bazı bilgilerle setup
tamamlayın.
Seri . println ( "Çağrı bekleniyor." ) ;
}
loop
, program akışını kontrol etmek için bir switch
deyimi kullanın. getvoiceCallStatus()
çağrıldığında durumunu döndürür.
{
anahtarı ( vcs. getvoiceCallStatus ( ) )
{
getvoiceCallStatus()
işlevi IDLE_CALL
döndürürse, hiçbir şey olmaz.
kırmak ;
Eğer getvoiceCallStatus()
döndürür RECEIVINGCALL
, birisi seni çağırıyor. Gelen sayıyı oluşturduğunuz numtel
dizisine numtel
için retrieveCallingNumber()
numtel
kullanın ve seri monitöre yazdırın.
answerCall()
ses bağlantısını başlatmak için answerCall()
kullanın.
Seri . println ( "ÇAĞRI ALMA" ) ;
vcs. retrieveCallingNumber ( numtel , 20 ) ;
Seri . print ( "Sayı:" ) ;
Seri . println ( numtel ) ;
vcs. answerCall ( ) ;
kırmak ;
Aramayı cevapladıktan sonra, getvoiceCallStatus()
, TALKING
getvoiceCallStatus()
döndürür. Çizim, yeni satır karakterinin hangCall()
tetiklemesini ve bağlantıyı sonlandırmasını hangCall()
.
switch
ifadesini kapatın.
Seri . println ( "TALKING. Kesilecek satırı girin." ) ;
iken (Seri.) (okuma! = '\ n')
gecikme ( 100 ) ;
vcs. hangCall ( ) ;
Seri . println ( "HANG. Bekleyen Çağrı." ) ;
kırmak ;
}
loop
ile devam etmeden önce küçük bir gecikme ekleyin:
}
Kodunuz yüklendikten sonra seri monitörü açı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 Çağrı Alma
Bu çizim, MKR GSM 1400 kartı için sesli çağrılar alır,
arayan numarayı görüntüler, birkaç saniye bekler ve telefonu kapatır.
Devre:
* MKR GSM 1400 kartı
* Anten
* Sesli aramaları kabul edebilen SIM kart
Mart 2012'de oluşturuldu
ile Javier Zorzano
* /
// GSM kütüphanesini dahil et
#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 ;
GSMVoiceCall vcs ;
// Gelen aramanın numarasını tutmak için dizi
karakter sayısı [ 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 Çağrı Al" ) ;
// 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 ) ;
}
}
// Bu modemin gelen olayları doğru bir şekilde raporlamasını sağlar
vcs. hangCall ( ) ;
Seri . println ( "Arama bekleniyor" ) ;
}
void loop ( ) {
// Sesli aramanın durumunu kontrol etme
switch ( vcs. getvoiceCallStatus ( ) ) {
case IDLE_CALL : // Hiçbir şey olmuyor
kırmak ;
case RECEIVINGCALL : // Evet! Birisi bizi arıyor
Seri . println ( "ÇAĞRI ALMA" ) ;
// Aranan numarayı al
vcs. retrieveCallingNumber ( numtel , 20 ) ;
// Aranan numarayı yazdır
Seri . print ( "Sayı:" ) ;
Seri . println ( numtel ) ;
// Aramayı cevapla, aramayı oluştur
vcs. answerCall ( ) ;
kırmak ;
case TALKING : // Bu durumda çağrı yapılır
Seri . println ( "KONUŞMA. Telefonu kapatmak için enter tuşuna basın." ) ;
while ( Serial . read ( ) ! = ' \ n ' ) {
gecikme ( 100 ) ;
}
vcs. hangCall ( ) ;
Seri . println ( " Telefonu kapatıp bir sonraki çağrıyı beklerken." ) ;
kırmak ;
}
gecikme ( 1000 ) ;
}
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.
- GSM library- GSM Kütüphanesi için referansınız.
- MKRGSMExamplesMakeVoiceCall- Mikrofon ve hoparlör ile sesli arama nasıl yapı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.