Мне 15 лет, и последние 5 месяцев я собирал автономный радиомессенджер

Началось всё ещё в октябре. Я, как обычно, залипал в тиктоке. Нашел видео, где парень собрал маленькие устройства, которые могут обмениваться сообщениями.

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

Тогда я вспомнил, что через несколько месяцев у нас будет научно-практическая конференция. И решил: почему бы не попробовать сделать что-то подобное самому?

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

Сразу скажу, путь был максимально кривой. Оно и понятно, так-то.

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

В список попали:

- программируемые платы (Arduino Pro Mini, Raspberry Pi Pico на RP2040 и позже RP2350)

- дисплеи TFT 1.77"

- радиомодули HC-12

- тактовые кнопки

- провода (сначала 22AWG, потом 30AWG)

- резисторы

- выпрямители 1N4007

- модуль зарядки TP4056

- аккумуляторы на 1000 мАч

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

Начал я с Arduino Pro Mini. На бумажке всё выглядело отлично: компактная плата, несколько килобайт памяти, процессор 16 мГц, нормальное питание. Для платы размером примерно 5 на 3 см вполне прилично.

Но на практике всё пошло совсем не так.

Первую плату я благополучно убил. Она просто деградировала. Честно говоря, до сих пор не знаю почему. Возможно скачки тока, возможно я где-то неправильно прошил программу.

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

Третья плата начала сильно греться. Работать она ещё могла, но было понятно, что долго это не продлится.

Четвёртая плата вообще отказалась нормально выполнять программу.

В итоге четыре Arduino отправились в мусор. Жаль, да делать нечего.

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

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

Тогда я переключился на платы Raspberry Pico.

Полноценные Raspberry Pi (3-4-5) я сразу отмёл, они слишком дорогие и избыточные для такой задачи. Но семейство RP2XXX выглядело очень интересно.

Процессор 133 МГц, два ядра и несколько мегабайт памяти - для такого маленького устройства это огромный запас.

И именно тут я впервые столкнулся с неожиданной проблемой: отрисовкой интерфейса.

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

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

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

После этого артефакты исчезли, а интерфейс стал работать намного быстрее.

Следующая история - кнопки.

Изначально я хотел повторить колесо ввода из того самого видео. Но найти такой механизм оказалось сложно.

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

Потом я решил переделать всю схему подключения.

Сначала я вывел кнопки на маленькую плату-сопливку, где объединил земли. Но позже сделал более аккуратную разводку. Нашёл тонкие провода 30AWG, снял с одного длинного провода изоляцию и сделал из него общую шину земли. К каждой кнопке эта шина была припаяна последовательно.

В итоге получилось намного аккуратнее и надёжнее.

Теперь самое интересное - радиосвязь.

Я долго выбирал между тремя вариантами:

Bluetooth,

2.4 ГГц,

433 МГц.

Bluetooth сразу отпал, слишком маленькая дистанция и постоянное соединение.

2.4 ГГц плохо проходит через стены.

В итоге остановился на 433 МГц - том же диапазоне, в котором работают, например, брелоки от шлагбаумов.

Я купил радиомодули HC-12.

У них довольно интересная логика работы: они используют последовательный интерфейс UART и настраиваются AT-командами. Например:

AT+FU1

Эта команда устанавливает режим дальности передачи.

Настройка происходит через специальный пин SET. Если при включении он находится в LOW, модуль входит в режим настройки. Если HIGH - работает в режиме передачи.

И вот тут снова начались приключения.

Arduino Pro Mini почему-то не могла стабильно держать уровни LOW и HIGH на пинах. Из-за скачков питания иногда модуль вместо работы переходил в режим настройки.

Плюс две антенны оказались бракованными.

Пришлось заказывать новую партию.

К декабрю прошло уже два месяца. Рабочего устройства всё ещё не было.

Я решил перейти на Raspberry Pico с процессором RP2040.

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

Тогда я начал собирать всё на макетных платах.

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

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

Но и тут без потерь не обошлось. Одна из плат RP2040 умерла. У неё буквально отвалился модуль памяти. Китайский модуль не выдержал.

После этого я решил, что уже устал от таких экспериментов.

Нашёл оригинальные платы RP2350. Их относительно недавно начали продавать, и это уже новое поколение Pico.

Интересная логистика получилась: произведены они в Британии, потом попали в Китай, затем в Японию, а уже оттуда ко мне.

С этой платой всё наконец заработало стабильно.

Я перепаял все компоненты, добавил аккумулятор, модуль зарядки TP4056 и радиомодуль. Всё разместилось на третьей макетной плате.

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

Сейчас прототип умеет:

- вводить текст через multi-tap клавиатуру

- отправлять сообщения

- принимать сообщения

- хранить историю сообщений

- показывать уведомления

Интерфейс пока довольно простой, но работает.

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

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

Уже 10 марта я буду защищать этот проект на научно-практической конференции.

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

Посмотрим, что скажет жюри.

Если будет интересно, могу выложить код и схемы на GitHub.

UPD: Гитхабом займусь завтра. Вижу, тема многих заинтересовала! Надумал создать телеграм-канал, будут фотографии, дальнейшие эксперименты и развитие этого проекта. Если все-таки стало интересно, можете продолжать следить и здесь: https://t.me/neonhead. Благодарен всем-всем.

UPD #2: Этот проект я не позиционирую как тотальную, комфортную и надежную замену всем средствам связи. Для меня это и научный проект, и личное хобби, и способ "набить руку". Естественно, до практической пользы еще далеко. Важнее было понять "как оно устроено" и "могу ли я также". Смог. Теперь делюсь этим опытом с вами, и буду продолжать делать то же самое. Ещё раз, спасибо всем вам за комментарии и реакции.

177
122
30
12
3
2
1
1
169 комментариев