Найти в Дзене

Собираем компьютер на ладони

Оглавление

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

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

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

Одноплатный компьютер и периферия

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

Поверхностное исследование интернет-магазинов показало наличие на рынке трёх основных модельных рядов одноплатников или SoC (System-on-a-Chip) - систем на кристалле:

  1. Всем известный британский Raspberry Pi
  2. Всем известный китайский Orange Pi
  3. Мало кому известный российский Repka Pi

Британский вариант мне совершенно не подходит, потому что додумайте сами почему. Хотя он самый простой в плане установки периферии и операционной системы - вариант "для девочек". Российский одноплатник очень похож на новый российский "Москвич" по комплектующим, хотя я могу сильно здесь ошибаться. Тем не менее, российский аналог я обязательно рано или поздно тоже опробую. Поэтому выбор мой пал на продукт китайских братьев, а конкретно на модель Orange Pi Lite, не в последнюю очередь потому, что это было самое дешёвое, что мне удалось найти на пробу. Занятие ведь специфическое, может и не понравиться.

Одновременно к самому одноплатнику я заказал дисплей Waveshare 3.5'' RPi LCD (C), карту памяти microSD на 32 Гб, а в процессе настройки докупил ещё USB-TTL программатор, позже расскажу, для чего он может пригодиться. Питание осуществляется от зарядника планшета или телефона с характеристиками тока 5V 2A через кабель, который шёл в комплекте с компьютером.

Итоговый список комплектующих с ценами:

  • Одноплатный компьютер Orange Pi Lite: 3700 рублей
  • Дисплей Waveshare 3.5'' RPi LCD (C): 2750 рублей
  • Карта памяти microSD 32 Гб: 850 рублей
  • USB-TTL программатор: 500 рублей (не обязательно)

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

Операционная система и первый запуск

Фишка китайских одноплатников в том, что производитель не выпускает к ним собственной версии операционной системы, как в случае с Raspberry Pi. Там-то всё просто, скачал образ специально разработанной операционной системы на базе Linux, скинул на флешку, подключил периферию - и всё работает из коробки. Не конструктор, а айфон какой-то, прости господи.

В нашем случае для Orange Pi Lite мы вольны сами выбрать любой понравившийся нам дистрибутив, естественно, на базе Linux, из тех, что рекомендует сам производитель, а это дистрибутивы на базе Armbian, Ubuntu, Debian и даже (!) можно установить его величество Android.

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

  • хоть Android официально и поддерживается, ставить на эту плату я его не решился. Кажется, что она банально не вывезет по железу;
  • сборки с графическим интерфейсом запускаются, показывают рабочий стол, открываются окна, работает интернет-браузер, но всё без энтузиазма и с тормозами;
  • лучшая сборка, по моему мнению - это сборка Armbian без графического интерфейса, т.е. только с командной строкой оболочки bash.

Взаимодействие с одноплатным компьютером

Производители на самом деле не кривят душой, когда заявляют, что эти малютки размером с кредитную карту, являются полноценными компьютерами. Действительно, даже на моём Orange Pi Lite помимо прочего есть HDMI-выход на любой монитор или телевизор, два USB-входа для подключения клавиатуры, мыши или других устройств, а также Wi-Fi модуль для взаимодействия с сетью. Но не будем забывать, что работать это чудо будет под управлением Linux, а значит вам будут доступны на выбор разные возможности для управления своим микрокомпьютером.

Во-первых, вы можете просто использовать микрокопьютер как системный блок, подключив к нему монитор и клавиатуру. Это самый скучный и неинтересный способ, который не подарит вам новых ощущений.

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

Ну и третий способ (мой любимый) - подключение через Serial Port. Это как раз то, для чего вам может потребоваться USB-TTL программатор. В этом случае всё взаимодействие с микрокомпьютером осуществляется с помощью другого компьютера или ноутбука, что здорово экономит место на столе, потому что нет дополнительных мониторов и клавиатур. Это также даёт возможность вам одновременно ломать голову в консоли и искать в интернете ответы на ежеминутно возникающие вопросы. А ещё только этот способ позволяет видеть вывод boot-загрузчика, который появляется до того, как стартовало ядро операционной системы. Этот вывод бесценен, когда требуется узнать, корректно ли вы написали наложение для дерева устройств (об этом ниже).

Подключение к микрокомпьютеру через Serial Port
Подключение к микрокомпьютеру через Serial Port

Есть несколько важных моментов, о которых я должен вас предупредить, если вы решитесь подключаться через Serial Port. Во-первых, программатор и одноплатник нужно соединить тремя проводами. Я ни разу не электрик, но читать умею, поэтому разглядел, что нужные мне штырьки подписаны GND, RX и TX и на программаторе, и на микрокомпьютере. Не долго думая, я соединил их поимённо и полдня пытался заставить работать соединение, пока, наконец, не догадался прочитать в интернете, как сделать правильно. Оказалось, что это типичный заговор электриков, и правильно нужно сделать вот так:

GND программатора - GND микрокомпьютера

RX программатора - TX микрокомпьютера

TX программатора - RX микрокомпьютера

Как вообще трезвый человек может об этом сам догадаться? Никак.

Далее вам потребуется программа на ноутбуке, которая поддерживает соединение через Serial Port. Таких программ и руководств к ним множество, я просто могу посоветовать ту, что наиболее понравилась мне - Termius. Очень современная программа, есть клиенты под Windows, под Linux, а особенно мне импонирует клиент под Android. Подключишься, бывало, через него к домашнему серверу, сидя за столом в пельменной, и всё - полная матрица.

И последнее напутствие здесь: если используете Termius из-под Linux, то файлу устройства программатора, которым, как правило, является /dev/ttyUSB0, при каждом подключении программатора к ноутбуку нужно дать права на чтение/запись для остальных Linux-пользователей, иначе Termius не сможет получить к нему доступ. В Linux это делается простой командой:

sudo chmod 666 /dev/ttyUSB0

Подключение дисплея

Ну а теперь самое интересное! Что за микрокомпьютер без микро-дисплейчика?! У нас есть одноплатник с GPIO-гребёнкой, есть дисплей, который можно на эту гребёнку насадить, есть миллион фотографий в интернете, где эти дисплеи красиво подключены к британским Raspberry Pi и образуют с ними красивую коробочку. Искушению не было предела, поэтому я так сразу и сделал и включил плату:

У некоторых техников из интернетов типа меня, после таких приколов немедленно погорели какие-то конденсаторы и пошёл весёлый новогодний дымок из компьютера. Но, к счастью, у моего знака зодиака тогда был удачный день, поэтому ничего не случилось. А случиться должно было, потому что наши китайские товарищи в этой модели развернули GPIO-гребёнку на 180 градусов. Будьте внимательны и ищите белый треугольник, чтобы определить начало вашей гребёнки. В данном случае правильное подключение должно выглядеть так:

Если бы у нас был Raspberry Pi, то после подключение дисплея осталось бы парой команд установить для него драйвера по инструкции, прилагаемой к дисплею, и всё бы сразу заработало. Но, как вы помните, у нас тут не британский подключи-и-играй, а китайский сам-купил-сам-разбирайся, и заставить дисплей работать оказалось самой сложной задачей, которую пришлось решить.

Дерево устройств Linux и наложения

Процесс настройки дисплея занял у меня примерно две недели, но только потому, что я в этом деле полный профан. Мне намного ближе непосредственно программирование, а не вот эти вот электрические приколы про "попади нужным штырьком в нужную дырочку". Интернет полон инструкций, которые давно протухли, потому что последние сборки операционных систем Armbian используют ядро Linux версии 6 и выше, а большинство инструкций написаны ещё для версий ядра 4.2 и ниже, где никакого дерева устройств ещё не было, а сейчас оно есть и с ним нужно считаться. С другой стороны, на мой взгляд, современный подход значительно проще и надёжнее, если знать, что делать.

Не буду утомлять вас техническими подробностями, утомитесь сами, если пожелаете. Скажу лишь коротко, что дерево устройств (Device Tree) в Linux - это описание оборудования для операционной системы, которое предоставляет производитель платы. Такие устройства, как наш LCD-дисплей не имеют опции самоопределения типа Plug-And-Play, поэтому нашей задачей является подсказать операционной системе, что за устройство мы подключили, куда мы его подключили, и как ей им управлять.

Сделать это можно, написав файл наложения на исходное дерево устройств (Device Tree Overlay). Производитель дисплея Waveshare предоставляет такой файл, однако, как и заявлено на их официальном сайте и в документации, работать он будет только на компьютерах Raspberry Pie, но никак не на нашем Orange Pi. Конечно, этот файл можно взять за основу, но редактировать в нём придётся слишком много, потому что на другой платформе могут быть другие имена узлов, другие номера "ножек" гребёнки, к которой подключается дисплей, и вообще другие переменные в файле наложения. Для совсем неподготовленного новичка задача грамотно написать файл наложения будет чрезвычайно сложной. Сам я после безуспешных двухнедельных попыток написать файл наложения самостоятельно, наткнулся в Youtube на турка с таким же дисплеем и компьютером и передрал его файл из видео подчистую - только тогда заработало. Турку тому дай бог здоровья и долгих лет, а если кому-то нужен точно такой же файл наложения, можете забрать его отсюда.

Что в итоге

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

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

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

Хотите начать изучать Linux, языки программирования C / C++ и принципы работы так называемых "умных вещей"? Тогда эта игрушка для вас. Или для ваших детей. Но всё же, если вы совсем новичок, или собираетесь купить такое для ребёнка, я бы посоветовал начать с Raspberry Pie - они даже продают стартовые наборы, куда уже включены все необходимые для занятий комплектующие, которые отлично работают друг с другом "из коробки" без танцев с бубнами.

Ну и напоследок, небольшое видео отвратительного качества с результатом сборки моего первого микрокомпьютера: