Сегодня хочу представить обзор потрясающего корпуса для Raspberry Pi 3.
Я давно хотел его приобрести, я упоминал его в своей подборке лучших корпусов для «малинки», и вот несколько дней назад посылка с ним наконец до меня добралась.
Aluminum Enclosure with 2.2 inch LCD Screen. Именно так зовется этот корпус в магазинах.
Или, в переводе на русский, алюминиевый корпус с 2.2″ экраном — а также ИК-приемником и шестью программируемыми кнопками.
Бонус для читателей блога: с купоном LCDS этот корпус можно купить в GearBest по сниженной цене в $35,99. Дешевле уже не найти. Я проверял.
Содержание
Техническая информация
Габаритные размеры
Ширина: 61 мм
Длина: 92 мм
Высота: 26 мм
Вес: 156 г
Материал изготовления — алюминий
Цвет — черный
Сборка корпуса
Поставляется корпус в виде набора для сборки. Две алюминиевые половинки, дисплей в пузырчатой пленке с дополнительными транспортировочными вкладками для защиты, и два пакетика по которым разложены аксессуары: винты, фитинги, резиновые ножки, защитное стекло и ключ-шестигранник.
Да, защитное стекло. Дисплей здесь не сенсорный. Зато так вся конструкция оказывается лучше защищена от повреждений.
Сам дисплей. Хотя правильнее было бы назвать его модулем, содержащим на себе дисплей, 6 кнопок и ИК-приемник.
Первый шаг сборки — поместить Raspberry Pi в нижнюю половинку корпуса. У меня установлены хорошие радиаторы (см. мой обзор Raspberry Pi 3) — с ними плата нормально помещается в корпус и, забегая наперед, хорошо сопротивляется перегреву.
Готово. Следующий шаг — зафиксировать «малину» на месте идущими в комплекте фитингами.
Затем сверху крепится модуль с дисплеем, кнопками и ИК-портом.
Дисплей на месте — теперь собираем верхнюю часть. Нужно очистить защитное стекло от транспортировочных пленок и наживить кнопки в отверстия в корпусе.
Соединяем обе части корпуса вместе и проверяем «кликабельность» кнопок. Две боковые кнопки должны нажиматься с уверенным щелчком средней жесткости. Если одна из кнопок залипает — нужно слегка постучать по корпусу, чтобы она встала на место. После чего закручиваем винты.
И остается последняя мелочь — наклеить на дно комплектные резиновые ножки.
Кстати, обращаю внимание на правильный вырез под microSD. Карта памяти действительно вытаскивается из него ногтем, а не выцарапывается пинцетом, как из многих акриловых корпусов.
Вот так выглядит корпус в сборе. Не могу не отметить качество мелких деталей. Нет ни одной лишней щели, все элементы тщательно подогнаны друг к другу. Скажем, если HDMI-порт имеет форму трапеции, то и отверстие под него в корпусе является не грубо выпиленным прямоугольником, а максимально приближено по пропорциям.
Шикарная вещь. Мне очень понравилось качество изготовления.
А теперь пора переходить к настройке функциональных элементов.
Настройка дисплея
После того как вся конструкция собрана, самое время приступить к настройке экрана.
Ранее я уже писал статью о подключении TFT-дисплея к Raspberry Pi на примере копии 3,2″ дисплея от Waveshare. В данном случае эта инструкция нам не подойдет, потому что теперь мы будем иметь дело с копией дисплея Adafruit PiTFT 2.2″ HAT.
Для того чтобы заработал подобный дисплей нужно пропатчить ядро системы и установить драйвер от Adafruit.
Не пугайтесь слов «пропатчить ядро», все делается в автоматическом режиме.
sudo echo "deb http://apt.adafruit.com/raspbian/ wheezy main" >> /etc/apt/sources.list sudo wget -O - -q https://apt.adafruit.com/apt.adafruit.com.gpg.key | apt-key add - sudo apt-get update sudo apt-get install node sudo apt-get install occidentalis sudo apt-get install raspberrypi-bootloader sudo apt-get install adafruit-pitft-helper
Этими действиями в систему добавляется новый репозиторий Adafruit, устанавливается набор программ Adafruit Occidentalis и утилита Adafruit PiTFT Helper, через которую происходит настройка дисплея.
Затем выполняем команду:
sudo adafruit-pitft-helper -t 22
И ответим на вопросы конфигуратора: нужно ли включить отображение консоли на tft-дисплее [да] и нужно ли повесить на GPIO PIN #23 кнопку выключения системы [нет].
После чего перезагрузим систему:
sudo reboot
Если установка драйверов прошла нормально, то на экране появится консоль. И осталось проделать последние действия для того, чтобы он начал поддерживать и графическую оконную оболочку.
Первое действие:
sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf ~
Эта команда должна удалить один из связанных с X11 (графическая оконная система в Linux) файлов конфигурации, которого по-хорошему в системе вообще не должно быть. Поэтому скорее всего в ответ на эту команду мы получим сообщение об ошибке «нет такого файла» — все нормально, так и должно быть.
Теперь создадим новый файл конфигурации:
sudo nano /usr/share/X11/xorg.conf.d/99-pitft.conf
И впишем в него строки:
Section "Device" Identifier "Adafruit PiTFT" Driver "fbdev" Option "fbdev" "/dev/fb1" EndSection
Сохраняем файл, перезагружаемся.
Теперь на экране должна появиться графическая оболочка Raspbian PIXEL. Если не появляется — проверьте, чтобы в настройках Raspbian (консольная команда «raspi-config») была активирована загрузка именно графической оболочки, а не консоли.
На этом настройка дисплея завершена.
Настройка кнопок
Теперь приступаем к настройке кнопок.
Вообще, на эти кнопки можно подвесить любые действия. В качестве демонстрации возможностей я покажу как эмулировать на их основе мышку уже готовыми скриптами на Python.
Для начала устанавливаем библиотеки Python для работы с GPIO:
sudo apt-get update sudo apt-get install libudev-dev sudo apt-get install python-pip sudo pip install rpi.gpio sudo pip install python-uinput
Теперь активируем модуль uinput:
sudo modprobe uinput
Можно прописать его в /etc/modules чтобы он активировался автоматически после загрузки «малины». Иначе каждый раз это нужно будет делать вручную.
Теперь скачаем Python-скрипты для работы с кнопками:
mkdir Python-keys cd Python-keys wget www.raspberrypiwiki.com/images/6/6c/Python-keys.zip unzip Python-keys.zip
В архиве идет несколько скриптов, один из которых позволяет эмулировать джойстик, другой — некоторые клавиши клавиатуры, и третий — эмулировать мышь. Эмуляция мышки является самой наглядной на мой взгляд, поэтому я рассматриваю только ее.
Итак, запускаем скрипт:
sudo python rpi-2.2TFT-mouse.py
4 кнопки возле экрана отвечают за передвижение курсора мыши вверх-вниз вправо-влево. Две кнопки на правом торце эмулируют клики левой и правой кнопками мыши соответственно.
Вот короткое видео с демонстрацией как это работает:
Настройка ИК-приемника
И последний момент — это настройка встроенного ИК-приемника.
Важно знать, что ИК-приемник тут висит на 26-ом пине GPIO. Это выясняется, можно сказать, методом тыка, поскольку распиновки используемой тут платы мне найти не удалось.
Для работы с ИК-портом в Linux-системах используется пакет LIRC (Linux Infrared Remote Control).
Так что установим его:
sudo apt-get install lirc liblircclient-dev
И отредактируем файл конфигурации:
sudo nano etc/lirc/hardware.conf
Приведя присутствующие в нем строки к следующему виду:
LIRCD_ARGS="--uinput" LOAD_MODULES=true DRIVER="default" DEVICE="/dev/lirc0" MODULES="lirc_rpi"
Теперь откроем файл config.txt:
sudo nano /boot/config.txt
Найдем там строки:
# Uncomment this to enable the lirc-rpi module #dtoverlay=lirc-rpi
И приведем их к следующему виду:
# Uncomment this to enable the lirc-rpi module dtoverlay=lirc-rpi,gpio_in_pin=26
То есть раскомментируем строку и допишем, что ИК-приемник нужно искать на 26-ом пине. По умолчанию LIRC искал бы ИК-приемник на 18-ом пине — и ничего бы не нашел.
Важно: после запятой не должно быть никаких пробелов. Я сначала не обратил на это внимания и потратил кучу времени, выясняя почему ИК-приемник у меня не работает. Оказалось, что именно из-за лишнего пробела.
После этих действий нужно перезагрузиться:
sudo reboot
Теперь проверим заработал ли ИК-порт:
sudo modprobe lirc_rpi sudo /etc/init.d/lirc stop sudo mode2 -d /dev/lirc0
После ввода последней команды нужно навести пульт на приемник и понажимать кнопки. Если приемник работает, то в консоли появится примерно следующее:
Как надоест играться — прерываем выполнение команды (Ctrl+C на клавиатуре) и приступаем к финальной части настройки:
sudo /etc/init.d/lirc stop sudo irrecord -n -d /dev/lirc0 ~/lircd.conf
Запустится мастер настройки пульта, который предложит последовательно нажать на все имеющиеся на пульте кнопки — так, чтобы каждая из них оказалась нажатой не менее одного раза. Каждая «пойманная» ИК-приемником кнопка будет отображаться появлением новой точки на экране.
После осуществления этих действий мастер настройки сгенерирует конфиг и положит его в директорию пользователя. Оттуда этот конфиг нужно скопировать в директорию программы, чтобы он стал конфигом по умолчанию и снова запустить сервис LIRC:
sudo cp ~/lircd.conf /etc/lirc/lircd.conf sudo /etc/init.d/lirc start
На этом настройка завершена.
Теперь «малиной» можно управлять при помощи пульта. Поддержка пультов имеется во всех медиацентрах, кроме того можно вручную настроить кнопки пульта для управления с них и другими функциями системы. Тут как с кнопками возле экрана — главное понять для себя какие функции хочется повесить на кнопки, а остальное приложится.
Разные вопросы
Какой смысл в дисплее с таким разрешением
В процессе чтения этого обзора кто-то мог уже задуматься о целесообразности присутствия дисплея с разрешением 320×240 пикселей.
Действительно, ведь сам я уже писал в своей более ранней статье про подключение TFT-дисплея о том, что работать с интерфейсом Raspbian с таким низким разрешением экрана невозможно: ну не заточены элементы этого интерфейса под низкое разрешение, и все тут.
Но работать можно не только с интерфейсом Raspbian.
Например, для «малины» существует проект аудиоцентра на базе Squeezebox, интерфейс которого прекрасно адаптирован для подобных экранов:
Кроме того, можно написать собственный интерфейс, адаптированный под маленький дисплей.
Примеры таких интерфейсов уже существуют, например PiTFT TouchPi Menu:
Или PiMenu с плиточным дизайном:
В общем, смысл в таких дисплеях есть и пользоваться ими можно.
Как отключить дисплей
Если дисплей не нужен постоянно — его в любой момент можно отключить консольной командой:
gpio -g mode 27 out
А включить обратно другой командой:
gpio -g mode 27 in
Можно даже повесить эти команды на присутствующие на корпусе кнопки, будет вообще удобно.
Нагрев
Еще один важный вопрос при использовании закрытого корпуса: как будет чувствовать себя в нем весьма «горячая» Raspberry Pi 3, не будет ли страдать от перегрева?
Я проверил.
Итак, температура «малины» в этом корпусе при умеренном использовании (работа с консолью через SSH-терминал, устанавливаются пакеты и выполняются команды) колебалась в интервале 46,7°C — 48,3°C.
После чего я решил провести стресс-тест системы.
Для этого нужно установить пакет:
sudo apt-get install stress wget https://raw.githubusercontent.com/ssvb/cpuburn-arm/master/cpuburn-a53.S gcc -o cpuburn-a53 cpuburn-a53.S
И запустить тестирование:
while true; do vcgencmd measure_clock arm; vcgencmd measure_temp; sleep 10; done& stress -c 4 -t 900s
Этот длящийся 15 минут тест, во время которого процессор получает постоянную стопроцентную загрузку, показал следующее:
Сперва температура довольно резко скакнула с 46,7°C до 68°C. Затем нагрев замедлился, но продолжил вяло ползти вверх. На последних минутах теста температура процессора достигла 80,1°C — это значение является критическим для «малины», и если бы рост температуры продолжился, то начался бы троттлинг (принудительное понижение частоты), но.. тест закончился. Облаченная в сплошной алюминиевый корпус Raspberry Pi успешно прошла его, хоть и на грани.
После окончания стресс-теста буквально за несколько секунд температура упала с 80°C до 72°C, а за последующие 10 минут cнизилась до 50°C.
Я результатом доволен. Не забываем, что это был синтетический тест, а большинство реальных сценариев использования Raspberry Pi не предполагают, что она постоянно будет загружена «на полную катушку»,
Влияние на работу Wi-Fi
И еще один важный момент при использовании закрытого алюминиевого корпуса — его влияние на работу встроенного Wi-Fi.
К моему удивлению, разницы в работе Wi-Fi в корпусе и без практически не оказалось: он одинаково плохо работает и так, и так.
Вот результаты прохождения теста на сайте Speedtest.net. Выше — «малина» без корпуса, ниже — «малина» в корпусе:
При этом скорость при работе через Ethernet-подключение составляет 50Мбит — именно столько выдает провайдер днем по моему тарифу.
В общем, если критично чтобы Raspberry Pi была соединена с сетью на наиболее высокой скорости — пользуйтесь проводным подключением. Wi-Fi адаптер там дохлый, что в корпусе, что без него. Да и сам Wi-Fi диапазон в густонаселенных районах порядком подзабит.
Вместо заключения, или «за что такие деньги?»
Корпус мне понравился.
Пожалуй, единственную претензию могу высказать в адрес четырех кнопок на передней панели — они достаточно громко щелкают.
Может быть удастся это поправить, заизолировав их кусочками резины, может нет. Но в любом случае, это не очень критичный недостаток.
В остальном — чистый восторг.
Кого-то может смутить цена: как так, платить за какой-то корпус сумму, сопоставимую со стоимостью самой Raspberry Pi?
Так ведь плата идет не только за корпус, но и за мелкие детали — кнопки, дисплей, ИК-приемник. По отдельности себестоимость всех задействованных тут компонентов уже тянет долларов на 30.
Добавьте к этому фабричное качество сборки всего этого в гармоничное целое и наценку продавца, без которой не осуществляется ни одна продажа — вот и выходит такая цена. Вполне разумная, надо признать.
Еще раз обращаю внимание, что менеджеры интернет-магазина GearBest сделали купон (промо-код) LCDS, с которым можно купить этот корпус со скидкой.
Промо-код вводится в корзине перед оплатой товара, к оплате выставляется счет уже с учетом скидки.
Aluminum Enclosure with 2.2 inch LCD Screenв интернет-магазине GearBest
ИК-приёмник внешний на фото так и не увидел. Куда физически включается? В разъём папа сбоку? И вот ещё похожий дорогой корпус , но без дисплея https://ru.aliexpress.com/item/U-Geek-Raspberry-Pi-Aluminum-Alloy-CNC-case-Kit-For-3-5-inch-screen-Raspberry-Pi/32720306677.html?spm=2114.03010208.3.259.yOwmxj&ws_ab_test=searchweb0_0,searchweb201602_2_10152_10065_10151_10068_5010019_10136_10137_10157_10060_10138_10155_10062_10156_437_10154_10056_10055_10054_10059_303_100031_10099_10103_10102_10096_10147_10052_10053_10142_10107_10050_10051_10170_5020017_10084_10083_10119_10080_10082_10081_10110_519_10111_10112_10113_10114_10182_10185_10078_10079_10073_10123_10120_10127_142_10125-10120,searchweb201603_1,ppcSwitch_5&btsid=5abcf7c9-75a3-4918-98b4-c74bc1879975&algo_expid=c1047b5d-c9d4-4337-9569-936b08c49206-32&algo_pvid=c1047b5d-c9d4-4337-9569-936b08c49206
ИК-приемник не внешний. Черная лампочка прямо над экраном, в верхнем левом углу, присмотритесь. Отдельно ничего подключать не нужно, просто насадить плату с экранчиком на GPIO.
Да, этот корпус видел. Тоже классный, но уже вдвое дороже по цене получается. К нему же не абы какой экран надо, а чтобы кнопки совпадали с отверстиями на корпусе, а такой экран в том же магазине на Али стоит 2400р. Корпус+экран, итого за всю систему в сборе 4600р пришлось бы отдать.
Доброго времени суток. Вы пишете: «Теперь активируем модуль uinput… Можно прописать его в /etc/modules чтобы он активировался автоматически….». Я новичок в Linux, и не очень понимаю как это правильно сделать. Там уже прописано i2c-dev. Ниже этой строки вписать uinput? И ещё файл modules защищен от записи. Как настроить права на запись в этот файл. А сам скрипт python rpi-2.2TFT-mouse.py можно как-то в автозагрузку установить?
Спасибо.