Это руководство описывает от начала до конца конструирование своего собственного смартфона. Начинается дело с печати на 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 на любое, какое пожелаете.
Что твой телефон знает о тебе? Насколько надежно он хранит информацию и кто имеет к ней доступ? К счастью, изготовить и запрограммировать собственный мобильный телефон теперь можно буквально за несколько дней. Что я и сделал, а теперь и тебе покажу, что для этого нужно.
Содержание
- Как создать свой мобильный телефон
- Блок-схема компонентов
- Настраиваем UART
- Работа с экраном
- Клавиатура
- Модуль GSM
- Телефонная книга
- Работа с графикой
- Энергосбережение
- Интерфейс
- Идеи и развитие проекта
Как создать свой мобильный телефон
Все началось с того, что некоторое время назад я собирал для себя телефон на модуле связи 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, экраны с высоким разрешением и даже цифровые камеры. Кажется, так можно увлечься и собрать полноценный смартфон!
(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 тысяч рублей.
Не меняйте размер предусмотренной для передачи данных, антенны, без понимания физики процесса. Ее длина напрямую связана с частотами передачи и приема сигнала. При спонтанном изменении размеров антенны, увеличивается коэффициент стоячей волны (КСВ) и ухудшаются приемо-передающие качества. Больше не значит лучше.
В итоге у вас есть три варианта:
- Купить одну готовую плату, в которую уже встроены все модули, экран, клавиатура.
- Купить частично готовую плату, на которую нужно допаивать экран, клавиатуру и не только.
- Купить голый микроконтроллер и все нужные элементы отдельно, а затем спаять в единый блок.
Какой вариант выбрать, решайте сами, исходя из количества свободного времени, денег, мастерства и желания. Чем меньше действий от вас требует выбранное решение, тем дороже оно будет стоить. Дешевле всего – купить готовый смартфон в магазине.
Если денег не хватает, а паять вы умеете, попробуйте отпаять нужные детали от своих старых смартфонов. Это не только сэкономит бюджет, но и время на ожидание посылок с комплектующими.
Как спаять электронику
Для пайки понадобится стандартный набор инструментов – сам паяльник, припой, щипцы. При работе, обращайте внимание на 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 | Большие трудозатраты для сборки и прошивки устройства. |
Крепкий деревянный корпус |
Создание уникального телефона не обойдется дешевле покупки нового смартфона в офисе продаж. Вы сможете сделать простой, крепкий аппарат, с ограниченным вами набором функций, который не взломают злоумышленники, потому что взламывать нечего. Творите и следуйте рекомендациям техники безопасности при пайке.
2 декабря 2020
Что получится, если собрать идеальный смартфон (пособие для начинающих)
Тяга человека к совершенству неискоренима. Возможно, именно она заставляет людей писать под обзорами смартфонов комментарии вроде: «Эх, сюда бы еще слот для SD-карт и NFC» или «4 ГБ ОЗУ в 2020 году, вы серьезно?». Действительно, заманчивая возможность – объединить все лучшие особенности смартфонов в одном аппарате, и тогда уже можно не сомневаться в покупке. И не спешите обвинять избалованных техническим прогрессом современных пользователей, подобные стремления существовали всегда. Как пример можно привести слова невесты из пьесы Гоголя «Женитьба»: «Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича… я бы тогда тотчас же решилась [выйти замуж]».
В свое время ответом на этот пользовательский запрос должны были стать модульные смартфоны. Наибольшую известность получила инициатива Motorola и Google под кодовым названием Project Ara, но были и другие стартапы, строящиеся на идее модульности.
Пользователям самим предлагалось собирать смартфон из специальных модулей, которые вставлялись в соответствующие слоты. Таким образом, выбирая требуемые комплектующие, можно было собрать устройство под свое видение прекрасного. К сожалению, идея не взлетела и громких анонсов в этой сфере не случилось.
Тем не менее, давайте попробуем представить, как бы мог выглядеть идеальный смартфон. Есть надежда, что кто-то из производителей обратит внимание на интерес к данной теме и, возможно, со временем мы получим серийное устройство, в котором не к чему будет придраться. Заодно поможем новичкам разобраться в основных принципах комплектации современных смартфонов.
Дисплей и общие габариты
Перефразируя известное выражение, можно сказать, что смартфон начинается с дисплея. Именно от его размера и качества будет зависеть восприятие целого устройства. И тут предстоит сделать самый сложный выбор среди всех комплектующих. С одной стороны, большой дисплей дает множество преимуществ: удобно просматривать контент в интернете, набирать сообщения на экранной клавиатуре, смотреть фильмы и сериалы. На крупном дисплее банально помещается больше информации одновременно, что становится все более актуальным в эпоху многозадачности и поддержки современными мобильными ОС отображения нескольких окон. Недостатки такого решения очевидны: большие габариты и вес. К тому же, судя по тем же комментариям, существует достаточно большое количество людей, которые мечтают о компактном современном смартфоне.
Как бы там ни было, реалии таковы, что индустрия движется в сторону увеличения диагонали дисплея.
Так, еще недавно большими считались смартфоны с 6-дюймовыми экранами, теперь флагманские модели популярных производителей приближаются к отметке 7 дюймов. Например, Samsung Galaxy S20 Ultra получил 6,9-дюймовый экран, а iPhone 12 Pro Max – 6,7-дюймовый. Даже смартфоны среднего сегмента прибавляют в размерах, достаточно взглянуть хотя бы на Motorola G9 Plus и ZTE Blade V2020 Smart, экраны которых имеют диагональ 6,81 и 6,82 дюйма соответственно.
Итак, с размерами дисплея в смартфоне мечты мы определились, она должна быть не менее 6,7 дюйма (разрешение 1440 x 3200 Quad HD+). При этом общие габариты хотелось бы на уровне 158×77,8×8,1 мм и вес около 220 г (да-да, как у Apple iPhone 12 Pro Max).
Перейдем к качеству. Для начала сразу оговоримся, что на рынке существуют две принципиально разные технологии построения экранных матриц – OLED и IPS. Вдаваться в подробности их конструкций не будем, сосредоточимся на плюсах и минусах данных технологий. OLED экраны обладают повышенной контрастностью, быстрым откликом, лучшей энергоэффективностью, позволяют устанавливать подэкранные селфи-камеры и датчики отпечатков пальцев. Также на основе OLED панелей можно создавать гибкие и полностью безрамочные дисплеи, так как здесь не требуется наличия сторонней подсветки пикселей. Именно такие экраны используются во всех современных флагманах.
Минусов здесь тоже хватает. Некоторые пользователи жалуются на усталость от невидимого мерцания OLED дисплеев (так называемая ШИМ-модуляция, используемая для регулировки яркости), некоторым не нравятся перенасыщенные, по их мнению, цвета, кто-то боится выгорания экрана. Выгоранием называют потерю работоспособности некоторых пикселей после длительного свечения, вследствие чего небольшие области на экране уже не могут изменять свой цвет. Справедливости ради надо сказать, что со всеми этими недостатками производители научились бороться. Мерцание устраняется включением функции DC Dimming, она есть практически на всех смартфонах китайских производителей, но отсутствует у Samsung, так как при ее активации страдает цветопередача. Насыщенность цвета можно менять в настройках гаммы, а выгорание предотвращают программные и аппаратные уловки разработчиков.
IPS является противоположностью OLED: не мерцает (у хороших производителей), не выгорает, но потребляет больше энергии, требует подсветки (а значит, всеми ненавидимых рамок) и в среднем демонстрирует более низкие показатели контрастности. Данные типы экранов постепенно уступают место конкуренту, но все еще встречаются во всех сегментах. Например, IPS матрицей комплектуются популярные модели Xiaomi Redmi Note 8 и 9, Apple iPhone 11 и iPhone SE (2020) (но топовая версия iPhone 11 Pro Max комплектуется уже OLED дисплеем), а также прошлогодний флагманский смартфон ASUS ZenFone 6.
Сделать выбор в пользу какой-либо технологии невероятно трудно (может быть, потому, что автор данного материала сам страдает чувствительностью к ШИМ), поэтому примем, что у идеального смартфона может быть сразу две версии: с OLED и IPS дисплеями.
Осталось добавить, что в последнее время получили популярность экраны с повышенной частотой обновления изображения. Стандартные дисплеи могут обновляться с частотой 60 Гц (то есть 60 раз в секунду), продвинутые варианты – с частотой 90, 120 и 144 Гц. Компания Sharp даже анонсировала смартфон Aquos Zero 2, дисплей которого поддерживает 240 Гц.
Чем выше данный показатель, тем более плавно происходит смена изображения на экране, особенно это может быть заметно при быстром скроллинге или в динамичных играх (правда, тогда и «железо» смартфона должно справляться с отрисовкой повышенной частоты кадров). Мы мелочиться не будем, думаю, 240 Гц – это то, что нужно для смартфона мечты.
Чипсет и производительность
Не менее важной составляющей смартфона является его процессор, обеспечивающий вычислительную производительность. При недостаточной мощности ЦП и графического ускорителя можно забыть о плавной работе устройства, многозадачности и играх. При выборе процессора для идеального смартфона будем ориентироваться на существующие на рынке флагманские решения.
Общие тенденции таковы, что на рынке чипсетов для флагманских смартфонов доминирует американская компания Qualcomm. Топовые устройства большинства производителей работают на базе мобильной платформы Snapdragon 8-й серии, в частности, Snapdragon 865.
Из этого правила есть три исключения: Samsung, Apple и Huawei. Samsung можно причислить к этому списку с натяжкой, так как компания использует чипсеты Snapdragon наравне с собственным решением Exynos в зависимости от региона продаж. Сам же Exynos постоянно подвергается нападкам критиков из-за недостаточной, по их мнению, производительности и низкой энергоэффективности. Huawei продвигает свою линейку процессоров под общим названием Hisilicon Kirin с флагманом Kirin 9000, а топовым решением от Apple на сегодня является чип Apple A14 Bionic.
Все три чипа достаточно мощные, Kirin 9000 и A14 производятся по 5 нм техпроцессу, Snapdragon 865 – по 7 нм. При этом Kirin 9000 и Snapdragon 865 имеют восемь ядер с максимальной тактовой частотой 3.13 и 2,84 ГГц соответственно, а A14 – шесть ядер и 2,99 ГГц на пике. Графические ускорители чипсетов – Adreno 650 из состава Snapdragon 865, Mali-G78 MP24 у Kirin 9000 и Apple GPU у A14 – находятся примерно на одном уровне производительности, и он достаточно высок для любых задач.
Ориентируясь на вышесказанное, примем, что идеальный смартфон должен иметь 5 нм восьмиядерный процессор с максимальной тактовой частотой около 3 ГГц и графический ускоритель, способный тянуть любые приложения, в том числе игровые, с высокой частотой кадров (в идеале 240 кадров в секунду). При этом он должен быть достаточно энергоэффективным, чтобы не допускать быстрого разряда аккумулятора, и холодным, чтобы избегать нагрева и связанного с этим падения производительности из-за троттлинга.
Кроме производительности, чипсет отвечает еще за множество сопутствующих функций и связь. Поэтому обязательным требованием к нему будет поддержка высокого разрешения экрана и его частоты обновления, запись 8K видео и работа со всевозможными навигационными системами и кодеками. С точки зрения связи чипсет должен поддерживать 5G и 4G всех стандартов и бэндов, LTE, скоростной Wi-Fi 6 и Bluetooth 5.2.
Камера
Первые мобильные телефоны обходились вообще без камеры, но со временем, еще при доминировании кнопочных устройств, разработчики стали устанавливать в них фотообъективы. Качество снимков с этих камер было предельно низким, тем не менее, тренд был задан, и сейчас фотовозможности – чуть ли не ключевой параметр, на который пользователи обращают внимание при покупке смартфона. По сравнению с родоначальниками мобильной фотографии современные смартфоны демонстрируют запредельное качество съемки. Сейчас доступны высокие показатели светочувствительности матриц и разрешения снимков (64 и даже 108 МП), оптический зум (вплоть до x5), электронная и оптическая (OIS) стабилизация, улучшение снимков с помощью ИИ и многое другое.
Кроме того, постепенно стали стандартом модули основной камеры на 3-4 объектива. Как правило, основную камеру дополняют широкоугольный, телефото- или макрообъектив.
Также интересно выглядит относительно новая технология определения глубины снимка с помощью лазерного сенсора LiDAR, который установлен в iPhone 12 Pro и 12 Pro Max. С его помощью улучшается работа автофокуса, повышается качество портретных снимков даже при плохом свете, кроме того, LiDAR будет незаменим при работе с дополненной реальностью, а также в специализированных приложениях. Например, воспользовавшись LiDAR, можно сделать трехмерную модель помещения, просто отсканировав его со смартфона. При выборе камеры для идеального смартфона будем ориентироваться на все вышеуказанные особенности.
Фронтальные камеры также постепенно подтягиваются к основным по качеству и возможностям. Если раньше они располагались на рамках корпуса или в вырезах в дисплеях, то теперь производители все чаще стараются их скрывать. Делают они это тремя способами: устанавливают всплывающий модуль (используется в смартфонах Xiaomi Mi 9T, OnePlus 7 Pro, Honor 9X и других), поворотный модуль с основной камерой (ASUS ZenFone 6 и 7) или подэкранную камеру (ZTE Axon 20 5G). Несмотря на то, что технология подэкранной камеры еще сыровата, именно ее доработанный вариант хотелось бы включить в финальную спецификацию (для смартфона с OLED дисплеем). Для версии устройства с IPS матрицей будет предпочтительна всплывающая камера.
Память
На первый взгляд, с памятью ситуация простая – чем больше, тем лучше. В топовых версиях современных флагманов, например, в Samsung Galaxy S20 Ultra, устанавливается 16 ГБ оперативной памяти и файловый накопитель на 512 ГБ. Иногда производители второго эшелона хотят выделиться и могут поставить накопитель на 1 ТБ. Именно такое количество памяти установлено в смартфоне Smartisan R1. На это исключение из правил и будем ориентироваться. Стоит отметить, что в погоне за количеством производители могут пойти на ухудшение качественных характеристик. Часто экономить пытаются на скорости чтения и записи информации в ячейки памяти. К счастью, в индустрии есть стандарты для ориентира: LPDDR5 для ОЗУ и UFS 3.1 для постоянной памяти. Имея модули памяти этих стандартов, можно быть уверенным, что у нас быстрые и качественные решения.
Аккумулятор
Еще несколько лет назад типовая емкость аккумуляторов в смартфонах составляла 2500 — 3500 мАч, потом (во многом благодаря китайским брендам) нормой стало значение на уровне 4000 — 4500 мАч. Сейчас даже в среднем сегменте много моделей с емкостью батареи 5000 мАч и выше: Xiaomi Redmi Note 9, Poco X3, Samsung Galaxy M30s и M31 и другие. Как всегда, оригинальнее всех поступают B-бренды. У Doogee, Oukitel, Ulefone есть множество моделей с батареей на 10 000 мАч, но толщина и вес таких устройств оставляют желать лучшего. Также «китайцы» могут хитрить с указываемой емкостью, и ее реальное значение может отличаться от «типовой номинальной» на 20% (то есть номинальные 10 000 мАч по факту являются 8000 мАч). Будем надеяться, в скором времени технологии позволят «упаковать» 10 000 мАч в относительно компактные батареи и мы сможем получить идеальный смартфон с автономностью 3-4 дня. Кроме того, 10 000 – просто красивое число, а в устройстве мечты все должно быть прекрасно.
Оснащение и особенности
Финальная спецификация почти готова, осталось пройтись по общему оснащению и дополнительным функциям. Необходимым считаю наличие тройного слота на две SIM-карты и карту памяти, модуля NFC (судя по комментариям, это первое, на что обращают внимание при выборе смартфона), разъема 3,5 мм для проводных наушников, ИК-порта для управления бытовой техникой, поддержку быстрой зарядки мощностью 100 Вт, беспроводной зарядки и FM-радио (куда же без него в 2020 году!). Также будет полезным наличие защиты от воды и пыли на уровне IP68. Хотя этот параметр может конфликтовать с установкой разъема 3,5 мм, но что стоит разработчикам идеального устройства предусмотреть какой-нибудь клапан или простую заглушку. Думаю, даже не стоит упоминать о всевозможных датчиках приближения и освещенности, гироскопе, акселерометре, функции разблокировки по лицу. Их наличие уже обязательно в любом флагмане. Для придания большей прочности устройству рамка может быть выполнена из нержавеющей стали, тыльная панель – из какой-нибудь крепкой керамики.
Итак, подведем итоги. Технические характеристики идеального смартфона могут выглядеть так:
Дисплей | 6,7 дюйма, Dynamic AMOLED 2X или IPS, разрешение 1440 x 3200 (Quad HD+), частота обновления 240 Гц, HDR10+, цвет 10 bit, защитное стекло Corning Gorilla Glass 6 |
Чипсет | техпроцесс 5 нм, восемь ядер, максимальная тактовая частота 3 ГГц, графический ускоритель Adreno 650, запись 8K видео, связь: 5G, 4G, LTE, Wi-Fi 6, Bluetooth 5.2 |
Камера | — Основная: 108 МП, 0.8 μm, f/1.8, OIS — Ультраширокоугольная: 16 МП, OIS — Телефото: 48 МП, OIS, х5 оптический зум — Датчик глубины LiDAR — Фронтальная: 40 МП (f/2.2) |
Память | 16 ГБ ОЗУ (LPDDR5), 1 ТБ накопитель (UFS 3.1), карты памяти до 1 ТБ (отдельный слот) |
Аккумулятор | 10 000 мАч, поддержка быстрой зарядки мощностью 100 Вт и беспроводной зарядки |
Особенности | две SIM-карты, NFC, разъем 3,5 мм, ИК-порт, FM-радио, степень защиты IP68, корпус из нержавеющей стали и керамики. |
Размеры и вес | 158×77,8×8,1 мм, 220 г |
Свое мнение постарался изложить максимально простым языком, поэтому некоторые технические нюансы не были упомянуты намеренно. Возможно, в статье было что-то упущено, просим в комментариях добавить, что еще необходимо идеальному смартфону.
Отвечая на вопрос в заголовке, сразу скажу, что самостоятельно собрать смартфон – задача не из легких, а чтобы найти для него нужные комплектующие, вам, скорее всего, придётся отправиться в Китай. Автор видео, о котором сегодня пойдет речь, решил своими силами, будучи гостем Поднебесной, собрать себе Android-смартфон. Благо, подобный опыт у него уже имеется, так как два года назад Скотти с канала Strange Parts на YouTube также собственными силами собрал iPhone.
Китай – страна, безусловно, продвинутая, но подноготная ее просто-таки кишит самодельными прилавками, с горкой наполненными комплектующими для практически любой техники. Сборка iPhone два года назад далась Скотти с трудом, но тогда, как предполагал сам блогер, он научился на своих ошибках (да и подучил как следует китайский), а значит, собрать ещё один смартфон будет сильно проще. Но как бы не так. Это же Android-смартфон, а значит первая проблема, с которой предстояло столкнуться сборщику-энтузиасту, – слишком богатый выбор устройств.
Какой Android-смартфон собирать?
Изначально Скотти хотел собрать Galaxy S10, но, как вскоре выяснилось, найти комплектующие для этого смартфона не представляется возможным, так как вышел он относительно недавно. Но была еще одна загвоздка, и заключалась она в том, что смартфоны южнокорейского гиганта Samsung собираются во Вьетнаме. Именно по этой причине два года назад блогеру довольно просто было отыскать комплектующие для iPhone, ведь «яблочные телефоны» собираются, как известно, в Китае.
Главный рынок Земли
Однако Китай не просто так называют главным рынком нашей планеты. Все детали от Galaxy S10 найти не удалость, но зато из-под полы можно было в нескончаемом количестве достать детали для S9 и S8, поэтому Скотти выбрал для своего эксперимента S9+.
Весь этот процесс (поиск и покупку комплектующих, а также саму сборку смартфона) стоит посмотреть полностью, так как это интересно, и, возможно, кто-то из вас поймёт, почему любой компании было бы так сложно полностью вывести своё производство из Китая.
Напоследок ещё одна интересная деталь: Скотти в видео отметил, что более половины деталей, продаваемых на огромном подпольном рынке Шэньчжэня, предназначены для Apple, а остальные — для всех Android-смартфонов вместе взятых.
Делитесь своим мнением в комментариях под этим материалом и в нашем Telegram-чате.
Сегодня мы сделаем вполне себе рабочий, хотя и довольно простой в плане функционала, мобильный телефон.
Вот перечень тех функций, которые будет поддерживать наш телефон:
- — Принимать и делать звонки
- — Принимать и отправлять СМС
- — Хранить записную книжку
- — Показывать время
- — Будить в заданное время
Телефон будет работать в 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 (все как на обычном телефоне), для удаления вводимых цифр используй кнопку *.
07 июля 2017
7538
В детстве мы любили изобретать и придумывать, с годами мечтаем всё реже, но некоторые по-прежнему верят в то, что идеальные смартфоны существуют. Так где же его найти? В Apple Store, где стоят новые айфоны или на Aliexpress, где можно урвать недорого новый Xiaomi? А вот и нет, идеальный смартфон можно придумать самому, если предположить, что части разных устройств можно собрать в единое творение!
Лицевая часть — Xiaomi Mi Mix
Шикарный безрамочный смартфон с ультратонкими рамками выглядит пришельцем из будущего, автор сожалеет, что телефон нельзя официально купить в Америке, но мы-то знаем, где заказать такой эффектный смартфон.
Задняя часть от iPhone 7
Сверкающая блестящая поверхность в стиле «Jet Black» хороша: и смотрится красиво, и в руках держать приятно. Ну а царапины можно пережить, всё-таки для себя покупаем, а не для перепродажи через пару лет.
Дисплей от Sony Xperia XZ Premium
Full HD — это хорошо, но 4K-дисплей — лучше, поэтому в телефоне мечты должен стоят экран максимально высокого разрешения. А значит, вытаскиваем его из Sony.
Лучшая камера у Samsung Galaxy S8
Пусть у Galaxy S8 старомодная система из одной линзы, а не из двух, как это сейчас принято, тем не менее, Samsung делает отличные фотографии.
Сканер отпечатков из OnePlus 5
Удобнее всего, когда сканер расположен спереди, он должен работать быстро и без ошибок. Значит, берём его из OnePlus 5, где он работает заметно шустрее, чем даже в топовом Galaxy S8.
Защита от воды от Samsung или LG
Дорогие корейские смартфоны не боятся воды, поэтому, если нужна защита от влаги, смотрим в сторону старших моделей — G6 или S8. Они выдерживают погружение на глубину до 1,5 метров в течение 30 минут. Для iPhone 7 заявлены характеристики чуть хуже — он выдерживает полчаса, но на глубине до 1 метра, но тоже достаточно для подводной съёмки.
Самая современная версия Android с лаунчером Google Pixel
Естественно, смартфон мечты должен работать под управлением Android, поэтому оболочка нужна простая, удобная и без лишнего хлама. Что же, такое можно найти у Google Pixel, где всё сделано по уму и этим приятно пользоваться.
Магазин приложений Apple
А вот с приложениями всё куда интереснее обстоит у Apple, магазин лучше оформлен у Google, но качество софта на iOS лучше. Он более продуманный, чаще появляются новинки и в целом, разработчики приложений больше уделяют внимание iOS, чем Android.
Оперативная память из OnePlus 5
Смартфон за $540 предлагает внушительные 8 ГБ оперативки. Даже не спрашивайте зачем, пусть будет, всегда приятно иметь кучу памяти в запасе. Приложения будут работать быстро и плавно, всегда можно вернуться к ранее запущенной программе и продолжить работу с того самого места, на котором вы её покинули, софт трудится в фоне, не сказываясь на быстродействии. Короче, одни преимущества.
Процессор от iPhone
Пускай iPhone 7 — не самый мощный смартфон на рынке. Что с того, если он по тестам обгоняет даже Qualcomm Snapdragon 835, так что процессор Apple A10 — желанный компонент.
Беспроводная зарядка как в Samsung и LG
Заряжать телефон от провода? Фу, прошлый век, куда удобнее делать это, используя беспроводную зарядку. Положил телефон на подставку и смотри себе, как он заполняется энергией. Да, пусть чуть медленнее, зато никаких проводов по офису или квартире. Если, конечно, придумаете, как аккуратно спрятать кабель от самой беспроводной зарядки.
Быстрая зарядка из OnePlus 5
Хорошо, когда телефон не только мощный, но и с мощной быстрой зарядкой в комплекте. Телефон быстро заряжается, но в то же время не перегревается, корпус остаётся холодным, как удобно и приятно.
Огромный аккумулятор из Lenovo P2
Вообще в оригинальной статье был ASUS ZenFone 3 Max, но от себя я добавлю, что предпочёл бы аккумулятор на 5100 мАч из Lenovo P2. С ним телефон работает 3-4 дня, а то и неделю, смотря как пользоваться. Долой тонкие телефоны, пусть лучше они работают долго!
Ценник как у OnePlus 5
OnePlus 5 за $470 — отличное предложение по соотношению цены и качества на рынке. Что тут ещё добавить?
Источник: Businessinsider