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

Это руководство описывает от начала до конца конструирование своего собственного смартфона. Начинается дело с печати на 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 принтере

Корпус смартфона состоит из двух частей, напечатанных на 3D принтере: верхней и нижней (ну или передней и задней, это смотря как на него посмотреть). Скачать файлы .stl вы можете с ресурса thingiverse. Ну а если у вас нет 3D принтера, то можете заказать печать какой-нибудь компании, которая предоставляет подобные услуги (например, Shapeways). И да, если вы хотите сделать корпус более индивидуального дизайна, можете скачать проект для Solidworks с моей странички на github.

Шаг 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: Финальная сборка

После того, как мы подключили питание, можно завершить подключение модулей к Raspberry Pi, а также подключить динамик и микрофон. Давайте начнем.
1. Припаяйте контакт динамика «spk +» (8Ом) к контакту «spk -» на модуле GSM. Полярность не имеет значения.
2. Припаяйте красный провод микрофона к контакту Mic + на модуле GSM.
3. Припаяйте черный провод микрофона к контакту Mic — на модуле GSM.
4. Подключите контакт «RI» (Индикатор звонка) на модуле GSM к контакту 7 (GPIO 4) на дисплее.
5. Подключите TX на модуле GSM к контакту 10 (RX) на дисплее.
6. Припаяйте RX модуля GSM к контакту 8 (TX) на дисплее.
7. Соедините Vio и bat на модуле GSM. При желании, можете использовать линию 3v3 на Raspberry Pi.
8. Закрепите uFL антенну к соединителю uFL на модуле GSM.
9. Перепроверьте все соединения!

Если вы попытаетесь все включить сейчас, то поведение устройства должно быть аналогичным, как на предыдущем шаге. На следующем шаге мы установим сим-карту в модуль 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, напишите:

FRAMEBUFFER=/dev/fb0 startx

Шаг 7: Установка Wifi

У вашего телефона нет клавиатуры, так что для доступа к устройству через консоль, нужно установить wifi для подключения по ssh. Подключите Wifi адаптер к компьютеру и настройте подключение через Wifi Config. Выключите Raspberry Pi и подключите к нему Wifi адаптер. Если вам все еще не удается подключиться к Raspberry Pi по ssh, попробуйте использовать USB концентратор. Больше информации по настройке Wifi можно найти здесь.

Шаг 8: Финальная подготовка программного обеспечения

Тестирование модуля GSM

Чтобы протестировать модуль GSM, установите minicom с помощью команды:

sudo apt-get install minicom

Затем запустите:

sudo minicom -D /dev/ttyAMA0 -b 9600

Должен открыться терминал по взаимодействию с устройствами через ком-порт. Если вы напишете:

AT

в ответ должны получить «ОК». Если не получили, то проверьте все соединения. Если же получили, значит модуль GSM готов к работе.

Поворот экрана

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

sudo nano /etc/modprobe.d/adafruit.conf

Измените в файле значение параметра «rotate» на 180.

Наконец, чтобы добавить LXDE в автозагрузку, следуйте описанию в инструкции.

Установка программного обеспечения для камеры

Теперь давайте установим программное обеспечение, которое помогает снимать фото камерой Raspberry Pi. Для начала напишите:

sudo apt-get install python-pip

Установка камеры:

sudo pip install picamera=0.8

Наконец, загружаем программное обеспечение:

git clone https://github.com/spadgenske/adafruit-pi-cam

Шаг 9: Установка TYOS

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

wget https://github.com/spadgenske/TYOS/archive/0.1.0.zip

Распакуйте архив:

unzip 0.1.0.zip

Для запуска TYOS напишите:

sudo python /home/pi/tyos/src/main.py 

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

Напишите

sudo nano /etc/rc.local

чтобы открыть конфигурационный файл. Внизу, после текста и до строчки «exit 0», добавьте следующий текст:

sudo python /home/pi/tyos/src/main.py --power

Теперь перезапустите 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. Проверьте все соединения.

