SIM800L mini

Nikk80
Offline
Зарегистрирован: 29.03.2016

 

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

если с терминалки не удалет - то очень странно.

 у меня со всех модулей в терминалке честно все команды работают, в том числе и эта.

 

V-max VL
Offline
Зарегистрирован: 22.04.2016

To NiKK 80: Кстати, решая свои проблемы по запустку своего модуля, я тоже упустил эту деталь. Сейчас в режиме отладки скеча, у меня +GMGS: 32

и так понимаю тоже никакие комманды типа DEL ALL, DEL SENT не помагают. Счетчик ползет наверх. Только вот в чем вопрос, эти смс-ки все же забивают симку, оставаясь внутри неё, или просто идет отсчет модулем отосланных смс-ок?

Удивителен еще вот какой факт: получаешь значит цифиру (например +GMGS: 30) и думаешь, что в памяти симки сохраняются 30 смс-ок. Делаешь DEL ALL или DEL SENT, получаешь положительный ответ, пытаешься (для контроля) прочитать группы смс-ок, в ответ пусто. Думаешь: Всё, работает. Модуль шлет смс-ку и в ответ: +GMGS: 31. Может все таки просто счетчик?

Nikk80
Offline
Зарегистрирован: 29.03.2016

Надо будет попробовать считать с него отправленные смс должна быть такая команда. Буду читать datasheet.

Kotos
Offline
Зарегистрирован: 07.05.2016

Здравствуйте.

С интересом рассматриваю возможности sim800l.

Досадно что нет тут возможности подключить батареечку для RTS...

Есть вопросы

1. Кто знает какое количество вмещается в  sim800l входящих СМСок?

2. Подскажите также есть ли такие АТ команды , которыми можно просмотреть списком , входящие и исходящие звонки?

3. По СМС тоже такой вопрос, тут есть просмотр входящих AT+CMGL="ALL", а исходящие и сохраненные СМС, сохраняются ли в самом модуле , если да то как их можно просмотреть?

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

2 - а помоему даташит более красноречивее вам скажет.   

ваши смс по умолчанию будут на симкарту писаться, а не по умолчанию - есть команды их даташита..

Kotos
Offline
Зарегистрирован: 07.05.2016

Short Circuit пишет:
 даташит более

datasheet , это для тех кто без "учителя" все может освоить, для меня конечно английская грамота чуть понятнее чем китайская, но многое совсем простое понять не могу..

Честно говоря я наверное тут один такой, если бы не форум, то вообще бы ни на цент ничего не понял, о чем там.

И все таки, есть ли словесный ответ на мои вопросы?. 

Short Circuit пишет:
 ваши смс по умолчанию будут на симкарту писаться, а не по умолчанию

тут тоже вопросы,  по умолчанию AT+CPBS="SM"

а если я активирую записи командой  AT+CPBS="ME", все будет в памяти модуля sim800?

 

 

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

 и в даташате, и в интернете - и так многое понтно без особых знаний английского, я тоже не знаю английский.

 

опрсите потом выбранную записную книжку - сколько там ячеек и т.д. запишите номер в ячейку, считайте.. и т.д.

Kotos
Offline
Зарегистрирован: 07.05.2016

Опрашиваю

01AT+CPBS="SM"
02 
03AT+CPBS?
04 
05+CPBS: "SM",6,250
06 
07OK
08 
09AT+CPBS="ME"
10OK
11 
12AT+CPBS?
13+CPBS: "ME",3,100
14OK
на сим карте у меня 6 телефонных номеров, в памяти телефона 3 из 100 возможных..
только телефонные номера могу сохранять ? и все никаких текстовых СМС?
Kotos
Offline
Зарегистрирован: 07.05.2016

Потренировался тут чуть, оказвается в памяти модуля может храниться тольк10 СМС.

свое неотправленое сообщение пишется командой AT+CMGW , с этой командой все ОК.

А вот отправить это сохраненое неотправленное сообщение похоже что тут есть проблема

должно работать так

1//К примеру, команда отправки сохраненного сообщения под номером 12 выглядит так:
2 
3AT+CMGS=12
4//Этот способ удобен в тех случаях, когда один и тот же текст нужно доставить нескольким адресатам. Вместо того чтобы каждый раз передавать его устройству, достаточно один раз сохранить сообщение в памяти, а затем указывать модему лишь его индекс и номер получателя.
5 
6AT+CMGS=12,"+79295556924"
7AT+CMGS=12,"+79295556925"
8AT+CMGS=12,"+79295556926"

