Как надо сделать телефон

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

Содержание

  • Что делаем
  • Что понадобится
  • Как спаять электронику
  • Как прошить
  • Как решить проблемы со связью
  • Как сделать корпус
  • Как пользоваться телефоном
  • 4 примера самодельных телефонов

Что делаем

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

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

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

Что понадобится

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

Готовая микросхема

Вы можете не изобретать велосипед, а сразу взять готовую микросхему Arduino GPRS Shield SIM900 или GSM Shield 2 со встроенным антенным модулем. Она уже включает:

  • Модули для взаимодействия с базовыми станциями сотовых операторов с помощью стандарта GSM в диапазонах частот 850-960 МГц и 1805-1880 МГц. Это покроет все поставленные задачи для общения, обмена текстовыми сообщениями.
  • GPRS-модем, который работает с вышеуказанным модулем GSM. Потенциально, плата сможет скачивать со скоростью до 85,6 Кбит/ секунду.

Как сделать настоящий телефон своими руками

Arduino GSM Shield стоит 4-5 тысяч рублей, а GPRS Shield SIM900 в 1-2 тысячи рублей на декабрь 2019 года. Разница между GPRS Shield SIM900 и GSM Shield 2 лишь в том, что у первой модели антенна прикручивается отдельно в разъем, а во втором варианте этого не нужно.

Тем, кому важны дополнительные возможности в виде поддержки UMTS (3G), LTE (4G), позиционирования GPS/ГЛОНАСС, Bluetooth или Wi-Fi, стоит посмотреть на другие микроконтроллеры или просто припаять нужные передатчики к плате Arduino.

Экран

К плате нужен экран. Его можно присмотреть на специализированных сервисах. Лучше выбирайте светодиодные DIY Матрицы. Их легче настроить, а мы не ставим цели сделать смартфон для просмотра изображений или интернет-страниц.

Как сделать настоящий телефон своими руками

Существуют сразу готовые варианты плат, со встроенным небольшим текстовым экраном и всеми модулями передачи данных. Один из них, DIY Cellphone, LED Matrix. На декабрь 2019 года мы нашли эту плату за 3778 рублей, смотрите по ссылке.

Также нам понадобятся транзисторы, резисторы, кнопки, микрофон, динамики, USB-разъем и литий-ионная батарея. Полный список смотрите в подготовленном нами документе здесь. В результате вы должны уложиться в 10 тысяч рублей.

Не меняйте размер предусмотренной для передачи данных, антенны, без понимания физики процесса. Ее длина напрямую связана с частотами передачи и приема сигнала. При спонтанном изменении размеров антенны, увеличивается коэффициент стоячей волны (КСВ) и ухудшаются приемо-передающие качества. Больше не значит лучше.

В итоге у вас есть три варианта:

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

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

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

Как спаять электронику

Для пайки понадобится стандартный набор инструментов – сам паяльник, припой, щипцы. При работе, обращайте внимание на 2 момента:

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

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

Как прошить

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

Для прошивания понадобится еще один посредник, даже если вы пользуетесь компьютером, — программатор. Приведем два, для примера:

  • ATAVRISP2, поставляется с собственным ПО, подключается к компьютеру через USB-разъем;
  • USBASP – подходит для сторонних программ для прошивки микросхем, подключается аналогично предыдущему варианту, для соединения с микросхемой использует 10-контактный интерфейс ISP.

Для работы используйте одну из программ:

  • AVRdude;
  • AVRdude_Prog;
  • Bascom-AVR;
  • Khazama AVR Prog;
  • eXtreme Burner AVR.

Они поддерживают современные операционные системы семейств Windows, Mac, Linux. Не все перечисленные программы русифицированы.

Попробуйте запрограммировать AVR с помощью языков Assembler или Си.

Как решить проблемы со связью

Причин проблем со связью 6:

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

При самостоятельной работе, часто связь не ловит из-за неверно подобранной антенны. Один и тот же модуль не сможет одинаково эффективно принимать сигналы на разных радиочастотах. Поэтому не стоит пытаться использовать UMTS-антенну, которая работает на 2110-2170 МГц для приема GSM на 890-960 МГц, если производитель не предусмотрел этого.

Как сделать корпус

Главная цель корпуса – защитить хрупкие внутренние узлы, сохранив управляемость, понятность интерфейса и эстетичность.

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

Также можно работать с металлом, алюминием, стеклотекстолитом 0,5 мм и тонким оргстеклом.

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

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

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

Как пользоваться телефоном

Использование handmade телефона ничем не отличается от привычных всем действий на коммерческих смартфонах. Клавиатура передает информацию о номерах, сообщениях или контактах, экран позволяет читать выводимые данные.

4 примера самодельных телефонов

Приведем четыре известных примера самодельных мобильных устройств.

DIY Cellphone

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

Как сделать настоящий телефон своими руками

Вместо красного строчного экрана, можно установить монохромный от старых моделей Nokia. Общая стоимость комплектующих 200-250$ на декабрь 2019.

Достоинства и недостатки DIY Cellphone

Преимущества Недостатки
Деревянный корпус выдерживает удары Неудобные кнопки без надписей
Корпус легко вырезать Работает только в GSM-сетях
Встроенная антенна За итоговую стоимость комплектующих можно купить обычный смартфон

PiPhone

Модель с внешней антенной и цветным дисплеем выглядит привычнее в 21 веке, чем DIY. PiPhone выполнен на основе микроконтроллера Raspberry Pi. Все коммуникации узлы, припаяны и подключены отдельно. Размер экрана – 2,8 дюйма, а корпус создатель решил не устанавливать вовсе.

Результат вышел на 50-100$ дешевле предыдущего, но вряд ли он выдержит аналогичные нагрузки, что и DIY.

Из цены мобильного устройства на микроконтроллер ушло 40$, на сенсорный экран – 35$, на батарею (2500 мАч) – 15$, модуль беспроводной передачи данных в диапазонах стандарта GSM – 48$, преобразователь, кабели и разъемы – оставшаяся сумма.

Как сделать настоящий телефон своими руками

Смотрите видео эксплуатации PiPhone.

Достоинства и недостатки PiPhone

Преимущества Недостатки
Цветной дисплей Отсутствие корпуса
Дешевле аналогов Внешняя антенна на хрупком разъеме

Phoenard

Монохромный сенсорный телефон в дизайне нулевых годов второго тысячелетия. Корпусом выступает передний прозрачный пластик, который покрывает все, кроме дисплея.

Как сделать настоящий телефон своими руками

Гаджет выполнен на базе микросхем Arduino, о которых мы писали в начале статьи. К плате, кроме GSM-передатчика, также припаяны GPS-приемник с Bluetooth-модулем. Умельцам удавалось сделать из самоделки даже mp3-плеер. Функции обычного телефона устройство выполняет без труда.

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

Достоинства и недостатки Phoenard

Преимущества Недостатки
Широкий диапазон возможностей Не защищен от ударов
Сенсорный дисплей 2.6 дюйма Не цветной дисплей
Защитный пластиковый корпус

Kevin Lynagh

Kevin Lynagh – не название телефона, а имя автора безымянного устройства, которое он представил в 2015 году. Его отличительные черты – отсутствие дисплея и беспроводная зарядка.

Программист-разработчик начал с подбора чипа, выбор пал на Qeuctel UC15. При поиске модуля для передачи данных стандартов GSM и UMTS, он купил Rubra Penta-band SMD. Для работы Кевин использовал плату контроллера Atmel ATMEGA1284-AUR за 8$.

Программная оболочка для устройства написана на объектно-ориентированном языке программирования C.

Кевин Линах получил двойку по курсу электротехники в Высшем Учебном Заведении.

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

Как сделать настоящий телефон своими руками

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

Достоинства и недостатки устройства

Преимущества Недостатки
Беспроводная зарядка Отсутствует дисплей
Передача данных в диапазонах 2G и 3G Большие трудозатраты для сборки и прошивки устройства.
Крепкий деревянный корпус

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

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

Вот перечень тех функций, которые будет поддерживать наш телефон:

  • — Принимать и делать звонки
  • — Принимать и отправлять СМС
  • — Хранить записную книжку
  • — Показывать время
  • — Будить в заданное время

Телефон будет работать в GSM сетях и использовать обычную SIM карту. Он будет сконструирован на базе железа и софта входящего в комплект Arduino GSM Shield (можно купить на амазоне, ~90$ за новый, и 70$ за б/у). Однако Arduino GSM Shield это просто набор голых плат, в них мало веселья, нам же нужен настоящий телефон, с интерфейсом, кнопками, микрофоном, дисплеем и т.д. Детальное описание железа и софта можно найти на open source проекте размещенном на GitHub (Железо и Софт)

Зачем я делаю этот проект? Отчасти потому что это весело, и отчасти потому что, хотя телефоны и стали за последние 10-15 лет вездесущими, очень малый процент людей догадывается и понимает как они работают, и как они устроены. С виду они кажутся сложными, но на самом деле собираются также как электро чайник или микроволновка. А так как телефоны вездесущи и популярны, в мире полно компаний которые выпускают нужные нам комплектующие.

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

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

Шаг 1: Материалы и комплектующие

Платы можно заказать от OSH Park. Стоимость комплекта из 3 штук ~60$.

Компоненты для плат можно купить в одной из этих компаний: Digi-Key, SparkFun и Ardunio. Полный список комплектующих тут — PDF. Общая стоимость порядка 135$ + доставка.

Для сборки платы понадобится конечно же паяльник (пример), припой, щипцы и т.д. Для программирования микроконтроллера понадобится AVR программатор (например такой) и usb кабель (пример). Для зарядки батареи понадобится mini-USB. Если у тебя нет ничего из этого, и ты не планируешь создавать дома полноценную лабораторию, то обратись в местный кружок юных техников, скорее всего у них есть все что тебе нужно, и они не откажут тебе в просьбе поработать с их оборудованием в обмен на хрустящие купюры или банку меда :)

Для корпуса нам понадобится фанера 6 мм (только не покупай фанеру на которой видны следы клея, при работе с лазером он может возгореться), шпон, ~1.5 см шурупы. Хотя конечно ты можешь придумать и свой корпус и сделать его из любого другого материала.

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

Хотя в телефоне много мелких компонентов, которые монтируются к плате, тем не менее, немного наловчившись, вполне можно спаять все это руками.

Хотя процесс припоя большинства компонентов не сложен, есть некоторые моменты на которые нужно обратить внимание:

Конденсаторы: будь осторожен с полярностью больших конденсаторов (1000 uf), они могут взорваться если паять их обратной стороной. Для ориентира обращай внимание на оранжевую полосу.

Полярность: другие компоненты с полярностью: включая супер конденсатор, диоды, микроконтроллер ATmega1284P, M10 GSM модуль, сокет SIM карты, микрофон. Компоненты без полярности: микрофон, кнопки, малые конденсаторы, резисторы.

Шаг 4: Решаем проблемы со связью

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

Что нужно проверить:

Не забыл ли ты вставить SIM карту?
Корректно ли припаян сокет SIM карты? А 22 омный резистор (тот, который соединяет сокет сим карты и GSM модуль)? Все ли в порядке с GSM модулем?
Корректно ли припаяна антенна?
Резистор на 0 ом корректно ли припаян? (тот, что на соединении M10 GSM модуля и антенны)
Попробуй выйти из помещения в место с точно хорошим сигналом.

Отладка

Ты можешь продолжить отладку телефона коммуницируя с GSM модулем с компьютера, используя микроконтроллер как прокси. Для этого загрузи на телефон по кабелю SerialProxy, открой его на компьютере и укажи скорость передачи данных равной 9600, а в качестве окончания строки — «carriage return». Через пару секунд ты должен увидеть: «READY
AT
OK». Это говорит о том, что GSM модуль готов принимать AT команды. Детальное описание команд можно найти в документации к GSM модулю.

Базовые команды:

AT — тестовая команда, должна вернуть ОК.
AT CREG? — проверка статуса регистрации в сети. Ответ вида: » CREG 0,N», где N может быть 0 (устройство не зарегистрировано), 1 (регистрация пройдена), 2 (поиск сети), 3 (запрос на регистрацию отклонен), 5 (регистрация пройдена, роуминг)
AT CPBS=»SM» — выбор телефонной книги сим карты.

Шаг 5: Использование телефона

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

Разблокировка телефона.

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

Блокировка телефона.

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

Звонки.

Для совершения звонков просто набери нужный номер и нажми Call (все как на обычном телефоне), для удаления вводимых цифр используй кнопку *.

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

Содержание

  1. Как создать свой мобильный телефон
  2. Блок-схема компонентов
  3. Настраиваем UART
  4. Работа с экраном
  5. Клавиатура
  6. Модуль GSM
  7. Телефонная книга
  8. Работа с графикой
  9. Энергосбережение
  10. Интерфейс
  11. Идеи и развитие проекта

Как создать свой мобильный телефон

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

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

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

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

Проект демонстрировался на Chaos Constructions 2019 и, к моему (приятному) удивлению, вызвал интерес у широкой аудитории. Многим было любопытно узнать внутреннее устройство мобильного телефона, поэтому сегодня я подробно расскажу, как можно собрать подобный гаджет самостоятельно.

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

Блок-схема компонентов

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

Ключевым компонентом устройства станет модуль сотовой связи SIM800C. Он содержит полный радиотракт, аудиотракт и реализует основные функции работы с сетью GSM. Иными словами, это практически готовый мост GSM-UART, который нуждается лишь в управлении через внешний терминал.

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

РЕКОМЕНДУЕМ:
Как создать защищенное зашифрованное устройство

