FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Четверг, 08.12.2016, 03:04
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 4 из 36«1234563536»
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Блок пользователя для работы с GSM (SIM 900 и М590)
Блок пользователя для работы с GSM
НовыйUser Дата: Суббота, 30.07.2016, 21:03 | Сообщение # 46
Подполковник
Группа: Проверенные
Сообщений: 271
Награды: 1
Репутация: 2
Статус: Offline
я так к слову отвелчься от кода....просто не понятно какой смысл третьего входа если сравнение всего двух идет... просто проброс без обработки на выход...или недокументированная возможность сравнить разом 3 сигнала ? shy
 
Слимпер Дата: Суббота, 30.07.2016, 21:10 | Сообщение # 47
Генерал-лейтенант
Группа: Проверенные
Сообщений: 676
Награды: 30
Репутация: 23
Статус: Offline
Цитата НовыйUser ()
я так к слову отвелчься от кода....просто не понятно какой смысл третьего входа если сравнение всего двух идет... просто проброс без обработки на выход...или недокументированная возможность сравнить разом 3 сигнала ?
Сравнивать можно хоть десять и в блок AND (И), на выходе 1 будет только тогда когда на всех входах (2 или 10) будут 1.

Из хелпа Wiki, тоже есть и Онлайн помощи

Цитата
«Добавить вход»  - Служит для добавления входа к блокам OR или AND.
«Удалить вход»  - Служит для удаления входа у блоков OR или AND.
 
Слимпер Дата: Воскресенье, 31.07.2016, 10:39 | Сообщение # 48
Генерал-лейтенант
Группа: Проверенные
Сообщений: 676
Награды: 30
Репутация: 23
Статус: Offline
Цитата НовыйUser ()
проверил оба телефона. оба работают ! ))) но через раз на них смски шлет....
Вот это вообще странно, если прошёл сигнал gosms, то и на вход он должен прийти.
Похоже, проблема в той части, что отправляет СМС, а раньше все всегда ответные смс уходили?
Цитата НовыйUser ()
где-то за пол часа простоя была сработка реле без запросов... смс не отослало...как-то сам по себе сработал
Может был перезапуск контроллера?
Цитата НовыйUser ()
вообщем осталось понять как сделать чтобы отвечал на каждое смс любого номера...а не на 1-3-5-7-9
Для контроля попробуй место gosms на вход блока поставить кнопку, и на вход Phone один конкретный телефон. Проверить в какой части все таки дело.
 
НовыйUser Дата: Воскресенье, 31.07.2016, 13:20 | Сообщение # 49
Подполковник
Группа: Проверенные
Сообщений: 271
Награды: 1
Репутация: 2
Статус: Offline
Цитата Слимпер ()
Может был перезапуск контроллера?


могу косвенно это понять если был бы выход общей информации - на страничку вебсервера тогда бы сменились крайние ответы модема на ОК... так врятли перезапуск был....стабильно питание.... но это не столь важно пока )

Цитата Слимпер ()
а раньше все всегда ответные смс уходили?


да

Цитата Слимпер ()
Для контроля попробуй место gosms на вход блока поставить кнопку, и на вход Phone один конкретный телефон. Проверить в какой части все таки дело.


ок

Добавлено (31.07.2016, 10:58)
---------------------------------------------
- при указании конкретного телефона - так же через раз
смотрю далее

Добавлено (31.07.2016, 12:39)
---------------------------------------------
все три выхода стабильно разом срабатывают одновременно...
и так же стабильно абсолютно через раз шлет ))

-не ребутится модем точно

Добавлено (31.07.2016, 12:42)
---------------------------------------------
тайминги задержки роли не играют единственное что точно по выходам остается после выполнения висеть на выходе блока после выполнения всех операций содержимое смски и номер телефона...

Добавлено (31.07.2016, 13:20)
---------------------------------------------
проверил через несиметричный мультивибратор с длиной импульса 3 секунды и задержкой 30 секунд на вход insms с конкретным номером phone - через раз шлет. Vitez писал вначале к блоку если длинный импульс на вход insms то нужно через rtrig на него подавать. Тоже пробовал - не прошло.

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

 
Слимпер Дата: Воскресенье, 31.07.2016, 16:40 | Сообщение # 50
Генерал-лейтенант
Группа: Проверенные
Сообщений: 676
Награды: 30
Репутация: 23
Статус: Offline
Цитата НовыйUser ()
все три выхода стабильно разом срабатывают одновременно...и так же стабильно абсолютно через раз шлет ))
Похоже дело в работе с самим модемом, хотя очень странно, что ровно через раз, блок отправки СМС там один, и он не может срабатывать по разному.