Разве тут такое ,не применимо?

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

V-max VL пишет:

To NiKK 80: Кстати, решая свои проблемы по запустку своего модуля, я тоже упустил эту деталь. Сейчас в режиме отладки скеча, у меня +GMGS: 32

и так понимаю тоже никакие комманды типа DEL ALL, DEL SENT не помагают. Счетчик ползет наверх. Только вот в чем вопрос, эти смс-ки все же забивают симку, оставаясь внутри неё, или просто идет отсчет модулем отосланных смс-ок?

Удивителен еще вот какой факт: получаешь значит цифиру (например +GMGS: 30) и думаешь, что в памяти симки сохраняются 30 смс-ок. Делаешь DEL ALL или DEL SENT, получаешь положительный ответ, пытаешься (для контроля) прочитать группы смс-ок, в ответ пусто. Думаешь: Всё, работает. Модуль шлет смс-ку и в ответ: +GMGS: 31. Может все таки просто счетчик?

я тоже это заметил  до вас но решил что и удалять тогда не нужно, (пока не пробовал)

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Kotos пишет:

Потренировался тут чуть, оказвается в памяти модуля может храниться тольк10 СМС.

свое неотправленое сообщение пишется командой AT+CMGW , с этой командой все ОК.

А вот отправить это сохраненое неотправленное сообщение похоже что тут есть проблема

должно работать так

1AT+CMGS=12,"+79295556924"
2AT+CMGS=12,"+79295556925"
3AT+CMGS=12,"+79295556926"

Разве тут такое ,не применимо?

 

AT+CMGF=1 

OK 

AT+CMGS="+......." 

>TEST <Ctrl+Z> 

+CMGS: 239 

а чем этот вариант хуже? 

Kotos
Offline
Зарегистрирован: 07.05.2016

Short Circuit пишет:
а чем этот вариант хуже? 

Слишком он прост, нет "пространства " для творчества.

А какой модуль у вас , что " +CMGS: 239 " достигло аж 239?

У меня по запросу 

ATI //выдает

SIM800 R14.18

OK

AT+GMR
Revision:1418B01SIM800L24_20151222_1700
OK
соответсвенно в нем если сделать запрос
AT+CPMS?
+CPMS: "SM",1,10,"SM",1,10,"SM",1,10
OK
Это значит что модуль SIM800L mini имеет емкость памяти для СМС - 10 сообщений.
 
Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Kotos пишет:

Short Circuit пишет:
а чем этот вариант хуже? 

Слишком он прост, нет "пространства " для творчества.

01#include <SoftwareSerial.h>
02SoftwareSerial mySerial(2, 3); // RX, TX
03void setup() {
04  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
05  Serial.println("Goodnight moon!");
06  mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
07  mySerial.println("AT");
08}
09 
10void loop() {
11  if (mySerial.available())
12    Serial.write(mySerial.read());
13  if (Serial.available())
14    mySerial.write(Serial.read());
15}
16 
17// Процедура для отправки СМС
18 
19void sms(String text, String phone) {
20  Serial.println("SMS send started");
21  mySerial.println("AT+CMGS=\"" + phone + "\"");
22  delay(1000);
23  mySerial.print(text);
24  delay(300);
25  mySerial.print((char)26);
26  delay(300);
27  Serial.println("SMS send finish");
28  delay(3000);
29}
30 
31// Процедуру добавлять в конец скетча и вызывать её из основного цикла так: 
32  sms(String("текст СМС на англ."),String("+791212345678"));

 

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

а здесь есть где творчеству развиваться? я думаю - да.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015
01void sendsms(String sms_number, String sms_text)
02{  delay(100);
03  gsm.print("AT+CMGS=\"");
04  gsm.print((String)sms_number);
05  gsm.println("\"");
06  delay(100);
07  gsm.println((String)sms_text);
08  delay(100);
09  gsm.write(0x1A);  // command for send sms, code for CTRL-Z
10  //gsm.print((char)26);           // ^Z
11  //gsm.print((char)13);           // CR
12  delay(2000);
13  Serial.println("Sending SMS\n");
14  delay(100);
15  gsm.println ("AT+CMGD=4"); // удалить все смс
16  delay(100);
17  //getGSManswer();
18}
19 
20sendsms("+381234567890","VKLUYCHENIE ! ");  // отправка смс на номер

учимся правильно отправлять смс в которой сразу несколько строк.

мой опыт пока отрицательный.

