Подключение дискового номеронабирателя к ардуино

Ретро GSM телефон на Arduino 1958 года, с дисковым номеронабирателем

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

Есть стационарные телефонные аппараты у которых нет провода между трубкой и базой, но есть провод к розетке АТС. В нашем проекте у телефона останется провод между трубкой и базой, но пропадёт провод к розетке, так как связь будет осуществляться по сети GSM.

Описание работы ретро GSM телефона:

  • После подачи питания дождитесь кратковременного колокольного звонка, он оповещает о том, что модем GSM зарегистрирован в сети сотового оператора связи.
  • Телефон может принимать входящие звонки если трубка лежит на телефоне.
  • Можно снять трубку (при отсутствии входящего звонка) для перехода в режим «я занят».
  • Для ответа на входящий звонок нужно поднять трубку.
  • Для завершения разговора нужно положить трубку на телефон.
  • Набираемый номер должен состоять из 11 цифр и начинаться с цифры 7 или 8.
  • Можно набирать номера 01, 02, 03, 04, 100, предварительно указав код города 8(495).
  • Можно набирать номера 101, 102, 103, 104, 112.
  • Ввод цифр номера осуществляется поворотом заводного диска до нужной цифры с последующим самовозвратом диска в исходное положение.
  • Для совершения исходящего вызова выполните следующие действия:
    • Поднимите трубку при отсутствии входящего вызова.
    • Дождитесь появления гудка в трубке, он сигнализирует о наличии связи с сотовым оператором, следовательно, готовности к набору номера.
    • Наберите номер вызываемого абонента.
    • Если Вы ошиблись, опустите, поднимите трубку и повторите набор заново.
    • Во время набора номера гудок в трубке должен пропасть. Вместо него, во время возврата заводного диска, имитируется звук «щелчков» от набора номера.
    • После ввода последней (одиннадцатой) цифры номера дождитель появления сигнала вызова (длинные гудки или мелодия), или сигнала занят (короткие гудки).
    • Если абонент ответит на Ваш вызов, то установится голосовое соединение.
    • Если абонент разорвёт голосовую связь, Вы услышите сигнал занят (короткие гудки).
  • Завершить вызов, набор, соединение или разговор можно в любое время повесив трубку.
  • Динамик в телефонной трубке излучает звуки разговора и сигнал вызова (длинные гудки или мелодия), а все остальные сигналы формируются звукоизлучателем (зуммером), так же установленным в телефонную трубку.

Нам понадобится:

  • Arduino / Piranha UNO.
  • GSM/GPRS Shield A6.
  • Battery Shield.
  • Звук разговора и сигналов (можно выбрать один из вариантов):
    • Динамик + микрофон + зуммер с генератором (в корпусе трубки телефона).
    • Гарнитура с микрофоном + Trema зуммер с генератором.
  • Колокольный звонок (можно выбрать один из вариантов):
    • Колокольный звонок телефона + Trema силовой ключ + повышающий DC-DC преобразователь.
    • Звонок из соленоида + колокол + Trema силовой ключ + повышающий DC-DC преобразователь.
    • Звонок из сервопривода + колокол.
  • Дисковый номеронабиратель (если его нет в корпусе телефона).
  • Трема кнопка (если в корпусе телефона нет кнопки опускания трубки).
  • Корпус телефона.
    Для реализации проекта нам необходимо установить библиотеку:
  • iarduino_GSM.
  • Библиотеки SoftwareSerial и Servo входят в стандартный набор Arduino IDE.

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE.

Схема сборки:

Arduino / Piranha UNO:

Если Вы собираетесь разместить устройство в корпусе телефона, найдите место для установки Arduino / Piranha UNO и закрепите её.

Batery Shield:

Установите Battery Shield на Arduino / Piranha UNO:
Во время установки Battery Shield должен быть в выключенном состоянии.

GSM/GPRS Shield:

На плате GSM/GPRS Shield A6 имеется слот для SIM-карт и переключатель UART. Установите SIM-карту в слот, выберите положение переключателя RX-7/TX-8.

Trema Shield:

Номеронабиратель:

Подключите номеронабиратель к выводам GND, D5, D6 и Трема кнопку к выводу D4:

Если Вы собираете устройство в корпусе телефона, то вместо Trema кнопки подключите кнопку фиксации опускания трубки, между выводами GND и D4).

Колокольный звонок:

Подключите модули управления колокольным звонком:

Напряжение питания 5В подводится на вход повышающего DC-DC преобразователя, а напряжение с его выхода (уровень напряжения регулируется потенциометром преобразователя) подводится к соленоиду или родной катушке звонка телефона, через Trema силовой ключ, управление которым осуществляется через вывод D2.

