ライン

ビデオ出力対応 Raspberry Pi PicoでBASICプログラミング MachiKania type PU

ライン

2024年12月28日
最終更新日 2025年4月12日
Raspberry Pi Pico 2 W対応し、システムクロック周波数変更が可能なVer 1.52を公開

 MachiKania type PUは、Raspberry Pi PicoやPico W、Pico 2等でBASICプログラムを高速に動作させることができるオープンなプラットフォームです。従来モデルMachiKania type Pに搭載の小型液晶の代わりにビデオ出力機能を搭載し、テレビ等の映像機器を利用したプログラミングを実現します。言語仕様はMachiKania type Pに準拠しています。またRP2040やRP2350搭載の切手サイズの小型マイコン基板でも利用可能なMachiKania type PU miniは組み込み用途にもお勧めです。

Raspberry Pi Pico液晶搭載モデルMachiKania type P」はこちら
PIC32MX上位モデルMachiKania type M」はこちら
PIC32MX下位モデルMachiKania type Z」はこちら

トップ画像


MachiKania type PUとは

 MachiKaniaシリーズはKM-BASICの作者Katsumi氏と共同開発したBASICコンパイラ搭載のマイコンシステムです。MachiKania type PUは液晶搭載モデルMachiKania type Pの特長と互換性を保ちながら、以下の特長を備えたモデルです。
 ・ビデオ出力端子を搭載し、テレビ等の画面に表示が可能(NTSCカラーコンポジット対応)
  ビデオ信号はソフトウェアで生成しているため専用IC等は不要
 ・横42x縦27文字のカラーテキスト、横336x縦216ドットのカラーグラフィックのほか、モノクロ横80文字モードを利用可能
 ・ピン数の少ない切手サイズのマイコン基板でも各種I/O機器を接続できるMachiKania type PU miniを用意
 その他の特長はMachiKania type Pのページを参照してください。

MachiKania type PU

MachiKania type PU miniの製作例

温湿度表示

温湿度センサとキャラクタ液晶を接続


MachiKania type PUの作り方

 MachiKaniaシリーズは回路図、ソースプログラムとも公開されたオープンなシステムで以下の手順で製作します。
 1. ハードウェアの製作
 2. SDカードに必要ファイルをコピー
 3. Raspberry Pi Pico等のマイコンにシステムプログラムの書き込み

1.ハードウェアの製作

 回路図を参考にご自身で基板やブレッドボードなどで製作することができます。また販売されているMachiKania type P用プリント基板を流用して製作することも可能です。Raspberry Pi Picoシリーズを利用したMachiKania type PUと、その他のRP2040/RP2350を搭載した小型基板での製作を想定したMachiKania type PU miniで回路が異なりますので、使用するマイコンに合わせて製作してください。
(1)MachiKania type PU
 液晶搭載モデルMachiKania type Pの回路から液晶を削除し、代わりにビデオ出力インターフェイスを追加したもので、それ以外はMachiKania type Pと共通です。ビデオ出力はGP15端子に抵抗とコンデンサを付けた形となります。また、MachiKania type Pでは液晶の背面に搭載されているSDカードスロットを利用する場合が多くありましたが、MachiKania type PUでは液晶を使わないためGP16-GP19にMMCカード(SDカード)スロットを接続する必要があります。GP16に接続されている10KΩのプルアップ抵抗は必須です。
 製作はブレッドボード等でも可能ですが、以下で販売されているMachiKania type Pのプリント基板を流用することも可能です。その場合、液晶接続用端子のGP15からビデオ出力用回路に接続します。同様にGP16-GP19をカードスロット回路に接続します。
オレンジピコショップ基板
 オレンジピコショップ独自の基板と部品キットです。別売のゲームキーボードはMachiKania type PUでも利用できます。
注意 キットに付属のRaspberry Pi Pico互換ボード YD-RP2040ではUSBキーボード接続ができません。USBキーボードを利用する場合は純正のRaspberry Pi PicoやPico 2、Pico Wをご用意ください。なお、基板上のUSB-KBコネクタ端子(タイプA)は使用できません。キーボードはRaspberry Pi PicoのUSB端子(マイクロB)に接続してください。
工作魂さん作製基板
 工作魂さんによるオリジナル基板です。基板上にGROVE端子を搭載しているなどの特長があります。
 電子工作ステーションにて販売

製作例

Raspberry Pi Pico2での製作例


回路図

MachiKania type PU回路図 (クリックで拡大)


オレンジピコショップ基板

オレンジピコショップ基板