смс в одну строку  получается например таким кодом:

 

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

а вот например так сформировать смс и послать несколько строк: не получается, использую процедуру отправки вверху - в смс приходит только "Rele-1: 0" например, в епром пишу 1 или 0 (вкл или выкл реле) почему не приходят остальные строки?? пробовал по разному, одна строка на ура. а больше нет..

 

1sms_txt = sms_txt + "Rele-1: " + String(EEPROM.read(2)) + "\r\n"; delay(10);
2sms_txt = sms_txt + "Rele-2: " + String(EEPROM.read(2)) + "\r\n"; delay(10);
3sms_txt = sms_txt + "Rele-3: " + String(EEPROM.read(3)) + "\r\n"; delay(10);
4 
5 
6sendsms("+381234567890",sms_txt);  // отправка смс на номер

 

 

Как правильно "собрать смс из нескольких строк", где бывают ошибки? Потому что смотрю не только у меня по одной строке смс шли?

Nikk80
Offline
Зарегистрирован: 29.03.2016

а где тут отправка нескольких строк то ?

А не пробовал 

gsm.print("Rele-1: ");

gsm.print(String(EEPROM.read(2)))

gsm.print("\r\n")

итак далеевсе твои строчки за раз а потом символ отправки

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

да, по ходу ковырял и понял почему строчки не строятся как хочется, оставил только \n 

и все отправилось как нужно, это я понял символ перевода строки.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

еще вопрос, Делаю проверку баланса счета и смотрю что вычитывает ардуина..

так вот ответ такой:

+CUSD: 0,"Na Vashem schete 22.22 rub. Tarif 'Prosto Nomer Pervyj'. Nmi0.i p n5
 
после названия тарифа идет фраза : действителен до.....
 
но сколкьо не запрашиваю, всегда ответ одинаков с точностью до знака..
Кто знает, в чем может быть причина??
 
stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

//Разбор баланса для оператора МТС

#include
SoftwareSerial gsm(2, 3); // 2-txd, 3-rxo , Arduino mini или Arduino nano

void setup()
{
gsm.begin(9600);
gsm.write("AT+CMGF=1\r"); // устанавливает текстовый режим смс-сообщения
delay(300);
gsm.write("AT+IFC=1, 1\r"); //устанавливает программный контроль потоком передачи данных
delay(300);
gsm.write("AT+CPBS=\"SM\"\r");//открывает доступ к данным телефонной книги SIM-карты
delay(300);
gsm.write("AT+CNMI=1,2,2,1,0\r");// включает оповещение о новых сообщениях, новые сообщения
delay(500);
gsm.write("AT+GSMBUSY=1\r\n"); // запрет всех входящих звонков.
delay(300);
gsm.write("AT+CMGDA=DEL ALL\r\n"); // команда удалит все сообщения
delay(500);
gsm.println("AT+CSQ");// Проверяем уровень сигнала
delay(800);
}

void loop()
{

//*******************************************************************
if (gsm.available()) { //есть данные от GSM модуля
String currStr = ""; //выждем, чтобы строка успела попасть в порт целиком раньше чем будет считана
String currStrN = "";
String dataBalanceTemp = "";
String dataBalance = "";
String dataSms = "";
String val = "";
int flag1 = 0;
int flag2 = 0;
while (gsm.available()) { //сохраняем входную строку в переменную val
c:
int ch = gsm.read(); //int
val += char(ch); // String
char data = ch; // char = int
if ('\r' == data) {
currStr = "";
} else if ('\n' != data) {
currStr += String(data);
dataSms = currStr;
}

// Начинаем разбор полученного смс, Работает 100% с оператором МТС
//Полученный текст: +CUSD: 0, "Balance:117,27r ", 15
if (data == 'U' && flag1 == 2){flag2 = 3;}
if (data == 'S' && flag2 == 3){flag2 = 4;}
if (data == 'D' && flag2 == 4){flag2 = 5;}
if (data == ':' && flag2 == 5){flag2 = 6;}
if (data == '"' && flag2 == 6){dataBalanceTemp = ""; flag2 = 7; goto c;}
if (data != '"' && flag2 == 7){dataBalanceTemp += String(data); dataBalance = dataBalanceTemp;}
if (data == '"' && flag2 == 7){flag2 = 8;}
}

// Смотрим данные полученные от модуля, Получили смс с балансом, теперь отсылаем
if (val.indexOf("+CUSD:") > -1) {
// +CUSD: 0, "Balance:117,27r ", 15
if (dataBalance != "") {
smsSendAlarm("Hi, " + dataBalance);
dataBalance = "";
}
}

// Читаем смс полученные с мобильного
if (val.indexOf("+CMT") > -1) {
if (dataSms.indexOf("Balans") > -1) { // Запрос баланса
GoBalans();
}
}
}
}

