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

Автостоп реализован на реле К1 и двух транзисторах VT4 и VT5. При приеме или передаче символа стартовый импульс посылки проходит через диоды VD1 или VD3 и открывает транзистор VT4. Через открытый транзистор очень быстро разряжается емкость C3, которая затем медленно заряжается через высокоомный резистор R19. Если долгое время не было никаких посылок, то конденсатор потихоньку зарядится до порогового напряжения транзистора VT5, который закроется и отключит реле. Сопротивление резистора и емкость конденсатора подобраны так, чтобы отключение происходило примерно через минуту бездействия аппарата.
Переключателем S1 можно выбрать режим работы – OFF/ON/AUTO, то есть, мотор всегда выключен, всегда включен и автоматический режим.
Также, в схему была добавлена возможность как двухпроводного, так и четырехпроводного подключения. Для этого добавлены резисторы R1, R2 и R4, а также дополнительный каскад на транзисторе VT1. Этот каскад нужен только для трансляции импульсов передачи для автостопа при четырехпроводном подключении.
Еще добавлены светодиоды индикации питания, приема и передачи и сам источник питания из внешнего адаптера сделан встроенным, поскольку теперь 230 вольт все равно заходят в блок. Вся схема смонтирована на макетных платах в небольшом пластиковом корпусе.
С этой доработкой работать с аппаратом стало намного удобнее и комфортнее. Чтобы программно запустить аппарат необходимо лишь послать символ 11111 (команда переключения на латинский алфавит) и подождать примерно секунду раскрутки двигателя. Почему именно этот символ? Потому что только этот символ, состоящий из всех единиц, будет правильно распознан механикой аппарата при любой скорости вращения мотора.
В прошлый раз для подключения аппарата к компьютеру я написал некое подобие терминала. Программа транслирует код вводимых символов в МТК-2 и наоборот. Сейчас же я решил прикрутить этот транслятор к телеграмм-боту. На мой взгляд, это будет весьма символично – вместе соединятся технологии передачи сообщений далекой древности и настоящего времени.
Телеграмм-бот – это небольшое приложение, которое может работать отдельно от телеграмм-клиента и взаимодействовать напрямую с телеграмм-API для выполнения какой-либо функции. В нашем случае оно должно получать сообщение пользователя и выводить его на телетайп. А также введенное с телетайпа сообщение отправлять выбранному пользователю в ответ.
Почти полностью готовую библиотеку на Си я взял тут. После клонирования репозитория необходимо доустановить библиотеки curl4 и json-c и, после компиляции, все заработало с первого раза.
В примере, шедшем вместе с библиотекой, нужные мне функции (приема и передачи сообщений) были полностью реализованы. Ничего дополнительно делать даже и не пришлось. Необходимо было только дописать логику работы с телетайпом.
Если от пользователя приходит команда /start, ему выдается краткая инструкция. Также бот реагирует на команду /who, по этой команде выдается зашитый в комбинаторный валик автоответ телетайпа.
Что в итоге получилось, может проверить любой пользователь Телеграмм (бот teletypeT63_bot). А убедиться, что отвечает реально телетайп можно по видеотрансляции (с 12.00 до 13.00 МСК). Единственная просьба: воздержаться от посылки нецензурных, оскорбительных и политических сообщений. Также стоит ограничение на слишком длинные сообщения (более 100 символов).