工作魂さん作製基板

工作魂さん作製基板

(2)MachiKania type PU mini
 外部入出力ピン数の少ない切手サイズの小型基板、Seeed Studio製XIAO RP2040やPimoroni製Tiny 2040、Waveshare製RP2040-ZeroおよびこれらのRP2350搭載品でMachiKania type PUを利用するために、Raspberry Pi Picoシリーズ用とは異なるピン接続となっています。
 右の回路図では3種類のマイコン基板に対応した回路となっていますが、お手持ちのいずれかのマイコン基板の部分を参照して製作してください。なお、ピン数の関係で利用できるボタンに制限があり、XIAO RP2040/RP2350ではSTARTボタンのみ、Tiny 2040/2350ではSTARTボタンとFIREボタンのみが利用可能です。上下左右ボタンが使えないためキーボードを接続してご利用ください。また、XIAO RP2350ではXIAO RP2040のGP29ピンの場所がGP5となっているため、GP5にFIREボタンをつなぐことも可能です。
 シンプルな回路のため右写真のようにブレッドボード上で製作することも可能ですが、この回路図を使って製作したプリント基板を秋葉原デパート1Fの「PCN秋葉原」にて1枚330円(税込)で購入することもできます。(2024年12月現在)
(2025.1.28) プリント基板メーカーに発注可能なMachiKania type PU miniのプリント基板ガーバーデータファイルを公開しました。

MachiKania type PU miniプリント基板
ガーバーデータファイルダウンロード

type PU mini基板説明書

MachiKania type PU mini基板説明書(クリックで拡大)

回路図

MachiKania type PU mini回路図(クリックで拡大)


RP2040-Zeroとブレッドボードでの製作例

RP2040-Zeroとブレッドボードでの製作例


MachiKania type PUプリント基板

PCN秋葉原で販売中のMachiKania type PU miniプリント基板

電源について
 Raspberry Pi PicoシリーズやRP2040/RP2350搭載小型基板等には電源回路が搭載されており、以下のいずれかの方法で給電が可能です。

 VBUS端子から給電
  USBコネクタにUSBキーボードを接続する場合、Raspberry Pi PicoシリーズのVBUS端子(40番ピン)に5.0Vを加えることでUSBキーボードおよび内蔵DC-DCコンバーターに電源を供給。XIAO RP2040等の小型基板の場合もVBUSまたは5Vと記載の端子で同様の動作。なお、PCとUSBケーブルで接続する際には電源オフすること

 USB端子から給電
  Raspberry Pi Pico等の基板上のマイクロUSB端子にPCやスマートフォン充電用ACアダプタなどで5V給電。この場合、USBキーボードは利用不可

 VSYS端子から給電(Raspberry Pi Picoシリーズのみ)
  VSYS端子(39番ピン)に1.8V〜5.5Vを加えることで内蔵DC-DCコンバーターが電源供給。電池等の低電圧の電源で、USBキーボードを利用しない場合などに有効

 いずれの場合にも3V3(OUT)端子(Raspberry Pi Picoの場合36番ピン)から3.3Vの出力が得られますので、消費電力の小さい機器への電源供給に利用できます。消費電力の大きい外部機器を接続する場合は適宜別の電源をご用意ください。

部品表
マイコン基板Raspberry Pi PicoシリーズまたはXIAO等のRP2040/2350搭載小型基板
ビデオ端子ビデオ出力用のRCAコネクタ
SDカードスロット変換基板を利用すると便利
タクトスイッチ上下左右、FIRE、START用およびリセット用など必要に応じて
抵抗10KΩ x1(PULL UP用)
1KΩ x1(ブザー用)、75Ω(ビデオ出力用)
コンデンサ積層セラミック 0.1μF(パスコン用)、560pF(ビデオ出力用)
ブザー必要に応じて圧電スピーカなど自動発振しないもの。テレビ等の音声端子に接続する場合不要
電源5V ACアダプタなど(USB端子からの給電も可)

その他必要なもの
パソコンRaspberry Pi Pico等のマイコンへの書き込みに必要
MMCまたはSDカード容量は1GBもあれば十分
SDカードリーダライタパソコンで読み書きできるもの
USBケーブルマイコンとパソコンを接続ために必要。充電専用ではないもの
映像表示機器NTSC対応のビデオ入力端子のあるもの
USBキーボードUSBキーボード接続版を利用する場合
USB On-The-Go変換アダプタUSBキーボードを利用する場合必要
WiFiルータRaspberry Pi Pico Wでネットワーク接続する場合