Мои поздравления! Вы только что собрали свой собственный смартфон! Если вам не по душе телефон, называющийся «tyfone», можете поменять лого в /home/pi/tyos/graphics/logo.png на любое, какое пожелаете.

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

Содержание

  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)

Загрузка…

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

Содержание

  • Что делаем
  • Что понадобится
  • Как спаять электронику
  • Как прошить
  • Как решить проблемы со связью
  • Как сделать корпус
  • Как пользоваться телефоном
  • 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 (все как на обычном телефоне), для удаления вводимых цифр используй кнопку *.

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

russian_smartphone

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

Шаг 1: уникальная программная платформа

Первый отечественный смартфон должен работать под уникальной операционной системой, не совместимой с существующими на рынке на уровне ПО. То есть, это не должен быть «улучшенный Android» или какой-то перепил Unix, конечно же там не появится iOS (даже если очень захотеть) и даром не нужен Windows Phone. Система должна быть написана с нуля. Нельзя, чтобы на неё даже вставали чужие системы, не говоря уже о чужих приложениях, как бы того не хотел потребитель.

Для этой платформы необходимо создать инфраструктуру — свой магазин коммерческих и бесплатных приложений, свой магазин мультимедийного контента, свои дополнительные сервисы. В бюджетной модели должны быть доступны основные особые возможности (о них ниже), а в премиальной идеально сделан доступ к мировым сервисам — Youtube, почтовым сервисам, отличному серфингу, картам, новостям, IP TV. Всё это должно «летать», работать очень плавно и мягко даже на слабой версии. Телефон должен доставлять удовольствие, быть простым и понятным.

Шаг 2: уникальные возможности для россиян

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

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

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

Шаг 4: создание инфраструктуры

Под этой же платформой должны появиться удобные дополнительные устройства — первый российский планшет, первая российская ТВ-приставка, первый российский ноутбук. И все вместе, эти гаджеты должны работать в тесном союзе, связываясь друг с другом, перенося данные через отечественное облако, синхронизируясь как угодно и где угодно. Для ретроградов должна быть возможность использования и с альтернативными системами — скажем, если аппарат сможет разом передавать на Chromecast и AirPlay «прямо из коробки», это может быть важным достоинством на время, пока не создана своя альтернатива.

Шаг 5: дотационная модель

Приобрести такой аппарат должно быть очень просто любым слоям населения. Здесь должен быть выгодный 4G-интернет по особым тарифам (только на этом аппарате), выгодные тарифные планы на звонки внутри страны, выгодные цены на покупку телепрограмм, сериалов, фильмов и журналов. То есть, у потребителя должна появляться экономическая выгода от использования именно этой системы, а не какой-то другой. И сам аппарат можно продавать за 1500 рублей, с условием заключения контракта на длительный срок.

Шаг 6: харизматичная презентация

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

Шаг 7: производство

На первых этапах нет смысла производить аппаратную базу в России, где пока наблюдаются проблемы с высокотехнологичным сектором. Достаточно будет разместить на технике гордое «Разработано в Российской Федерации, произведено в Китае», и этого хватит, чтобы смело считать аппарат отечественным, тем более, всю программную начинку разработают именно наши, лучшие в мире, программисты, а дизайн создаст лично tema.

Шаг 8: заинтересовать разработчиков во всём мире

Чтобы заинтересовать разработчиков во всём мире, необходимо сделать так, чтобы они могли зарабатывать на приложениях, создаваемых для первой российской платформы. Следовательно, в начале дотационная политика, а с увеличением продаж перевод этого на коммерческие рельсы. Хорошие SDK, вкусные условия участия, активное продвижение интересного софта в медиа. Зарабатывать на продукте должны киношники, музыканты, писатели, производители игр.

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

А самое главное — всё это должно работать как часы, быть понятно даже Марье Петровне со скамейки пенсионеров, быть плавным-красивым и стильным. Этим продуктом должно быть приятно гордиться, его должно хотеться держать в руках и его должно быть не страшно уронить.

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