Клавиатура с шестнадцатью кнопками реализована на сдвиговых регистрах (пара восьмибитных микросхем 74HC165 (PDF). Также ты можешь использовать их отечественный аналог — микросхемы компании «Интеграл» КР1533ИР9. В любом случае выход таких регистров представляет собой неполноценный SPI, так как даже при отключении они не переходят в высокоимпедансное состояние. Поэтому вместо аппаратной и совмещенной с дисплеем шины SPI для них использовалась программная реализация.

Управлять всем будет микроконтроллер семейства STM32. Так как особого быстродействия не требуется, подойдут даже бюджетные решения. Я остановил свой выбор на F103C8T6 (PDF), его ресурсов тут должно хватить с избытком. Кроме того, именно на таком микроконтроллере выпускается известная модельная линейка отладочных плат BluePill (прекрасное средство для избавления от Arduino-зависимости). Это позволило собрать прототип и протестировать работу компонентов практически с самого старта.

Некоторые микросхемы F103C8T6 имеют 128 Кбайт памяти вместо заявленных по документации 64 Кбайт. Однако это относится к недокументированным возможностям, и рассчитывать на «лишний» банк памяти не стоит.

Позже (и в качестве приятного бонуса) я решил добавить в проект внешнюю постоянную память W25Q32 (PDF) на 32 Мбит. Это позволило не перезаписывать флеш самого микроконтроллера и хранить все контакты отдельно. Кроме того, появилась возможность загружать на телефон картинки, символы и прочие элементы растровой графики.

Сама схема мобильного телефона достаточно стандартная и в комментариях вряд ли нуждается. SIM800C включается при подаче низкого уровня на вывод REST (используется транзистор Q1, соединенный с контактом PA0 микроконтроллера). Дополнительно светодиоды VD2 и VD3 указывают на состояние радиомодуля. VD2 мигает при успешном подключении, тогда как VD3 горит все время, пока SIM800C активен.

Принципиальная схема устройства

Принципиальная схема устройства

Компоненты размещены на двух односторонних печатных платах, преимущественно поверхностным монтажом. Первая плата содержит радиомодуль, микроконтроллер, микросхему внешней памяти и разъемы для подключения антенны и динамика. Вторая плата целиком и полностью отдана под клавиатуру. Собранная конструкция помещается в корпус из оргстекла и закрепляется на стойках М3.

Питается наше устройство от литий-полимерного аккумулятора на 1500 мА · ч. Его емкость примерно в два раза ниже, чем у современных флагманских смартфонов, но и ее хватает примерно на неделю в режиме ожидания (потребление около 6 мА) или на сутки активного пользования (потребление около 40 мА).

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

Настраиваем UART

Сегодня существует масса вариантов для программирования микроконтроллеров. Это и различные языки (С/С++, Rust), и самые разнообразные прикладные библиотеки, абстрагирующие разработку от аппаратного уровня (HAL от ST Microelectronics, Arduino Core и другие). Я использовал в проекте каноничный C и открытую libopencm3.

Полный комплект исходных файлов проекта доступен в репозитории на GitHub.

Первым делом следует инициализировать UART1, ведь именно он отвечает за общение с радиомодулем. Параметры стандартные: 115 200 бод и 8N1.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

static void usart1_setup(void){

    /* Enable clocks for GPIO port A (for GPIO_USART1_TX) and USART1 */

    rcc_periph_clock_enable(RCC_GPIOA);

    rcc_periph_clock_enable(RCC_USART1);

    /* Enable the USART1 interrupt */

    nvic_enable_irq(NVIC_USART1_IRQ);

    /* PA9 TX,PA10 RX */

    gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_USART1_TX);

    gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO_USART1_RX);

    /* Setup UART parameters */

    usart_set_baudrate(USART1, 115200);

    usart_set_databits(USART1, 8);

    usart_set_stopbits(USART1, USART_STOPBITS_1);

    usart_set_mode(USART1, USART_MODE_TX_RX);

    usart_set_parity(USART1, USART_PARITY_NONE);

    usart_set_flow_control(USART1, USART_FLOWCONTROL_NONE);

    usart_enable_rx_interrupt(USART1);

    usart_enable(USART1);

}

После этого логично как-то организовать отправку команд на модуль. Например, c помощью сторонней реализации
printf(). Для этого используется библиотека rprintf. Ее код хорошо оптимизирован и занимает всего несколько килобайтов памяти. Библиотеку следует подправить для работы с
libopencm3, буквально несколько строк.

#38  #define UART USART1

...

#95  vfprintf_((&usart_send_blocking), format, arg);

...

#142 ch = usart_recv_blocking(UART);

Теперь модулю можно отправлять команды вида
printf_(«AT_command»), а ответ модуля принимается с использованием прерываний и сохраняется в буфер. После приема содержимое анализируется, и если это ожидаемый ответ, то вызывается функция-обработчик, которая используется для вывода сообщений SMS и USSD. Также возможен непосредственный вывод сообщения на экран, что очень удобно при отладке.

Работа с экраном

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

static void spi1_setup(void){

    /* Enable SPI1 Periph and gpio clocks */

    rcc_periph_clock_enable(RCC_SPI1);

    rcc_periph_clock_enable(RCC_GPIOA);

    /* Configure GPIOs:

      * SCK = PA5

      * DC = PA6

      * MOSI = PA7

      * CS = PA1

      * RST = PA4

      * LED = PB0

      */

    gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO5 | GPIO7);

    gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO4 | GPIO6 | GPIO1);

    /* Reset SPI, SPI_CR1 register cleared, SPI is disabled */

    spi_reset(SPI1);

    /* Set up SPI in Master mode with:

      * Clock baud rate: 1/64 of peripheral clock frequency

      * Clock polarity: Idle High

      * Clock phase: Data valid on 2nd clock pulse

      * Data frame format: 8-bit

      * Frame format: MSB First

      */

    spi_init_master(SPI1, SPI_CR1_BAUDRATE_FPCLK_DIV_2, SPI_CR1_CPOL_CLK_TO_0_WHEN_IDLE, SPI_CR1_CPHA_CLK_TRANSITION_1, SPI_CR1_DFF_8BIT, SPI_CR1_MSBFIRST);

    /* Set NSS management to software */

    spi_enable_software_slave_management(SPI1);

    spi_set_nss_high(SPI1);

    /* Enable SPI1 periph. */

    spi_enable(SPI1);

    gpio_set(GPIOA, GPIO1);

}

В библиотеке последовательно реализованы функции отрисовки точек, линий, окружностей, печати символов и целых строк и обновления экрана. Также поддерживается вывод символов кириллицы в кодировке CP866. Ключевой компонент кода — вызов
st7735_sendchar(char* c), который позволяет последовательно выводить на экран строки, в том числе и с управляющими последовательностями. На данный момент поддерживаются символы перевода строки (
n), возврата каретки (
r), очистки экрана (
a) и бэкспейса (
b).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

void st7735_sendchar(char ch){

    uint16_t px, py;

    gpio_clear(STPORT, STCS);

    if (ch == ‘r’) {

        pos -= pos % 26;

        return;

    }

    if (ch == ‘n’) {

        pos += 26;

        pos -= pos % 26;

        return;

    }

    if (ch == ‘a’) {

        pos = 0;

        st7735_clear(bg_color);

        return;

    }

    if (ch == ‘b’) {

        pos;

        px = (pos % 26) * 6;

        py = (pos / 26) * 8;

        st7735_drawchar(px, py, 0x20, txt_color, bg_color);

        return;

    }

    if(pos > 416) {

        pos=0;

        st7735_clear(bg_color);

    }

    px = (pos % 26) * 6;

    py = (pos /26) * 8;

    st7735_drawchar(px, py, ch, txt_color, bg_color);

    pos++;

    while (SPI_SR(SPI) & SPI_SR_BSY);

    gpio_set(STPORT,STCS);

}

По умолчанию используется зеленый текст на черном фоне. Цвета можно указать явно, с помощью вызова функции
st7735_set_printf_color(unit16_t text, uint16_t back). Кроме того, реализована дополнительная функция вывода текущего символа, который пользователь набирает на клавиатуре.

void st7735_virt_sendchar(char ch){

    uint16_t px, py;

    gpio_clear(STPORT, STCS);

    px = (pos % 26) * 6;

    py = (pos / 26) * 8;

    if (ch > 0x20)  {

        st7735_drawchar(px, py, ch, RED, bg_color);

    }

    while (SPI_SR(SPI) & SPI_SR_BSY);

    gpio_set(STPORT, STCS);

}

Она похожа на
st7735_sendchar(), но не обрабатывает управляющие последовательности и не меняет текущую позицию символа. Таким образом, вызов функции
st7735_sendchar() после
st7735_virt_sendchar() перерисует на экране символ, выведенный
st7735_virt_sendchar().

Клавиатура

