Как развлечься в новогодние каникулы? Для "голых вечеринок" в столичном стиле у нас на Урале погода не совсем подходящая, да и люди не оценят. Даже если вести прямую трансляцию в соцсети, то, скорее всего, большинство зрителей просто покрутит пальцем у виска, да и дело с концом. Не получится, так сказать, хайпануть.
Написание приложений уже надоело. Хотя к компьютерам по-прежнему тянет. И сконструировать чего-нибудь хочется. Но не огромную модель корабля или танка, которая будет до скончания веков стоять в углу комнаты или на балконе и пылиться, а что-то, что можно применить дома с пользой.
Как насчёт конструирования микрокомпьютера с полностью подчиненной вам операционной системой, который можно использовать так, как вам вздумается? Хотя, возможно, конструирование - слишком сильное слово, поскольку непосредственно соединений деталей предстоит минимум. Назовём это лучше сборкой.
Одноплатный компьютер и периферия
Совсем недавно я случайно наткнулся в интернете на одноплатные компьютеры, и был немедленно ими очарован. Идея собрать малыша, который помещается у вас на ладони, но при этом является практически полноценной десктопной системой (т.е. системой для конечного пользователя с графическим интерфейсом) не может тронуть душу только совсем бесчуственных сухарей.
Поверхностное исследование интернет-магазинов показало наличие на рынке трёх основных модельных рядов одноплатников или SoC (System-on-a-Chip) - систем на кристалле:
- Всем известный британский Raspberry Pi
- Всем известный китайский Orange Pi
- Мало кому известный российский 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. Во-первых, программатор и одноплатник нужно соединить тремя проводами. Я ни разу не электрик, но читать умею, поэтому разглядел, что нужные мне штырьки подписаны 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 - они даже продают стартовые наборы, куда уже включены все необходимые для занятий комплектующие, которые отлично работают друг с другом "из коробки" без танцев с бубнами.
Ну и напоследок, небольшое видео отвратительного качества с результатом сборки моего первого микрокомпьютера: