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シリーズは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シリーズは回路図、ソースプログラムとも公開されたオープンなシステムで以下の手順で製作します。
1. ハードウェアの製作
2. SDカードに必要ファイルをコピー
3. Raspberry Pi Pico等のマイコンにシステムプログラムの書き込み
回路図を参考にご自身で基板やブレッドボードなどで製作することができます。また販売されている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端子を搭載しているなどの特長があります。
電子工作ステーションにて販売
(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プリント基板ガーバーデータファイルダウンロード |
電源について
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でネットワーク接続する場合 |
空のSDカードに以下のファイルをパソコンからコピーしてください。
・LIBディレクトリ
・MACHIKAP.INI
・その他実行したいBASICソースプログラム
およびサンプル画像ファイル
MACHIKAP.INIファイルは起動時の設定を行うファイルです。MachiKania type Pと共通ですので詳細はMachiKania type Pのページを参照してください。
LIBディレクトリはBASICプログラムから利用可能なクラスライブラリ集です。
Raspberry Pi Pico等の基板上のBOOTSELボタンを押しながら、パソコンのUSB端子とRaspberry Pi Pico等のマイクロUSB端子をケーブルで接続します。(基板に直接電源供給する機能がある場合はオフの状態で行ってください。)
接続後すぐにボタンから手を離すとパソコン画面上にリムーバブルメモリのウィンドウがRPI-RP2等のドライブとして表示されるので、ダウンロードしたpuerulus.uf2(PCでプログラミング版)またはpuerulus_kb.uf2(USBキーボード利用版)ファイルをドラッグアンドドロップでコピーします。コピーが終わると自動的にリムーバブルメモリのウィンドウが消えます。
パソコン画面上にリムーバブルメモリのウィンドウが表示されない場合、ケーブルが充電専用のものでないか確認してください。
これでMachiKania type PUのビデオ出力端子を映像機器のビデオ入力端子に接続すると画面に何らかの表示が行われます。何も表示されない場合は、組み立てに問題がないか確認してください。
ここまでに紹介したシステムに関するファイルをダウンロードできます。インストールするバイナリファイル(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.uf2 | MachiKania type PU BASICシステムの実行ファイル本体。Raspberry Pi Pico等をパソコンに接続して書き込む。PC connect機能対応によりパソコンからBASICプログラムを書き込み可能 | |
purulus_kb.uf2 | USBキーボードが利用可能なMachiKania type PU BASICシステムの実行ファイル本体。Raspberry Pi Pico等をパソコンに接続して書き込む。内蔵エディタとUSBキーボードでプログラム作成と実行が可能 | ||
MACHIKAP.INI | MachiKania 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。
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の番号と一致しています。
(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に設定
(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
MachiKania type Pと互換性がありますので、MachiKania type P使用サンプルをご参照ください。
ここでは、MachiKania type PUオリジナルのサンプルを掲載します。
秋月電子でアウトレット販売されている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マトリクス基板を複数枚使って、インターネットで提供されているニュースタイトルをスクロール表示するメッセージボードを製作しました。イメージは新幹線社内のニュース表示電光板です。
制御基板に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に変更しました。