Приветствую, Хабр! После того, как были разработаны модуль SMARC и материнская плата для проверки всех его интерфейсов, я решил пойти немного дальше и сделать для себя мини-ПК. Хотелось получить маленькую коробочку с необходимыми мне разъемами для замены старенького настольного ПК. Что из этого получилось, рассказываю под катом.

Выбор корпуса


Начал я не с набора интерфейсов, как это принято, а с поисков корпуса. Хотелось иметь максимально компактные габариты с учетом SMARC-модуля размером 82х50 мм. Это не должен получиться кубик, поэтому я ограничился высотой 30-40 мм, чтобы иметь возможность добавить систему охлаждения. Немного покопавшись в интернете, нашел замечательный вариант размером 120х88х38 мм, черный из алюминия. Его я незамедлительно и приобрел.


Рис.1. Алюминиевый корпус 120х88х38 мм.

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

Внешние интерфейсы


Сам модуль использовал SECO Intel Atom x6425RE (SOM-SMARC-EHL (C93), если кому-то интересно). Просто он у меня уже был (на Intel). Модуль имеет довольно мощный четырехъядерный процессор (1,9ГГц). Также на борту eMMC 64 ГБ, LPDDR4x 16ГБ и полный фарш интерфейсов. Незадолго до заказа корпуса я решил определиться, что же мне все-таки нужно и как это расположить (а то вдруг и правда не влезет), чтобы все было оптимально и ничего не мешало.

На задней стенке вывел:
  1. Питание 12В. Блок питания на 5А тянет все без проблем.
  2. HDMI. Бывают еще совмещенные разъемы HDMI + DP, но я хотел все развести на четырех слоях платы, а еще добавить внутренние модули (много высокоскоростных линий данных).
  3. 2xUSB2.0. Отказался от внутреннего модуля Wi-Fi/Bluetooth в пользу внешних донглов на задней стенке. Корпус металлический, а ставить выносную антенну, как у моего первого сотового телефона, совсем не хотелось. Второй USB нужен для беспроводной клавиатуры/мышки.
  4. Гигабитный Ethernet. Хоть Wi-Fi и планируется, но проводной интерфейс решил оставить.


Рис.2. Интерфейсы на задней стенке ПК.

На передней стенке вывел:
  1. Светодиоды питания и работы. Индикация никогда не повредит. Можно было забахать даже третий светодиод активности диска, но не стал.
  2. Кнопка включения/выключения. Скорее всего, можно будет настроить для гибернации.
  3. Разъем гарнитуры. Вывел наушники и микрофон. Про кодек напишу ниже отдельно.
  4. Две кнопки: reset и recovery. Они будут утоплены, чтобы нажимать иголкой (надеюсь, не пригодятся).
  5. 2xUSB3.0. Для удобства использования высокоскоростные USB вывел Type-A, а не Type-C. Хотя было дикое желание сделать все, даже питание, на Type-C.



Рис.3. Интерфейсы на передней стенке ПК.

Кодек


Раз уж начал говорить про кодек, то продолжу. Модуль имеет интерфейс I2S. Сделал под него схему на NAU88C22YG (рекомендую). Как известно, для настройки кодека необходим I2C, чтобы можно было его конфигурировать. Полез в BIOS и застрял на час. Столько настроек я еще не видел. Так и не нашел, как мне для конкретного аудио интерфейса сделать привязку I2C.

А что с драйверами? Понял, что мне все это избыточно и вспомнил, что на SMARC есть еще два свободных USB2.0, которые просто не поместились в виде разъемов. Не так давно делал звуковую карту на PCM2912 и понял, что это как раз то, что нужно. Это USB2.0 кодек с одним микрофонным входом и стереовыходом. Драйвера под Windows/Linux для него есть. Если кому-то интересно – ниже схема.


Рис.4. Схема USB-кодека на PCM2912.

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



Внутренние интерфейсы


На борту модуля, как я уже писал ранее, есть eMMC на 64 ГБ. Думаю, парочка интерфейсов для подключения SSD мне не помешает.

  1. Разъем для подключения SSD mSATA в формфакторе mini PCI-Е (52 контакта).
  2. Разъем для подключения SSD PCIE3.0x4 M.2 NGFF (75 контактов).
  3. Два разъема microUSB, запараллеленных с Type-A (USB_OTG), чтобы не колхозить кабель.
  4. Батарейка для RTC, формата CR1220. Хотел больше, но не поместилась (только если использовать вертикальный слот).
  5. Разъем для подключения кулера системы охлаждения с отслеживанием оборотов и возможностью выбора напряжения питания 5В/12В (джампер). В BIOS, кстати, можно настроить, какой тип вентилятора будет использоваться (3-wire/4-wire).
  6. Дип-переключатель (под модулем) для выбора режимов загрузки (eMMC, SATA, PCIE, USB и т.д.).


Рис.5. Внутренние интерфейсы ПК (bottom).

На bottom помимо SSD я разместил питание, схему управления вентилятором и кодек. mSATA по сравнению с M.2, конечно, великоват по габаритам.