Подведу итог

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

Для прочитавших вопрос. Как думаете, насколько это реально, сколько потребует усилий и инвестиций? Да и нужно ли оно?

Introduction: Build Your Own Smartphone

This tutorial brings you from start to finish in constructing your very own smartphone. You will start by 3D printing a case, then soldering printed circuit boards together, assembly, and finally installing a mobile OS onto your phone and using Python to make it yours. You can learn more about this project at hackaday.io/project/5083

Skills Required:

  • Basic Soldering
  • Familiarity with the Raspberry Pi

OR:

Lots of time and patience

Step 1: Gather Materials

Before we begin, lets gather the components required for the build. You will need the following electronic components and PCBs:

  1. Raspberry Pi A+ 256MB
  2. Adafruit FONA uFL Version
  3. 3.5in PiTFT Assembled
  4. Raspberry Pi Camera 5MP
  5. Powerboost 500 Basic
  6. GSM Antenna
  7. 1W 8 ohm Metal Speaker
  8. USB Wifi Adapter
  9. Electret Microphone
  10. 1200mah Lithium Ion Battery
  11. 4-40 x 3/8in screws
  12. M2.5 x 5mm screws
  13. M2.5 x 20mm screws
  14. M2 x 5mm screws
  15. Slide Switch
  16. Wire

While waiting for your parts to ship, you can 3D print the enclosure.

Step 2: 3D Print the Enclosure

The smartphone consists of two 3D printed parts that make up the enclosure: The top and the bottom. Download the .stl files on thingiverse http://www.thingiverse.com/thing:752746. If you do not have access to a 3D printer, you can pay a company like Shapeways to do it for you. If you would like to customize the case to suit your needs, download the Solidworks files from my Github page.

I myself paid a company to do the 3D printing for me because I do not have the funds to buy one myself. If you would like more 3D printed projects from me, please vote for the tyfone in the 3D Printing contest. Thank you!

Step 3: Wire the Power Circuit

Now lets start wiring everything together. In the Fritzing diagram, there is a Raspberry Pi. Instead of connecting to the Raspberry Pi, connect your wires to the 26 pin male header on the PiTFT. Now that we have that out of the way, lets start making connections.

  1. Connect «bat» on the Adafruit FONA to «bat» on the Power Boost.
  2. Solder a wire from GND on the FONA to GND on the Power Boost.
  3. Solder a wire from GND on the power boost to one terminal on a slide switch.
  4. Also connect the GND pin on the power boost to a ground pin on the PiTFT (Same Pinout as the first 26 pins on a Raspberry Pi, notice the arrow and «1» indicating pin 1, which is 3v3)
  5. Connect the 5V line on the Power Boost to a 5v pin on your PiTFT.
  6. Solder a wire from the middle terminal of your slide switch to the «EN» pin (Enable) on the Power Boost.
  7. Solder a wire from the «KEY» pin on the FONA to Pin 40 (GPIO 21) on the Raspberry Pi. (Changed on commit acd5c08)
  8. Place the PiTFT over your Raspberry Pi A+
  9. Double check your connections

WHILE TESTING, MAKE SURE YOU DO NOT PLUG IN A 5V MICRO USB. THE PI IS ALREADY BEING POWERED BY THE LITHIUM ION BATTERY

If you slide the slide switch the LEDs on the Power Boost should illuminate and the Raspberry Pi should power up. The PiTFT backlight should also turn on. If you have a PiTFT image on your Pi’s SD card the screen should also boot up. Otherwise, it will just stay solid white, which is just fine for now. Most likely, no LEDs will illuminate on the FONA. To turn on the FONA, hold in the Key button on the device for two seconds or pull GPIO 18 on the Raspberry Pi high for two seconds. If you can power the Pi, TFT, and FONA from the battery and turn it all off from a switch, you are ready for the next step.

Step 4: Finish Wiring

Now that power connection are done, we can continue on to wiring up the UART to the Raspberry Pi, the speakers, and the microphone. Lets get started.

  1. Solder the 8 ohm speaker to «spk +» and «spk -» on the FONA. The polarity doesn’t matter.
  2. Solder the red wire on the electret microphone to the Mic + pin on the FONA.
  3. Solder the black wire on the electret microphone to the Mic — pin on the FONA.
  4. Connect the «RI» (Ring indicator) pin on the Adafruit FONA to pin 7 (GPIO 4) on the PiTFT.
  5. Connect TX on the FONA to pin 10 (RX) on the PiTFT.
  6. Solder RX on the FONA to pin 8 (TX) on the PiTFT.
  7. Solder Vio on the FONA to bat, also on the FONA. If you want, you could also use a 3v3 line on the Raspberry Pi.
  8. Snap the uFL antenna onto the uFL connector on the FONA.
  9. Double check your connections.

If you power everything on now, it should behave the same as it did in the last step. In the next step, we will be setting up the FONA by adding a SIM card making it capable of communicating over a cellular network.

Step 5: Add SIM Card

Now that the wiring is complete, we can add a SIM card to make it possible for the FONA to communicate over a cellular network. The FONA uses 2G data networks, like T-Mobile. The FONA does not work with 3G or 4G networks. AT&T is planning to shut down their 2G network in 2016, so we will be using a T-Mobile SIM card activation kit. The FONA uses a standard SIM card, so a Micro or Nano SIM cards will not fit. Once you have a card, activate it by following the steps at t-mobile.com/activate. When you are done, insert the card into your FONA and power everything on. If the red LED on the FONA is blinking every 3 seconds, your FONA is connected to a cellular network! In the next step, we will setup the software to get your Raspberry Pi communicating with the FONA.

More info on T-Mobile’s networks can be found here

If you are not in an area with T-Mobile coverage, any network with 2G GSM service will work just as well.

Step 6: Setup SD Card

Now that you have all the hardware wired up, we can setup the Raspberry Pi to communicate with it. Start by flashing the latest version of the PiTFT OS onto a micro SD card for your Raspberry Pi. You will want to use the latest PiTFT image, which can be downloaded here. Install the image to the SD card by following these instructions. Once your SD card is prepared, insert it into your Pi and power it on. You should get the raspi-config utility on your PiTFT. It may be small but it will do for now. There are a few things you must set up it raspi-config:

  1. Expand filesystem is a must.
  2. Enable Camera
  3. Disable serial port. This is so the Raspberry Pi can communicate with the FONA
  4. Enable SSH. This is essential because the A+ only has one USB port.

End setup and reboot your Pi.

By typing startx the Raspberry Pi will enter LXDE on the PiTFT. To enter LXDE over the HDMI port type

FRAMEBUFFER=/dev/fb0 startx

Step 7: Setup WiFi and Clear Desktop

Your phone will not have a keyboard, so in order to access a command line you will have to setup WiFi and use ssh. In the desktop, put in your network information using Wifi Config. Shutdown the Raspberry Pi and insert a Wifi dongle. If you are still unable to connect via ssh, try using a USB hub to get going. More info on setting up WiFi can be found here. Once you are connected over SSH, you can clear the Desktop icons and remove the taskbar to make your phone look more professional. The steps below are not necessary and may not work in later versions of Raspbian.

1. Change to the desktop directory with the command

cd Desktop

2. Remove all app icons with the command:

sudo rm * 

3. Go back with

cd  /home/pi

4. Open the lxsession file with the command:

sudo nano /etc/xdg/lxsession/LXDE/autostart

5. Comment out the line «@lxpanel —profile LXDE»

6. Save and exit the file.

Step 8: Finish Software Installation

Test FONA

To test out your FONA, install minicom with the command:

sudo apt-get install minicom

Then run:

sudo minicom -D /dev/ttyAMA0 -b 9600

You should get a serial terminal. If you type

AT

you should get «OK» back. If you don’t, check your connections. If you do, the FONA is ready for operation.

Rotate Screen

You may have noticed the text on the PiTFT is sideways and not in the orientation for a phone. Lets change that with the command:

sudo nano /etc/modprobe.d/adafruit.conf

In the file, change the «rotate» parameter to 180.

Finally, to get the Pi to automatically boot to LXDE on the PiTFT, follow this step in the adafruit guide:

https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/extras#boot-to-x-windows-on-pitft

Calibrate Touchscreen

Start X and see if the touchscreen is working properly. If the mouse is not in the correct spot when you tap, you will need to calibrate the touchscreen. Run this command to do so:

sudo adafruit-pitft-touch-cal

The script will calibrate the touchscreen to work with the new orientation.

Install Camera Software

Now lets install the software used to take pictures with the Raspberry Pi camera. First type:

sudo apt-get install python-pip

Install picamera with:

sudo pip install picamera

Step 9: Install TYOS

TYOS is the mobile operating system (Technically, a modified version of Raspbian is the OS, and TYOS is just a GUI overlay) used to give your phone the capability to send and receive SMS messages, and make calls. To download TYOS run the command:

wget https://github.com/spadgenske/tyos/archive/0.5.6.zip

Extract the zip file with the command:

unzip 0.5.6

Finally rename it with:

mv TYOS-0.5.6 tyos

To start up TYOS, run the command:

sudo python /home/pi/tyos/src/main.py 

In TYOS, make a call and send a text message to make sure everything works. Once everything is working perfectly, we can set up TYOS to start on boot so no ssh is required.

Type sudo nano /etc/rc.local to get into the configuration file. At the bottom, right before the «exit 0» line, add a line saying the following:

sudo python /home/pi/tyos/src/main.py --power

The —power tag turns on the FONA. Without it TYOS assumes the FONA is on.

Change the background with the command:

sudo mv tyos/graphics/desktop-background.png /etc/alternatives/desktop-background

Make sure you do not include .png at the end of the line.

Now reboot your Pi. TYOS should startup on boot!

UPDATE 5/23/16: TYOS 0.5.6

Step 10: Putting Everything Together

Now we can secure everything into the case completing the smartphone.

  1. Using some hot glue, glue the speaker and the microphone it the their slots.
  2. Using the M2 screws, screw in the Raspberry Pi camera. Route the ribbon cable so it is out of the way of any other electronics.
  3. Using M2.5 screws, screw the Raspberry Pi A+ with SD card and USB Wifi down into the case.
  4. Connect the Pi camera ribbon cable to the Pi with the blue facing the camera.
  5. Also using M2.5 screws, screw the FONA SIM card up into the case.
  6. Organise the wiring making sure it does not interfere with any of the other electronics.
  7. Wrap the Power Boost in electrical tape to prevent a short.
  8. Sandwich the Power Boost and battery between the Raspberry Pi and PiTFT.
  9. Hot glue the slide switch into the switch slot on the top part of the case.
  10. Using 4-40 screws, screw the top and bottom halves of the case together.
  11. Test everything out.

Congratulations! You have just built your own smartphone! If you don’t like the phone to be called «tytelli» just change the logo in /home/pi/tyos/graphics/logo.png to whatever you wish.

1 Person Made This Project!

Recommendations

Introduction: Build Your Own Smartphone

This tutorial brings you from start to finish in constructing your very own smartphone. You will start by 3D printing a case, then soldering printed circuit boards together, assembly, and finally installing a mobile OS onto your phone and using Python to make it yours. You can learn more about this project at hackaday.io/project/5083

Skills Required:

  • Basic Soldering
  • Familiarity with the Raspberry Pi

OR:

Lots of time and patience

Step 1: Gather Materials

Before we begin, lets gather the components required for the build. You will need the following electronic components and PCBs:

  1. Raspberry Pi A+ 256MB
  2. Adafruit FONA uFL Version
  3. 3.5in PiTFT Assembled
  4. Raspberry Pi Camera 5MP
  5. Powerboost 500 Basic
  6. GSM Antenna
  7. 1W 8 ohm Metal Speaker
  8. USB Wifi Adapter
  9. Electret Microphone
  10. 1200mah Lithium Ion Battery
  11. 4-40 x 3/8in screws
  12. M2.5 x 5mm screws
  13. M2.5 x 20mm screws
  14. M2 x 5mm screws
  15. Slide Switch
  16. Wire

While waiting for your parts to ship, you can 3D print the enclosure.

Step 2: 3D Print the Enclosure

The smartphone consists of two 3D printed parts that make up the enclosure: The top and the bottom. Download the .stl files on thingiverse http://www.thingiverse.com/thing:752746. If you do not have access to a 3D printer, you can pay a company like Shapeways to do it for you. If you would like to customize the case to suit your needs, download the Solidworks files from my Github page.

I myself paid a company to do the 3D printing for me because I do not have the funds to buy one myself. If you would like more 3D printed projects from me, please vote for the tyfone in the 3D Printing contest. Thank you!

Step 3: Wire the Power Circuit

Now lets start wiring everything together. In the Fritzing diagram, there is a Raspberry Pi. Instead of connecting to the Raspberry Pi, connect your wires to the 26 pin male header on the PiTFT. Now that we have that out of the way, lets start making connections.

  1. Connect «bat» on the Adafruit FONA to «bat» on the Power Boost.
  2. Solder a wire from GND on the FONA to GND on the Power Boost.
  3. Solder a wire from GND on the power boost to one terminal on a slide switch.
  4. Also connect the GND pin on the power boost to a ground pin on the PiTFT (Same Pinout as the first 26 pins on a Raspberry Pi, notice the arrow and «1» indicating pin 1, which is 3v3)
  5. Connect the 5V line on the Power Boost to a 5v pin on your PiTFT.
  6. Solder a wire from the middle terminal of your slide switch to the «EN» pin (Enable) on the Power Boost.
  7. Solder a wire from the «KEY» pin on the FONA to Pin 40 (GPIO 21) on the Raspberry Pi. (Changed on commit acd5c08)
  8. Place the PiTFT over your Raspberry Pi A+
  9. Double check your connections

WHILE TESTING, MAKE SURE YOU DO NOT PLUG IN A 5V MICRO USB. THE PI IS ALREADY BEING POWERED BY THE LITHIUM ION BATTERY

If you slide the slide switch the LEDs on the Power Boost should illuminate and the Raspberry Pi should power up. The PiTFT backlight should also turn on. If you have a PiTFT image on your Pi’s SD card the screen should also boot up. Otherwise, it will just stay solid white, which is just fine for now. Most likely, no LEDs will illuminate on the FONA. To turn on the FONA, hold in the Key button on the device for two seconds or pull GPIO 18 on the Raspberry Pi high for two seconds. If you can power the Pi, TFT, and FONA from the battery and turn it all off from a switch, you are ready for the next step.

Step 4: Finish Wiring

Now that power connection are done, we can continue on to wiring up the UART to the Raspberry Pi, the speakers, and the microphone. Lets get started.

  1. Solder the 8 ohm speaker to «spk +» and «spk -» on the FONA. The polarity doesn’t matter.
  2. Solder the red wire on the electret microphone to the Mic + pin on the FONA.
  3. Solder the black wire on the electret microphone to the Mic — pin on the FONA.
  4. Connect the «RI» (Ring indicator) pin on the Adafruit FONA to pin 7 (GPIO 4) on the PiTFT.
  5. Connect TX on the FONA to pin 10 (RX) on the PiTFT.
  6. Solder RX on the FONA to pin 8 (TX) on the PiTFT.
  7. Solder Vio on the FONA to bat, also on the FONA. If you want, you could also use a 3v3 line on the Raspberry Pi.
  8. Snap the uFL antenna onto the uFL connector on the FONA.
  9. Double check your connections.

If you power everything on now, it should behave the same as it did in the last step. In the next step, we will be setting up the FONA by adding a SIM card making it capable of communicating over a cellular network.

Step 5: Add SIM Card

