0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Wren6991/PicoDVI - RP2040を使用したHDMI映像出力

Last updated at Posted at 2024-11-23

概要

RaspberryPi Picoが発売されてかなりの時間が経過しました。
ソフトウェアもかなり成熟してきた印象があるので、今回はHDMIコネクタを使用した映像出力を試してみたいと思います。

注意

  • bad_applemandel-fullvistaは映像が乱れているため、正常な映像を確認できませんでした。
  • vista-paletteは再生できませんでした。

上記に関して、何らかの事前設定が必要な可能性があるため、ご存じの方はコメントいただけますと幸いです。

環境

  • M1 macbook

    • macOS Ventura 13.7.1
  • Parallels Desktop 19 for mac

    • バージョン 19.4.1 (54985)
    • Debian GNU Linux 12 ARM64を使用
  • 使用したボード (RP2040を使用)

リポジトリ

ビルド手順

リポジトリのクローン
(リポジトリ更新で環境が変化する可能性もあるため、現時点で動作確認の取れた最新バージョンで固定)

mkdir work_dir && cd work_dir
git clone https://github.com/Wren6991/PicoDVI.git
cd PicoDVI
git checkout 62c07fb6401187a25cff8edc71650705887a7cb4

cd .. 
cd pico-sdk
git clone https://github.com/raspberrypi/pico-sdk.git
git checkout efe2103f9b28458a1615ff096054479743ade236

pico-sdk

#unix-command-lineを参考に事前準備↓

sudo apt install cmake && \
         gcc-arm-none-eabi && \
         libnewlib-arm-none-eabi && \
         libstdc++-arm-none-eabi-newlib

PicoDVI

Buildingページを参考にビルド作業を実施

cd work_dir/PicoDVI/software
mkdir build
cd build

cmake \
-DPICO_SDK_PATH=../../../pico-sdk \
-DPICO_COPY_TO_RAM=1 \
-DDVI_DEFAULT_SERIAL_CONFIG=waveshare_rp2040_pizero \
.. 

make -j$(nproc)

cmake後のビルドオプション

  • -DPICO_SDK_PATH=/path/to/sdk
    • pico-sdkの場所を入力
  • -DPICO_PLATFORM=rp2350
    • デフォルト: rp2040
    • オプションに含めない場合はデフォルトが自動選択される
  • -DPICO_COPY_TO_RAM=1
    • DVI機能を使用する際は必要
    • ここに記載あり→Building
  • -DDVI_DEFAULT_SERIAL_CONFIG=pico_sock_cfg
    • DVI出力に使用するボードの設定情報を選択する
    • ここに記載あり→#support-for-different-boards
    • Waveshare RP2040-PiZeroなら
      • -DDVI_DEFAULT_SERIAL_CONFIG=waveshare_rp2040_pizero
    • Pimoroni Pico DV Demo HDMIなら
      • -DDVI_DEFAULT_SERIAL_CONFIG=pimoroni_demo_hdmi_cfg

ボードに書き込み

makeコマンド実施後、buildディレクトリ以下のappsに格納されている.uf2を書き込む
↓キャプチャーボードでtiles_parallax.uf2の映像を取り込んだ様子
スクリーンショット 2024-11-23 17.38.11.png

↓キャプチャーボードでhello_dvi.uf2の映像を取り込んだ様子
スクリーンショット 2024-11-23 17.41.45.png

↓キャプチャーボードでsprite_bounce.uf2の映像を取り込んだ様子
スクリーンショット 2024-11-23 17.42.32.png

↓キャプチャーボードでtiles_and_sprites.uf2の映像を取り込んだ様子
スクリーンショット 2024-11-23 17.43.28.png

↓キャプチャーボードでchristmas_snowflakes.uf2の映像を取り込んだ様子
スクリーンショット 2024-11-23 17.44.12.png

おまけ

bad_apple

事前準備

コード書き換え

uf2convからpicotoolを使用するように変更

PicoDVI/software/apps/bad_apple/video/mkframes.sh

#!/bin/bash
set -ex

rm -rf raw rle pack.bin pack.uf2

mkdir raw
ffmpeg \
	-ss 00:00:05.5 -to 00:00:12.5 \
	-i src.mkv \
	-f lavfi -i color=gray:s=1920x1080 \
	-f lavfi -i color=black:s=1920x1080 \
	-f lavfi -i color=white:s=1920x1080 \
	-filter_complex "threshold,fps=30,crop=1440:1080:240:0,scale=960x720" \
	raw/frame%04d.png

mkdir rle
make -f packframes.mk -j$(nproc)

cat $(find rle -name "*.bin" | sort) > pack.bin

- #uf2conv -f rp2040 -b 0x10010000 pack.bin -o pack.uf2
+ picotool uf2 convert pack.bin -t bin pack.uf2

もし、picotoolでエラーになる場合は、下記を参考にpicotoolをビルドしパスに追加してください。
https://forums.raspberrypi.com/viewtopic.php?t=358951#p2152829

再生する動画の準備

PicoDVI/software/apps/bad_apple/video以下にsrc.mkvのファイル名で配置

ビルドToolのインストール

cd work_dir/PicoDVI/software/apps/bad_apple/video

sudo apt install ffmpeg

python3 -m venv picoenv
source picoenv/bin/activate
pip install Pillow

ビルド

./mkframes.sh

書き込み手順

1.work_dir/PicoDVI/software/build/apps/bad_appleにある、bad_apple.uf2を書き込み
2.work_dir/PicoDVI/software/apps/bad_apple/videoにあるpack.uf2を書き込み

bad_apple.uf2pack.uf2を再生した様子
スクリーンショット 2024-11-23 20.26.37.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?