//процедура отправки СМС
void smsSendAlarm(String text) {
String NBoss = "79115557744";
gsm.println("AT+CMGS=\"" + NBoss + "\""); //Отправляем на GSM комманду отправка смс-номер
NBoss = ""; //Очищаем перемунную
delay(300); //Делаем задержку на передачу комманды
gsm.print(text); //Отправляем на GSM комманду отправка смс-текст
text = ""; //Очищаем перемунную
delay(500); //Делаем задержку на передачу комманды
gsm.print((char)26); //Отправляем на GSM комманду отправка смс!
delay(5000); //Делаем задержку отправку смс

}

//Отправка смс о балансе
void GoBalans(){
gsm.print("AT+CUSD=1,");
gsm.print('"');
gsm.print("#100#");
gsm.println('"');
}

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

честно говоря, код считается крайне плохо, местами вообще непонятно из-за лишнего переноса строк, вы можете нормально вставить код в веб форму?? а то вроде хотите дать совет, а сами и не можете нормально совет оформить в удобоваримую форму.

поканичего не понятно, просто куски непонятного кода.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

еще один момент не ясен:

как верно вставить строку AT+CUSD=1,"*101#"  ??

делаю так:

1gsm.println("AT+CUSD=1,"*101#"");  delay(50);  //USSD запрос баланса
2 
3gsm.println("AT+CUSD=1,"*101#"/");  delay(50);  //USSD запрос баланса

но ругается компилятор на:

 exit status 1  stray '#' in progra

 
двойные кавычки знаю как вставлять, а вот такую строку не получилось.
stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

ссылка на файл запроса баланса и ответ обратно на телефон:
https://yadi.sk/d/xlAHdS5BsXLWJ

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Short Circuit пишет:

еще один момент не ясен:

как верно вставить строку AT+CUSD=1,"*101#"  ??

делаю так:

1gsm.println("AT+CUSD=1,"*101#"");  delay(50);  //USSD запрос баланса
2 
3gsm.println("AT+CUSD=1,"*101#"/");  delay(50);  //USSD запрос баланса

но ругается компилятор на:

 exit status 1  stray '#' in progra

 
двойные кавычки знаю как вставлять, а вот такую строку не получилось.

Правильно писать:
gsm.print("AT+CUSD=1,");
gsm.print('"');
gsm.print("#100#");
gsm.println('"');

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

кто вам сказал что  правильно #100# а *100# - неправильно ??

как раз *100# - работает, а первый вариант - нет.

и зависит это от оператора, хотя *100# - помоему это всегда работает, это команда по умолчанию.

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Short Circuit пишет:

кто вам сказал что  правильно #100# а *100# - неправильно ??

как раз *100# - работает, а первый вариант - нет.

и зависит это от оператора, хотя *100# - помоему это всегда работает, это команда по умолчанию.

читать надо лучше, в нете дофига примеров

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Short Circuit пишет:

кто вам сказал что  правильно #100# а *100# - неправильно ??

как раз *100# - работает, а первый вариант - нет.

и зависит это от оператора, хотя *100# - помоему это всегда работает, это команда по умолчанию.

Почитай тут: http://alex-exe.ru/radio/wireless/gsm-sim900-at-command/

Раздел :USSD (Команды приведены для текстового режима и в GSM кодировке.)
Хочу отметить, #100# поддерживают все операторы, ответ приходит на латинице

Dron
Offline
Зарегистрирован: 17.06.2016

Всем доброго дня.

Кое-что по работе с SIM800L есть здесь:

http://arduino.ru/forum/proekty/gsm-sistema-kontrolya-za-avtomaticheskim...

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

stambylov пишет:
Почитай тут: http://alex-exe.ru/radio/wireless/gsm-sim900-at-command/ Раздел :USSD (Команды приведены для текстового режима и в GSM кодировке.) Хочу отметить, #100# поддерживают все операторы, ответ приходит на латинице

 

читал, а потом проверял на разных операторах, и скажу что автор заблуждается, работает не везде, и по умолчанию у операторов "111# а #111# то программистты у операторов сами допилили имхо..

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

а никто не делал код на интелектуальную проверку баланса симкарты, тоесть раз в сутки или по событию идет проверка баланса и ответ сравнивается с цифрой 100 например. если там баланс ниже 100 - шлем владельцу смс с остатком на балансе.

stambylov
stambylov аватар
Offline
Зарегистрирован: 10.05.2012

Short Circuit пишет:

а никто не делал код на интелектуальную проверку баланса симкарты, тоесть раз в сутки или по событию идет проверка баланса и ответ сравнивается с цифрой 100 например. если там баланс ниже 100 - шлем владельцу смс с остатком на балансе.

Отличный пост, надо сделать:)
Как сделаю, напишу, но только для МТС

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

я делал. Только не раз в сутки, а просто с интервалом времени после отправки сообщения с контроллера.

Коллеги, вопрос. Сжег свой модуль GSM, приобрел другой. Вопрос: куда эту проволочку припаивать?

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

 если антенна с разьемом не ставится, то рядом с разьемом - пин для запаивания "проволочки" - тоесть антенны.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Т.е. , проволочка ставится вместо антенны? А если я подключаю внешнюю антенну, то проволочка не нужна, верно?

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

и то и то - антенны. ставите одну антенну само собой.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Спасибо!

alfik777
alfik777 аватар
Offline
Зарегистрирован: 29.06.2015

Немного отвлечённый вопрос, модуля под рукой сейчас нет чтоб проверить. Вопрос о приеме СМС модулем длинных текстовых сообщений. При отправке длинных СМС сообщений, насколько я знаю, текст разбивается на отдельные сообщения  по 140 символов, а при приеме на уровне оператора (?) они склеиваются и получателю приходит одно длинное сообщение ? Я не ошибаюсь? Поправьте если не так. Так вот, мне необходимо будет отправлять  на модуль оччень длинную строку, т.е. несколько СМС сразу. Что меня ждёт?  У него ограничения какие-то  по СМС, по длине строки  и т.д. ?

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Нет. Получателю приходит N сообщений, и склеивать их в одно - задача на стороне получателя.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

смс ограничение 140 символов или сколько там. так я так понимаю это в обе стороны.

только вот откуда телефон знает, что данные два сообщения нужно склеить а не по одному показывать? видать есть служебная инфа.  ведь если послать два отдельных с одного номера, то два отдельных и придет.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

В служебных заголовках всё указано - к какому сообщению относится полученная часть, и номер этой части.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

это видно в терминалке если принимать инфу с модуля?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

За текстовый режим не скажу, в PDU-режиме - да, видно, там всё закодировано в PDU-пакете.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

а если он не пду? а в текстовом режиме.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

За текстовый не скажу, т.к. работаю только с PDU.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

а есть рекомедация в каком документе почитать как с  смс работать, или достаточно доков от симкома?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015
alfik777
alfik777 аватар
Offline
Зарегистрирован: 29.06.2015

Интересные статьи, хорошо описано. Но, наверное, чтоб создать или распарсить строку PDU уже есть что-то готовое, типа  библиотек или каждый ковыряется в одиночку и переставляет байты местами?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Я ковырялся, отталкиваясь от указанных статей. Но мне не надо было слеплять сообщения друг с другом. Написал простенькие говноклассы, если кому пригодится, мне не жалко:

https://github.com/Porokhnya/GreenhouseProject/blob/master/Main/PDUClasses.h

https://github.com/Porokhnya/GreenhouseProject/blob/master/Main/PDUClasses.cpp

Там работа с UTF-8, правда, идёт, т.к. все исходники у меня в этой кодировке сохраняются. По итогу - можно принимать/отправлять SMS на русском.

Ну и, конечно, код по приведённым ссылкам полностью не мой - что-то надёргано из сторонних источников, сейчас уже и не упомню, из каких.

rapidshe
Offline
Зарегистрирован: 31.12.2015

блин, чото не получается подружится с модулем(

пробую этот скетч, перебирая скорости для модуля.... в монитор порта после Goodnight moon! через некоторое время приходят пробелы. бесконечное количество.... непонятно

питание 4в

01#include <SoftwareSerial.h>
02SoftwareSerial mySerial(2, 3); // RX, TX
03void setup() {
04  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
05  Serial.println("Goodnight moon!");
06  mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
07  mySerial.println("AT");
08}
09 
10void loop() {
11  if (mySerial.available())
12    Serial.write(mySerial.read());
13  if (Serial.available())
14    mySerial.write(Serial.read());
15}