А ты посмотри в PDF для модема перечень AT команд
А ты посмотри в PDF для модема перечень AT команд
Chip, я читал. Команда AT+CNMI есть, но вот с параметрами не могу разобраться. Опытным путем, выяснил, что при параметрах 3,0,0,0, когда приходит СМС, оно автоматически открывается, то же самое происходит и с параметрами 3,2,0,0
В оригинале скетча, установлено 3,3,0,0, но это скетч для модуля SM5100B. При параметрах 3,3,0,0 просто приходит уведомление о полученном сообщении, а судя по статье http://tronixstuff.wordpress.com/201...ar-–-part-two/, в модуле SM5100B с такими параметрами СМС сразу открывается.
Кроме того, если в скетче, вместо Serial пишу Serial1, то шилд реагирует на команды терминала. С Serial, не реагирует. Но на Arduino Mega, Serial1 это ведь пины 18 и 19, а шилд к ним никак не может быть подключен. Его ноги включены в пины 0 и 1.
Также, с перемычками проблема. Когда использую NewSoftserial, устанавливаю ноги 2 и 3 и ставлю перемычки так:
23.bmp (ранние скетчи по отправке СМС и звонки работают)
При Serial1 так:
01.bmp (могу управлять с помощью терминала)
Вот надпись на шилде:
TXD
D|0|1|2|3|4|5|6|7
RXD
Никак не пойму, в чем загвоздка?
Последний раз редактировалось metaforos; 21.02.2012 в 05:44.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Нашел одну важную ошибку в моих скетчах (КАСАТЕЛЬНО ТОЛЬКО ARDUINO MEGA), которая также является, думаю одной из первопричин ранних неудач и дальнейших эксперементов:
Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
Т.е. используя NewSoftSerial, использование пина 2 в качестве Rx - недопустимо (а я то думаю, почему Ардуина в терминал ответы не шлет?).
Попробовал побороть эту проблему, установкой Rx на указанные пины, но все равно ничего не получилось. В результате, пришлось вообще отказаться от NewSoftSerial и работать с Serial1. ИМХО, NewSoftSerial, разрабатывалась для Arduino имеющих один последовательный порт.
Последний раз редактировалось metaforos; 23.02.2012 в 04:18.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Странно что ты использовал NewSoftSerial имея на борту четыре нормальных порта
НУ вот и я так думаю...Просто до этого нужно было "дойти" (разобраться)... Учимся на своих ошибках и эксперементируем дальше
![]()
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Получилось. !!! Вся заморочка была в моем непонимании Serial-oв. Перекинул на Serial1 и все заработало. СМС принимает, диодами моргает.![]()
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Вот и отлично!
Chip, сейчас начинаю работу над скетчем, который бы охватывал весь нужный мне функционал. Посмотрел примеры скетчей и увидел, что кроме функций "setup" и "loop", можно еще использовать и "свои" функции.
Почитал http://arduino.ru/Reference/FunctionDeclaration. Судя по описанию, название функции нужно объявлять заранее.
Почитал http://www.compcar.ru/forum/showthread.php?t=5307, посмотрел код.
"Свои" функции (их названия) объявлены в "loop". Т.е. можно просто в "loop" объявить выполнение "своих" функций и далее каждую функцию программировать?
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Объявлять функции не нужно , достаточно создать ее и вызывать из любого места
PHP код:
void loop()
{
IR_resiver(); //вызываем
joystik(); //вызываем
}
//*******************
void IR_resiver()
{
//твой код
}
//****************
void joystik()
{
//твой код
}
Последний раз редактировалось Chip; 28.02.2012 в 01:27.
Chip, возникла некоторая проблема. Увеличил упраравление до 8-ми устройств.
Вот скетч :
PHP код:
char inchar;
int relay8 = 11;
int relay7 = 10;
int relay6 = 9;
int relay5 = 8;
int relay4 = 7;
int relay3 = 6;
int relay2 = 5;
int relay1 = 4;
void setup()
{
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay5, OUTPUT);
pinMode(relay6, OUTPUT);
pinMode(relay7, OUTPUT);
pinMode(relay8, OUTPUT);
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
digitalWrite(relay4, LOW);
digitalWrite(relay5, LOW);
digitalWrite(relay6, LOW);
digitalWrite(relay7, LOW);
digitalWrite(relay8, LOW);
Serial1.begin(9600);
delay(30000);
Serial1.println("AT+CMGF=1\r");
delay(200);
Serial1.println("AT+CNMI=3,0,0,0\r");
delay(200);
}
void loop()
{
if(Serial1.available() >0)
{
inchar=Serial1.read();
if (inchar=='#')
{
delay(10);
inchar=Serial1.read();
if (inchar=='a')
{
delay(10);
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(relay1, LOW);
}
else if (inchar=='1')
{
digitalWrite(relay1, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='b')
{
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(relay2, LOW);
}
else if (inchar=='1')
{
digitalWrite(relay2, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='c')
{
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(relay3, LOW);
}
else if (inchar=='1')
{
digitalWrite(relay3, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='d')
{
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(relay4, LOW);
}
else if (inchar=='1')
{
digitalWrite(relay4, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='e')
{
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(relay5, LOW);
}
else if (inchar=='1')
{
digitalWrite(relay5, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='f')
{
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(relay6, LOW);
}
else if (inchar=='1')
{
digitalWrite(relay6, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='g')
{
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(relay7, LOW);
}
else if (inchar=='1')
{
digitalWrite(relay7, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='h')
{
inchar=Serial1.read();
if (inchar=='0')
{
digitalWrite(relay8, LOW);
}
else if (inchar=='1')
{
digitalWrite(relay8, HIGH);
}
delay(10);
}
}
Serial1.println("AT+CMGD=1,4\r"); // delete all SMS
}
}
}
}
}
}
}
}
}
Когда включаю всего 6 устройств (#a1b1c1d1e1f1g0h0), все работает нормально. Когда включаю 7 или 8 устройств (#a1b1c1d1e1f1g1h1), они включаются, но шилд отключается. С кнопки его не включить. Только отсоединение и подсоединение питания. При этом, Ардуина питается от компьютерного БП (12В) и устройства (нагрузка) физически не подключена. Кроме того, єто происходит именно тогда, когда включаю "g1" и "h1"
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)