+7(960) 250-82-68 info@mirossa.ru


 mirossa        1С           C         PHP       JAVA  


Статьи
 
 

16 июня 2019 г

Arduino. Отправка СМС. Отладка

Плата Arduino Uno (неоригинальная, UNO R3 CH340) и SIM900 GPRS/GSM Shield

драйвер UNO R3 CH340 (Windows)

Плата Arduino Uno и SIM900 GPRS/GSM Shield
Плата Arduino Uno и SIM900 GPRS/GSM Shield

Блок питания (например, такой)

Блок питания

код скетча.

// подключение библиотеки SoftwareSerial
#include <SoftwareSerial.h>
// Выводы для SoftwareSerial
SoftwareSerial Sim900Serial(7, 8); //Sim900Serial(2, 3); // RX, TX

void setup()
{
  Sim900Serial.begin(19200);
  Serial.begin(19200);
}

void loop()
{
if (  Serial.available() ){
    while ( Serial.read() != -1 )
      continue;
      
    Serial.println("Debug...");
    
    SendTextMessage(); // отправить sms
    
  }

  //debug
  delay(5000);
  
}
// процедура отправки sms
void SendTextMessage(){
  
// AT-команда установки text mode
Sim900Serial.print("AT+CMGF=1\r");

  //debug
  delay(100);
  while ( Sim900Serial.available() )
     Serial.write ( Sim900Serial.read() ); 
  //

Sim900Serial.print("AT+CSCS= \"GSM\"\r");

  //debug
  delay(100);
  while ( Sim900Serial.available() )
     Serial.write ( Sim900Serial.read() ); 
  //

delay(100);
 // AT+CMGS=<number><CR><message><CTRL-Z> :
 // 1. отправляем AT+CMGS=<number><CR>
 // 2. ждем приглашения сервера ( ">" ).
 // 3. отправляем <message><CTRL-Z>
 // 4. ждем подтверждение сервера:
/*<message>
 *+CMGS: <mr>
 *
 *OK
 */
 // <mr> is the message reference.


Sim900Serial.print("AT + CMGS =\"+79669994444\"\r");

  //debug
  delay(100);
  while ( Sim900Serial.available() ) { //ожидается приглашение сервера (без жесткой проверки)
     Serial.write ( Sim900Serial.read() );
     
  }
  Serial.println(" - poluchili priglashenie ot servera"); // ( ">" ) момент после получения приглашение сервера
  //

Sim900Serial.print("Hello, World!");

  Serial.println("Debug continue");
  
delay(100);
// ASCII код ctrl+z - окончание передачи
Sim900Serial.print((char)26);

  //debug
  delay(5000);
  while ( Sim900Serial.available() )
     Serial.write ( Sim900Serial.read() );
  
  Serial.println("Debug end.");
}

// https://stackoverflow.com/questions/21522794/atcmgs-returns-error  
// http://www.2150692.ru/faq/47-at-komandy-a6

Подключаем питания плат(SIM900 GPRS/GSM Shield тоже. На одном общем питании обеих плат через USB шилд не работает на 100%). Прошиваем Arduino. Открываем Монитор порта. Вводим любые символы. Отправляем в порт. Получаем СМС на свой номер и отладочную информацию в мониторе порта. Если есть какие-то ошибки, то корректируем команды (AT), отправляемые на сервер.

//отладочный вывод
Debug...
⸮AT+CMGF=1

OK
AT+CSCS= "GSM"

OK
AT + CMGS ="+79669994444"

>  - poluchili priglashenie ot servera
Debug continue
Hello, World!
+CMGS: 47

OK
Debug end.

Монитор порта

СМС :

СМС