The Jerusalem PostSwiss voters reject tighter neutrality rules that would have curbed NATO cooperationESPN DeportesGil Mora cumple el deseo de Javier Aguirre en debut de Rafa MárquezESPNCoughlin first in LPGA history to open round with 9 straight birdiesInquirerTyphoon Queenie exits PARPunchPolice arrest two over kidnapping of 38-year-old man in OyoRTP DesportoPiloto italiano Nicolò Bulega conquista título mundial de SuperbikesDaily MaverickOWN GOAL: Manchester City’s future in the air after reports of Premier League guilty verdictColliderGuy Ritchie's Fantasy Epic That Bombed at the Box Office Officially Finds Retribution on Free StreamingSRF NewsAbstimmung Kanton Graubünden – Nein zum Stimmrechtsalter 16: «Eine verpasste Chance» für Junge20 MinutenVerletzte sich Mbappé wegen On-Schuhen? Widerspruch grossThe Hollywood ReporterAnna Kendrick Is “Over the Moon” About Directing ‘The Seven Husbands of Evelyn Hugo’Observador DesportoAbusos sexuais na Igreja. Associações acompanham Papa
The Daily Newsstand · Free, Always
Sunday, September 27, 2026

Мобильник почти из ничего: Как ИИ помог собрать телефон из деталей с маркетплейсов

Translate

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

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

Замечу, что я использовал только бесплатные DeepSeek, Gemini и ChatGPT в бесплатном ограниченном режиме. Какой-то особой системы когда кому и какие задавать вопросы не было. Обычно переключался между ними, когда кто-то начинал тупить.

А заставку к этой статье я впервые попробовал сгенерировать с помощью нейросети Artlist.

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

Радиомодуль проще купить готовый. Я выбрал такой:

SIM800C

SIM800C

Сам радиомодуль SIM800C – это зеленая плата под экранирующим кожухом. На картинке реализация HW-537. Радиомодуль уже припаян к плате с переходными контактами и согласующими элементами.

В целом, здесь есть все, что нужно для подключения к сети и для «говорения». Но здесь нет ничего для управления этим модулем.

Модуль управляется AT-командами через порт UART. Через него же он отвечает на запросы схемы управления. Контакты RXD/TXD   видно в верхнем ряду. Сим-карта вставляется с другой стороны модуля, на картинке не видно.

Логично, что в проект нужно добавить какой-то микроконтролер. Я сразу решил на этот раз использовать что-нибудь из семейства STM32 и просто спросил у Gemini, какой вариант лучше. Он предложил STM32L051C8T6.

STM32L051

STM32L051

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

А еще телефону нужен какой-то экранчик для понятных целей. Тут я не стал ничего особенного придумывать. Взял привычный OLED SSD1306 с разрешением 128х32:

Экран

Экран

Картинка из Интернета, но в тему. Видимо я не первый придумал такое.

Дальше питание. Для целей первого этапа я решил использовать просто USB-разъем, в который подать 5 вольт и запитать радиомодуль и стабилизатор 1117 для получения 3.3 вольт для STM32.

Начал с того, что задал DeepSeek’у простой вопрос «Расскажи как подключить SIM800 HW537 to STM32L051». В ответ получил таблицу соединений пинов двух модулей. Потом спросил: «В конструкции есть небольшой ЖК экран,  подключенный по I2C. Надо вывести на него приветствие при включении и результат инициализации GSM. Экран 128х32.»  На это тоже получил табличку с соединениями.

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

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

Все три ИИ убеждали меня, что проблема скорее всего в питании. Не секрет, и это много где написано, что у SIM800C (и аналогичных) случаются пиковые потребления тока до 2 Ампер в моменты общения с базовой станцией. Я надеялся, что конденсаторы по питанию справятся с этим, но они не справились. Пришлось срочно добавлять в схему литиевый аккумулятор, который может обеспечивать такие импульсы тока.

Аккумулятор 75 мАч взял от игрушки из Фикспрайса – летающий шарик типа вертолетика. Зарядил его прямо в шарике и уже заряженный припаял к своей схеме. Просто для тестирования.

Теперь все нормально завелось. На этом этапе мой телефон был таким:

Начало

Начало

Немного поясню. Сверху трехпиновый разъем для прошивки STM32. В центре кнопка для отключения аккумулятора.

GSM-антенна - это на сама деле антенна от Wi-Fi, но они по сути одинаковые. Потом приехала настоящая антенна, но разницы между ними нет.

При включении на экране последовательно появляются сообщения

Пришло время делать клавиатуру.

Сначала я хотел использовать готовую клавиатуру Но подходящей не нашлось. Пришлось заказывать тактовые кнопки и делать клавиатуру «как обычно».

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

Получилось вот так:

Новая схема питания

Новая схема питания

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

 Здесь уже припаян динамик, и устройство может принимать входящие звонки:

В динамике при этом играет одна из встроенных мелодий (их там 19). Но играет не особенно громко.

Входящий звонок

Входящий звонок

Приехали кнопки, и теперь телефон в смысле конструкции деталей приобрел законченный вид:

Все собрано

Все собрано

В таком виде это полностью рабочее устройство. Можно принимать звонки и делать исходящие. Я только потом добавил еще два конденсатора по питанию в сумме на 2000 мкФ.

DeepSeek  предложил недостающий код, чтобы все работало. Но код чтения клавиатуры я написал сам. DeepSeek только подключил его к основному циклу программы.

Рефакторинг кода STM32

Рефакторинг кода STM32

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

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

Красивый уровень сигнала

Красивый уровень сигнала

Потом я еще попросил сделать красивый уровень сигнала:

Время на экране

Время на экране

А дальше я захотел еще и время на экране:

Ко всем этим ответам ChatGPT дал код реализации.

На этом решил остановиться.

Функционал довольно примитивный. Только ответить на звонок или набрать номер. Никакой памяти звонков или чего-то еще из элементарных удобств. Но все эти бантики – это просто развитие кода в STM32. Этим можно заниматься очень долго по настроению. Поэтому я решил закончить с «материальным миром». Сделать корпус и поставить нормальный аккумулятор.

В этих зарядных модулях есть крошечный SMD резистор, который надо менять в соответствии с оптимальным зарядным током аккумулятора. Но я не занимался расчетом, просто спросил у Gemini, тот посоветовал 18 кОм для 320 мАч. Зарядный ток получился примерно 180 мА.

Проект корпуса

Проект корпуса

Корпус нарисовал в OpenSCAD с помощью Gemini.

Вот такое было начало диалога:

В отличии от DeepSeek, если модель получается с ошибками, здесь можно просто сделать скриншот и показать его Gemini. Он довольно адекватно может понять проблему и исправить ее. DeepSeek’у приходится словами объяснять, что не так. Часто это не дает результата. Впрочем, пару раз Gemini тоже начинал тупить и тогда приходилось самому разбираться в проблеме, исправлять код и показывать Gemini как надо сделать.

Корпус

Корпус

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

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

В корпусе

В корпусе

Кнопки пока без надписей, но видно, что экран стал интереснее.

Кнопки

Кнопки

Кнопки сначала сделал как простые колпачки. Попросил DeepSeek:

Колпачки кнопок

Колпачки кнопок

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

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

Задняя крышка

Задняя крышка

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

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

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

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

СМСки.

Хотя выше я писал, что решил сильно не прокачивать функциональность, но поразмыслив, решил, что СМС будут не лишними.

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

Далее были как обычно вопросы к ИИ, но ни один не смог предложить рабочий код. Я даже не был уверен, что СМС вообще ходят на эту сим-карту. Пришлось разбираться и писать код самому. Там слишком запутанная последовательность обмена командами и ответами в UART'е. В итоге ни один бюджетный ИИ ее не одолел так, чтобы не сломать то, что уже работало.

СМСки появились. Чтобы прочитать пришедшую СМС надо «позвонить на 0». Т.е. нажать 0 и вызов. Тогда телефон показывает последнюю СМС. Если есть новая СМС, то на экране будет символ «конвертик». Если закрыть СМС крестиком, то конвертик исчезнет, если любой другой кнопкой, то конвертик останется.

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

Здесь ChatGPT совместно с DeepSeek написали необходимы функции и шрифты. СМСки стало можно читать на русском.

СМС

СМС

Видно сколько было тестовых попыток. Хоть где-то пригодились СМС из моего пакета в тарифе оператора.

Ну и окончательный вариант:

Фас

Фас

Сбоку выглядывает кабель для прошивки.

Звук получился очень достойным. Слышно громко и чисто в обе стороны. Твердая четверка, я бы так оценил. Если кто-то доберется до чего-то подобного с паяльником, то обязательно ставьте SMD-резистор 0.1 мкФ прямо между контактными площадками микрофона. Иначе радиомодуль уничтожит весь звук своими помехами.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.