Попал мне в руки GSM-модем Siemens TC65 - очень удобная и полезная вещь оказалась.
Основная идея - у модуля есть СОМ-порт, дискретные линии ввода-вывода и аналоговые входы,
а в модуль можно загружать самописанное Java-приложение, которое может разговаривать как
с модемом, так и с этими линиями ввода-вывода. Устройство законченное - включай и работай.
Можно крепить на DIN-рельс, на винты. Питание - 8-30 В.
В Санкт-Петербурге эти модули можно купить
в т.ч. здесь.
Не рекламы ради, а удобства для.
На этом модеме очень удобно делать системы GSM + GPS позиционирования, автопоиска,
слежения за транспортом на автопредприятиях и прочих вещей.
На этой странице выложены самописанные приложения и примеры, распространяемые как freeware.
Берите, пользуйтесь, переделывайте как хотите, буду только рад. Если получите за переделанное
денежку и захотите поделиться - не возражаю :), номер кошелька для яндекс-денег 4100148624459.
Для использования GSM-модема Siemens TC65i в качестве охранной сигнализации или автомобильного пейджера
нужны только источник питания на напряжение 10-24В, сам модем, датчики (например, герконы на двери)
и предлагаемый Java-апплет (исходники - внутри). Описание -
здесь.
|
Очень распространенная задача - связь по радиоканалу с приборами, имеющими интерфейс RS-232 или RS-485, по протоколу Modbus/RTU
или проприетарным протоколам.
Все кому не лень с удовольствием наживаются на ее решении. Между тем она решается совершенно бесплатно
с помощью предлагаемого апплета для модема и одной или двух бесплатных программ, разработанных нашим соотечественником,
которые можно взять здесь
(нужно взять релиз программы com2tcp
и, если вам нужно одновременно установить канал связи с несколькими приборами либо не хочется делать нуль-модем, com0com). Исходники апплета - в том же архиве.
Текущая версия описания - здесь. Настройка - через меню подключенного на 115200-8-n-1-none терминала.
В канале связи GPRS могут быть значительные задержки (500-1500 мс), поэтому не все готовые программы опроса
будут работать через этот канал. Например, ранее (до появления билда 101218) не удалось добиться устойчивого опроса счетчиков НПФ
"Логика" - работает через раз и в пустой сети. Но работает.
Новая версия апплета (билд 101218) поддерживает Modbus/RTU путем буферизации пакетов запросов на стороне модема и
последующей отправки в СОМ-порт одним пакетом без перерывов. Задержка для буферизации регулируемая. Длина передаваемого
пакета (глубина буфера) - 256 байт. Пробуйте, у кого запустится. Поиграв с задержками, теоретически можно добиться устойчивого
опроса приборов учета "Логика" и других (ВКТ-7, например).
В билде 101227 добавлена аналогичная задержка на обратную отсылку. Как оказалось, она помогает
бороться с фрагментацией TCP-пакетов и тоже косвенно стабилизирует работу Modbus. Спасибо Андрею, который замучал-таки меня и
заставил довести прогу до ума! Его ВКТ-7 после этого начал опрашиваться родной (весьма кривой) программой.
Те, кому не надо, могут отключить буферизацию через меню, тогда байты приходят без задержек, и время прихода каждого байта
определяется задержкой канала связи.
Билд 120523 умеет работать TCP сервером, т.е. устройство, подключённое к нему, можно опрашивать по IP-адресу без постоянного поддержания соединения.
Как всегда, возможны глюки (известные - вылечены) - жду отзывов.
Скачать апплет rs2gprs (последняя версия, 120826)
Скачать руководство к rs2gprs
Скачать исходный код rs2gprs (последняя версия, 120826)
Предыдущие версии:
Билд 120523 и исходники
Билд 101227
Билд 101219
|
По этой же схеме делается локатор для автомобиля. В автомобиль устанавливается GPS-приемник и модем с Java-апплетом.
Выход GPS-приемника подключается к СОМ-порту модема. Модем соединяется с компьютером через GPRS и транслирует данные
GPS в компьютер, как если бы GPS-приемник был подключен прямо к компьютеру. На компьютере стоит любая навигационная
программа, которая показывает положение машины на карте.
|
Если один модем сконфигурировать сервером, а другой - клиентом, можно сделать прозрачный мост через GPRS.
Один из отзывов:
Кстати, в порядке обмена опытом...
Данным пулом из двух модемов сделан GSM удлинитель MODBUS RTU скорость оптимальной оказалась 38400 буфер 1000мс. Период опроса в скаде 3000мс и выше. Ошибок от 10 до 30%, зависит от времени суток.
Конечно же, модем-сервер должен иметь статический IP-адрес, доступный от модема-клиента
(либо внешний, либо в виртуальной сети - такая услуга предоставляется, например,
Мегафоном в некоторых регионах, и только для корпоративных клиентов)
|
Столкнулся с программированием GSM-модуля Siemens TC65. Оказалось очень интересно.
Проблемы - непросто настроить среду разработки и научиться программировать на Java так,
чтобы получалось что-то полезное, да еще и работало. В принципе, все более или менее
описано в сименсовской документации на этот модуль, но завелось тоже далеко не сразу.
Поэтому решил кое-что выложить, чтобы другим было проще начинать.
- Конференция на ixbt.com - читать начинающим, там много очевидных, но толковых вещей и мыслей.
- Описание интерфейсов модуля Siemens TC65, схема подключения.
- Как настраивать среду разработки для модулей Siemens TC65 - сименсовский документ.(см. дополнения ниже)
- Как настраивать среду разработки для модулей Siemens TC65 - отдельные слова с разных форумов, которые мне в конечном итоге помогли.
- Java на Sun.com - Java SDK, необходим для работы Eclipse, ну и, собственно, приложений для модулей Siemens TC65
- J2ME SDK - необходим для компиляции приложений для модулей Siemens TC65. Бывает, что без него к приложению могут прикомпилироваться не те классы, и ничего не работает (уперся в проблему при переустановке). Возможно, есть более свежий вариант, но с этим все точно работает. (при второй переустановке он не понадобился, зато пришлось поставить 'этот JDK)
- Eclipse - Среда разработки Java-приложений для Siemens TC65
- eclipseme.org - Плагин к Eclipse, необходимый для разработки Java-приложений для Siemens TC65. ОЧЕНЬ ВАЖНО внимательно прочитать и выполнить все инструкции по установке и настройке, которые приведены на том же сайте.
- SMTK core pack - м.б. придется поставить, чтобы встал WTK
- SMTK core pack 3.0.06 - тоже не помешает. Если разрабатывать приложения не только для ТС65, то некоторые эмуляторы не цепляются к более старому SMTK. А некоторые - наоборот, к более новому. В общем, придется пробовать.
- WTK для TC65 - классы, встроенные в ТС65, и их описание в HTML, а также некоторые полезные утилиты. Говорят, это есть на сидюке, который должен идти вместе с модемом, но ко мне пришел только модем без всякого софта. Софт пришлось искать в инете, а мир - не без добрых людей. Самое приятное и несколько неожиданное, что добрые люди нашлись среди америкосов! (эту штуку для ТС65 нужно ставить обязательно)
- WTK R3 для TC65 - то же самое, но релиз R3 - более свежий. Документация по WTK развернута именно оттуда, чтобы было удобнее искать.
- TC65 Software Development Kit - интегрируется в Eclipse, и без него проекты строятся, но не запускаются. Там уже есть Module Exchange Suite.
- Module Exchange Suite для TC65 (отдельно) - софтина, которая видна из ОС как дисковод, но отображает содержимое файловой системы модуля и позволяет заливать туда написанные вами программы. Модуль должен быть подключен через СОМ-порт.
- AT-команды для TC65
- Учимся писать для TC65 почти с нуля - неплохой survival guide для начинающих (тут локальная копия)
- Мое тестовое приложение для Siemens TC65 и исходный текст на Java - проект для IDE Eclipse (положить в каталог workspace, созданный при установке Eclipse). Пример программы показывает, как посылать SMS по-русски, управлять входами и выходами модуля (GPIO), работать с COM-портом Siemens TC65.
- Еще один пример программирования для Siemens TC65. Показывает, как получать ответы на USSD-запросы (например, запрос баланса) с помощью ATCommandListener.
- Как передать из Siemens TC65 на веб-сайт какие-то минимальные данные (например, координаты GPS), или получить что-то с сайта.
- Веб-сервер на TC65. Пример слушающего сокета, одно- и многопоточный сервер. Заодно решена проблема exception: Network idle timeout (надо добавить timeout в строку-аргумент Connector при создании сокета) и exception: The address is already in use (нужно подождать минуту после закрытия сокета перед его повторным открытием).
- Как организовать прозрачное соединение по CSD.
- Как работать с потоками.
- Прошивка версии 3 для TC65, взятая отсюда.
- эмулятор для С75
- эмулятор для S55
- Еще один (сторонний) пример софтины, получающей и отображающей информацию с модема
- Русский форум Сименса, на котором есть остатки вопросов по их модулям.
Всё меняется, и Siemens превратился в Cinterion. К сожалению, дурацкая система поддержки пользователей
не претерпела изменений, и документацию по изделиям всё так же хрен где найдешь, равно как и CMTK. Но вот
хотя бы кое-что:
Весь 2010 год здесь были линки на блог кульного француза, у которого лежали образы CD из комплекта Cinterion и Siemens. К глубочайшему прискорбию, ему написали уроды из синтериона и попросили убрать эти сидюки. Типа, мы не хотим давать информацию нашим конкурентам. Бедняга, как человек законопослушный и по самое некуда
напуганный копирастами, убрал эти полезнейшие софты. А жаль.
Поскольку я уже опытный и пытался получить эти файлы что от сименса, что от синтериона (естественно, хрен они мне показали, а не файлы), как и обещал, выкладываю эти образы у себя. Хоть я и уважаю синтерион и его странные желания, но если бы они адекватно реагировали на запросы информации... сами виноваты, в общем.
Более того, если они вынудят меня тоже убрать файлы, я всё равно приложу все усилия, чтобы они остались доступными для общества. Или в крайнем случае мы как-нибудь поддержим "незаконных азиатских конкурентов", как они написали.
Качайте и распространяйте знание!
Отдельное замечание для синтерионов:
К великому сожалению, в России бизнес ведется через жопу и не благодаря, а вопреки. Поэтому ваше понятие business-to-business здесь просто не работает. Если там еще можно что-то нормально и легально получить, то здесь... Так что извините. Или сделайте нормальное представительство, которое будет нормально снабжать людей
документацией и железом по первому требованию, а не жевать сопли и посылать всех, кому надо менее 1000 модемов в год.
- SMTK R3 - Siemens Mobile Tool Kit R3.
- CMTK - Cinterion Mobile Tool Kit.
Здесь много примеров по програмированию основных фич модема TC65, например, работа с FTP через AT-команды или синхронизация часов модема с сервисом time (порт 37). Вклад испаноговорящего чувака, спасибо ему.
В 2010 году решил написать программку для Siemens TC65, и вдруг оказалось, что ее
никакими силами не удается запустить на модеме. Что-то не срастается, а что - так
и не понял. В результате удалось срастить, поставив древний Eclipse 3.2 и Siemens
WTK вручную. Чтобы в следующий раз (и другим людям) было проще, решил заархивировать
то, что у меня стоит, и выложить. Теоретически (если разархивировать в то же место)
все должно заработать без установки.
Eclipse 3.2, сконфигурированный для создания апплетов
для Siemens TC65, и сам Siemens WTK (133 091 616 байт)
Архив надо развернуть в корневой каталог диска Н:. Если такого диска нет, можно
попытаться поправить конфиг-файлы, но вероятность успеха - не 100%. Под Windows 7 всё это
тоже не работает, как под вистой - не знаю. Поэтому юзайте ХР или 2000SP4... Да, кому-то
неудобно - но что делать?
Вариант решения проблемы - спасибо Олегу:
сделал на диске директорию disk_h,
потом в командной строке выполнил subst h: c:\disk_h,
появился виртуальный диск H:
После установки надо запустить H:\eclipse\eclipse.exe. Там уже будут несколько проектов
из представленных на этом сайте.
Для корректной работы надо поставить JDK с сайта java.com. У меня он стоит в C:\Java\jdk1.6.0_20
и все пути прописаны туда. Если что-то не работает - попробуйте использовать именно этот
путь.
Успехов!
В некоторых случаях команда at^scfg="Userware/Autostart/Appname","",a:/modem_test.jar хоть
и возвращает ОК, но автозапуск работать не будет (руками запускается отлично). Уберите из имени файла
подчёркивание, а лучше приведите его к старому доброму ДОСовскому формату 8.3, и всё станет хорошо.
Упёрся в глюк модема. При использовании типа long (например, для обработки результата работы функции
System.currentTimeMillis() ) модем перестает разговаривать через СОМ-порт и, похоже, вообще вешается.
Обходной маневр -
public int millisNow()
{
return (int)System.currentTimeMillis();
}
Чтобы хотя бы миллисекунды с начала работы программы можно было оценивать и сравнивать.
УЖАС.
Конечно, мы хотим, чтобы при подаче питания или перезапуске модема запускалась наша замечательная программа.
И это возможно - надо всего лишь выполнить волшебную последовательность команд из подключенного терминала:
at^scfg="Userware/Autostart/Appname","",a:/myappname.jar
at^scfg="Userware/Autostart","",1
at^scfg="Userware/Autostart/Delay","",5
Все три раза модем должен ответить ОК. Если что-то не так, возможно, в более поздних прошивках формат команды
изменился - найдите новый формат и сообщите мне, пожалуйста, я добавлю.
Но вот незадача: мы хотим залить новую версию апплета, а для этого прицепить модем к компу. Но наш апплет,
залитый ранее, запускается при подаче питания и не дает доступа к памяти модема!
Проблема решается путем запуска утилиты autostart_off и одновременной перезагрузке модема.
Утилита успевает сказать модему, чтобы он не маялся дурью, пока он очередной раз не запустил ваш апплет.
ЧТО ОЧЕНЬ ХАРАКТЕРНО, ВСЁ ЭТО НАПИСАНО В МАНУАЛЕ ПО Java - НО КТО Ж ЕГО ЧИТАЕТ?..
|
|