Колокольный звонок можно собрать не на соленоиде, а на сервоприводе, подключив его к выводу D2:

Преимуществом данной схемы является меньшее число деталей. Но в скетче нужно присвоить переменной modeBEEL значение 2 (разкомментировать строку в начале скетча), а так же указать углы сервопривода при которых боёк касается колокола и удаляется от него (углы указываются в функции funcBELL в конце скетча).

Устройство ввода/вывода звука:

Если Вы собираетесь разместить динамик, микрофон и зуммер в трубке телефона, то подключите их согласно схеме: (трубка соединяется с аппаратом четырехпроводным кабелем).

В телефонной трубке, рядом с динамиком, необходимо разместить и зуммер. Он подключается к выводу D3 и нужен для подачи сигналов «готов к набору» (гудок при снятой трубке) и «занято» (прерывистые гудки после разрыва голосового соединения).

Если Вы не собираетесь размещать элементы ввода/вывода звука в телефонной трубке, то более простым вариантом является использование гарнитуры, которая подключается к соответствующему разъёму на плате GSM/GPRS Shield A6, а сигналы «готов к набору» и «занято» будут выводиться отдельно, через Trema зуммер, так же подключённый к выводу D3.

Если Вы не собираетесь размещать элементы ввода/вывода звука в телефонной трубке, но и не желаете использовать гарнитуру, то реализуйте вот такую схему:

Полная схема устройства:

Пример схемы с использованием гарнитуры и колокольного звонка на базе соленоида:

Код программы (скетч):

В скетче предусмотрена возможность выбора типа колокольного звонка modeBEEL =0,1,2 и алгоритма работы кнопки фиксирующей опускание телефонной трубки flgHANG =0,1. Для выбора необходимого значения закомментируёте существующее и разкомментируйте требуемое.

В скетче используются библиотеки iarduino_GSM, SoftwareSerial и Servo (две последние входят в стандартный набор Arduino IDE).

В разделе функции funcBELL отвечающем за управление сервоприводом указаны углы 50° и 60° (три последние строки). Если Вы используете колокольный звонок на сервоприводе, измените угол 50° на тот при котором сервопривод ударяет бойком по колоколу, а угол 60° на тот при котором боёк удаляется от него.

Алгоритм работы скетча:

До кода Setup() определяются номера выводов, тип колокольного звонка, алгоритм работы кнопки фиксирующей опускание трубки, объявляются переменные и функции, подключаются библиотеки, и создаются объекты для работы с ними.

В коде setup() конфигурируются выбранные выводы, инициируется работа GSM/GPRS Shield, звук переводится на разъём гарнитуры, выполняется цикл ожидания готовности GSM/GPRS Shield к работе (регистрация в сети оператора). И после выполнения всех указанных действий выполняется оповещение о готовности к работе, путем включения колокольного звонка на 1 секунду.

Код цикла loop() разделён на две основные части: совершение исходящих звонков (данная часть выполняется если телефонная трубка снята) и приём входящих вызовов (данная часть выполняется если трубка лежит на телефоне).

Совершение исходящих звонков состоит из следующих действий:

  • Обнуление переменных, проверка связи с оператором, вывод сигнала в трубку телефона о готовности к работе.
  • Дальнейшие действия происходят в отдельном цикле, выход из которого возможен только если положить трубку на телефон. Так же в этом цикле постоянно сбрасывается голосовое соединение, не давая другим абонентам позвонить нам при снятой трубке.
  • Если начинается набор номера, то отключаем сигнал в телефонной трубке, подсчитываем количество импульсов набираемых цифр. После каждой введённой цифры из значение добавляется в строку с номером, которая проверяется на корректность (достижение 11 знаков, или совпадение с коротким номером). При желании Вы можете добавить или удалить некоторые короткие номера из скетча.
  • Если номер в строке корректен, то производится его набор, с дальнейшей проверкой состояния связи. Если связь установлена, то выполняется пустой цикл ожидания её разрыва.
  • При разрыве голосового соединения выполняется цикл вывода коротких звуковых сигналов в телефонную трубку. Этот цикл выполняется постоянно, пока не положить трубку на телефон.

Приём входящих вызовов состоит из следующих действий:

  • Отключение тонального сигнала в телефонной трубке (на случай если он был).
  • Дальнейшие действия происходят в отдельном цикле, выход из которого возможен только если снять трубку с телефона при отсутствии входящего вызова.
  • Если зафиксирован входящий вызов, то выполняется цикл включающий колокольный звонок, пока входящий вызов не изменит свой статус или не будет поднята трубка.
  • Если статус вызова изменился по причине поднятия трубки, то устанавливается голосовое соединение, и выполняется пустой цикл ожидания разрыва этого соединения.
  • После разрыва голосового соединения выполняется цикл вывода коротких звуковых сигналов в телефонную трубку. Этот цикл выполняется постоянно, пока не положить трубку на телефон.

