// БИБЛИОТЕКИ
#include <SoftwareSerial.h> // GSM sim800L
// SMS sim800L
SoftwareSerial SIM800(13, 15);
String _response = ""; // Переменная для хранения ответа модуля
long lastUpdate = millis(); // Время последнего обновления
long updatePeriod = 60000; // Проверять каждую минуту
bool hasmsg = false; // Флаг наличия сообщений к удалению
void setup()
{
//SIM800
Serial.begin(9600);
pinMode(15, OUTPUT);
pinMode(13, INPUT);
sendATCommand("AT+CFUN=1,1", true); // перезагрузка модуля при запуске
sendATCommand("AT", true); // Отправили AT для настройки скорости обмена данными
send_Email("5", "HELLO"); // 1 - количество символов в теле сообщения, 2 - сообщение
}
void loop()
{}
void send_Email(String num, String message)
{
//Настройки интернет соединения
sendATCommand("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"", true); // задаем команду выхода в интернет
delay (2000);
delay (2000);
sendATCommand("AT+SAPBR=3,1,\"APN\",\"internet\"", true); // настройки APN Vodafone
delay (2000);
delay (2000);
sendATCommand("AT+SAPBR=1,1", true); // To open a GPRS context. установить GPRS соединение
delay (2000);
delay (2000);
//Настройки для отправки e-mail :
sendATCommand("AT+EMAILCID=1", true); // Установка CID параметра для email сессии.
delay (2000);
sendATCommand("AT+EMAILTO=30", true); // Set EMAIL timeout Установка таймаута для SMTP и POP серверов.
delay (2000);
sendATCommand("AT+EMAILSSL=1", true); // Set EMAIL begin encrypt transmission with encrypt port
delay (2000);
sendATCommand("AT+SMTPSRV=\"SMTP.GMAIL.COM\"", true); // Установка адреса и порта SMTP почтового сервера.
delay (2000);
sendATCommand("AT+SMTPAUTH=1,\"*********@gmail.com\",\"********\"", true); // Аутентификация (e-mail адрес, и пароль от e-mail)
delay (2000);
sendATCommand("AT+SMTPFROM=\"*********@gmail.com\",\"*********\"", true); //от кого письмо (почтовый адрес, имя отправителя)
delay (2000);
sendATCommand("AT+SMTPSUB=\"Test\"", true); //тема письма
delay (2000);
sendATCommand("AT+SMTPRCPT=0,0,\"**********\",\"***********\"", true); // кому письмо (почтовый адрес, имя получателя)
delay (2000);
sendATCommand("AT+SMTPBODY=\"" + num + "\"", true); // задаем сколько символов в письме
delay (2000);
sendATCommand(message + "\r\n" + (String)((char)26), true); //После получение ответа от модуля DOWNLOAD. вводим текст письма длиной 19 символов.
//Для отправки в конце сообщения отправляем символ SUB ( (char)26 или Cntrl+Z)
sendATCommand("AT+SMTPSEND", true); // Отправка Email
delay (2000);
sendATCommand("AT+SAPBR=0,1", true); // разорвать GPRS соединение
}
String sendATCommand(String cmd, bool waiting) // Функция отправки комманд модулю
{
String _resp = ""; // Переменная для хранения результата
Serial.println(cmd); // Дублируем команду в монитор порта
SIM800.println(cmd); // Отправляем команду модулю
if (waiting) { // Если необходимо дождаться ответа...
_resp = waitResponse(); // ... ждем, когда будет передан ответ
// Если Echo Mode выключен (ATE0), то эти 3 строки можно закомментировать
if (_resp.startsWith(cmd)) { // Убираем из ответа дублирующуюся команду
_resp = _resp.substring(_resp.indexOf("\r", cmd.length()) + 2);
}
Serial.println(_resp); // Дублируем ответ в монитор порта
}
return _resp; // Возвращаем результат. Пусто, если проблема
}
String waitResponse() // Функция ожидания ответа и возврата полученного результата
{
String _resp = ""; // Переменная для хранения результата
unsigned long _timeout = millis() + 10000; // Переменная для отслеживания таймаута (10 секунд)
do
{ delay(0);
if (millis() > _timeout )
{
Serial.println("Timeout...");
break;
}
if (SIM800.available())
{ _resp = SIM800.readString();
Serial.println(_resp);
break;
}
}
while (1) ; // Просто событие, которое не наступит
return _resp; // ... возвращаем результат. Пусто, если проблема
}