Весь набор кнопок подключен через сдвиговые регистры к программному SPI. Обрабатывает пользовательский ввод библиотека
4х4key. У клавиатуры две раскладки — русская и английская, в каждой раскладке за кнопкой закреплено по четыре символа.

собрать мобильный телефон

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

Рассмотрим процесс обработки ввода подробнее. За опрос клавиатуры отвечает функция
get_key(). Для этого используется процедура
read_key(), которая считывает текущее состояние сдвиговых регистров и возвращает два байта информации от кнопок. Сочетаний клавиш в данный момент нет, но их можно легко добавить при необходимости.

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

...

while (!key_code) {

    key_code = read_key();

}

do {

    if(key_code == 0x0002) {

        if (ch_map < 2) {

            ch_map++;

        else {

            ch_map = 0;

        }

        show_char_map(ch_map);

        while(key_code==2) key_code=read_key();

    }

    while(!key_code) {

        key_code = read_key();

    }

} while (key_code == 0x0002);

...

Теперь вызывается функция
key_map(), которая принимает на вход код клавиши и номер текущей раскладки. Она ищет нужный символ в массиве
char_map и возвращает результат. Логика дальнейшей обработки ввода зависит от полученного символа.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

...

if (key == ‘n’) {

    delay(500);

} else if (key == ‘b’) {

    delay(500);

} else if(key == ‘ ‘) {

#ifdef ECHO

    st7735_virt_sendchar(key);

#endif

    delay(800);

    timer_start();

    old_keycode = key_code;

    do {

        key_code = read_key();

        if (key_code){

            if (key_code == old_keycode) {

                count++;

                if (count > 15) {

                    count = 0;

                }

                wait_key_counter = 0;  

            } else {

                count = 0;

                break;

            }

            key = keymap2(count, 2);

#ifdef ECHO

            systick_interrupt_disable();

            st7735_virt_sendchar(key);

            systick_interrupt_enable();

#endif

            delay(900);

    }

} while (wait_key_counter < 1000);

timer_stop();

...

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

char fast_get_key() {

    uint16_t key_code;

    char key;

    while (!key_code) {

        key_code=read_key();

    }  

    key = keymap(key_code, 0);

    while (read_key()) {

         __asm__(«nop»);

    }

#ifdef ECHO

    echo(key);

#endif

    return key;

}

Теперь, когда есть дисплей и клавиатура, от создания терминала нас отделяют только функции
stprintf() и
kscanf(). Они были реализованы с помощью уже упоминавшейся библиотеки
rprintf, но изменений тут потребовалось чуть больше.

int stprintf(const char *format, ) {

    va_list arg;

    va_start(arg, format);

    stprintf_((&st7735_sendchar), format, arg);

    va_end(arg);

    return 0;

}

С функцией
kscanf() все несколько сложнее, так как у нас есть две функции получения символа с клавиатуры. Поэтому придется объединить их в одну, организовав переключение ввода между
get_key() и
fast_get_key(). Заодно добавим поддержку управляющего символа
b.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

void set_scanf_mode(unsigned char mode) {

    fast_mode=mode;

}

int kscanf(const char* format, ) {

    va_list args;

    va_start( args, format );

    int count = 0;

    char ch = 0;

    char buffer[kscanf_buff_size];

    kscanf_buffer = buffer;

    while (count <= kscanf_buff_size ) {

        if(fast_mode) {

            ch = fast_get_key();

        } else {

            ch = get_key();

        }

        if (ch == ‘b’) {

            if (kscanf_buffer > buffer) {

                kscanf_buffer;

            }  

            continue;

        } else {

            count++;

        }

        if (ch != ‘n’ && ch != ‘r’) {

            *kscanf_buffer++ = ch;

        else {

            break;

        }

    }

    *kscanf_buffer = »;

    kscanf_buffer = buffer;

    count =  ksscanf(kscanf_buffer, format, args);

    va_end(args);

    return count;

}

Таким образом мы реализовали систему ввода-вывода и теперь имеем практически полнофункциональный терминал. Например, чтобы очистить экран и вывести традиционное приветствие, достаточно написать строчку

stprintf(«aHello World!»);

Модуль GSM

Рассмотрим работу с SIM800 на примере с отправкой SMS, остальные функции ведут себя аналогично. Будем использовать текстовый режим, так как он более наглядный. Дополнительно для отправки сообщений на кириллице нужно заранее настроить кодировку.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

void sim800_init_cmd() {

    printf_(«AT+CMGF=1rn»);

    for (uint32_t i = 0; i < 0xFFFFFF; i++) __asm__(«nop»);

    printf_(«AT+CSCS=»UCS2″rn»);

    for (uint32_t i = 0; i < 0xFFFFFF; i++) __asm__(«nop»);

    printf_(«AT+CSMP=17,167,0,8rn»);

    for (uint32_t i = 0; i < 0xFFFFFF; i++) __asm__(«nop»);

}

void fast_sms_send(char *text, char *tel) {

    char *p_tel;

    char u_tel[64]=«+7»;

    char temp[512];

    if (tel[0] == ‘8’) {

        p_tel = tel + 1;

    } else if (tel[0] == ‘+’) {

        p_tel = tel + 2;

    } else {

        p_tel = tel;

    }

    strcat(u_tel, p_tel);

    strcpy(temp, text);

    cp866_to_utc2(temp);

    cp866_to_utc2(u_tel);

    stprintf(«aSend smsrnAT+CMGS=»%s»rn%sx1A», u_tel, temp);

    printf_(«AT+CMGS=»%s»rn», u_tel);

    for (uint32_t i = 0; i < 0xFFFFFF; i++) __asm__(«nop»);

    printf_(«%sx1A», temp);

}

Теперь можно использовать в коде что-то осмысленное и понятное, например

fast_sms_send(«Hello world!», «89162402484»);

Попробуем передать строку на кириллице, предварительно включив нужную кодировку:

void write_sms() {

    char text[256];

    char tel[13];

    uint8_t ret_code;

    stprintf(«aSMS writer v0.01rn»

                    «Enter the sms textrn»

                    «>»);

    kscanf(«%s», text);

    ret_code = telbook_get_number(tel);

    if(!ret_code) {

        return;

    }

    fast_sms_send(text, tel);  

}

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

Телефонная книга

Как я уже говорил, информация о контактах хранится в микросхеме внешней памяти. Каждая запись занимает 32 байта: шестнадцать на номер телефона и столько же на имя абонента. Сейчас эти данные у меня записываются открытым текстом, без шифрования. Конечно, желательно использовать здесь AES или любой другой блочный шифр.

РЕКОМЕНДУЕМ:
3D-сканер из смартфона или фотокамеры

Основные возможности телефонной книги позволяют выбрать нужный номер контакта (
telbook_get_number()), а также добавить или удалить уже существующий (
telbook_rec_add() и
telbook_rec_del()). Кроме того, можно произвести поиск имени по телефону с помощью функции
telbook_find_name(). Для низкоуровневого взаимодействия с микросхемой памяти написана библиотека 25q32, которая берет на себя все нюансы аппаратной реализации.

Работа с графикой

Что можно еще попробовать, располагая цветным дисплеем и несколькими мегабайтами свободной памяти? Ну конечно же, вывод изображений, это само просится! Мобилка легко переваривает файлы ВМР с разрешением 128 на 160 и глубиной цвета в 16 бит. Картинки хранятся во внешней микросхеме и отображаются на экран с помощью функции
img_from_flash(), которая принимает адрес начала массива пикселей. Структура формата очень простая, но, если ты ее забыл, всегда можно почитать про заголовок и смещение в интернете.

создать мобильный телефон

Изображение на экран выводится частями с использованием буфера на стеке. В каждом проходе 4096 байт считываются из памяти в буфер, а потом пересылаются на экран. Конечно, можно заметить, что у F103C8T6 есть контроллер DMA, который предназначен именно для таких задач. Но, так как у нас нет возможности статически разместить весь буфер кадра в памяти, выигрыш от использования DMA здесь будет минимальным.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

void img_from_flash_v3(uint32_t addr) {

    uint8_t bufer[4096];

    gpio_clear(STPORT, STCS);

    st7735_sendcmd(ST7735_MADCTL);

    st7735_senddata(1 << 7);

    while (SPI_SR(SPI) & SPI_SR_BSY);

    gpio_set(GPIOA, STCS);

    for(uint8_t i = 0; i < 10; i++) {

        w25_read(addr + (i * 4096), bufer, 4096);

        st7735_drawimg(0,0+16*i,128,16, bufer);

    }

    gpio_clear(STPORT, STCS);

    st7735_sendcmd(ST7735_MADCTL);

    st7735_senddata(MV | MX);

    while (SPI_SR(SPI) & SPI_SR_BSY);

    gpio_set(STPORT, STCS);

}

Разумеется, перед тем как обращаться к изображениям в памяти, предварительно их следует туда все же записать. Для этого используется UART2 и протокол xmodem. На принимающей стороне я обрабатываю данные функцией
xmodem_to_flash(), которой передается адрес начала файла во флеше.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

void xmodem_to_flash(uint32_t addr) {

    unsigned char buf[132];

    uint32_t byte = 0;

    uint8_t lastlen, ch;

    usart2_init();

    usart_send_blocking(USARTX, NAK);

    while(1){

        ch = usart_recv_blocking(USARTX);

        if (ch == SOH){

            for (uint8_t i = 0; i < 131; i++) {

                ch = usart_recv_blocking(USARTX);

                buf[i]=ch;

            }

            lastlen=129;

            while(buf[lastlen] == EOF);

            lastlen -= 1;

            w25_write(addr + byte, buf + 2, lastlen);

            byte += lastlen;

            usart_send_blocking(USARTX,ACK);

            continue;

        }

        if (ch == EOT){

            usart_send_blocking(USARTX, ACK);

            break;

        }

    }

    usart2_deinit();

}

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

Энергосбережение

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

В первую очередь посадим на сухой паек радиомодуль. Команда
AT+CSCLK=1 и высокий уровень на выводе DTR переводят SIM800C в спящий режим (
sim800_sleep()). При этом все еще сохраняется возможность принимать входящие вызовы и SMS, но для передачи команд с микроконтроллера нужно вновь подать низкий уровень на DTR и выждать порядка 50 мс (
sim800_wake()). В таком режиме потребление составляет всего несколько миллиампер.

Подсветка дисплея тоже потребляет немало, так что на время ожидания логично отключать и ее (функции
st7735_sleep() и
st7735_wake()). Однако основной выигрыш электроэнергии получается за счет перевода микроконтроллера в режим глубокого сна, это позволяет сэкономить дополнительные 30 мА.

void standby (void) {

    SCB_SCR |= SCB_SCR_SLEEPDEEP;

    PWR_CR |= PWR_CR_PDDS;

    PWR_CR |= PWR_CR_CWUF;

__asm__(«WFI»);

}

Заключительная строчка кода (Wait For Interrupt) переводит F103C8T6 в режим ожидания, из которого он выходит, только когда наступает прерывание. В нашем случае это подача низкого уровня на вывод REST микроконтроллера.

Интерфейс

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

void main_help_menu(void) {

    stprintf(«aHELPrn»

                        «~ — ATArn»

                        «! — ATHrn»

                        «1 — data menurn»

                        «2 — call menu rn»

                        «3 — img menurn»

                        «4 — power menurn»

                        «5 — sim800 menurn»

                        «6 — helprn»

                        «7 — sim800 PWRrn»

                        «8 — sleeprn»

                        «9 — sleep logorn»

                        «* — tel bookrn»

                        «0 — sms menu»);

}

void get_keybord_cmd(void) {

    char bufer[64];

    uint32_t addr,  l, n = 4096;

    char key;

    key=fast_get_key();

    switch (key){

        case ‘1’: data_menu(); break;

        case ‘2’: telbook_menu_v2(); break;

        case ‘3’: img_menu(); break;

        case ‘4’: power_menu(); break;

        case ‘5’: sim800_menu(); break;

        case ‘6’: main_help_menu(); break;

        case ‘7’: sim800_power(); break;

        case ‘8’: st7735_sleep();

                        w25_powerdown();

                        standby();

                        break;

        case ‘9’: w25_powerdown();

                        standby();

                        break;

        case ‘0’: sms_menu(); break;

        case ‘*’: telbook_menu(); break;

        case ‘~’: sim800_take_call(); break;

        case ‘!’: sim800_ath(); break;

    }

    return;

}

Кратко расскажу о некоторых функциях главного меню. Команда ATA позволяет принять входящий вызов, команда ATH отклоняет вызов или завершает звонок. Меню data облегчает работу с внешней памятью и дает возможность в реальном времени посмотреть дамп любого участка, как в ASCII, так и в HEX. Также здесь можно перезаписать байты по произвольным адресам, вплоть до ручного управления полями в контактах (хотя конкретно для этого удобнее воспользоваться подходящим разделом).

Меню call служит для быстрого набора номера из телефонной книги, тогда как tel book позволяет редактировать и добавлять записи новых абонентов. Power menu управляет настройками энергосбережения, а команды sleep и sleep logo переводят устройство в режим сна (примерно 6 и 9 мА потребления соответственно).

Есть и несколько дополнительных полезностей. Меню img выполняет функции галереи и предоставляет доступ к сохраненным картинкам, а sim800 напрямую взаимодействует с радиомодулем через стандартные команды АТ. Как будто не самая очевидная вещь, но она мне здорово пригодилась при отладке.

Идеи и развитие проекта

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

РЕКОМЕНДУЕМ:
Как из телефона сделать панель приборов автомобиля

И это далеко не полный список. Современные микроконтроллеры имеют массу полезных интерфейсов и позволяют подключать самую разную периферию: микросхемы внешней оперативной памяти, карточки SD, экраны с высоким разрешением и даже цифровые камеры. Кажется, так можно увлечься и собрать полноценный смартфон!

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (3 оценок, среднее: 5,00 из 5)

Загрузка…


Download Article


Download Article

Mobiles are a popular form of kinetic art often used to decorate nurseries and children’s bedrooms. They are typically made up of either flat or three dimensional objects hanging on strings. Traditional mobiles are delicately balanced with objects carefully hung from multiple branching «arms.»[1]
While there are plenty of store-bought mobiles to choose from, making your own custom mobile at home can be easy and virtually free.[2]

  1. Image titled Make Mobiles Step 1

    1

    Sketch out an idea for your mobile. For this type of mobile, you will hang multiple shapes in a single straight line. You may use any combination of shapes you prefer, but make sure each shape is roughly symmetrical vertically. The right and left side of each shape don’t have to be exactly the same, but if they are too different your mobile may hang lopsided. You may also choose to make two or more similar mobiles to hang near each other.

    • If you have trouble coming up with something from scratch, search online for printable templates.[3]
  2. Image titled Make Mobiles Step 2

    2

    Gather your materials. You will need scissors, thread or fishing line, glue or scotch tape, a penny for each mobile, and sheets of cardstock in as many colors as you want. If you plan on printing out your designs, you will also need a printer. If you will be drawing them by hand, you will need a pen or pencil, a ruler, and a compass or protractor.

    Advertisement

  3. Image titled Make Mobiles Step 3

    3

    Transfer your shapes onto cardstock. There are multiple ways of doing this, and you may choose to use more than one in constructing your mobile.

    • Download a template or design your own shapes using an image editing program. If your printer can print on cardstock, print the shapes directly onto your cardstock. If your printer can’t print on cardstock, or you would like to incorporate a detailed color image into your mobile, print the shapes onto normal printer paper instead. Glue or tape the printed image to a piece of cardstock.
    • Draw out your shapes onto the cardstock. Use a ruler and other drawing tools to make sure the shapes are vertically symmetrical. Draw out only one of each shape.
    • Glue or tape other paper products to the cardstock. You may also choose to incorporate existing pictures, stationery, or newspaper clippings into your mobile. To do so, glue or tape the image onto cardstock. Then draw out your shape as described previously.
  4. Image titled Make Mobiles Step 4

    4

    Cut out your shapes. Take the cardstock with the shapes either drawn or printed onto it. Place it over a second sheet of cardstock that you would like to be each shape’s opposite side. Cut both sheets at once using the lines as a guide.

    • If you are unable to do both sides simultaneously, cut out one and use it to trace the shape onto the other sheet.
  5. Image titled Make Mobiles Step 5

    5

    Arrange one set of shapes. Lay one side of the mobile on a flat surface in the order that you choose to put them in. The side of the shape you want to be seen should be facing down. Make sure that you can picture a perfectly straight line going down the middle of all your shapes.[4]

  6. Image titled Make Mobiles Step 6

    6

    Cut a length of string or fishing line. Use your layout to determine how much string you will need. Use either a tape measure or the string itself. You will need a string long enough to start at the bottom shape and reach a few feet past the top. The amount of extra string you will need at the top will depend on how low you want your mobile to hang. Keep in mind it’s always easier to correct a too-long string than a too-short one.

  7. Image titled Make Mobiles Step 7

    7

    Attach the string to your shapes. Use tape or glue to secure the string to each shape, making sure to keep it centered on each. Start with the bottom section and work your way up. Try to make your adhesive as flat as possible.

  8. Image titled Make Mobiles Step 8

    8

    Secure a penny to the bottom shape. The penny will act as a small weight to keep your mobile hanging straight and balanced. Tape or glue the penny towards the bottom edge of the last shape over top of the string. Make sure to leave a small perimeter at the shape’s edge so you can seal it properly later on.[5]

  9. Image titled Make Mobiles Step 9

    9

    Attach the remaining duplicate shapes to finish your mobile. Glue or tape each of the remaining shapes to its match. Place these shapes face up over top of the string. Focus your adhesive on the edges to properly seal each side together. Once you’ve finished this step, your mobile will be ready to hang.[6]

    • If you use glue, wait for it to dry before hanging your mobile.
  10. Advertisement

  1. Image titled Make Mobiles Step 10

    1

    Understand the basics of balance. Traditional mobiles consist of rods chained together to form multiple branches. Each rod has either an additional rod or an object hung from both its right and left ends. They rely on equilibrium to keep each rod roughly horizontal and the entire sculpture balanced.

    • When the two ends have equal weight, what is called a balance point is at the exact center of the rod. The balance point is where the tether attaches to that rod from above.
    • If two objects have different weights, the balance point will shift towards the heavier object.
    • Every subsequent branch hung from a parent rod factors into the total weight of that rod’s ends.
    • So, if you find that your mobile is lopsided towards one end, try shifting the balance point towards that end. However, if the difference is too great, you will need to add additional weights to the lighter side or remove some from the heavier end.[7]
  2. Image titled Make Mobiles Step 11

    2

    Gather your materials. You will need drinking straws, paper clips roughly the same width as your straws, and whatever objects of your choice you would like to hang from your mobile. Paper shapes or letters will be easier to balance than heavier items.[8]
    Don’t pick objects that are too heavy to be supported by a straw.

  3. Image titled Make Mobiles Step 12

    3

    Plan your mobile from the bottom up. Arrange your straws and objects on a flat surface. Remember that, to keep the rods horizontal, the ends of each side must either be equal or able to achieve balance by shifting the point of attachment. If your objects are heavy or of unequal weight, you will need to be careful when it comes to placement. Start from what will be the bottom of your mobile and pair the objects accordingly. Then, go up to the next branch and either plan to hang an object or new branch equal in weight to your first from the other end. Keep going until you reach where you want your mobile to begin.[9]

    • If you don’t plan on making too many branches, this step is less important.
  4. Image titled Make Mobiles Step 13

    4

    Add three paperclips to each of your straws. Slide the straw through the free loop of the paperclips where there isn’t a second smaller loop right under it. Arrange the paperclips so that one hangs from each the right and left ends and one is somewhere in the middle.

  5. Image titled Make Mobiles Step 14

    5

    Make paperclip chains at the lengths you prefer. Do not attach these to the paperclips on the straws just yet. Using varied lengths to stagger your rods and objects will prevent your mobile from looking too crowded. Remember that longer chains will add weight to whichever end you hang them from.

  6. Image titled Make Mobiles Step 15

    6

    Attach the paperclip chains. Hook the paperclip chains to the straw paperclips and to your objects. If your objects are paper, you can attach each by simply sliding them into the clip.[10]
    For objects that have a loop of their own, such as a charm, hook them into the paperclip’s wire. For other object types, you may need to unwind a paperclip and wrap the wire around the object for the end of the chain to hook on to. Attach a free chain to the middle paperclip of your top straw. This will be how you hang your mobile.

  7. Image titled Make Mobiles Step 16

    7

    Adjust your mobile until it achieves balance. Pick up your mobile by the top chain and hold it in front of you. Starting from the bottom, look for any areas of imbalance where the straw is not straight.

    • Try to correct this by sliding the middle paperclip to a new potential balance point.
    • If it cannot be balanced this way, either swap out the items for ones of a different weight or add additional branches to the lighter end.
  8. Advertisement

  1. 1

    Figure out what you want to hang on your mobile. This could be ribbons, string, beads, paper crafts, or small objects. Keep in mind that incorporating heavier objects into your mobile will mean you must be more careful about your placement. Weight must be balanced on each side to keep your mobile straight.

  2. Image titled Make Mobiles Step 18

    2

    Gather your materials. In addition to your decorations, you will need a wooden embroidery hoop, yarn or string, masking tape, and scissors.[11]
    A hot glue gun is also useful but not necessary.

    • If you are using objects that are heavier than paper or plastic beads, try to have a few more than you think you may need in case you must add some for balance.
  3. Image titled Make Mobiles Step 19

    3

    Separate the inner and outer hoops of the embroidery hoop. There will be a metal clasp that will likely need to be turned counterclockwise to release the two hoops. The inner hoop will be used to hang the mobile, while the decorations will be attached to the outer hoop. Keep in mind that the visible portions of the hoops in the finished mobile will be the outside of the outer hoop and inside of the inner hoop.[12]

  4. Image titled Make Mobiles Step 20

    4

    Tie four strings to the inner hoop. How long you choose to cut these strings will depend on how low you want your mobile to hang. Try to make sure that each string is roughly the same distance from each of its neighbors. They should create four equal sections of the hoop. Finalize placement before securing the knots. Position the knots on the outside of the hoop and cut off the excess.[13]

  5. Image titled Make Mobiles Step 21

    5

    Tie the opposite ends of the four strings together. Make sure that the distance between the hoop and the end knot is the same for each string. Check that the knot is secure. It will need to be strong enough to support the full weight of your mobile. Hold the hoop up by the knot to make sure it hangs horizontally. If it is uneven, determine which string must be corrected to make the hoop hang flat.[14]

  6. Image titled Make Mobiles Step 22

    6

    Attach the decorations to the outer hoop. There are two different ways you can secure the decorations depending on their type.

    • Light decorations, such as those made of strips of paper or ribbon, may be attached permanently using masking tape or a hot glue gun. Simply decide on placement somewhere along the circle and secure them to the inner side of the outer hoop.
    • Heavy decorations must be attached to the outer hoop with string. Cut a number of strings slightly longer than you would like your objects to hang. You may make them all one length, but staggered strings of different lengths will look better. Attach one end of each string to each decoration, either through adhesive or by tying a hoop around the object. Separate objects into pairs of roughly the same weight. Tie the opposite end of each string around the outer hoop. Make sure that each paired item is directly across from the other to create balance. This method may also be used for light objects, such as beads or origami, which you would prefer to hang rather than attach directly. With lighter objects, balancing them is not necessary.
  7. Image titled Make Mobiles Step 23

    7

    Reattach the two hoops to finish your mobile. Hold the mobile by the top knot to make sure the hoop hangs horizontally.[15]

    • If it does not and you used heavier objects, you will need to readjust them to achieve the right balance. Determine the source of imbalance. It may be caused by objects that were not matched properly or ones that were not spaced correctly. Loosen the knots to reposition the objects. Reattach the hoops and check again. Repeat this step until your mobile is properly balanced.
  8. Advertisement

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

Thanks for submitting a tip for review!

References

About This Article

Article SummaryX

To make a basic straight mobile, start by sketching a combination of simple shapes that are roughly symmetrical. Next, draw or trace your shapes onto cardstock, cut them out, and arrange them in a vertical line on a flat surface. Then, cut a piece of string or fishing line long enough to start at the bottom shape and reach a few feet past the top. Use tape or glue to secure the string to each shape, making sure to keep the shapes centered. Finally, glue or tape a penny to the bottom shape to weigh down the mobile. For tips on adding more shapes to this design, read on!

Did this summary help you?

Thanks to all authors for creating a page that has been read 44,991 times.

Did this article help you?


Download Article


Download Article

Mobiles are a popular form of kinetic art often used to decorate nurseries and children’s bedrooms. They are typically made up of either flat or three dimensional objects hanging on strings. Traditional mobiles are delicately balanced with objects carefully hung from multiple branching «arms.»[1]
While there are plenty of store-bought mobiles to choose from, making your own custom mobile at home can be easy and virtually free.[2]

  1. Image titled Make Mobiles Step 1

    1

    Sketch out an idea for your mobile. For this type of mobile, you will hang multiple shapes in a single straight line. You may use any combination of shapes you prefer, but make sure each shape is roughly symmetrical vertically. The right and left side of each shape don’t have to be exactly the same, but if they are too different your mobile may hang lopsided. You may also choose to make two or more similar mobiles to hang near each other.

    • If you have trouble coming up with something from scratch, search online for printable templates.[3]
  2. Image titled Make Mobiles Step 2

    2

    Gather your materials. You will need scissors, thread or fishing line, glue or scotch tape, a penny for each mobile, and sheets of cardstock in as many colors as you want. If you plan on printing out your designs, you will also need a printer. If you will be drawing them by hand, you will need a pen or pencil, a ruler, and a compass or protractor.

    Advertisement

  3. Image titled Make Mobiles Step 3

    3

    Transfer your shapes onto cardstock. There are multiple ways of doing this, and you may choose to use more than one in constructing your mobile.

    • Download a template or design your own shapes using an image editing program. If your printer can print on cardstock, print the shapes directly onto your cardstock. If your printer can’t print on cardstock, or you would like to incorporate a detailed color image into your mobile, print the shapes onto normal printer paper instead. Glue or tape the printed image to a piece of cardstock.
    • Draw out your shapes onto the cardstock. Use a ruler and other drawing tools to make sure the shapes are vertically symmetrical. Draw out only one of each shape.
    • Glue or tape other paper products to the cardstock. You may also choose to incorporate existing pictures, stationery, or newspaper clippings into your mobile. To do so, glue or tape the image onto cardstock. Then draw out your shape as described previously.
  4. Image titled Make Mobiles Step 4

    4

    Cut out your shapes. Take the cardstock with the shapes either drawn or printed onto it. Place it over a second sheet of cardstock that you would like to be each shape’s opposite side. Cut both sheets at once using the lines as a guide.

    • If you are unable to do both sides simultaneously, cut out one and use it to trace the shape onto the other sheet.
  5. Image titled Make Mobiles Step 5

    5

    Arrange one set of shapes. Lay one side of the mobile on a flat surface in the order that you choose to put them in. The side of the shape you want to be seen should be facing down. Make sure that you can picture a perfectly straight line going down the middle of all your shapes.[4]

  6. Image titled Make Mobiles Step 6

    6

    Cut a length of string or fishing line. Use your layout to determine how much string you will need. Use either a tape measure or the string itself. You will need a string long enough to start at the bottom shape and reach a few feet past the top. The amount of extra string you will need at the top will depend on how low you want your mobile to hang. Keep in mind it’s always easier to correct a too-long string than a too-short one.

  7. Image titled Make Mobiles Step 7

    7

    Attach the string to your shapes. Use tape or glue to secure the string to each shape, making sure to keep it centered on each. Start with the bottom section and work your way up. Try to make your adhesive as flat as possible.

  8. Image titled Make Mobiles Step 8

    8

    Secure a penny to the bottom shape. The penny will act as a small weight to keep your mobile hanging straight and balanced. Tape or glue the penny towards the bottom edge of the last shape over top of the string. Make sure to leave a small perimeter at the shape’s edge so you can seal it properly later on.[5]

  9. Image titled Make Mobiles Step 9

    9

    Attach the remaining duplicate shapes to finish your mobile. Glue or tape each of the remaining shapes to its match. Place these shapes face up over top of the string. Focus your adhesive on the edges to properly seal each side together. Once you’ve finished this step, your mobile will be ready to hang.[6]

    • If you use glue, wait for it to dry before hanging your mobile.
  10. Advertisement

  1. Image titled Make Mobiles Step 10

    1

    Understand the basics of balance. Traditional mobiles consist of rods chained together to form multiple branches. Each rod has either an additional rod or an object hung from both its right and left ends. They rely on equilibrium to keep each rod roughly horizontal and the entire sculpture balanced.

    • When the two ends have equal weight, what is called a balance point is at the exact center of the rod. The balance point is where the tether attaches to that rod from above.
    • If two objects have different weights, the balance point will shift towards the heavier object.
    • Every subsequent branch hung from a parent rod factors into the total weight of that rod’s ends.
    • So, if you find that your mobile is lopsided towards one end, try shifting the balance point towards that end. However, if the difference is too great, you will need to add additional weights to the lighter side or remove some from the heavier end.[7]
  2. Image titled Make Mobiles Step 11

    2

    Gather your materials. You will need drinking straws, paper clips roughly the same width as your straws, and whatever objects of your choice you would like to hang from your mobile. Paper shapes or letters will be easier to balance than heavier items.[8]
    Don’t pick objects that are too heavy to be supported by a straw.

  3. Image titled Make Mobiles Step 12

    3

    Plan your mobile from the bottom up. Arrange your straws and objects on a flat surface. Remember that, to keep the rods horizontal, the ends of each side must either be equal or able to achieve balance by shifting the point of attachment. If your objects are heavy or of unequal weight, you will need to be careful when it comes to placement. Start from what will be the bottom of your mobile and pair the objects accordingly. Then, go up to the next branch and either plan to hang an object or new branch equal in weight to your first from the other end. Keep going until you reach where you want your mobile to begin.[9]

    • If you don’t plan on making too many branches, this step is less important.
  4. Image titled Make Mobiles Step 13

    4

    Add three paperclips to each of your straws. Slide the straw through the free loop of the paperclips where there isn’t a second smaller loop right under it. Arrange the paperclips so that one hangs from each the right and left ends and one is somewhere in the middle.

  5. Image titled Make Mobiles Step 14

    5

    Make paperclip chains at the lengths you prefer. Do not attach these to the paperclips on the straws just yet. Using varied lengths to stagger your rods and objects will prevent your mobile from looking too crowded. Remember that longer chains will add weight to whichever end you hang them from.

  6. Image titled Make Mobiles Step 15

    6

    Attach the paperclip chains. Hook the paperclip chains to the straw paperclips and to your objects. If your objects are paper, you can attach each by simply sliding them into the clip.[10]
    For objects that have a loop of their own, such as a charm, hook them into the paperclip’s wire. For other object types, you may need to unwind a paperclip and wrap the wire around the object for the end of the chain to hook on to. Attach a free chain to the middle paperclip of your top straw. This will be how you hang your mobile.

  7. Image titled Make Mobiles Step 16

    7

    Adjust your mobile until it achieves balance. Pick up your mobile by the top chain and hold it in front of you. Starting from the bottom, look for any areas of imbalance where the straw is not straight.

    • Try to correct this by sliding the middle paperclip to a new potential balance point.
    • If it cannot be balanced this way, either swap out the items for ones of a different weight or add additional branches to the lighter end.
  8. Advertisement

  1. 1

    Figure out what you want to hang on your mobile. This could be ribbons, string, beads, paper crafts, or small objects. Keep in mind that incorporating heavier objects into your mobile will mean you must be more careful about your placement. Weight must be balanced on each side to keep your mobile straight.

  2. Image titled Make Mobiles Step 18

    2

    Gather your materials. In addition to your decorations, you will need a wooden embroidery hoop, yarn or string, masking tape, and scissors.[11]
    A hot glue gun is also useful but not necessary.

    • If you are using objects that are heavier than paper or plastic beads, try to have a few more than you think you may need in case you must add some for balance.
  3. Image titled Make Mobiles Step 19

    3

    Separate the inner and outer hoops of the embroidery hoop. There will be a metal clasp that will likely need to be turned counterclockwise to release the two hoops. The inner hoop will be used to hang the mobile, while the decorations will be attached to the outer hoop. Keep in mind that the visible portions of the hoops in the finished mobile will be the outside of the outer hoop and inside of the inner hoop.[12]

  4. Image titled Make Mobiles Step 20

    4

    Tie four strings to the inner hoop. How long you choose to cut these strings will depend on how low you want your mobile to hang. Try to make sure that each string is roughly the same distance from each of its neighbors. They should create four equal sections of the hoop. Finalize placement before securing the knots. Position the knots on the outside of the hoop and cut off the excess.[13]

  5. Image titled Make Mobiles Step 21

    5

    Tie the opposite ends of the four strings together. Make sure that the distance between the hoop and the end knot is the same for each string. Check that the knot is secure. It will need to be strong enough to support the full weight of your mobile. Hold the hoop up by the knot to make sure it hangs horizontally. If it is uneven, determine which string must be corrected to make the hoop hang flat.[14]

  6. Image titled Make Mobiles Step 22

    6

    Attach the decorations to the outer hoop. There are two different ways you can secure the decorations depending on their type.

    • Light decorations, such as those made of strips of paper or ribbon, may be attached permanently using masking tape or a hot glue gun. Simply decide on placement somewhere along the circle and secure them to the inner side of the outer hoop.
    • Heavy decorations must be attached to the outer hoop with string. Cut a number of strings slightly longer than you would like your objects to hang. You may make them all one length, but staggered strings of different lengths will look better. Attach one end of each string to each decoration, either through adhesive or by tying a hoop around the object. Separate objects into pairs of roughly the same weight. Tie the opposite end of each string around the outer hoop. Make sure that each paired item is directly across from the other to create balance. This method may also be used for light objects, such as beads or origami, which you would prefer to hang rather than attach directly. With lighter objects, balancing them is not necessary.
  7. Image titled Make Mobiles Step 23

    7

    Reattach the two hoops to finish your mobile. Hold the mobile by the top knot to make sure the hoop hangs horizontally.[15]

    • If it does not and you used heavier objects, you will need to readjust them to achieve the right balance. Determine the source of imbalance. It may be caused by objects that were not matched properly or ones that were not spaced correctly. Loosen the knots to reposition the objects. Reattach the hoops and check again. Repeat this step until your mobile is properly balanced.
  8. Advertisement

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

Thanks for submitting a tip for review!

References

About This Article

Article SummaryX

To make a basic straight mobile, start by sketching a combination of simple shapes that are roughly symmetrical. Next, draw or trace your shapes onto cardstock, cut them out, and arrange them in a vertical line on a flat surface. Then, cut a piece of string or fishing line long enough to start at the bottom shape and reach a few feet past the top. Use tape or glue to secure the string to each shape, making sure to keep the shapes centered. Finally, glue or tape a penny to the bottom shape to weigh down the mobile. For tips on adding more shapes to this design, read on!

Did this summary help you?

Thanks to all authors for creating a page that has been read 44,991 times.

Did this article help you?

Как сделать самому сотовый телефон

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

Как сделать самому сотовый телефон

Инструкция

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

Займитесь программным обеспечением вашего «нового» телефона. Зайдите на сайт http://remont-gsm.com. В конце страницы вам будут предложены коды и прошивки некоторых моделей сотовых телефонов и программы, позволяющие это сделать. Например, программа Phoenix предназначена для прошивки телефонов Nokia. Другие программы могут генерировать код, делать сброс до заводских установок без дополнительного оборудования. Прямо с сайта можно скачать эти программы, к которым прилагаются подробные инструкции.

Возьмите пустой корпус телефона. В зависимости от модели системную плату прикрепляют к средней или нижней части корпуса (раме) с помощью специального гибкого шлейфа. Если вы не сумели перепаять плату, установив на нее все части телефона (дисплей, микрофон, лампы и т.д.), можно установить несколько односторонних плат, расположенных параллельно. Установите на нее шлейф функциональной клавиатуры и кнопок. Также на плату приложите накладку со слуховыми динамиками. Аккуратно приложите дисплей к средней части и защелкните, а также коаксиальные кабели. Рамку необходимо зафиксировать по всему периметру. Затем установите все разъемы, боковые, нижние, верхние панели согласно инструкции по сборке сотового телефона конкретной марки. Закрепите их винтами. Вы получите мобильный телефон, сделанный исключительно под себя.

Источники:

  • как сделать телефон своими руками

Войти на сайт

или

Забыли пароль?
Еще не зарегистрированы?

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

  • Как надо заряжать новый телефон
  • Как надеть силиконовый чехол на телефон
  • Как надеть номера на машину
  • Как надеть защитное стекло на телефон
  • Как надеть брелок на телефон