Что самое странное:
Цитата НовыйUser ()
а раньше все всегда ответные смс уходили?да
А код отправки я не менял.

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

Цитата НовыйUser ()
тайминги задержки роли не играют единственное что точно по выходам остается после выполнения висеть на выходе блока после выполнения всех операций содержимое смски и номер телефона...
А что надо убирать, а зачем? Так то это сделать не проблема.


Сообщение отредактировал Слимпер - Воскресенье, 31.07.2016, 16:41
 
НовыйUser Дата: Воскресенье, 31.07.2016, 19:37 | Сообщение # 51
Подполковник
Группа: Проверенные
Сообщений: 271
Награды: 1
Репутация: 2
Статус: Offline
Цитата Слимпер ()
А что надо убирать, а зачем? Так то это сделать не проблема.


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

по скетчу расскажу моему кривому...когда я выводил gosms и phone от каждого номера сравнения то скетч работал...а когда единственный gosms и phone был на который заходила логика обработки - не работал толком скетч тот же.... я думал у меня уже глюки начались... :)

вот скетч (начальный) который отсылает стабильно с одного из номеров:

DECLARE SECTION:

String currStr= "";
boolean isStringMessage= false;

SETUP SECTION:

delay(2000);
Serial3.begin(115200);
delay(50);
Serial3.println("AT+CMGF=1\r");
delay(50);
Serial3.println("AT+CSCS=\"GSM\"\r");
delay(50);
Serial3.println("AT+CNMI=2,2,0,0,0\r");
delay(50);
Serial3.println("AT+CLIP=1\r");
delay(50);

LOOP SECTION:

if ( In_sms == true)
{
Serial3.print("AT+CMGS=\"");
delay(50);
Serial3.print(Phone);
delay(50);
Serial3.println("\"");
delay(50);
Serial3.println();
delay(50);
Serial3.println(text);
delay(50);
Serial3.println("\n");
delay(50);
Serial3.println(text1);
delay(50);
Serial3.println("\n");
delay(50);
Serial3.println(text2);
delay(50);
Serial3.println("\n");
delay(50);
Serial3.println(text3);
delay(50);
Serial3.println("\n");
delay(50);
Serial3.println(text4);
delay(50);
Serial3.println("\n");
delay(50);
Serial3.println(text5);
delay(50);
Serial3.println("\n");
delay(50);
Serial3.println(text6);
delay(50);
Serial3.println("\n");
delay(50);
Serial3.println(text7);
delay(50);
Serial3.println("\n");
delay(50);
Serial3.println(text8);
delay(50);
Serial3.println((char)26);
delay(50);
Serial3.println();
}
if (!Serial3.available());
char currSymb = Serial3.read();
if ('\r' == currSymb) {
Call = currStr;

if (isStringMessage) {
out_sms = currStr;
isStringMessage = false; }
else {
if (currStr.startsWith("+CMT")) {
isStringMessage = true;
}
}
currStr = "";
} else if ('\n' != currSymb) {
currStr += String(currSymb);
}

есть второй модем.... но он так же отрабатывает этот скетч...

Добавлено (31.07.2016, 19:01)
---------------------------------------------
https://www.youtube.com/watch?v=tWTsd1uoKAk

на видео работа отправки смс. 16 минута. только у меня не кушает модем ни 0x0D не $1A
в сетапе только через \r и отправка (стрелка) через Serial3.println((char)26);

Добавлено (31.07.2016, 19:18)
---------------------------------------------
проверил с отключенном эхом (добавляется в сетап еще ATE0)... тоже самое..

Добавлено (31.07.2016, 19:32)
---------------------------------------------
arduino ide стоковая с флрогом 1.6.3
мож на самой свежей 1.6.10 заведется без глюк...проверю...

Добавлено (31.07.2016, 19:37)
---------------------------------------------
не в среде дело точно ...

Сообщение отредактировал НовыйUser - Воскресенье, 31.07.2016, 18:43
 
Vitez Дата: Воскресенье, 31.07.2016, 20:06 | Сообщение # 52
Лейтенант
Группа: Проверенные
Сообщений: 104
Награды: 4
Репутация: 0
Статус: Offline
Слимпер, Спасибо, все работает. Проблема с Каскадой то же устранилась.
 
Слимпер Дата: Воскресенье, 31.07.2016, 20:33 | Сообщение # 53
Генерал-лейтенант
Группа: Проверенные
Сообщений: 676
Награды: 30
Репутация: 23
Статус: Offline
Цитата НовыйUser ()
на видео работа отправки смс. 16 минута. только у меня не кушает модем ни 0x0D не $1Aв сетапе только через \r и отправка (стрелка) через Serial3.println((char)26);
это разные формы записи одно и того символа.
  $0D (HEX)  --  (char)13 (DEC)-- \r   переноса строки
$1A  -  (char)26  тоже спец символ.  

Ладно завтра еще посмотрю что можно сделать.
 
Слимпер Дата: Понедельник, 01.08.2016, 19:37 | Сообщение # 54
Генерал-лейтенант
Группа: Проверенные
Сообщений: 676
Награды: 30
Репутация: 23
Статус: Offline
Цитата Слимпер ()
Ладно завтра еще посмотрю что можно сделать.

Почитал описание команд, форум, переписал блок почти полностью.
Сделал описание входов выходов
Новое:
Отправка по переднему фронту (один раз, даже если 1 все время висит)
Проверка корректности оправки СМС, выход с кодом Ошибки
Выходы Принята СМС и Отправлена СМС выдают одиночные импульсы 

Была мысль добавить авто удаление СМС, т.е. кода сообщений становится много то удалять несколько старых. Но пока не до конца понял, что будет отвечать модуль на команду AT+CPMS?
Или лучше  доделать авто удаление сообщения по его прочтению?

Еще есть команды готовности модуля к работе и регистрации в сети, можно было бы это анализировать, но в каком виде выводить не знаю. 

Самое любопытное было бы разобраться как его в режим сна переводить, и будить обратно. Но это без модуля будет проблематично, т.к. необходимо подключение к реальному модулю.
 

Прикрепления: test_7.flp(371Kb)
 
stapmoff Дата: Понедельник, 01.08.2016, 19:56 | Сообщение # 55
Майор
Группа: Проверенные
Сообщений: 154
Награды: 0
Репутация: 0
Статус: Offline
Блок получился супер, но где поддержка других контроллеров, например уно! Предлагаю вам в настройках блока сделать выбор портов для назначения RX TX
 
Слимпер Дата: Понедельник, 01.08.2016, 20:17 | Сообщение # 56
Генерал-лейтенант
Группа: Проверенные
Сообщений: 676
Награды: 30
Репутация: 23
Статус: Offline
Цитата stapmoff ()
Блок получился супер,
Если вы про тот что выкладывал я (Слимпер), как он работает я не знаю, дорабатывал по документации без реального модуля. Вот появится НовыйUser, 11159по тестирует и скажет.
Первые блоки делал Vitez, он говори что у него все нормально работает.

Цитата stapmoff ()
но где поддержка других контроллеров, например уно!
Ту есть закавыка в написании пользовательских блоков, без значительного увеличения кода, а следовательно занимаемой памяти, сделать универсальный блок не получится.

Но надо будет попробовать, насколько он станет тяжелее.

Цитата stapmoff ()
Предлагаю вам в настройках блока сделать выбор портов для назначения RX TX
Вы про аппаратный порт или про SoftwareSerial ?

 
НовыйUser Дата: Понедельник, 01.08.2016, 23:25 | Сообщение # 57
Подполковник
Группа: Проверенные
Сообщений: 271
Награды: 1
Репутация: 2
Статус: Offline
в сетпа секции время с 2 до 3 поднял.....delay(3000);

test7.flp:
- первая смс - нет ответа от реле, нет ответной смс
-вторая смс - реле отвечает, ответной смс нет

ставлю в свой большой проект где выходы вывожу на вебсервер(блок флпрога) с текстовой индикацией:
- при первом запуске без отправки смс (ожидание) следующие данные сразу на выводах:

receivvedsms: 0 ( +реле26 молчит)
senttsms: 0 (+реле27 молчит)
texttsms:
tnommer:
errror: 0

тестируем... результаты...
_____________________________________
первая смс:

receivvedsms: 0 (при получении мгновенно реле включается и выключается )
senttsms: 0 (при получении мгновенно реле включается и выключается )
texttsms: TEST1
tnommer: +79номеропределен
errror: 0

ОТВЕТНОЙ СМС НЕТ :(
_______________________________________________

вторая смс:

receivvedsms: 0 (при получении мгновенно реле включается и выключается)
senttsms: 0 (при получении мгновенно реле включается и выключается )
texttsms: TEST1
tnommer: +79номеропределен
errror: 0

СРАБАТЫВАЕТ РЕЛЕ С ПИНОМ 13 на 5сек

ОТВЕТНОЙ СМС НЕТ :(

через 5 минут показатели все теже
___________________________________________________

в блоке VITEZ когда я переделывал еще тогда для тестов на всякий случай снимал интегер переменную на скоростях и указал конкретное число 115200 (из-за описания того что в INTEGER ставится от -32768 до 32768) Не знаю влияет ли это... чтобы не было глюк тогда исключал..

.

Добавлено (01.08.2016, 22:57)
---------------------------------------------
Цитата Слимпер ()
Но пока не до конца понял, что будет отвечать модуль на команду AT+CPMS?


указал:
Serial3.println("AT+CPMS?");
ответ: ERROR

или

указал:
Serial3.println("AT+CPMS?\r");
ответ: ERROR

на сколько помню команда что используем Serial3.println("AT+CNMI=2,2,0,0,0");
указывает модему все смс сразу в терминал выводить без сохранения на симкарте
и при включении через 5-15 секунд модем дает +PBREADY (что в некоторых источниках писали означает подключение симкарты)

Добавлено (01.08.2016, 23:25)
---------------------------------------------
Цитата Слимпер ()
Была мысль добавить авто удаление СМС, т.е. кода сообщений становится много то удалять несколько старых.


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

Цитата Слимпер ()
Или лучше  доделать авто удаление сообщения по его прочтению?


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

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

+++++++++++++++++++
резюмирую:
а) реле13 включает НА ВСЕ СМС ЗА ИСКЛЮЧЕНИЕМ ПЕРВОЙ
б) нет ответных смс
+++++++++++++++++++


Сообщение отредактировал НовыйUser - Вторник, 02.08.2016, 00:36
 
Слимпер Дата: Вторник, 02.08.2016, 07:51 | Сообщение # 58
Генерал-лейтенант
Группа: Проверенные
Сообщений: 676
Награды: 30
Репутация: 23
Статус: Offline
Цитата НовыйUser ()
receivvedsms: 0 (при получении мгновенно реле включается и выключается)senttsms: 0 (при получении мгновенно реле включается и выключается )
texttsms: TEST1
tnommer: +79номеропределен
errror: 0
Кажет я понял, что получилось, виной опять отсутствие модуля tongue .
По совету с форума не работает? Neoway m590
В отправку сообщения добавил еще одну команду:
Serial3.print("AT+CMGF=1\r");

Так как сделана проверка на ответ модуля на команды, и завершение команды при получении от модуля сообщения OK, отправка завершалась (обрывалась) на середине, после получения ОК после первой команды.

Вроде поправил, должно помочь, но проверь смогу только вечером.
Все остальное по отчету проходило правильно.

Я вас уже наверное, замучил своим не доделками ^_^

Добавлено (02.08.2016, 07:32)
---------------------------------------------
Цитата НовыйUser ()
на сколько помню команда что используем Serial3.println("AT+CNMI=2,2,0,0,0");указывает модему все смс сразу в терминал выводить без сохранения на симкарте

Вы правы 2,2 дает вывод сообщение без сохранения на симку. Пропустил эту команду кода разбирался с кодами.
Ладно тогда про удоление СМС пока забудем. 

А вот про контроль связи, явно лучше по разбираться

Добавлено (02.08.2016, 07:42)
---------------------------------------------
Согласно статье GSM модуль NEOWAY M590 – описание и команды управления
Там доп обвязка требуется для возможности перезапуска в случаи зависания.

Добавлено (02.08.2016, 07:51)
---------------------------------------------

Цитата НовыйUser ()
в блоке VITEZ когда я переделывал еще тогда для тестов на всякий случай снимал интегер переменную на скоростях и указал конкретное число 115200 (из-за описания того что в INTEGER ставится от -32768 до 32768) Не знаю влияет ли это... чтобы не было глюк тогда исключал..
Ну согласен не совсем корректно, но при компиляции все равно будет выглядеть так
Serial3.begin( 115200 );
Но для порядку заменю тип на Long.
Прикрепления: 4714149.flp(368Kb)


Сообщение отредактировал Слимпер - Вторник, 02.08.2016, 07:39
 
