Ротари Проект



В котором телефон с набором номера наделен электроникой для работы в мобильных сетях и может работать по назначению.

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

Если кто-нибудь помнит, я очень злой человек.

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

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

И я задался целью создать мобильный телефон с звонилкой.

Так родился iRotary.



iRotary Проект



Ротари Проект

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

Я выбрал красивый оранжевый цвет, чтобы красота iRotary соответствовала амбициям проекта.

Фото сделано с того же телефона в первый день покупки, с кабелями и всем остальным.

Вот как круто он выглядит и сегодня, хотя проводов у него на 50% меньше – что хорошо для мобильных телефонов.

Весь проект обошелся мне в 150 долларов по частям и в 2000 долларов на разработку.

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



Шаг 1: во-первых, вау!



Ротари Проект

Представьте себе, каково это появиться в клубе Club Club с этим! Лучший кандидат на интерфейсы со старой звонилкой — это, конечно, Arduino. Он также будет отвечать за работу с GSM. Он идеально подходит для чтения импульсов дозвона и преобразования их в целое число, которое затем можно использовать для набора номера.

Связь без проблем обрабатывается GSM-шилдом.

Это периферийное устройство, подключающееся к Arduino (на улицах мы называем его «щитом»).

Его очень легко программировать, в комплекте имеется библиотека с большинством необходимых функций - чтение SMS, отправка и прием звонков, отправка DTMF и т.д. Следующим шагом было написание кода для преобразования набора в числа.

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

Это означает, что если вы наберете три, коммутатор отправит три сигнала, когда мимо него пройдут три номера.

Чтобы определить набранный номер, вы просто подсчитываете, сколько раз переключатель был открыт и закрыт. Это было легко сделать с помощью следующего кода, который просто увеличивает переменную каждый раз, когда напряжение на переключателе меняется с низкого на высокое:

  
  
  
   

void readPulses() { char pinPulse = digitalRead(PIN_PULSE); if (pinPulse == HIGH && edge == 0) { pulses++; edge = 1; } else if (pinPulse == LOW && edge == 1) { edge = 0; } }

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

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



void readDialing() { char digit; bool finalDigit = false; char pinDialing = digitalRead(PIN_DIALING); if (pinDialing == 1 && dialing == 0) { digit = getDigit(); if (digit != -1) { number += (int)digit; showNumber(number); if (number.length() == NUMBER_LENGTH) { dialNumber(number); } } } dialing = pinDialing; }

Он еще не отправил вызов, так как щит еще не был подключен – это был следующий шаг.

Вот прототип в действии: Оно сразу заработало хорошо, даже со старым, ветхим устройством, которое я нашел для прототипирования.

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

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



Шаг 2: те, кто не рискует, не GSM-жители

Следующим шагом после успешного распознавания номера является добавление возможности совершать звонки посредством мобильной связи.

Я подключил шилд к Arduino и добавил код, необходимый для вызовов:

void dialNumber(String number) { call.Call(numArray); }

Захватывающий.

Хоть это и так просто, но это было очень круто, потому что большая часть функционала мобильного телефона (набор номера и вызов) была готова.

Вот как это работает: На этом этапе я столкнулся с рядом трудностей.

Первый — куда разместить Arduino с шилдом в телефоне, так как места из-за комплектующих телефона там практически не было.

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

Зачем вам телефон с звонилкой, если он не может издавать привычные для вас звонилки с звонилкой? И пришло вдохновение! Решение было простым: держать телефон тихо, вежливо, чтобы не беспокоить других людей, а в остальном все в порядке.

Решив сразу две задачи, я почувствовал, как растет моя радость.

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

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

И я уже почти заказал его, как вдруг решил: сначала попробую имеющиеся микрофон и динамик.

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

Собрав все воедино, я вставил разъемы во входы и выходы шилда и сделал звонок.

- Привет! - сказал мой голос.

- Привет! – радостно ответил я.

- Я слышу тебя! - Я сказал себе.

- И я тебя! - пришел ответ. Испытание завершилось оглушительным успехом.

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

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

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

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

Это приятный эффект, который мы потеряли.

Вот тизер финального продукта: Звуки колоколов ненастоящие, но это Голливуд.

Шаг 3: двигаемся дальше

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

Лучший способ сделать это — через мероприятия.

Arduino так не работает, потому что постоянно приходится спрашивать «нажата ли кнопкаЭ» многие тысячи раз в секунду, но архитектуру событий легко подделать с помощью небольшого количества кода.

