Re: Управление внешними устройствами с Arduino при помощи СМС
Цитата:
Сообщение от
alekseykok
Ребята скажите комбинацию AT+CNMI= чтобы модем начал отображать что смс пришла...
AT+CNMI=1,1
Но вопрос при работе с ардуино другой. В терминале все показывает прекрасно. А вот ардуина считывает и записывает в буфер закорлючки.
Я пытался делать по другому. Пускать программу с командой
AT+CMGR=1
после этого считывать и обрабатывать СМС, а затем
AT+CMGD=1
удалять, потому что очень часто приходят сервисные СМС, которые нам не нужны.
Команды работают прекрасно, а вот с текстом СМС постоянные проблемы - библиотека ардуины к ним мало приспособлена, во всяком случае к работе с ТС35
Re: Управление внешними устройствами с Arduino при помощи СМС
Re: Управление внешними устройствами с Arduino при помощи СМС
хеее... вот че у меня Putty начала вытворять((
OK
aЪt
OK
Ъat
OK
ЪatШ
OK
at
OK
aЪtЪ
OK
ЪatЩ
OK
ЪatЪ
OK
atЪ
OK
aВt
OK
Re: Управление внешними устройствами с Arduino при помощи СМС
Мне кажется, что нужно просто изучить АТ команды к ТС35. Я до сих пор никак не могу со своим sim900 разобраться... :)
Re: Управление внешними устройствами с Arduino при помощи СМС
Код:
while (Serial1.available())
{
tgsm[tsm]=bgsm[bsm]=Serial1.read();
Serial.print(tgsm[tsm]);
if (tgsm[tsm]=='S')
{
s=tsm;
s++;
}
if (tsm==s)
{
if (tgsm[tsm]=='M')
{
Serial1.println("AT+CMGR=1");
delay(1000);
myGLCD.setFont(SmallFont);
myGLCD.print("SMS=", 0, 225);
myGLCD.setFont(BigFont);
rsms=1;
}
}
tsm++;
bsm++;
if (tsm>=37)
{
tsm=0;
}
if (bsm>=199)
{
bsm=0;
}
}
abc=strstr(bgsm, "OK");
if(abc!=NULL && rsms==1)
{
abc=strstr(bgsm, "Start");
if(abc!=NULL)
{
myGLCD.setFont(SmallFont);
myGLCD.print("Start", 30, 225);
myGLCD.setFont(BigFont);
Serial1.println("AT+CMGD=1");
pauto=1;
rsms=0;
memset(bgsm, 0, sizeof(bgsm));
}
abc=strstr(bgsm, "Off");
if(abc!=NULL)
{
myGLCD.setFont(SmallFont);
myGLCD.print("Off", 30, 225);
myGLCD.setFont(BigFont);
Serial1.println("AT+CMGD=1");
pauto=0;
rsms=0;
memset(bgsm, 0, sizeof(bgsm));
}
}
}
Срабатывает только когда отправишь 2-3 одинаковые СМСки..... О том что приходит говорит, а читать не хочет. Всю голову чломал, не могу понять в чем проблема:(
Re: Управление внешними устройствами с Arduino при помощи СМС
Вообще бред какой-то!!!!!! Вот так работает:
Код:
while (Serial1.available())
{
bgsm[bsm]=Serial1.read();
Serial.print(bgsm[bsm]);
bsm++;
if (bsm>=199)
bsm=0;
}
if(strstr(bgsm,"SM")!=NULL)
{
Serial1.println("AT+CMGR=1");
delay(500);
myGLCD.setFont(SmallFont);
myGLCD.print("SMS=", 0, 225);
myGLCD.setFont(BigFont);
memset(bgsm, 0 , sizeof(bgsm));
}
А добавляю Serial1.println("AT+CMGR=1"); - ПЕРЕСТАЕТ РАБОТАТЬ!!!! АААА:mad::mad::mad::mad:
Код:
while (Serial1.available())
{
bgsm[bsm]=Serial1.read();
Serial.print(bgsm[bsm]);
bsm++;
if (bsm>=199)
bsm=0;
}
if(strstr(bgsm,"SM")!=NULL)
{
Serial1.println("AT+CMGR=1");
delay(500);
myGLCD.setFont(SmallFont);
myGLCD.print("SMS=", 0, 225);
myGLCD.setFont(BigFont);
memset(bgsm, 0 , sizeof(bgsm));
Serial1.println("AT+CMGR=1");
}
Re: Управление внешними устройствами с Arduino при помощи СМС
А зачем ты два раз один и тот же СМС считываешь?
Re: Управление внешними устройствами с Arduino при помощи СМС
Почему 2??? команда на открытие 1, потом загоняем все в буфер, далее смотрим если "шаблоны", по которым мы будем выполнять действия
Re: Управление внешними устройствами с Arduino при помощи СМС
PHP код:
Serial1.println("AT+CMGR=1");
delay(500);
myGLCD.setFont(SmallFont);
myGLCD.print("SMS=", 0, 225);
myGLCD.setFont(BigFont);
memset(bgsm, 0 , sizeof(bgsm));
Serial1.println("AT+CMGR=1");
Первой командой ты считываешь СМС под номером 1, а в конце ты опять его считываешь
Re: Управление внешними устройствами с Arduino при помощи СМС
Очепятка:):):)
AT+CMGD=1
Исправил давно...