2.SDカードに必要ファイルをコピー

 空のSDカードに以下のファイルをパソコンからコピーしてください。
 ・LIBディレクトリ
 ・MACHIKAP.INI
 ・その他実行したいBASICソースプログラム
  およびサンプル画像ファイル
 MACHIKAP.INIファイルは起動時の設定を行うファイルです。MachiKania type Pと共通ですので詳細はMachiKania type Pのページを参照してください。
 LIBディレクトリはBASICプログラムから利用可能なクラスライブラリ集です。

SDカードにファイルコピー

SDカードにファイルコピー

3.Raspberry Pi Pico等のマイコンにシステムプログラムの書き込み

 Raspberry Pi Pico等の基板上のBOOTSELボタンを押しながら、パソコンのUSB端子とRaspberry Pi Pico等のマイクロUSB端子をケーブルで接続します。(基板に直接電源供給する機能がある場合はオフの状態で行ってください。)
 接続後すぐにボタンから手を離すとパソコン画面上にリムーバブルメモリのウィンドウがRPI-RP2等のドライブとして表示されるので、ダウンロードしたpuerulus.uf2(PCでプログラミング版)またはpuerulus_kb.uf2(USBキーボード利用版)ファイルをドラッグアンドドロップでコピーします。コピーが終わると自動的にリムーバブルメモリのウィンドウが消えます。
 パソコン画面上にリムーバブルメモリのウィンドウが表示されない場合、ケーブルが充電専用のものでないか確認してください。
 これでMachiKania type PUのビデオ出力端子を映像機器のビデオ入力端子に接続すると画面に何らかの表示が行われます。何も表示されない場合は、組み立てに問題がないか確認してください。

Raspberry Pi Pico書き込み用ボタン

ボタン押しながらUSB接続


ダウンロード

 ここまでに紹介したシステムに関するファイルをダウンロードできます。インストールするバイナリファイル(uf2ファイル)は使用するマイコン基板の種類や使い方によってディレクトリを分けています。その他のファイルは共通です。

Download
(2025.4.12)
動作に必要なファイルとサンプルプログラム、ライブラリ、ドキュメント一式
[pico_ntsc] Pico用
[pico_w_ntsc] Pico W用
[pico2_ntsc] Pico 2用
[pico2_w_ntsc] Pico 2 W用
[xiao_ntsc] mini(rp2040)用
[xiao_rp2350_ntsc] mini(RP2350)用

各ディレクトリ配下の[embed]はメモリカード不要の組み込み用 詳細
puerulus.uf2MachiKania type PU BASICシステムの実行ファイル本体。Raspberry Pi Pico等をパソコンに接続して書き込む。PC connect機能対応によりパソコンからBASICプログラムを書き込み可能
purulus_kb.uf2USBキーボードが利用可能なMachiKania type PU BASICシステムの実行ファイル本体。Raspberry Pi Pico等をパソコンに接続して書き込む。内蔵エディタとUSBキーボードでプログラム作成と実行が可能
MACHIKAP.INIMachiKania type PU BASICシステムの設定ファイル。SDカードのルートにコピーする
[samples]ディレクトリBASICサンプルプログラム。SDカードのルートにコピーする(ルート以外も可)
[LIB]ディレクトリBASICで利用可能な各種クラスファイル集。LIBディレクトリをSDカードのルートにコピーして利用。各クラスの使用方法はそれぞれのディレクトリのhelp.txtファイルを参照
[documents]ディレクトリドキュメント類
[pcconnect]ディレクトリUSB接続したPCからBASICプログラムを更新するツール。詳細はMachiKania type PのPC connect機能について参照
Github自分でビルドする場合に必要なソースファイルなど(Githubにジャンプ)

 (2024.12.28)初版公開(Ver1.50)。
 (2025.2.22)SPI、UART、I2C関連命令で使用するGPIO番号を設定ファイルで指定できるVer1.51を公開。BASICバージョンKM-1508。テキストエディタの行番号表示バグ修正。クラスライブラリREGEXPを更新。
 (2025.4.12)Raspberry Pi Pico 2 W対応、システムクロック周波数を変更可能、グラフィックメモリ二画面対応のVer1.52を公開。BASICバージョンKM-1509。

使い方

MachiKania type PU BASICシステム

BASICプログラムの利用方法などはMachiKania type Pと共通のため、MachiKania type Pのページを参照してください。

外部接続端子について

 Raspberry Pi Picoシリーズを利用したMachiKania type PUと、小型マイコン基板を利用したMachiKania type PU miniで大きく異なります。