Я хотел снять трубку с подставки, чтобы ответить на звонок, если телефон зазвонит, а если положить трубку обратно на подставку, текущий вызов будет прерван.

Еще я хотел, чтобы все сигналы управления игнорировались, когда трубка находилась на рычаге.

Этого легко добиться с помощью конечного автомата.

Это значит, что есть переменная, содержащая текущее состояние телефона - в состоянии покоя, разговора, звонка, набора номера и т.д. И если происходят какие-то события (нажатие кнопки), то они могут просто проверить, в каком состоянии находится телефон, и либо выполнить действие или не совершать его.



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

Мы проверим, меняется ли состояние кнопки, и вызовем событие только в том случае, если обнаружим изменение (в противном случае мы бы запускали событие тысячи раз, спрашивая «нажата ли кнопка», а Arduino отвечал «да» тысячи раз).

раз в секунду).



#define PIN_BUTTON_HALF 6 char buttonHalfEdge = 0; void checkButtonHalfPressed() { if (digitalRead(PIN_BUTTON_HALF) == LOW) { if (buttonHalfEdge == 0) { buttonHalfPressed(); } buttonHalfEdge = 1; } else { if (buttonHalfEdge == 1) { buttonHalfReleased(); } buttonHalfEdge = 0; } }

Эта кнопка имеет два состояния: наполовину нажата и полностью нажата (или наполовину отпущена и полностью отпущена, если спросить пессимиста).

Код определяет оба состояния, и другие события обрабатываются примерно таким же образом.

Посмотреть, как работает система, можно на следующем видео, где компоненты находятся в корпусе, но для питания ее еще нужно воткнуть в USB. Красота!

Шаг 4: Питание от аккумулятора



Ротари Проект

USB-разъем для зарядки аккумулятора Конечно, какой же это был бы мобильный телефон, если бы он не был мобильным? Это был бы не мобильный телефон! Таким образом, два варианта переноски телефона — это небольшая 5-вольтовая батарея и USB-схема зарядки или очень-очень длинный кабель.

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

  • Аккумулятор (с держателем, без которого не работает).

    Очевидно, что он будет питать телефон, и не очевидно, что он будет скрыт от глаз внутри корпуса.

  • Схема зарядки, один конец которой будет подключен к аккумулятору, а другой к гнезду USB. Зарядить аккумулятор можно с помощью обычного зарядного устройства USB.
  • Какой-то регулятор (точное название не помню).

    Он подключится к аккумулятору и будет лишить его энергии, как криптонит для аккумуляторов.

    Батареи не выдают обещанного напряжения, а вместо этого производят все меньше и меньше по мере их разрядки, и этот компонент позволит Arduino получать честные 5 В до тех пор, пока батарея не разрядится полностью.



Ротари Проект

Регулятор и зарядный узел Еще раз повторим, что аккумулятор и регулятор подключаются к зарядному устройству.

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

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

Не знаю, на сколько хватит батареи, больше нескольких часов не пользовался, но может и пару дней - ведь с телефона друзьям писать не получится( надо подключить машинку).

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



Шаг 5: Шага 5 нет.



Ротари Проект

Внутренности в сборе И проект был реализован! Проложив провода и засунув вещи в места, для которых они не предназначены, вы можете закрыть корпус, и все прекрасно встанет - при условии, что вы его не трясете.

Вы можете примерно увидеть расположение компонентов.

Arduino находится вверху справа, под ним щиток (вы можете видеть торчащую антенну), синий кабель питания USB идет к регулятору, подключенному к аккумулятору, и зарядному устройству, идущему к розетке вверху слева.

Вы можете увидеть кабели микрофона и динамика (сверху справа налево).

Схемы на коричневой плате ниже — оригинальные схемы телефона.

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

И вот, как и было обещано, финальная реклама во всей своей окончательной красе.

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

Что может быть важнее, чем воссоединиться со старыми друзьями благодаря безумному интернет-проекту какого-то чувака из Греции? Конечно, ничего! Если вам не терпелось сделать свой собственный сотовый телефон с номеронабирателем, и вы подумывали написать все с нуля, проводя бессонные ночи, занимаясь обратным проектированием моих фрагментов кода, у меня для вас хорошие новости.

Я опубликовал весь код в Интернете, потому что я такой человек.

github.com/skorokithakis/iRotary Дайте мне знать, насколько этот потрясающий проект изменил вашу жизнь, в комментариях к оригинальной статье или в Твиттере! Хлопать! Теги: #Сделай сам или Сделай сам #Старое железо #старая школа #телефон #дизельпанк #мобильный телефон #звонилка

Вместе с данным постом часто просматривают: