Как сделать телефон сенсорный своими руками
Самый простой способ как сделать своими руками настоящий сотовый телефон
По правде говоря, в настоящий момент нет логических целей для того, чтобы собирать мобильник своими руками. Особенно учитывая то, что самый простой покупной мобильник будет стоить дешевле. Но, тем не менее, изучение — это очень важный аспект процесса сборки. Более того, владение мобильником, который ты создал сам — это очень крутая идея для поделки.
Большинство из нас владеют мобильными, как и я. И после нескольких успешных проектов я задумался над тем, что создание мобильника своими руками будет хорошим вызовом. Я прекрасно осознавал, что у меня не получится воссоздать весь функционал современного телефона, но осуществление звонков и, возможно, отправка смс, вполне меня устраивала.
Шаг 1: Планирование
В качестве вдохновения я использовал проекты, найденные в интернете:
Модуль сотового GSM
Самый главный компонент телефона — модуль GSM. После сёрфинга по интернету, я обнаружил, что на Ибэй можно найти такой модуль (модели SIM800L) по очень неплохой цене и при этом почти не придётся ничего паять. Моей целью было не устранить пайку вообще, но уменьшить время на паяльные работы в целом. Как впоследствии оказалось, Adafruit использует такой же чип SIM800L и, к моему удивлению, их код заработал сразу и без каких-либо модификаций.
Adafruit FONA
Модуль работает на частотах 850/900/1800/1900MHz, позволяя ловить радио в диапазоне FM и много другое. Радио не было важным для меня, но, возможно, в будущем я добавлю этот функционал. Важными функциями являются осуществление звонков, получение и отправка СМС и этого вполне достаточно.
В качестве бонуса, купленный модуль обладает антенной. На другом конце платы есть модуль для сим-карт, что также делает жизнь проще (не придётся производить мелкую и затратную по времени пайку).
Провода динамика “+” (SpkP) и “-” (SpkN) соединяются напрямую с SIM800L. То же касается и микрофона. “Net” — для антенны, но так как она уже встроена в плату, место оставлено пустым. “Vbat2” для соединения с “+” батарейки. “GND” – для соединения с ground на Arduino и “-“ на батарейке. “RST_sim800”, “RXD” и “TXD” соединяются с Arduino. “DTR” — не знаю для чего, оставил открытым.
Экран
В одной из инструкций использовался экран Nokia, в то же время я не очень хотел использовать LED-экран, таким образом, я решил использовать экран от Nokia, но LCD.
После некоторых изысканий, я обнаружил, что экраны Nokia испытывают проблемы из-за слишком высокого напряжения. На Sparkfun я выяснил, что при напряжении 5 вольт, нужно использовать резисторы. Напряжение источника питания должно быть 3,3V.
Нужно использовать резистор на 10 кОм между пинами SCLK (CLK), DN (DIN), D/C (DC), и RST. А с пином SCE (CS) нужно использовать резистор на 1 кОм. Для подсветки рекомендуется минимум 330 Ом. Для одних и тех же пинов могут использоваться разные обозначения: SCLK=CLK; DN=DIN; D/C=DC; SCE=CS.
Для экрана нужно 3.3 Вольта, поэтому необходимо использовать конвертер DC-DC. Все пины соединяются с Ардуино, который работает от 5 Вольт. Для того чтобы увеличить срок жизни экрана, между пинами нужно включить резисторы (смотрите схему: “Hand1_R4 – R8”).
Кнопки
Расположение кнопок схоже с расположением на множестве старых телефонов. Эта схема очень разумна.
Клавиатура состоит из 16 кнопок. Для использования всех 16 кнопок понадобится большой микроконтроллер или слегка более продвинутая клавиатура.
С использованием технологии разделения напряжения, клавиатуру можно подключить, используя лишь один аналоговый пин.
Шаг 2: Макетная плата — Кнопки
Создание клавиатуры с использованием разделителя напряжения достаточно просто и может быть очень легко рассчитано. Разделитель напряжения можно найти на схеме. Принцип очень прост, но фактические значения raw_data (напряжения), которые должны соответствовать нажатию разных кнопок слегка отличаются от теоритических вычислений.
В теории можно использовать лишь вычисления, но я обнаружил, что более точно будет замерить напряжение на готовой системе, а затем доработать скрипт. Это означает, что нужно донастраивать скрипт каждый раз, когда меняется система.
Рассчитанные и измеренные значения raw_data показаны на приложенной таблице. Как можно заметить, выходит довольно большое отклонение, особенно на уровне низкого напряжения. Используемые резисторы имели погрешность до 5%, что и привело к такому результату.
Шаг 3: Макетная плата — Микроконтроллер
Мозг телефона планировалось собрать с использованием Arduino Pro-Micro. Плата дешевая, но достаточно мощная для наших нужд. У этой платы есть много преимуществ, и она может быть напрямую соединена с компьютером посредством USB. Это облегчает обновление кода и зарядку батареи (так как в ней есть готовый порт micro-USB).
Но в реальной жизни не всё так просто и она оказалась несовместимой с SIM800L. Я не знаю почему, но она не работала, хотя физически всё было соединено. Мне пришлось заменить Pro-Micro обычным Arduino UNO и всё заработало как надо.
Схема соединения Ардуино прикреплена выше. Также UNO использовался для окончательного дизайна соединения пинов, кроме D14-D16 (которые я всё равно не использовал)
Шаг 4: Макетная плата — Экран
Как говорилось выше, я использовал экран Nokia 5110.
Пин 7 экрана управляет подсветкой. Подав на него напряжение 3.3V можно включить подсветку. Я купил на Ибэй несколько экранов от разных производителей и один из них отличался. Этот экран требовал заземления пина для того, чтобы подсветка заработала. У экрана уже были резисторы, поэтому отпала нужда в последовательных резисторах (Hand1_R3). На макетной плате такое было легко доработать, но я обнаружил эту особенность после заказа печатной платы, поэтому данный факт был слегка раздражающим.
Шаг 5: Макетная плата — Питание
Для питания устройства я использовал литий-полимерную батарейку, напряжение с батареи подавалось напрямую на сотовый модуль (SIM800L). Сотовый модуль мог требовать до 2A и работал при напряжении 3.7 — 4.2 Вольт, также как и батарейка.
Для печатной платы я не использовал сколь бы то ни было сложной системы зарядки батареи. Я использовал обычную батарейку 18650 LiPo и соединил её напрямую с SIM800L.
Ардуино УНО питался от USB кабеля.
3.3 Вольта на экран подавались напрямую с УНО, поэтому не было нужды в дополнительных элементах.
Шаг 6: Макетная плата — Софт
Большинство софта я написал сам, поэтому он был не очень хорошего качества, медленный и без сильного функционала. Но каждый из вас может улучшить его.
Для клавиатуры я нашел неплохой код от OtakuSanel. Я сильно модифицировал его код, но основа осталась та же, если сырые значения верны, то для проверки клавиатуры можно использовать приложенный файл (T-keyBoardTest1.ino).
Простую программу для коммуникации с SIM800L можно найти на adafruit (FONAtest в примерах). Вам может потребоваться лишь настроить пины. Также потребуется скачать библиотеки из Adafruit FONA. На этом шаге экран не нужен и вся коммуникация проходит через последовательный порт.
Простая программа для осуществления звонков также прилагается ниже (T-mobile_OnlyCalling.ino). Код был доработан для меня, так что он не слишком лёгкий для понимания.
Шаг 7: Мобильник на макетной плате
Первую систему тестирования я разработал для клавиатуры, затем для модуля SIM800L, а затем для всего этого и экрана. Перед заказом печатной платы я хотел быть уверенным, что я могу получить доступ ко всем модулям, и что компоненты подходят друг к другу. В предыдущих случаях я старался пропустить шаг с макетной платой и сразу купить печатную плату, но такие платы часто имели ошибки в проектировании.
Шаг 8: Прототип печатной платы
После того, как макетная плата была собрана и работала без ошибок, я сразу сделал дизайн для печатной платы. Несколько вещей, которые я не полностью испытал и не предполагал о них вначале, сделали результат не таким продуманным, как я надеялся, но в итоге я смог заставить свой мобильник работать. Далее я рассмотрю все трудности, возникшие после сборки печатной платы.
Микроконтроллер
Как говорилось выше, я собирался использовать в качестве контроллера Pro-Micro. В моих предыдущих проектах Pro-Micro и UNO были полностью совместимы, и с их заменой не было никаких проблем. Поэтому я не делал никаких специальных тестов с Pro-Micro перед тем, как заказал плату.
Когда печатная плата была доставлена, я был очень рад, припаял батарейку, Pro-Micro и SIM800L и попытался включить устройство. Но связи не было. Я поверил всё мультиметром, и всё выглядело так, будто должно работать. Я сделал отдельные тесты на макетной плате и получил тот же результат — нет связи…
Я решил, что просто использую UNO вместо Pro-Micro, и тогда не будет никаких проблем, тем не менее, мне пришлось спаять много проводов от слотов (расчитаных для Pro-Micro) к плате UNO.
Питание
Контроллер был не единственной проблемой.
Я планировал увеличить напряжение (с 3.7-4V до 5.0V) при помощи чипа RT9261A. Этот чип сам по себе не может держать большую силу тока. Поэтому он управляет небольшим переключателем BJT-NPN. Напряжение NPN фильтруется через резистор и конденсатор. Значения находятся непосредственно в таблице данных.
Конвертер работал хорошо без нагрузки, но, когда я подал на него минимум 0.1 мА, напряжение тут же упало до напряжения батарейки. Конвертер не был способен справиться с задачей. К счастью, я оставил небольшую площадку для подключения готового конвертера (купленного на Ибэй). Этот конвертер работал хорошо, но выходное напряжение было 5.2V. Это не очень серьёзная проблема, но я вернусь к ней в части о кнопках.
Конвертер вскрыл еще одну проблему, о которой я раньше не задумывался. Он издавал высокочастотный шум. Пока плата лежала на столе — это не было проблемой, но при совершении звонка я слышал этот звук.
Для питания экрана мне требовалось 3.3V. Это осуществлялось при помощи DC-DC конвертера PAM2305 (“Hand1_VoltReg1”). Опять же, это очень простое устройство и оно требует для работы только наличия индуктора (“Hand1_L2”). Конденсатор “Hand1_C3” нужен для стабилизации напряжения.
Кнопки
Кнопки работали хорошо в версии с макетной платой. Я надеялся, что то же самое будет и с печатной платой, но всё оказалось не так просто. Во-первых, из-за того, что соединения были другими, напряжение тоже поменялось. Мне пришлось перенастраивать эти значения в скрипте.
Я перенастроил сырые значения, в то время как UNO был подключен к компьютеру. С подключенным кабелем всё работало хорошо. После отключения кабеля кнопки тут же перестали работать. Почему? Я задал себе такой же вопрос.
Это очень интересная проблема. Мой конвертер на выходе имел 5.2V, но UNO ссылался на значения до 5.0V. Таким образом, напряжение последних двух кнопок было уже за пределами шкалы измерения (у обеих сырые значения были 1023). Другие кнопки можно было перенастроить и они бы заработали заново, но у меня не было возможности использовать кнопки “*” и “#”. На самом деле это не очень большая проблема, но мне есть над чем задуматься в следующий раз.
Фильтр
На других схожих проектах на микрофоне и динамике всегда находились фильтры. Понимая, для чего могут быть полезны фильтры, я не слишком задумывался и просто скопировал всё как есть. Оба фильтра почти одинаковые.
После сборки печатной платы я тут же обнаружил, что с динамиком происходит что-то странное. Он в принципе не работал. После того, как я убрал фильтр — он заработал. Что-то в управлении было спроектировано неверно и вызвало эти трудности. По крайней мере, это было моей ошибкой, и я учёл это.
Как оказалось, дизайн без фильтров работает достаточно хорошо, и для начала можно было не беспокоиться об этом.
Основная программа осталась той же, но сырые данные для кнопок нужно поменять на каждом устройстве. Главная проблема в коде связана с его основным циклом. Я планировал, что при нажатии кнопки “A” всё будет отменяться — если идёт входящий звонок, или я звоню, или я набрал чей-то номер, всё должно вернуться в начальное состояние. Но в реальности так не происходит и, чтобы отменить или закончить разговор, нужно выключить питание. Небольшая проблема в коде.
Для измерения напряжения на кнопках есть еще один набросок, на этот раз значения отображаются на экране 5110 Nokia.
Шаг 9: итоги
Несмотря на то, что мой дизайн содержал несколько ошибок и подводных камней, мне удалось модифицировать всё таким образом, чтобы телефон заработал.
Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.
Собираем свой собственный смартфон
Это руководство описывает от начала до конца конструирование своего собственного смартфона. Начинается дело с печати на 3D-принтере корпуса, затем спаиваются печатные платы, всё это дело собирается, и, в конце концов, на смартфон устанавливается мобильная операционная система, и с помощью языка программирования Python она становится персонально Вашей. Вы можете ознакомиться с подробностями о данном проекте по ссылке.
Необходимые навыки:
— базовые навыки пайки;
— знакомство с Raspberry Pi.
Или:
— много свободного времени и терпения.
Шаг 1: Собираем необходимые материалы
Перед тем, как начать, давайте-ка закажем все компоненты, которые нам потребуются. Итак, вам потребуются следующие электронные компоненты и печатные платы (в России компоненты можно приобрести, например, в таких магазинах):
1. Raspberry Pi A+ 256MB
2. модуль GSM Adafruit FONA uFL Version
3. 3.5′ PiTFT сенсорный экран
4. Raspberry Pi Camera 5MP
5. преобразователь Powerboost 500 Basic
6. GSM антенна
7. 1В 8Ом динамик
8. адаптер USB — Wifi
9. электретный микрофон
10. 1200мА литий-ионная батарея
11. 4-40 x 3/8′ винты
12. M2.5 x 5mm винты
13. M2.5 x 20mm винты
14. M2 x 5mm винты
15. ползунковый переключатель
16. провода
Ну а пока вы ждете доставки заказа со всем перечисленным, можно напечатать корпус.
Шаг 2: Печатаем корпус на 3D принтере
Шаг 3: Основная сборка
Теперь давайте соединим всё вместе. На диаграмме изображен Raspberry Pi. Вместо того, чтобы сразу подключаться к нему, подключите провод к 26 контакту на PiTFT. Теперь дальше.
1. Присоедините контакт «bat» на модуле GSM (Adafruit FONA) к такому же контакту на преобразователе (PowerBoost).
2. Припаяйте провод от контакта GND (земля) на модуле GSM к такому же контакту на преобразователе.
3. Припаяйте провод от контакта GND на преобразователе к одному из контактов полузнкового переключателя.
4. Также присоедните контакт GND от преобразователя к «земле» дисплея PiTFT (Такая же распиновка первых 26 контактов, как у Raspberry Pi, обратите внимание, что стрелка и «1» обозначаются первый контакт).
5. Присоедините 5В линию от преобразователя к 5В линии дисплея.
6. Припаяйте провод от центрального контакта ползункового переключателя к контакту «EN» (Включено) на преобразователе.
7. Припаяйте провод от контакта «KEY» на модуле GSM к контакту 12 (GPIO 18) на дисплее.
8. Поместите дисплей над Raspberry Pi.
9. Перепроверьте все соеднинения!
ВНИМАНИЕ: Пока проходит тестирование, убедитесь, что 5В разъем micro USB не подключен. Raspberry Pi уже запитан от батареи.
Если вы переключите ползунковый переключатель, светодиоды на преобразователе должны загореться и Raspberry Pi должен включиться. Подсветка дисплея также должна включиться. Если у вас на SD карте Raspberry Pi настроена отправка картинки на дисплей, то она должны отобразиться на нем. В противно случае, дисплей будет просто гореть белым, что на данный момент тоже пойдет. Скорее всего, на модуле GSM не загорятся светодиоды. Чтобы его включить, удерживайте кнопку включения на нем в течении пары секунд. Или подайте сигнал на разъем GPIO 18 на Raspberry Pi в течении того же времени. Если вам удалось запитать Raspberry Pi, дисплей и модуль GSM от батареи, пора переходить к следующему шагу.
Шаг 4: Финальная сборка
Если вы попытаетесь все включить сейчас, то поведение устройства должно быть аналогичным, как на предыдущем шаге. На следующем шаге мы установим сим-карту в модуль GSM, что позволит устройству контактировать с сотовой сетью.
Шаг 5: Установка сим-карты
Теперь, когда соединение модулей завершено, можно установить сим-карту, чтобы модуль GSM мог контактировать с сотовой сетью. Данный модуль использует сети 2G для передачи данных, например T-Mobile. Обратите внимание, что модуль не работает с сетями 3G и 4G. AT&T планирует отключить поддержку 2G сетей к 2016 году, так что мы будем использовать сим-карту T-Mobile. Данный модуль GSM использует сим-карту стандартного формата, так что микро или нано сим-карты сюда не пойдут. Активируйте карту согласно инструкциям оператора. Затем установите сим-карту в модуль GSM и включите его. Если красный светодиод модуля будет моргать каждые 3 секунды, значит он подключился к сотовой сети! На следующем шаге мы установим программное обеспечение, чтобы Raspberry Pi смог общаться с модулем GSM.
Шаг 6: Установка SD карты
Теперь, когда все железо собрано, можно приступить к настройке взаимодействия Raspberry Pi со всем этим хозяйством. Начните с прошивки последней версии PiTFT OS на SD карту Raspberry Pi. Жмите сюда чтобы скачать. Когда SD карта готова, установите ее в Raspberry Pi и включите его. Вам понадобится утилита raspi-config. Вот несколько вещей, которые потребуется настроить:
1. Развернуть файловую систему.
2. Включить поддержку камеры.
3. Выключить serial port. Так Raspberry Pi сможет общаться с модулем GSM.
4. Включить ssh. Это важно, поскольку в Raspberry Pi A+ есть только USB порт.
Закончите установку и перезапустите Raspberry Pi.
Напишите startx и Raspberry Pi запустит LXDE на дисплее. Чтобы войти через HDMI, напишите:
Шаг 7: Установка Wifi
У вашего телефона нет клавиатуры, так что для доступа к устройству через консоль, нужно установить wifi для подключения по ssh. Подключите Wifi адаптер к компьютеру и настройте подключение через Wifi Config. Выключите Raspberry Pi и подключите к нему Wifi адаптер. Если вам все еще не удается подключиться к Raspberry Pi по ssh, попробуйте использовать USB концентратор. Больше информации по настройке Wifi можно найти здесь.
Шаг 8: Финальная подготовка программного обеспечения
Тестирование модуля GSM
Чтобы протестировать модуль GSM, установите minicom с помощью команды:
Должен открыться терминал по взаимодействию с устройствами через ком-порт. Если вы напишете:
в ответ должны получить «ОК». Если не получили, то проверьте все соединения. Если же получили, значит модуль GSM готов к работе.
Вы могли заметить, что текст на экране показывается боком, а не ориентируется на положение телефона. Давайте изменим это с помощью команды:
Измените в файле значение параметра «rotate» на 180.
Наконец, чтобы добавить LXDE в автозагрузку, следуйте описанию в инструкции.
Установка программного обеспечения для камеры
Теперь давайте установим программное обеспечение, которое помогает снимать фото камерой Raspberry Pi. Для начала напишите:
Наконец, загружаем программное обеспечение:
Шаг 9: Установка TYOS
TYOS — это операционная система для мобильных устройств (Технически, модифицированная версия Raspbian — это операционная система, а TYOS — это только графическая оболочка), дающая возможность телефону отправлять и получать sms сообщения, а также делать звонки. В консоли напишите:
Для запуска TYOS напишите:
Когда TYOS запустится, убедитесь, что все работает путем отправления sms и совершения звонка. Когда вы убедитесь, что все в порядке, можно установить TYOS в автозагрузку.
чтобы открыть конфигурационный файл. Внизу, после текста и до строчки «exit 0», добавьте следующий текст:
Теперь перезапустите Raspberry Pi. TYOS должен стартовать при загрузке устройства!
Шаг 10: Собираем всё вместе
Теперь можно всё надежно упаковать в корпус.
1. Используя горячий клей, приклейте микрофон и динамик в разъемы под них.
2. Используя винты M2, закрепите камеру. Потребуется соединить ленточным кабелем камеру и Raspberry Pi, так что разместите ее подходящим образом.
3. Используя винты M2.5, закрепите Raspberry Pi вместе с установленной SD картой и адаптером Wifi вниз корпуса.
4. Присоедините ленточный кабель камеры с Raspberry Pi.
5. Также используя винты M2.5, закрепите модуль GSM с сим картой в корпус.
6. При укладке проводом убедитесь, что они не мешают никакой другой электронике.
7. Оберните преобразователь изолентой, чтобы избежать короткого замыкания.
8. Поместите преобразователь и батарею между Raspberry Pi и дисплеем.
9. С помощью горячего клея приклейте ползунковый переключатель в разъем, предназначенный для него вверху корпуса.
10. Используя винты 4-40, соедините верхнюю и нижнюю часть корпуса вместе.
11. Проверьте все соединения.