(1)MachiKania type PU
 MachiKania type Pと共通の16個の汎用入出力ポートが使用可能で、bit0〜bit15と番号を割り振っています。BASICの命令から1ビット単位、8ビット単位、16ビット単位で入出力が可能です。詳細はMachiKania type Pのページを参照してください。
(2)MachiKania type PU mini
 XIAO RP2040、Tiny 2040、RP2040-ZeroおよびそれらのRP2350搭載基板では右図の汎用入出力ポートが使用可能です。ただし、それぞれの基板で外部に出ていないピンは利用できません。BASICの命令で指定するI/O bit番号はGP0〜GP29の番号と一致しています。


MachiKania type PU miniのI/Oポート



システムクロック周波数の変更

(2025.4.12、Ver1.52以降で対応)
 通常のMachiKania type PUはシステムクロック周波数157.5MHzで動作していますが、RP2350搭載のRaspberry Pi Pico 2やRP2350-ZeroなどではBASICプログラム中でシステムクロック周波数を倍速の315MHzに変更することが可能です。これにより大幅な動作速度の向上が望めます。また、ソフトウェアで生成しているビデオ信号の精度も上がるためカラー表現がより滑らかとなります。ただし、Raspberry Pi Pico 2 Wでは通信機能が正常動作しません。
 315MHz以外の周波数に設定することも可能ですが、正しいビデオ信号が生成できないため画面出力ができなくなります。組み込み用途などで画像出力を行わない場合には利用可能です。 詳細はシステムダウンロードファイルの[documents]ディレクトリにあるcpuclock.txtファイルを参照してください。
【注意】 極端なオーバークロックはマイコンを損傷する恐れがあります。マイコン提供元の公式なサポート範囲を越える動作は自己責任で行ってください。

<プログラム記述例>
  SYSTEM 51,15
   コア電圧を1.15Vに設定

  SYSTEM 50,315000000
   システムクロック周波数を315MHzに設定



サンプル収録のRAYTRACE.BAS。315MHzでは驚異的な速度に



グラフィックのダブルバッファリング

(2025.4.12、Ver1.52以降で対応)
 ビデオ出力対応のMachiKania type PUではグラフィック用メモリを2画面分確保することが可能です。 表示画面と描画画面をそれぞれ指定することができるので、アニメーション表示する際に表示していない裏画面で消去と描画を行い、描画完了後に瞬時に表示を切り替えることで描画途中のチラつきがなくなります。
 表示画面と描画画面はUSEGRAPHIC命令の第二引数で指定します。
  USEGRAPHIC x, y
   y=0: 描画は領域1、表示も領域1
   y=1: 描画は領域2、表示は領域1
   y=2: 描画は領域1、表示は領域2
   y=3: 描画は領域2、表示も領域2
  x=3を指定すると以前に描画したグラフィックはクリアーされない

 システムダウンロードファイルの[samples]ディレクトリにダブルバッファリングを利用したサンプルプログラム「POLYGON.BAS」があります。上下左右ボタンでオブジェクトが滑らかに回転します。RP2350を搭載している場合はプログラム冒頭の「SYSTEM 51,15」「SYSTEM 50,315000000」の前の「REM」を削除してシステムクロック周波数を315MHzにするとより効果的です。

<プログラム記述例>
 USEGRAPHIC 2,2 グラフィックメモリ確保し利用開始
 F=1          第二引数指定用
 DO           繰り返し
  GCLS        全画面消去
  GOSUB DRAW   描画サブルーチン呼び出し
  USEGRAPHIC 3,F 描画と表示を入れ替え
  F=3-F        Fは1と2を繰り返す
  WAIT 1       60分の1秒ウェイト
 LOOP         DOに戻る

 LABEL DRAW
    ここに画面描画サブルーチンを記述
 RETURN


POLYGON.BAS



使用サンプル

 MachiKania type Pと互換性がありますので、MachiKania type P使用サンプルをご参照ください。
 ここでは、MachiKania type PUオリジナルのサンプルを掲載します。


秋月電子製LEDマトリクス (2025.3.30更新)

 秋月電子でアウトレット販売されている32x16ドットのLEDマトリクス基板を入手したのでMachiKania type PU miniで制御しました。右記ブロック図のような構成となっており、シフトレジスタを常時高速に更新することでダイナミック点灯を実現しています。
 元々は縦に1本、横に2本の計3本の16ビットシフトレジスタに同時に書き込んで制御することが想定されているようですが、各シフトレジスタの反対端がコネクタCN2に出力されているため、3本を直列につなげて1本のシフトレジスタにしました。こうすることで、外部ピンの少ないXIAO RP2040でも動作でき、しかもSPIインターフェイス機器に見立てて制御することができるようになります。さらに同じLEDマトリクス基板を横に並べて接続し、計96ビットのシフトレジスタにしました。
 基板の説明書(P.10〜)によるとこのシフトレジスタの最小クロック幅は1μ秒とあり、SPIの転送周波数にすると500KHzとなるのですが実際にどこまで耐えられるか試したところ20MHzでも問題なく動作しました。これだけ速度が出せれば単にLEDのオンオフだけでは面白くないので高速に切り替え制御を行うことで6階調表現を実現しました。実際にはタイマー割り込みで40μ秒ごとに1ライン分出力するようにしています。
(2025.3.30)20MHzでは動作不安定なため10MHzに変更しました。
 この基板ではシリアルデータ信号とクロックのほか、シフトレジスタからデータ取り込むLATCHとLEDへの電流をオン/オフするSTROBEの2本の信号を制御する必要がありますが、今回はどちらもGP0に接続しました。SPI命令で信号出力開始する前にHとし、出力完了でLにすることで信号送信中は全LEDをオフにしてちらつきを抑え、送信完了でラッチに取り込み同時にLED表示再開となります。もしこのH/Lの極性が逆だとSPIのCS(Chip Select)信号で代用でき、制御がよりシンプルになると思われるのでちょっと残念です。
 なお、SPIのクロック信号(SCK/GP2)とLED基板のCLOCKの間に120Ω程度の抵抗を直列に入れました。これがないとSDカードを認識しない場合があります。また、このプログラム実行中は常時割り込みでSPI0インターフェイスを制御しているため、MachiKania type PUのシステムで同じSPI0を使っているSDカードへのアクセスができません。設定ファイル(MACHIKAP.INI)でSPI命令で使用するポートを指定することができるため、SPI1のポートに変更すれば同時にアクセスできるかもしれません。

ダウンロード AKI-LED.BAS

秋月電子製LEDマトリクスx2枚

秋月電子製LEDマトリクスを2枚並べて制御

秋月電子LEDマトリクスブロック図

秋月電子LEDマトリクスブロック図(クリックで拡大)


接続図

MachiKania type PU miniとの接続図(クリックで拡大)

本実験ではLEDマトリクス基板を2枚使用していますが、1枚のみでも表示が半分となるだけでそのまま動作します。その場合、Board 2との接続部分を無視してください。






LEDマトリクスメッセージボード (2025.3.30更新)

 こちらも秋月電子でアウトレット販売されているLEDマトリクス基板を複数枚使って、インターネットで提供されているニュースタイトルをスクロール表示するメッセージボードを製作しました。イメージは新幹線社内のニュース表示電光板です。
 制御基板にMachiKania type PUのシステムを入れたRaspberry Pi Pico Wを載せ、連結基板を用いて複数枚のLEDマトリクス基板を接続し、固定しています。
 MachiKania type PUとしての機能を搭載しているので、普段はキーボードやビデオケーブルはつながず、ビデオ出力も停止した状態でニュースを表示させておき、メンテナンス時はUSBキーボードやモニタにつないでプログラム修正などを行うことができます。
 実用品としてプリント基板化したので、ガーバーデータファイルも公開しています。

 詳細はこちら(Github)

 本サンプルでは日本語表示にCKNJ16クラスライブラリ、HTTPやSSLプロトコル接続にWGETクラスライブラリを使用しています。
 CKNJ16クラスではSDカード内のフォントを読み込む際にSPIチャネル0を使用するため、タイマー割り込みで常時SPI命令で出力が必要なLEDマトリクス基板にはSPIチャネル1を使用するように設定変更しています。具体的にはMACHIKAP.INIファイルに以下の3行の記述を追加しています。
 SPIMISO=12
 SPIMOSI=11
 SPICLK=10
(2025.2.22)REGEXPクラスを利用することで「&」等の特殊文字表示に対応しました。REGEXPクラスはシステムVer 1.51以降に含まれるものをご利用ください。
(2025.3.30)SPI転送速度を20MHzから10MHzに変更しました。

4連結LEDマトリクスメッセージボード

アクリル仕上げの4連結LEDマトリクス基板にニュース表示

制御基板と連結基板

制御基板と連結基板の裏側にLEDマトリクス基板を搭載




Copyright (C) KenKen All Rights Reserved.