Для питания модуля (5В) используется отдельный DC/DC MP8759GD на 8А. Точно такой же Buck формирует напряжения для USB (5В), а дальше пара питателей на 3,3В и 1,8В для SSD и внутренних цепей.


Рис.6. Внутренние интерфейсы ПК (top).

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


Рис.7. Плата в Альтиум.

Хотел вывести microSD карту, но не нашел, куда ее приткнуть. Очень не хотелось на длинную сторону, поэтому просто решил выкинуть. Есть USB картридеры, в конце концов.

Запуск и косяк


Включаю, а по HDMI ничего. И так, и сяк, вентилятор крутится, лампочки горят, все питания в норме, а изо нет. Начал разбираться с документацией на модуль. Английским по белому написано «2xDP++ 1.4 or 1xDP++ 1.4 and 1xHDMI 1.4 interfaces». Получается, что один интерфейс из двух может быть как DP++, так и HDMI – это понятно. Я даже вывел резистор выбора интерфейса… А вот и нет. Вывел, но для того DP, который не используется у меня на плате (использовался в другом проекте).


Рис.8. Ошибка в DP_AUX_SEL.

Обидно, единственный навесной провод на плате.


Рис.9. Первое (второе) включение.

И вот он, долгожданный рабочий стол Windows 10. Кулер я пока просто бросил на плату, даже без радиатора (температура проца 65-75 градусов, пока тыкал мышкой и ставил проги). Тепловыделение процессора всего 12Вт, так что она работает даже без вентилятора, но греется жутко. Попробую поиграться с радиатором, чтобы не ставить кулер, но думаю, пассивного охлаждения не получится.

Половины драйверов в установленной операционке не было, но на сайте SECO нашел архив на 1,2 ГБ, из которого все и установил.


Рис.10. Диски в системе.

Корпус и охлаждение


Корпус-то я, конечно, купил, но нужно еще как-то сделать вырезы под все разъемы. Как выпилить красиво, я пока еще не придумал. Сидеть точить надфилем – идея не из лучших, как мне кажется. Пока делаю чертеж, может, фрезеровку или что-то подобное получится замутить.

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


Рис.11. Система охлаждения ноутбука HP.

А вообще была еще одна грандиозная идея все это реализовать в корпусе от ноутбука. На модуле есть все необходимое, в том числе и LVDS для подключения матрицы. Уффф…

Спасибо за внимание и успехов!

Комментарии (13)


  1. angos1206
    03.12.2024 09:52

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


  1. the_bat Автор
    03.12.2024 09:52

    Буду иметь ввиду) Но для чего аккум, если питать моник нужно будет?


    1. angos1206
      03.12.2024 09:52

      Выручит матрица с наиболее распространённым разьемом LVDS (как не хватает стандартизации), я до ужаса непритязателен, меня устроит верхняя крышка в сборе от ноута.


      1. the_bat Автор
        03.12.2024 09:52

        Тогда нужно матрицу по wifi (dlna) и на аккуме)


  1. LeonidI
    03.12.2024 09:52

    Спасибо за статью, отличный проект!

    Пассивное охлаждение внутри такого корпуса кажется плохой идеей. А вот можно ли использовать корпус в качестве радиатора? Сделать металлическую (медь или алюминий) проставку между процессором и корпусом и прижать через термопасту или термопрокладку.. Хотя это может быть невыполнимо для этого корпуса и платы.

    Ну, а если вентилятор, то ноутбучное охлаждение должно быть просто отлично.

    Касательно вырезов под разъемы - можно напечатать торцевые пластины из пластика вместо родных металлических


    1. the_bat Автор
      03.12.2024 09:52

      Спасибо!


    1. the_bat Автор
      03.12.2024 09:52

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


      1. V-King
        03.12.2024 09:52

        12 ватт прекрасно отводятся через корпус. Сам на днях аналогичный сделал. Камень, правда, у меня MT7988, но у него TDP тоже 12 Вт. Так при нагрузке камня в 100%, проц всего 50 градусов.


        1. the_bat Автор
          03.12.2024 09:52

          Отличные новости! А какой толщины корпус? Через термопрокладку просто?


          1. V-King
            03.12.2024 09:52

            У меня алюминиевая оребрёная крышка. К крышке на теплопроводный клей приклеен медный радиатор, медный радиатор через термопасту забирает тепло от камня.


  1. seyko2
    03.12.2024 09:52

    Здорово. Однако, по моему мнению, сейчас Arm64 имеет преимущество в плане открытости. Для Intel так и её освоили открытый Биос. Для Arm64 уже практически готов UEFI и после этого можно пробовать запускать Windows для Arm64.


  1. sdy
    03.12.2024 09:52

    Какое потребление у модуля? Интересно сколько на zip тесте покажет

    Как вариант для панелей - заказать платы с вырезом под разъёмы и черной маской глянцевой


  1. norguhtar
    03.12.2024 09:52

    Как выпилить красиво, я пока еще не придумал. Сидеть точить надфилем – идея не из лучших, как мне кажется.

    Гравер в помощь. Клеите молярный скотч на морду отрисовываете нужные отверстия и вырезаете. Самый быстрый и простой способ.