Слимпер Дата: Вторник, 02.08.2016, 08:24 | Сообщение # 59
Генерал-лейтенант
Группа: Проверенные
Сообщений: 676
Награды: 30
Репутация: 23
Статус: Offline
Цитата НовыйUser ()
реле13 включает НА ВСЕ СМС ЗА ИСКЛЮЧЕНИЕМ ПЕРВОЙИ
Вообще то это кося, следствие особенностей работы компилятор FLProg.


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

Надо либо заменить блок поиска подстроки на блок сравнения, но тогда нельзя будет отправить несколько команд одновременно.
 Или все, что правее блоков поиска и сравнения строк перенести на следующею плату.
Прикрепления: 8073105.png(16Kb)
 
НовыйUser Дата: Вторник, 02.08.2016, 15:32 | Сообщение # 60
Подполковник
Группа: Проверенные
Сообщений: 271
Награды: 1
Репутация: 2
Статус: Offline
результаты:

TEST1 отпаравляю. Реле молчит, пришел ответ 123456789(на каждом входе цифра) в одну строку (не каждая цифра на каждой строке . Но пришел ответ :)

второй раз отправляю TEST1. Реле срабатывает, пришел ответ 123456789 в одну строку

Цитата Слимпер ()
Я вас уже наверное, замучил своим не доделками ^_^


все ок smile блок нужен не только мне, но и другим. Могу тестить - тестирую, проверяю... 590 ходовая вещь - для флпрога этот блок в плюс точно. Да и потом многи инфы узнал по блокам по типу AND, OR...

Все ок. И к тому же спасибо ))

Цитата Слимпер ()
Или все, что правее блоков поиска и сравнения строк перенести на следующею плату.


вариант... я не знал...

Добавлено (02.08.2016, 13:33)
---------------------------------------------
Цитата Слимпер ()
Предлагаю вам в настройках блока сделать выбор портов для назначения RX TX
Вы про аппаратный порт или про SoftwareSerial ?


когда рассматривал варианты портов для меги2560 можно было и 0 хардварный порт оставить, но универсальность заключается в том что прерывания точно везде указывают на 14 и 15 порты.... в остальных случаях (как мой) у меня стоит сетевая карта и стоит она на меге кране не стабильно. физически не плотно на ногах. мешает usb разъем самой меги. и дабы не было лишних глюк с соединением по верх сетевой карты и глюков с пересечением используемых пинов и прерываниями осталось точно serial1/2/3 юзать... но опять же в источниках кто как пишет о пинах....и только 14 с 15 точно указаны... это речь о хардваресериал.... смысл - в итоге получить блок с максимально безглючным соединением и подходящим под большее число пользователей.. :)

Добавлено (02.08.2016, 14:15)
---------------------------------------------
оба номера заработали... да... у каждого номера только со второй смс реле срабатывает, но сообщения сразу каждое приходит... smile надо теперь разложить цифры из горизонтали в вертикаль

123456789
на
1
2
3
4
5
6
7
8
9

))

Добавлено (02.08.2016, 15:32)
---------------------------------------------
Цитата Слимпер ()
А вот про контроль связи, явно лучше по разбираться


Можно отдельный вход сделать на проверку связи и выход для него с которого приходит цифра
http://cyntech.co.uk/downloads/neoway-m590-at-command-sets-v3.pdf 21страница

На вскидку что можно дописать:
1) легко править количество входов. Чтобы новичок, а точнее продвинутый мог бы легко поменять для новичка в блоке количество входов. Либо простое описание тут или в блоке как это сделать. А вообще даже подцеплять те входа где нет ПУСТО... подал пользователь только на один вход..один и отправляется...на два -два.. итд..
2) качество связи вход и выход для него
3) универсальный вход куда можно подать любую инфу и команду и получить с универсального выхода все что блок выдает
4) описание к блоку с ссылкой на тему + линк на пдф к блоку + вводную по тексту смс... (https://otvet.mail.ru/question/15679366)
5) перевод (переменной в настройках блока) текста приема и передачи (25 страница мануала)

AT+CMGF=[<mode>]
0: PDU mode
1: text mode

более пока я даже не знаю что еще может быть понадобиться...
а.... пины...как просил stapmoff под другие платы..... как я понимаю тут только можно хардваресериал использовать.... тогда выбор пинов под serial0 serial1 serial2 serial3

но главное движок обкатать чтобы не было глюк....


Сообщение отредактировал НовыйUser - Вторник, 02.08.2016, 16:34
 
Форум » Основной » Спросить у знатоков » Блок пользователя для работы с GSM (SIM 900 и М590)
Страница 4 из 36«1234563536»
Поиск:

FLProg © 2016
Яндекс.Метрика