Now that the wiring is complete, we can add a SIM card to make it possible for the FONA to communicate over a cellular network. The FONA uses 2G data networks, like T-Mobile. The FONA does not work with 3G or 4G networks. AT&T is planning to shut down their 2G network in 2016, so we will be using a T-Mobile SIM card activation kit. The FONA uses a standard SIM card, so a Micro or Nano SIM cards will not fit. Once you have a card, activate it by following the steps at t-mobile.com/activate. When you are done, insert the card into your FONA and power everything on. If the red LED on the FONA is blinking every 3 seconds, your FONA is connected to a cellular network! In the next step, we will setup the software to get your Raspberry Pi communicating with the FONA.

More info on T-Mobile’s networks can be found here

If you are not in an area with T-Mobile coverage, any network with 2G GSM service will work just as well.

Step 6: Setup SD Card

Now that you have all the hardware wired up, we can setup the Raspberry Pi to communicate with it. Start by flashing the latest version of the PiTFT OS onto a micro SD card for your Raspberry Pi. You will want to use the latest PiTFT image, which can be downloaded here. Install the image to the SD card by following these instructions. Once your SD card is prepared, insert it into your Pi and power it on. You should get the raspi-config utility on your PiTFT. It may be small but it will do for now. There are a few things you must set up it raspi-config:

  1. Expand filesystem is a must.
  2. Enable Camera
  3. Disable serial port. This is so the Raspberry Pi can communicate with the FONA
  4. Enable SSH. This is essential because the A+ only has one USB port.

End setup and reboot your Pi.

By typing startx the Raspberry Pi will enter LXDE on the PiTFT. To enter LXDE over the HDMI port type

FRAMEBUFFER=/dev/fb0 startx

Step 7: Setup WiFi and Clear Desktop

Your phone will not have a keyboard, so in order to access a command line you will have to setup WiFi and use ssh. In the desktop, put in your network information using Wifi Config. Shutdown the Raspberry Pi and insert a Wifi dongle. If you are still unable to connect via ssh, try using a USB hub to get going. More info on setting up WiFi can be found here. Once you are connected over SSH, you can clear the Desktop icons and remove the taskbar to make your phone look more professional. The steps below are not necessary and may not work in later versions of Raspbian.

1. Change to the desktop directory with the command

cd Desktop

2. Remove all app icons with the command:

sudo rm * 

3. Go back with

cd  /home/pi

4. Open the lxsession file with the command:

sudo nano /etc/xdg/lxsession/LXDE/autostart

5. Comment out the line «@lxpanel —profile LXDE»

6. Save and exit the file.

Step 8: Finish Software Installation

Test FONA

To test out your FONA, install minicom with the command:

sudo apt-get install minicom

Then run:

sudo minicom -D /dev/ttyAMA0 -b 9600

You should get a serial terminal. If you type

AT

you should get «OK» back. If you don’t, check your connections. If you do, the FONA is ready for operation.

Rotate Screen

You may have noticed the text on the PiTFT is sideways and not in the orientation for a phone. Lets change that with the command:

sudo nano /etc/modprobe.d/adafruit.conf

In the file, change the «rotate» parameter to 180.

Finally, to get the Pi to automatically boot to LXDE on the PiTFT, follow this step in the adafruit guide:

https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/extras#boot-to-x-windows-on-pitft

Calibrate Touchscreen

Start X and see if the touchscreen is working properly. If the mouse is not in the correct spot when you tap, you will need to calibrate the touchscreen. Run this command to do so:

sudo adafruit-pitft-touch-cal

The script will calibrate the touchscreen to work with the new orientation.

Install Camera Software

Now lets install the software used to take pictures with the Raspberry Pi camera. First type:

sudo apt-get install python-pip

Install picamera with:

sudo pip install picamera

Step 9: Install TYOS

TYOS is the mobile operating system (Technically, a modified version of Raspbian is the OS, and TYOS is just a GUI overlay) used to give your phone the capability to send and receive SMS messages, and make calls. To download TYOS run the command:

wget https://github.com/spadgenske/tyos/archive/0.5.6.zip

Extract the zip file with the command:

unzip 0.5.6

Finally rename it with:

mv TYOS-0.5.6 tyos

To start up TYOS, run the command:

sudo python /home/pi/tyos/src/main.py 

In TYOS, make a call and send a text message to make sure everything works. Once everything is working perfectly, we can set up TYOS to start on boot so no ssh is required.

Type sudo nano /etc/rc.local to get into the configuration file. At the bottom, right before the «exit 0» line, add a line saying the following:

sudo python /home/pi/tyos/src/main.py --power

The —power tag turns on the FONA. Without it TYOS assumes the FONA is on.

Change the background with the command:

sudo mv tyos/graphics/desktop-background.png /etc/alternatives/desktop-background

Make sure you do not include .png at the end of the line.

Now reboot your Pi. TYOS should startup on boot!

UPDATE 5/23/16: TYOS 0.5.6

Step 10: Putting Everything Together

Now we can secure everything into the case completing the smartphone.

  1. Using some hot glue, glue the speaker and the microphone it the their slots.
  2. Using the M2 screws, screw in the Raspberry Pi camera. Route the ribbon cable so it is out of the way of any other electronics.
  3. Using M2.5 screws, screw the Raspberry Pi A+ with SD card and USB Wifi down into the case.
  4. Connect the Pi camera ribbon cable to the Pi with the blue facing the camera.
  5. Also using M2.5 screws, screw the FONA SIM card up into the case.
  6. Organise the wiring making sure it does not interfere with any of the other electronics.
  7. Wrap the Power Boost in electrical tape to prevent a short.
  8. Sandwich the Power Boost and battery between the Raspberry Pi and PiTFT.
  9. Hot glue the slide switch into the switch slot on the top part of the case.
  10. Using 4-40 screws, screw the top and bottom halves of the case together.
  11. Test everything out.

Congratulations! You have just built your own smartphone! If you don’t like the phone to be called «tytelli» just change the logo in /home/pi/tyos/graphics/logo.png to whatever you wish.

1 Person Made This Project!

Recommendations

Отвечая на вопрос в заголовке, сразу скажу, что самостоятельно собрать смартфон – задача не из легких, а чтобы найти для него нужные комплектующие, вам, скорее всего, придётся отправиться в Китай. Автор видео, о котором сегодня пойдет речь, решил своими силами, будучи гостем Поднебесной, собрать себе Android-смартфон. Благо, подобный опыт у него уже имеется, так как два года назад Скотти с канала Strange Parts на YouTube также собственными силами собрал iPhone.

Сложно ли собрать Android-смартфон самостоятельно? Фото.

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

Какой Android-смартфон собирать?

Сложно ли собрать Android-смартфон самостоятельно? Какой Android-смартфон собирать? Фото.

Изначально Скотти хотел собрать Galaxy S10, но, как вскоре выяснилось, найти комплектующие для этого смартфона не представляется возможным, так как вышел он относительно недавно. Но была еще одна загвоздка, и заключалась она в том, что смартфоны южнокорейского гиганта Samsung собираются во Вьетнаме. Именно по этой причине два года назад блогеру довольно просто было отыскать комплектующие для iPhone, ведь «яблочные телефоны» собираются, как известно, в Китае.

Главный рынок Земли

Сложно ли собрать Android-смартфон самостоятельно? Главный рынок Земли. Фото.

Однако Китай не просто так называют главным рынком нашей планеты. Все детали от Galaxy S10 найти не удалость, но зато из-под полы можно было в нескончаемом количестве достать детали для S9 и S8, поэтому Скотти выбрал для своего эксперимента S9+.

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

Напоследок ещё одна интересная деталь: Скотти в видео отметил, что более половины деталей, продаваемых на огромном подпольном рынке Шэньчжэня, предназначены для Apple, а остальные — для всех Android-смартфонов вместе взятых.

Делитесь своим мнением в комментариях под этим материалом и в нашем Telegram-чате.

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