GSMExamplesSendSMS

Arduino veya Genuino kartından bir SMS mesajı gönderir. Arduino Yazılımının (IDE) seri monitörünü kullanarak bağlanacak numarayı ve gönderilecek metin mesajını gireceksiniz.

Gerekli Donanım

devre

Kod

İlk olarak, GSM kütüphanesini içe aktarın

#include <GSM.h>

SIM kartların işlevlerini etkinleştiren bir PIN numarası olabilir. SIM'inizin PIN kodunu tanımlayın. SIM'inizde PIN'i yoksa boş bırakabilir:

#define PINNUMBER ""

Kullanacağınız sınıfların örneklerini inceleyin. Hem GSM hem de GSM_SMS sınıfına göre olacak.

GSM gsmAccess ;
GSM_SMS sms ;
[Kodu Al]

setup , seri seri bir bağlantı açın. Bağlantıyı açmaya sonra çizimin başladığını belirten bir mesaj gönderin.

void setup ( ) {
Seri . başlar ( 9600 ) ;
Seri . println ( "SMS Mesaj Göndereni" ) ;

Bağlantı durumunu izlemek için yerel bir değişkenliğini izleyin. SIM'in ağa bağlanmasına kadar çizimin başlamasına kesinlikle için bunu yapınsınız:

boolean notConnected = true ;

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ğlanır, 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ğlanıyor sonra, setup geri kalanı çalışır.

yaparken ( bağlı değil )
{
Eger (gsmAccess. baslar (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 ( "GSM başlatıldı." ) ;
}

int readSerial adlı bir işlev çalıştırmak. Bunu, seri monitörden gelen giriş, SMS göndermek için numarayı ve göndereceğim mesajı saklamak için gereklisınız. Bir char dizisini argüman olarak kabul etmelidir.

int readSerial ( karakter sonucu [ ] )
{

Seri arabelleğindeki öğeler arasında saymak için bir değişkenlikte ve sürekli olarak seçtiğinizecek bir while döngüsü altında.

int i = 0 ;
süre ( 1 )
{

Seri bilgileri mevcut olduğu hakkında, özellikler inChar adlı bir değişkene inChar .

(Seri. MEVCUTTUR ()> 0) İSE
{
char inChar = Seri . read ( ) ;

Okunmakta olan karakter yeni bir satırsa, diziyi sonlandırın, seri arabelleği içindir ve işlevden çıkın.

arasından ( inChar == ' \ n ' )
{
sonuç [ i ] = ' \ 0 ' ;
Seri . flush ( ) ;
dönüş 0 ;
}

ASCII karakteri ise, diziye ekleyin ve dizini artırın. while döngüsel ve çalışır durumda.

içerir ( inChar ! = ' \ r ' )
{
sonuç [ i ] = inChar ;
i ++;
}
}
}
}

In loop , bir olusturmak char Adlı diziyi remoteNumber boyutu SMS gondermek istediginiz numarayı tutmak icin. Oluşturdugunuz Az önce readSerial işlevini readSerial ettik remoteNumber Bağımsız Değişken Olarak remoteNumber . readSerial yürütüldüğünde, remoteNumber iletiyi göndermek için numarayla doldurur.

Seri . print ( "Bir cep telefonu numarası girin:" ) ;
char remoteNumber [ 20 ] ;
readSerial ( remoteNumber ) ;
Seri . println ( remoteNumber ) ;

txtMsg adlı yeni bir char dizisi içindir. Bu, SMS'inizin olduğu tutacaktır. txtMsg doldurmak için readSerial .

Seri . print ( "Şimdi, SMS içeriği girin:" ) ;
char txtMsg [ 200 ] ;
readSerial ( txtMsg ) ;

Çağrı sms.beginSMS() ve bu da geçer remoteNumber mesaj, sms.print() mesaj göndermek için ve sms.endSMS() için gerekli. Bazı tanılama için yazdırmaın ve loop içindir. Mesajınız geliyor!

Seri . println ( "GÖNDERME" ) ;
Seri . println ( ) ;
Seri . println ( "Mesaj:" ) ;
Seri . println ( txtMsg ) ;

SMS. beginSMS ( remoteNumber ) ;
SMS. baskı ( txtMsg ) ;
SMS. endSMS ( ) ;
Seri . println ( " \ n TAMAM! \ n " ) ;
}

Kodunuz yüklendikten sonra seri monitörü açın. Seri monitörün sadece dönüşte yeni satır karakteri gönderecek şekilde ayarlandığından emin olun. Aramak istediğiniz numarayı girmeniz istendiğinde, sayıları girin ve geri dönmek için gerekli. Daha sonra mesajınızı girmeniz istenir. Bunu yazdıktan sonra, göndermek için geri dönmektedir.

Çizimin listesinde lütfendır.

 /* SMS sender This sketch, for the Arduino GSM shield,sends an SMS message you enter in the serial monitor. Connect your Arduino with the GSM shield and SIM card, open the serial monitor, and wait for the "READY" message to appear in the monitor. Next, type a message to send and press "return". Make sure the serial monitor is set to send a newline when you press return. Circuit: * GSM shield * SIM card that can send SMS created 25 Feb 2012 by Tom Igoe This example is in the public domain. http://www.arduino.cc/en/Tutorial/GSMExamplesSendSMS */ // Include the GSM library #include #define PINNUMBER "" // initialize the library instance GSM gsmAccess; GSM_SMS sms; void setup() { // initialize serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } Serial.println("SMS Messages Sender"); // connection state boolean notConnected = true; // Start GSM shield // If your SIM has PIN, pass it as a parameter of begin() in quotes while (notConnected) { if (gsmAccess.begin(PINNUMBER) == GSM_READY) { notConnected = false; } else { Serial.println("Not connected"); delay(1000); } } Serial.println("GSM initialized"); } void loop() { Serial.print("Enter a mobile number: "); char remoteNum[20]; // telephone number to send sms readSerial(remoteNum); Serial.println(remoteNum); // sms text Serial.print("Now, enter SMS content: "); char txtMsg[200]; readSerial(txtMsg); Serial.println("SENDING"); Serial.println(); Serial.println("Message:"); Serial.println(txtMsg); // send the message sms.beginSMS(remoteNum); sms.print(txtMsg); sms.endSMS(); Serial.println("\nCOMPLETE!\n"); } /* Read input serial */ int readSerial(char result[]) { int i = 0; while (1) { while (Serial.available() > 0) { char inChar = Serial.read(); if (inChar == '\n') { result[i] = '\0'; Serial.flush(); return 0; } if (inChar != '\r') { result[i] = inChar; i++; } } } }  /* SMS sender This sketch, for the Arduino GSM shield,sends an SMS message you enter in the serial monitor. Connect your Arduino with the GSM shield and SIM card, open the serial monitor, and wait for the "READY" message to appear in the monitor. Next, type a message to send and press "return". Make sure the serial monitor is set to send a newline when you press return. Circuit: * GSM shield * SIM card that can send SMS created 25 Feb 2012 by Tom Igoe This example is in the public domain. http://www.arduino.cc/en/Tutorial/GSMExamplesSendSMS */ // Include the GSM library #include #define PINNUMBER "" // initialize the library instance GSM gsmAccess; GSM_SMS sms; void setup() { // initialize serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } Serial.println("SMS Messages Sender"); // connection state boolean notConnected = true; // Start GSM shield // If your SIM has PIN, pass it as a parameter of begin() in quotes while (notConnected) { if (gsmAccess.begin(PINNUMBER) == GSM_READY) { notConnected = false; } else { Serial.println("Not connected"); delay(1000); } } Serial.println("GSM initialized"); } void loop() { Serial.print("Enter a mobile number: "); char remoteNum[20]; // telephone number to send sms readSerial(remoteNum); Serial.println(remoteNum); // sms text Serial.print("Now, enter SMS content: "); char txtMsg[200]; readSerial(txtMsg); Serial.println("SENDING"); Serial.println(); Serial.println("Message:"); Serial.println(txtMsg); // send the message sms.beginSMS(remoteNum); sms.print(txtMsg); sms.endSMS(); Serial.println("\nCOMPLETE!\n"); } /* Read input serial */ int readSerial(char result[]) { int i = 0; while (1) { while (Serial.available() > 0) { char inChar = Serial.read(); if (inChar == '\n') { result[i] = '\0'; Serial.flush(); return 0; } if (inChar != '\r') { result[i] = inChar; i++; } } } } 

See Also