Перейти к содержанию
    

Разбираюсь с Quectel M10 - уже есть траблы ;(

???

Каким боком тут RTS к GPS??

Данные с GPS модуля с ножки ТХ после парсинга шлются через GSM модуль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно и сырые данные гнать, без парсинга (по трафику может быть невыгодно, но дело вкуса) - в любом случае ловить одним UART МК (без контроля потока) и отправлять в другой (с контролем).

Буфер, естественно, понадобится.

Если у МК UART один - дело хуже, но выкрутиться можно с помощью коммутатора или программного UART со стороны GPS (как правило, там скорости низкие, сильно напрягать не будет).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может я коряво мыслю и выражаюсь, просто хотел сначала "смоделировать" и отработать последовательность команд через СОМ, апосля использовать OPEN CPU. Сразу вслепую ковырять исходники, дебажить модуль - очковато испортить родную прошивку. Или все же поставить копеечный внешний МК и не заморачиваться. Дело как бы не в экономии 1$, заманчиво реализовать возможности модуля.

Изменено пользователем V125

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С внешнего МК надо отправить через USART сообщение < AT+QICSGP=1,"internet.tele2.ru"\r\n >

Если использовать команду printf("AT+QICSGP=1,"internet.tele2.ru"\r\n "); то получается косячок с синтаксисом, кавычки внутри кавычек "internet.tele2.ru" Я с USART особо не работал. Как мне отправить сообщение с кавычками? Или сделать

putchar('A');

putchar('T');

putchar('+'); и т.д.

Изменено пользователем V125

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С внешнего МК надо отправить через USART сообщение < AT+QICSGP=1,"internet.tele2.ru"\r\n >

Если использовать команду printf("AT+QICSGP=1,"internet.tele2.ru"\r\n "); то получается косячок с синтаксисом, кавычки внутри кавычек "internet.tele2.ru" Я с USART особо не работал. Как мне отправить сообщение с кавычками? Или просто писать ф-цию отправки сообщения

char ch = 34; // код кавычек
printf("AT+QICSGP=1,%c internet.tele2.ru%c\r\n ",ch,ch);

 

Или может слеш экранирует кавычки: printf("AT+QICSGP=1,\"internet.tele2.ru\"\r\n ");

Изменено пользователем CupuyC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для отладки GPRS написал на 64 Меге (чтобы апосля проблем с объемом флеша небыло) программку. Нарисована и работает из PROTEUSa через виртуальный Протеусовский COM порт.

...........................

AT+QIOPEN="TCP","193.193.165.165",20332\r\n

OK

CONNECT OK

AT+QISEND

>#L#ххххххххххххххх;123\r\n

0x1A\r\n

SEND OK

#AL#1

Все прекрасно работает без сигналов RTS/CTS! Я так нигде и не нашел, что их надо ОБЯЗАТЕЛЬНО использовать, RTS пока болтается в воздухе.

Изменено пользователем V125

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В местной лавке отсутствует MEGA64L (ну не хочется использовать без L из-за необходимости согласования уровней). Поэтому пока в Протеусе. Правда флеши занято 10К, а ОЗУ почти 4К. Мечтаю перебраться на STM32. Работает нормально, гонит данные на orange gps trace. Иногда что-то виснет и данные перестают передаваться. Грешу на глюки Протеуса. Но это лирика. Вопрос посуществу. Как можно гарантированно контролировать, что сам GSM-модуль не завис. По мигалке Нетлайта кажется ненадежным. И существует ли АТ команда полного ресета модуля?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В местной лавке отсутствует MEGA64L (ну не хочется использовать без L из-за необходимости согласования уровней). Поэтому пока в Протеусе. Правда флеши занято 10К, а ОЗУ почти 4К. Мечтаю перебраться на STM32. Работает нормально, гонит данные на orange gps trace. Иногда что-то виснет и данные перестают передаваться. Грешу на глюки Протеуса. Но это лирика. Вопрос посуществу. Как можно гарантированно контролировать, что сам GSM-модуль не завис. По мигалке Нетлайта кажется ненадежным. И существует ли АТ команда полного ресета модуля?

 

Что имеено Вы подразумеваете по "модуль завис" : не отвечает на команды, выпал из сети или что-то другое.

Я бы порекомендовал бы Вам - первично смотреть регистрацию в сети (AT+CREG) в цикле программы через строго определённый промежуток. а перезагружать командой AT+CFUN. Пожалуйста, уточните синтаксис команд в даташите по модулю.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос посуществу. Как можно гарантированно контролировать, что сам GSM-модуль не завис. По мигалке Нетлайта кажется ненадежным. И существует ли АТ команда полного ресета модуля?
Работу модуля можно видеть во всех деталях используя ПО Catcher подключенное к модулю через отладочный порт.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что имеено Вы подразумеваете по "модуль завис" : не отвечает на команды, выпал из сети или что-то другое.
Под "модуль завис" я имел ввиду всевозможные глюки или любое неадекватное поведение во время штатной работы. Просто чтобы застраховаться на будущее. Внеший контроллер бы это усек и перезагрузил бы модуль. Помнится кто-то где-то контролировал меандр. А что за меандр такой и откуда берется уже не помню. Вот проверять регистрацию в сети- это отличная идея (недоумился до элементарного). Я просто контролирую соединение с сервером. Если во время сна - время от времени пингую сервер и проверяю #AP#, иначе проверяю #ASD#1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если нужна высокая гарантия поддержания работоспособности, то сделайте так:

после каждой отправки данных на ваш сервер отправляйте ДНС-запрос в UDP-порт 53 на IP 8.8.8.8 с доменом, google.com, например. Посмотреть дейтаграмму можно снифером с компа. Гугл-днс ответит, и если все ОК, вы получите ответ с порта 53. Это будет вам аналогом пинга (последний, к сожалению, не реализован ни в оцпу, ни тем более в АТ).

Введите счетчик, при отсылке запроса инкрементируйте, при получении - декрементируйте. Если значение превысит заданное, можете перезапустить модуль (причем не АТ-командами и т.п., и даже не POWERKEY, а жестко по питанию - сделайте отвод от МК к управляемому стабилизатору, а МК питайте отдельно). И не забудьте watchdog в МК активировать, обнуляя в main.

 

ПС: меандр - у меня в трекере (см. пост в этой ветке). Но он предупреждает зависание оцпу. Кроме этого, я контролирую обмен, как описал выше (допустимое к-во потерь задается пользователем). И еще запускаю таймер при поднятии жпрс и ресетю модуль при таймауте (задается пользователем). Все это дает гарантию работы трекера в различных ситуациях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще запускаю таймер при поднятии жпрс и ресетю модуль при таймауте (задается пользователем). Все это дает гарантию работы трекера в различных ситуациях.
Если постоянно ресетить модуль, не очень -то экономично выходит. За GPRS соединение в ТЕЛЕ2 снимают около 40копеек. Не думаю, что другие операторы стесняются это делать. Если тока безлимит... Насчет пинга Гугла - или не врубился или Вы пропустили один мой пост. Для чего мне его пинговать, мне ведь отвечает orange gps trace. Вот если он перестал отвечать, тогда для проверки пингануть Гугл, (а заодно Рамблер с Яндексом :biggrin: ) и сделать вывод о необходимости ресета.
Изменено пользователем V125

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Немного не так вы поняли: в начале процедуры конекта к жпрс запускаю таймер скажем на 3 минуты. Далее выполняю конект: проверка регистрации (если нет, то ждем), собственно конект (ждем), получение айпи сервера по домену (если необходимо, ждем) создание сокета, пинг днс того же гугла(ждем ответа). Если удачно пинг (получен ответ), то таймер останавливаем. Т.о. если что-то не так при конекте и не самоустранилось в рабочем цикле за 3 минуты, то идем на перезагруз. Это внештатная ситуация, и, по идее. возникать вобще не должна. Но предвидеть надо.

 

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

посылаем пакет на оранж, увеличиваем счетчик.

получаем ответ, сбрасываем счетчик.

 

Если счетчик больше, скажем, 3, то пингуем гугл.

При получении ответа на пинг тоже сбрасываем счетчик.

 

Если счетчик достиг, скажем, 6, то деактивируем жпрс и запускаем ее снова, как описано выше (с таймером).

Далее, если в течение 3 мин жпрс не удается поднять, тогда уже ресетим модуль (по таймеру).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

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

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...