pipboy 3000 главное меню

Pipboy 3000. Подключаем экран и звук на Raspberry Pi

от автора

в

Всегда хотел себе собрать этот футуристический компьютер из вселенной Fallout, но осознавал, что это может потребовать много времени. С появлением 3д принтера, понемногу печатал множество деталей, входящих в архив. На основную деталь корпуса ушло аж 17 часов! Когда, по итогу все было распечатано, пришлось еще подгонять детали. Где-то от перегрева платформы самые большие детали немного выгнулись. Наращивал их содой с суперклеем, потом подгонял напильником и наждачной бумагой.

pipboy3000 3d printer

Потом покрасил обычной темной краской, но понимал, что далее придется кисточкой придавать “ржавые” оттенки. Кстати, есть несколько моделей для 3д печати, я остановился на моделях на сайте Adafruit. Инструкция, правда, как оказалась, не особо актуальна в наше время.

pipboy3000 на 3d принтере

И вот почему. Готовый скачанный образ для raspberry pi b+ не стартанул на моей первой обычной raspberry b, как я понял зависание произошло где-то на инициализации экрана, видимо разные частоты SPI, так-что на этом я тогда и забросил этот проект. Но недавно, спустя почти год от первой попытки, решил попробовать собрать этот образ сам. Конечно, плата 2011 года не внушала доверия, и я принялся подбирать образ raspbian посвежее, который без проблем заведется. По итогу остановился на 2020-02-13-raspbian-buster, который скачал с ftp архивов raspbian. Форматируем через SD-formatter нашу карточку, а потом с помощью BalenaEtcher записываем образ.

Запись образа balena etcher

Настройка Raspbian для запуска экрана 3.5 TFT на Raspberry Pi.

Первой задачей было запустить экран, потому что сразу он конечно не заработал. Экран выбрал самый популярный с тачем XPT2046 и разрешением 480х320.

3.5tft raspberry display

После установки образа, первым делом нужно включить SSH. Я соединяю raspberry по hdmi, и подсоединяю клавиатуру. Вводим sudo raspi-config в терминале. Далее в меню interfacing options – далее в SSH. Выбираем, что хотим включить – yes. После этого, от телевизора можно отключиться и перейти в терминал на домашнем компьютере.

raspberry ssh enabled

Теперь надо скачать драйвера дисплея и установить их. Авторизуемся по SSH (у меня стандартный адрес малины 192.168.1.3, но всегда можно найти через advanced IP scanner). Скачиваем драйвера, собираем их. Интернет обязательно должен быть на raspberry в этот момент.

git clone https://github.com/waveshare/LCD-show.git
cd LCD-show/
chmod +x LCD35-show
./LCD35-show

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

Экран tft 3.5 на raspberry как запустить

Подключаем и проверяем звук на Raspberry PI.

Далее перейдем к звуку, ведь наш Pipboy должен более реалистичным. Я порезал джек 3.5 от старой гарнитуры, и усилитель тоже купил другой (УНЧ 2x3W PAM8403,Uпит=2,5-5V DC), не такой как в инструкции adafruit. Так как, звук скорее всего моно, а контакт микрофона мне и вовсе не нужен, я его объединил с землей. Каналы левый-правый тоже объединил. Динамик выбрал такой – Динамик FR-0004 (DXP4ON-A) 8ohm 0,25W d40mm. В итоге схема выглядит так:

Подключение звука к raspberry

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

pipboy3000 - собираем

Проверить звук на Raspbian очень просто. Скачаем любой пример аудиозаписи и запустим на воспроизведение

wget https://download.samplelib.com/wav/sample-6s.wav
aplay sample-6s.wav

Настраиваем игру Pipboy с репозитория

Оригинальная игра-оболочка лежит в репозитории, который к сожалению не обновлялся очень давно. Но начал я с него, чтобы посмотреть, что там. Написан он на pygame, еще на питон 2.7. Образ Raspbian я неспроста выбрал, потому-что в нем по умолчанию именно версия 2.7. Давайте скачаем этот репозиторий, и установим зависимости. Я не стал делать виртуальное окружение, потому-что кроме этой игры мы ничего запускать не будем.

git clone https://github.com/sabas1080/pypboy.git
cd pypboy
pip install -r requirements.txt

Запускать скрипт пока не будем. Настроим графику. Редактируем файл конфига через sudo nano config.py и меняем параметры разрешения

import pygame

WIDTH = 480
HEIGHT = 320

Также настроим запуск во весь экран. Перейдем в папку game и откроем файл core.py на редактирование

cd game
sudo nano core.py

Теперь делаем замену строчки:

self.window = pygame.display.set_mode((width, height))
на 
self.window = pygame.display.set_mode((width, height), pygame.FULLSCREEN)

Есть интересный момент, если вы сейчас попробуете запустить главный файл скрипта main.py через ssh, то ничего не выйдет. Получите ошибку – pygame.error: Unable to open a console terminal. Чтобы этого избежать и запустить приложение с графикой удаленно через SSH, нужно настроить запуск на удаленном дисплее. Сначала выполнить export DISPLAY=:0 (где 0 – номер дисплея). А затем запустить скрипт из родительской директории репозитория

export DISPLAY=:0
python main.py

На данном этапе, все должно запуститься, с изображением и звуком

pipboy 3000 первый запуск

Можно закомментить GPIO в config.py, и посмотреть меню с клавиатуры. Уже здесь я испытал восторг от этого теплого меню детства. Но радость быстро прошла – карта странно работает, да и функций не так то много. В следующей статье мы настроим юнит systemd для автоматического запуска приложения при старте компьютера, подключим периферию для управления и попробуем пару форков проекта pipboy, которые обновляли под современные реалии.

pipboy 3000 map