В конце скетча определена функция управления колокольным звонком. Данная функция принимает один параметр типа bool ( true — ударить в колокол и освободить его / false — освободить колокол). В зависимости от значения переменной modeBEEL функция работает с колокольными звонками собранными на базе соленоида, родного звонка телефона, сервопривода или электромотора.

Источник

Сотовый телефон с дисковым номеронабирателем

Перевод статьи с сайта самодельщицы Джастин Хопт

Поскольку я получила неимоверное количество запросов от людей, желающих купить дисковый сотовый телефон, у себя на сайте я выложила набор для его сборки, где есть только всё самое «сложное» (напечатанный корпус с кнопками и плата); номеронабиратель и другие детали вам нужно будет искать самостоятельно.

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

Суть не в анахронизме. Я хотела показать, что можно получить вполне пригодный для использования сотовый телефон, максимально далеко отошедший от сенсорного экрана, и в некоторых случаях превосходящий его по функциональности. В каких же?

  • Реальная съёмная антенна с разъёмом SMA. Приём получился отличным, а если надо, я всегда могу прикрутить туда направленную антенну.
  • Когда мне нужен телефон, мне не надо продираться сквозь меню для вызова «приложения». Хрень какая-то.
  • Если я захочу позвонить мужу, я смогу сделать это нажатием на отдельную специальную физическую кнопку. Никаких меню. Суть не в том, чтобы использовать дисковый номеронабиратель для каждого звонка – в ежедневном режиме это может и утомить. Самые частые мои адресаты сохранены в памяти, а если мне нужно будет набрать новый номер или сделать что-то вроде настройки громкости, тогда я могу использовать прикольный и приятный дисковый набор.
  • Почти мгновенно работающий индикатор силы сигнала и уровня батареи высокого разрешения. Никакой задержки измерения силы сигнала, а мой светодиодный индикатор даёт мне 10 разрядов вместо 4.
  • Бистатический дисплей «электронная бумага» – он не тратит энергии на показ фиксированной информации.
  • Если я захочу поменять схему поведения телефона, я просто поменяю её.
  • Выключатель – реальный, физический переключатель. Никакого удерживания тупой кнопки, без уверенности в том, выключилось оно там или как.

Поэтому это не просто проект для демонстрации. Я намереваюсь использовать его в качестве основного телефона. В карман он влезает, получился достаточно компактным, позвонить людям, с которыми я чаще всего говорю, получается быстрее, чем со старого телефона, а аккумулятора хватает почти на 24 часа.

История проекта

Изначально я планировала сделать всё на скорую руку. Я разложила всё на столе, чтобы доказать работоспособность проекта, и использовала в качестве контроллера Arduino Micro:

Затем я подумала, что просто засуну всё в корпус, распечатанный на 3D-принтере. Назовём это вер. 1:

Однако результат оказался слишком хрупким. Нельзя было открыть его для починки чего-либо, не сломав чего-то другого. Хорошо, решила я – значит, придётся делать всё на печатной плате. Появилась вер. 2:

Всё работало, однако со всяческими проблемами. Аккумулятора хватало на 2 часа. Большой ошибкой было использовать Adafruit FONA 2G – я не знала, что 2G-сети закрываются. Однако соблазнительно близко к тому телефону, который я реально хотела получить.

Снова переделала дизайн. Получилась текущая, и пока финальная версия. 2-я версия использовала микроконтроллер ATmega2560, а 3-я использует ATmega2560V – вариант с низким энергопотреблением. Программируется в Arduino IDE так, будто это Arduino Mega2560.

Это не работает. Виновник:

Схема выглядит так. Все реальные файлы для KiCad можно скачать по ссылке выше:

Отладка последовательного подключения к FONA:

На фоне, кстати, стоит Rigol MSO1104Z – чудесный подарок от мужа на годовщину:

Законченный проект, вид сверху:

Изогнутый дисплей ePaper был добавлен в последнюю минуту творческого процесса, однако теперь это моя любимая часть. Я представляю себе, что у экрана есть две части – одна смотрит на верхнюю часть телефона, а вторая находится сзади. Таким образом можно выводить нужные сообщения на верхнюю часть дисплея в стиле пейджера – к примеру, последний пропущенный звонок:

При этом задняя часть дисплея доступна для других сообщений, списка контактов, и т.п.:

Источник

Adblock
detector