1
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?

ラズパイPicoでLEDマトリクスにMP4動画データ表示

Last updated at Posted at 2025-10-23

0. 概要

ドットマトリクスLED(WAVESHARE-20591)にRaspberry Pi Picoを使用してmp4ファイルの動画データを表示しました。
YouTube

vlcsnap-2025-10-21-22h14m53s040.png

1. 成果物

ソースコード・バイナリ・使い方

2. 動作環境

  • マイコン基板:Raspberry Pi Pico
  • ドットマトリクスLED:WAVESHARE-20591
  • PC
    • OS:Windows11またはWindows10
      ※.NET Framework 4.X(4.6.2以上)がインストールされている必要がある。(Windows11はデフォルトでこの条件を満たす。)

3. WAVESHARE-20591の仕様

  • 64×32ドット
  • RGB各2階調
  • Raspberry Pi Picoを装着可能

4. FWの仕様

  • 画面のリフレッシュレート:30Hz

5. データの流れ

  • ①PCでmp4ファイルを読み込んでマトリクスデータに変換
  • ②PCからPicoにマトリクスデータをUSB送信
  • ③PicoがマトリクスLEDの表示を更新

6. mp4⇒マトリクスデータ変換のための画像処理

  • ①mp4の画像が縦長の場合、左に90度回転して横長にする。
    • ※WAVESHARE-20591が横長のため。
  • ②画像の中央から幅:高さ=2:1で切り取り
    • ※WAVESHARE-20591の幅:高さ=2:1のため。
  • ③画像を64×32ピクセルにリサイズ
    • ※WAVESHARE-20591が64×32ドットのため。
  • ④画像に対して鮮鋭化フィルタを適用。
    • ※64×32ピクセルは画素数が少ない(細部の情報が少ない)ので、ぼやけて見えがちなため、その対策としてエッジを強調する。
  • ⑤画像のRGB成分それぞれに大津の二値化を適用。
    • ※WAVESHARE-20591がRGB各2諧調のため。

7. 画像のリフレッシュレート30Hzを保つための処理

USBのアイソクロナス転送は実装が手間なので簡単な仮想COMを使用します。

  • ①PicoのFWについて、TinyUSBのUSB-CDCの受信バッファサイズ:CFG_TUD_CDC_RX_BUFSIZEをカスタマイズして約30KBに増大。
    • 備考
      Pico SDKで、TinyUSBのUSB-CDCのカスタマイズしたバッファサイズを定義したヘッダファイルを使用する場合、例としてCMakeLists.txtに以下のように記述する。
      target_compile_definitions(PicoMtrx PUBLIC
      	CFG_TUSB_CONFIG_FILE="my_tusb_config.h"
      )
    
  • ②PicoのFWについて、30枚分のマトリクスデータを保存できるキューバッファを2つ用意。(バッファA, バッファB)
  • ③PCからPicoに仮想COMで30枚分のマトリクスデータを送信する。
    • PicoはそれをバッファAで受信する。
  • ④PicoはバッファAのデータを参照してドットマトリクスの表示を更新。
  • ⑤ ④の処理と並列して、PCからPicoに仮想COMで30枚分のマトリクスデータを送信する。
    • PicoはそれをバッファBで受信する。
  • ⑥PicoはバッファBのデータを参照してドットマトリクスの表示を更新。
  • ⑦ ③~⑥を繰り返す。
1
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
1
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?