2022年8月27日
最終更新日 2025年4月12日
Raspberry Pi Pico 2 W対応し、システムクロック周波数変更が可能なVer 1.52を公開
MachiKania type Pは、安価なRaspberry Pi Picoを利用してBASICプログラムを動作させることができる、オープンプラットフォームです。
BASICプログラムは実行時に自動的にコンパイルされるので高速動作を実現しています。従来のMachiKania type ZやMachiKania type Mとも互換性があるため、過去のプログラムも簡単に動作させることができます。I/O機器制御にも対応しているので、組み込み用途にも適しています。ぜひ一度お試しください。
(2023.9.30) WiFi対応のRaspberry Pi Pico Wにも対応し、様々なネットワーク機能を利用できるようになりました。
(2024.10.6) 高速でRAM容量が倍増したRP2350搭載のRaspberry Pi Pico 2に対応しました。
(2025.4.12) RP2350搭載したWiFi対応のRaspberry Pi Pico 2 Wに対応しました。
MachiKania type Pをビデオ出力に対応させた「MachiKania type PU」はこちら
PIC32MX上位モデル「MachiKania type M」はこちら
PIC32MX下位モデル「MachiKania type Z」はこちら
MachiKaniaシリーズはKM-BASICの作者Katsumi氏と共同開発したBASICマイコンシステムです。
MachiKania type Pでは以下のようなことができます。
・BASICコンパイラによりBASICプログラムを高速動作させることができます。
・ハードウェアもソフトウェアも公開されているので、全て自分で製作することができます。
・MMCやSDカードにプログラムやデータを保存したり、パソコンとやり取りしたりできます。
・320×240ドットのカラーグラフィック液晶画面に自由に描画が可能です。
・多数の入出力ポートを備え、BASICから外部接続機器の制御ができます。
・割り込みやタイマーの利用が可能なため、リアルタイムな機器制御が可能です。
・32ビット単精度の浮動小数点演算をBASICでサポートし、各種の数学関数が使えます。
・構造化プログラミングに対応しており、GOTO文を使わないプログラムが作れます。
・オブジェクト指向プログラミングが可能です。
・簡単に使える様々なライブラリを用意しています。ライブラリはBASICで記述し、ユーザによる追加も可能です。
・従来のMachiKaniaシリーズとBASICの互換性があるので、従来プログラムを簡単に動作させることができます。
・PCにUSB接続してプログラムを更新したり(Ver1.10以降)、USBキーボードを接続して直接プログラムを作成することが可能です(Ver1.20以降)。
・WiFi接続によるネットワーク対応プログラムを作成できます(Ver1.30以降、Raspberry Pi Pico W利用時)。
以下の手順で製作します。
1. ハードウェアの製作
2. SDカードに必要ファイルをコピー
3. Raspberry Pi Picoにシステムプログラムの書き込み
オレンジピコショップで独自の基板と部品キットがあります。液晶、ゲームキーボードは別売です。
その他関連部品
注意 キットに付属のRaspberry Pi Pico互換ボード YD-RP2040ではUSBキーボード接続ができません。USBキーボードを利用する場合はRaspberry Pi Picoボードを別途ご用意ください。なお、基板上のUSB-KBコネクタ端子(タイプA)は使用できません。キーボードはRaspberry Pi PicoのUSB端子(マイクロB)に接続してください。
WiFi接続機能を利用する場合Raspberry Pi Pico Wボードをご用意ください。
MachiKaniaシリーズは回路図、ソースプログラムとも公開されたオープンなシステムです。回路図を参考にご自身で基板やブレッドボードなどで製作するか、上述のオレンジピコショップ版をご利用ください。
液晶について
利用可能な液晶ディスプレイは、解像度320x240ドット、コントローラがILI9341でSPI接続のものとなります。
参考 本ページ掲載写真の使用品はこちらです。
電源について
Raspberry Pi Picoの基板には電源回路が搭載されており、以下のいずれかの方法で給電が可能です。
USB端子から給電
Raspberry Pi Pico基板上のマイクロUSB端子にスマートフォン充電用ACアダプタなどで5V給電
VSYS端子から給電
VSYS端子(39番ピン)に1.8V〜5.5Vを加えることで内蔵DC-DCコンバーターが電源供給
VBUS端子から給電
USBコネクタにUSBキーボードを接続する場合、VBUS端子(40番ピン)に5.0Vを加えることでUSBキーボードおよび内蔵DC-DCコンバーターに電源を供給。PCとUSBケーブルで接続する際には電源オフすること
いずれの場合にも3V3(OUT)端子(36番ピン)から3.3Vの出力が得られますので、液晶ディスプレイや消費電力の小さい機器への電源供給に利用できます。消費電力の大きい外部機器を接続する場合は適宜別の電源をご用意ください。
ボタンについて
操作用の上下左右とFIRE、STARTの6個のボタンは作例では外付け基板に配置し、ケーブル接続していますが、液晶含む本体基板上に配置することも可能です。液晶の縦横変更で上下左右の向きが変わりますが、後述の設定ファイルにより液晶の向きに合わせボタンの縦横を自動で入れ替えることができます。
Raspberry Pi Pico | 本体。WiFi接続する場合Raspberry Pi Pico W |
グラフィック液晶ディスプレイ | ILI9341搭載QVGA(320x240)でSPI接続のもの |
SDカードスロット | 液晶ディスプレイ背面に搭載のものでも可 |
タクトスイッチ | 上下左右、FIRE、START用計6個 リセット用1個 |
抵抗 | 10KΩ x1(PULL UP用) 1KΩ x1(ブザー用) |
コンデンサ | 積層セラミック 0.1μF x1(パスコン用) |
ブザー | 圧電スピーカなど自動発振しないもの |
電源 | 5V ACアダプタなど(USB端子からの給電も可) |
パソコン | Raspberry Pi Picoへの書き込みやプログラム作成に必要 |
MMCまたはSDカード | 容量は1GBもあれば十分 |
SDカードリーダライタ | パソコンで読み書きできるもの |
USBケーブル | Raspberry Pi Picoとパソコンを接続ために必要。充電専用ではないマイクロUSB端子のもの |
USBキーボード | Ver1.20以降でUSBキーボード接続版を利用する場合のみ |
USB On-The-Go変換アダプタ | Ver1.20以降でUSBキーボードを利用する場合必要 |
WiFiルータ | Ver1.30以降でRaspberry Pi Pico Wでネットワーク接続する場合 |
空のSDカードに以下のファイルをパソコンからコピーしてください。
・LIBディレクトリ
・MACHIKAP.INI
・その他実行したいBASICソースプログラム
およびサンプル画像ファイル
MACHIKAP.INIファイルは起動時の設定を行うファイルです(詳細は後述)。
LIBディレクトリはBASICプログラムから利用可能なクラスライブラリ集です。
Raspberry Pi Pico基板上の白いボタンを押しながら、パソコンのUSB端子とRaspberry Pi PicoのマイクロUSB端子をケーブルで接続します。(基板に直接電源供給する機能がある場合はオフの状態で行ってください。)
液晶画面が白く光ればボタンから手を離します。その後パソコン画面上にリムーバブルメモリのウィンドウがRPI-RP2ドライブとして表示されるので、ダウンロードしたphyllosoma.uf2ファイルをドラッグアンドドロップでコピーします。コピーが終わると自動的にリムーバブルメモリのウィンドウが消え、MachiKania type Pの液晶に先ほどコピーしたカード上のファイル選択画面が表示されます。
パソコン画面上にリムーバブルメモリのウィンドウが表示されない場合、ケーブルが充電専用のものでないか確認してください。
コピー完了後も液晶画面が正常表示されない場合は、組み立てに問題がないか確認してください。
(2023.1.28追加) USBキーボードを接続する場合は、phyllosoma_kb.uf2ファイルをドラッグアンドドロップしてください。最初はキーボードが接続されていないため、キーボードが見つからないというメッセージの後ファイル選択画面が表示されますが、ケーブルを外してUSBキーボードを接続し、電源オンすることでエディタ画面が表示されます。
(2024.10.6追加) 初代Raspberry Pi PicoとRaspberry Pi Pico W、Raspberry Pi Pico 2ではそれぞれコピーするuf2ファイルが異なります。保存されているディレクトリ名を参考にして適切なファイルをコピーしてください。
ここまでに紹介したシステムに関するファイルをダウンロードできます。
Download (2025.4.12) |
動作に必要なファイルとサンプルプログラム、ライブラリ、ドキュメント一式 | ||
[pico_ili9341] [pico_w_ili9341] [pico2_ili9341] [pico2_w_ili9341]ディレクトリ Raspberry Pi Pico、Pico 2、Pico W、Pico 2 Wそれぞれ使用するマイコン名のディレクトリのものを使用 | phyllosoma.uf2 | MachiKania type P BASICシステムの実行ファイル本体。Raspberry Pi Picoをパソコンに接続して書き込む。PC connect機能対応によりパソコンからBASICプログラムを書き込み可能 | |
phyllosoma_kb.uf2 | USBキーボードが利用可能なMachiKania type P BASICシステムの実行ファイル本体。Raspberry Pi Picoをパソコンに接続して書き込む。内蔵エディタとUSBキーボードでプログラム作成と実行が可能 | ||
[embed]ディレクトリ | ソースファイル埋め込みツール関連。自動実行プログラムについて参照 | ||
MACHIKAP.INI | MachiKania type P BASICシステムの設定ファイル。SDカードのルートにコピーする | ||
[samples]ディレクトリ | BASICサンプルプログラム。SDカードのルートにコピーする(ルート以外も可) | ||
[LIB]ディレクトリ | BASICで利用可能な各種クラスファイル集。LIBディレクトリをSDカードのルートにコピーして利用。各クラスの使用方法はそれぞれのディレクトリのhelp.txtファイルを参照 | ||
[documents]ディレクトリ | ドキュメント類 | ||
[pcconnect]ディレクトリ | USB接続したPCからBASICプログラムを更新するツール。PC connect機能について参照 | ||
Download (2025.4.12) | ILI9488搭載LCDを使用するための実行ファイル集。詳細はreadme参照 | ||
Github | 自分でビルドする場合に必要なソースファイルなど(Githubにジャンプ) |
(2022.8.27)初版公開(Ver1.00)。
(2022.10.1)PC connect機能に対応したVer1.10公開。サンプルプログラムに立体迷路、スタートレック追加。クラスライブラリにWS2812B追加。
(2023.1.28)USBキーボード接続に対応したVer1.20公開。BASICバージョンKM-1502。C言語で作成したHEXファイルの実行にも対応。
(2023.9.30)Raspberry Pi Pico WのWiFi接続機能に対応したVer1.30公開。BASICバージョンKM-1503。ILI9488搭載LCDやSeeed XIAO RP2040対応版も公開。
(2023.10.28)浮動小数点表示時の不具合修正とEmbed化時のファイル対応を強化したVer1.31に更新。
(2024.2.17)ファイル関連命令の追加とファイル選択画面を強化したVer1.40を公開。BASICバージョンKM-1505。
(2024.10.6)RP2350搭載Raspberry Pi Pico 2に対応したVer1.41を公開。BASICバージョンKM-1506。
(2024.12.28)RP2040用とRP2350用クラスライブラリファイルを別々に指定できるVer1.50を公開。BASICバージョンKM-1507。
(2025.2.22)SPI、UART、I2C関連命令で使用するGPIO番号を設定ファイルで指定できるVer1.51を公開。BASICバージョンKM-1508。XIAO RP2040専用Embed uf2ファイルを廃止。クラスライブラリREGEXPを更新。
(2025.4.12)Raspberry Pi Pico 2 W対応、システムクロック周波数を変更可能なVer1.52を公開。BASICバージョンKM-1509。
MachiKania type P BASICシステムの使い方はとてもシンプルです。電源を入れるとSDカード上のファイル選択画面が液晶に表示されるので、上下左右ボタンで実行したいBASICプログラムを選択し、FIREボタンを押すと自動的にコンパイルされ実行されます。
また、STARTボタンを押すと選択したBASICのソースプログラムが表示され、下向きボタンでスクロールすることができます。このときもFIREボタンを押すと実行でき、STARTボタンを押すと元の画面に戻ります。
ファイル選択画面でSTARTボタンをしばらく押し続けると、液晶の縦横が変更となります。プログラム実行時もWIDTH命令による指定がなければ、このときの向きで実行されます。
Ver1.40以降ではSTARTボタンの長押しでファイルのサイズと更新日時表示切り替えも行われます。また、FIREボタンの長押しでファイルの表示順の切り替えを行います。MACHIKAP.INIファイルで初期状態の設定が可能です。(2024.1.7)
MachiKania type Pに搭載のBASICシステムは、Katsumi氏作成の構造化プログラミングに対応したBASICコンパイラ KM-1500(KM-BASIC)です。
BASICのソースプログラムはパソコン等で作成し、SDカードに保存してMachiKania type Pで実行します。利用可能なファイル名は英数8文字以内+「.BAS」となります。大文字小文字の区別はありません。
KM-BASICの使い方詳細は、こちらの資料を参考にしてください。
入門MachiKania |
(2023.1.28追加、Ver1.20以降で対応)
C言語で作成したプログラムのHEXファイルを選択して実行する機能を追加しました。HEXファイルの作成には専用のリンカースクリプトを使用してビルドする必要があります。詳細はこちらをご参照ください。
サンプルプログラム
パックマン テトリス VELUDDA
(2023.1.28追加、Ver1.20以降で対応)
Ver1.20からUSBキーボードが利用できるようになりました。これにより、PCなどを使用せずMachiKania type Pのみでプログラムを作成し、SDカードに保存や実行ができるようになりました。また、BASICのプログラムからもキー読み取りができるようになりました。
USBキーボードを利用する場合、専用の実行ファイルをRaspberry Pi Picoに書き込む必要があります。実行ファイル名は「phyllosoma_kb.uf2」です。従来の「phyllosoma.uf2」と同様の方法で書き込みを行ってください。
USBキーボードはRaspberry Pi PicoのマイクロUSBコネクタに、USB On-The-Go(USB OTG)変換ケーブル(変換アダプタ)を介して接続します。また、Raspberry Pi PicoのVBUSピン(40ピン)に+5Vの電源を供給する必要があります。
【注意】 Raspberry Pi Pico互換ボードでVBUS端子がない場合、USBキーボードは利用できません(YD-RP2040など)。純正Raspberry Pi Picoをご用意ください。
またUSBキーボードの種類によっては認識しないものもあります。その場合は別のキーボードをお試しください。
USBキーボードを接続した状態で起動すると、エディタ画面が起動します。ここでBASICのプログラムを入力し、F4キーを押すことでコンパイルと実行ができます。実行が終了すると再びエディタ画面に戻ります。作成したプログラムは必要であればF2キーでSDカードへの保存を行ってください。なお、プログラム実行時に一時ファイルとしてBASICプログラムは保存され、プログラム終了時に一時ファイルは削除されます。何らかの理由でプログラム終了しないままシステムを終了すると、次回起動時にこの一時ファイルが読み込まれますので、必要に応じて名前を付けて保存してください。
エディタ上で使用できる特殊キーは右表の通りです。Shift+矢印キーで範囲選択しコピー/ペーストする機能もあります。ただしコピーできるのは1画面に収まる範囲内に限定です。
実行中のBASICプログラムはEND命令やプログラムの最終行に到達することで実行終了となりますが、プログラム実行中に「Pause」キーを押すことで強制終了が可能です。ただし、実行中の内容により効かない場合があります。
USBキーボード接続版でキーボードを接続せずに起動すると、ボタンによるファイル選択画面が起動します。また、キーボードの種類によっては電源オン時やリセット時にUSBキーボードが認識されない場合があり、この場合もボタンによるファイル選択画面が起動しますが、何度か電源オンやリセットを繰り返すことでキーボードが認識されることがあります。ただし、キーボードの種類によっては全く認識されないものもありますので、その場合は別のキーボードをご用意ください。
使用終了時はそのまま電源をオフにして問題ありません。また、別のプログラムを実行したいときはリセットボタンでプログラム選択画面に戻ってください。プログラム終了後(最後まで実行したときやEND命令を実行したとき)にSTARTボタンを押すことでソフトウェアリセットすることもできます。
USBキーボード接続時にエディタ画面からプログラム実行した場合、END命令や「Pause」キーでプログラム終了すると再びエディタ画面に戻ります。必要に応じてSDカードにファイルを保存してから、電源オフしてください。
(2025.4.12)「Pause」キーの代わりに「Ctrl」+「Alt」+「Delete」キーでも終了できるようにしました。
MachiKania type Pでは16個の汎用入出力ポートが使用可能で、bit0〜bit15と番号を割り振っています。BASICの命令から1ビット単位、8ビット単位、16ビット単位で入出力が可能です。bit10以降はRaspberry Pi PicoのGPIO番号と異なりますのでご注意ください。
また、bit8〜bit13の6ポートは操作ボタンと共有、bit15は音声出力と共有しているため、組み込み用途などでボタンや音声出力をなくしたシステムの場合を除き、汎用的に使用可能なポートは9個となります。
これらのポートはBASICの命令から3チャンネルのPWM出力やI2Cインターフェイス、シリアル入出力(UART)、3チャンネルのアナログ入力(AD変換)としても利用可能です。右図のようにポートが割り振られています。
このほかにSPIインターフェイス専用端子があります。SDカードアクセスと共有のため、CS(チップセレクト)による使い分けを行う必要があります。CS端子は標準ではbit3を使用しますが、SPI命令使用時に個別に指定することも可能です。
UART、I2C、SPI関連命令で使用するGPIO番号は下記の設定ファイルで変更することができます。
MachiKania type P BASICシステムでは、SDカードのルートディレクトリに「MACHIKAP.INI」というファイルがあると、起動時にその内容に従って初期設定を行います。行頭に#記号を付けるとコメントアウトされます。
項目名 | 設定内容 |
AUTOEXEC | 自動起動ファイルの指定 |
HORIZONTAL LCD0TURN | 液晶画面横長で起動 |
VERTICAL LCD270TURN | 液晶画面縦長で起動 |
LCD180TURN | 液晶画面横長(上下反対)で起動 |
LCD90TURN | 液晶画面縦長(上下反対)で起動 |
LCD90TURN | 液晶画面縦長(上下反対)で起動 |
WIDTH80 WIDTH42 | エディタ起動時の画面解像度を指定(MachiKania type PU) |
NOROTATEBUTTONS | 画面回転時に上下左右ボタンを入れ替えない |
USBSERIALON | USB端子にシリアルデータを出力する |
USBSERIALOFF | USB端子にシリアルデータを出力しない |
LCDOUTON | 液晶への出力する |
LCDOUTOFF | 液晶への出力しない |
DEBUGWAIT2500 | デバッグモード起動時に2.5秒待つ |
NODEBUGWAIT2500 | デバッグモード起動時のウェイトなし |
LOOPATEND | BASICプログラム終了後STARTボタンでリセットする |
RESETATEND | BASICプログラム終了後すぐリセットする |
STARTWAIT | リセット後の待ち時間(ミリ秒、500以上) |
WAIT4KEYBOARD | USBキーボード認識の待ち時間(ミリ秒) |
106KEY | 日本語キーボードに設定 |
101KEY | USキーボードに設定 |
NUMLOCK | 起動時Num Lockキーオン |
CAPSLOCK | 起動時Caps Lockキーオン |
SCRLLOCK | 起動時Scroll Lockキーオン |
SPIMISO SPIMOSI SPICLK | SPI関連命令で使用するGPIO番号を指定 |
UARTTX UARTRX | UART関連命令で使用するGPIO番号を指定 |
I2CSDA I2CSCL | I2C関連命令で使用するGPIO番号を指定 |
RTCFILE | SDカード書き込み時にRTCの日付、時刻を書き込み |
TIMEZONE | タイムゾーンを指定 |
USEWIFI | WiFi機能を利用 |
WIFICOUNTRY | WiFi接続の国コード(JPまたはUS) |
WIFISSID WIFIPASSWD | 接続先WiFiのSSIDとパスワードを指定 |
HOSTNAME | ネットワークホスト名を指定 |
NTPSERVER | NTPサーバを指定 |
INITIALNTP | 起動時にNTPサーバに接続しRTCを初期化 |
SHOWTIMESTAMP | ファイル選択画面で更新日付等を表示 |
FILESORTBY | ファイル選択画面での表示順初期値設定 |
(2022.10.1追加、Ver1.10以降で対応)
MachiKania type PをPCにUSB接続しておくことで、PC上からBASICのソースプログラムを新規作成、更新することができます。
PC上でPC connectツールを立ち上げた状態でMachiKania type Pをリセットすると、指定したディレクトリのファイルがMachiKania type P上のSDカードに転送されます。転送後は通常通りファイル選択画面が表示されますので、更新されたファイルを選択し実行できます。
この機能によりBASICプログラムの開発が大変容易になります。エディタは普段使い慣れたものを利用することができ、
エディタでプログラム修正
上書き保存
MachiKania type Pのリセット
プログラムを選択して実行
を繰り返してBASICプログラムの開発を進めることができるようになります。
使い方は、まずPC上の適当なディレクトリにPC connect関連ファイル(Windows版ではa.exe, cygwin1.dll, connect.ini)を保存し、その配下にmachikapディレクトリを作成します。このmachikapディレクトリの中に転送したいファイルを置き、PC connectを起動、MachiKania type PをUSBで接続(接続済みの場合リセット)すると、ファイルがSDカードに転送されます。ファイルは複数あっても構いません。
利用する際、最初にMachiKania type Pの接続先をconnect.iniファイルで指定する必要がありますが、右図の方法で簡単に見つけることができます。USBの接続場所を変えた場合なども同様にして指定を変更してください。また、SDカード上のMACHIKAP.INIファイルで起動時間を少し長めに設定しないと認識できない場合もあります(STARTWAIT=700などに変更)。
MachiKania type PをリセットしてもPC上で認識されなくなった場合、ツール一度終了し起動し直してください。
PC connect機能の使い方の詳細はこちらのサイトをご参照ください。
(2023.1.28)USBキーボード接続版(実行ファイル:phyllosma_kb.uf2)ではPC connect機能は利用できません。
MachiKania type Pでは起動時に自動的に特定のBASICプログラムを実行する機能があります。
<方法1>
自動起動したいファイルをSDカードのルートディレクトリに「MACHIKAP.BAS」という名前で保存すると、システム起動時に自動的に読み込まれ実行されます。この名前は設定ファイルMACHIKAP.INIで変更することも可能です。
(2025.4.12)システム起動時にSTARTボタンを押下しておくと「MACHIKAP.BAS」を実行しないようにしました。
<方法2>
ツールを使うことでMachiKania type P BASICシステム自体に実行したいファイルや設定ファイルを埋め込むことができます。これにより、SDカードがなくても動作可能な組み込み用システムを実現することが可能となります。
詳細はこちらのサイトをご参照ください。
(2023.1.28)USBキーボード対応版についてはconvert_kb.phpファイルを起動してphyllosoma_kb.uf2ファイルに組み込む形となります。出力されるファイルはresult.uf2で同様です。
(2023.9.30)外部端子の少ないRP2040搭載小型基板でも使いやすいように、SPI関連命令で使用するGPIO番号を設定ファイルで指定できるようになりました。またSeeed XIAO RP2040でUARTが使える個別のuf2ファイルを用意しました。
(2025.2.22)UART、I2C関連命令も設定ファイルでGPIO番号を指定できるようになりました。これに伴いXIAO RP2040用個別uf2ファイルは廃止しました。
(2023.9.30追加、Ver1.30以降で対応)
WiFi接続に対応したRaspberry Pi Pico Wを使用すると様々なネットワーク機能を利用することが可能となります。ピン互換があるので、同じ回路で単純に差し替えることができます。
WiFi関連機能を利用するには、Raspberry Pi Pico Wへの専用実行ファイル(.uf2ファイル)の書き込みと、MACHIKAP.INIファイルへの項目追加を行います。設定項目の詳細はダウンロードしたMACHIKAP.INIファイルのコメントを参照ください。
ネットワーク接続に関する基本的な命令や関数のほか、簡単に利用するためのクラスライブラリを用意しました。
(2025.4.12)RP2350搭載のRaspberry Pi Pico 2 Wにも対応
<NTPクライアント機能>
設定ファイルに記述追加することで起動時に指定の時刻サーバに自動接続し、チップ内蔵のリアルタイムクロック(RTC)を設定することができます。また、SDカード上のファイルのタイムスタンプ機能にも対応しました。
<TCP/TLSクライアント機能>
HTTP、HTTPSサイトへの接続を簡単に行うWGETクラスにより、各種Webサービスを利用したアプリケーションの作成ができます。
サンプルプログラム
利用例
・世界の気象情報を取得して表示
・環境センサで取得した情報をサーバに送付
<TCPサーバ機能>
簡易Webサーバ機能を提供するHTTPDクラスにより、PCやスマートフォンなどからMachiKania type Pに接続した機器を制御することができます。
利用例
・PCからメッセージを送信し、MachiKania type Pに接続したLED表示器に表示 製作サンプル
・MachiKania type PのSDカード内のファイルをPCのブラウザ上で一覧表示しダウンロード プログラム例
(2025.4.12、Ver1.52以降で対応)
BASICプログラム中でRaspberry Pi Picoのシステムクロック周波数およびコア電圧を動的に変更するシステム命令を追加しました。これにより、通常より高速でマイコンを動作させるオーバークロックが簡単に行えるようになりました。BASICプログラム終了時やリセット時には標準のシステムクロック周波数およびコア電圧に戻ります。
標準ではRaspberry Pi Pico(RP2040)はコア電圧1.10V、システムクロック周波数133MHzで動作していますが、コア電圧1.15Vで200MHzまで公式にサポートされています。一般的にコア電圧を上げることでより高速なクロック周波数で動作させることができます。詳細はシステムダウンロードファイルの[documents]ディレクトリにあるcpuclock.txtファイルを参照してください。
また、Raspberry Pi Pico 2(RP2350)は標準では150MHzで動作しており、RP2040に比べオーバークロック耐性が強いようです。コア電圧1.30Vでは350MHz程度でも動作することが確認できています。(個体差あり。Raspberry Pi Pico 2 Wは高速動作には不向き)
【注意】
極端なオーバークロックはマイコンを損傷する恐れがあります。マイコン提供元の公式なサポート範囲を越える動作は自己責任で行ってください。
<プログラム記述例>
SYSTEM 51,12
コア電圧を1.15Vに設定
SYSTEM 50,200000000
システムクロック周波数を200MHzに設定
MachiKania BASICシステムのキャラクターコード表は右画面のようになっています。NEC製の往年の名機「PC-8001」とほぼ同じです。フォントについても参考にして作りました。
グラフィック文字($80〜$9F、$E0〜)はキーボードから入力する機能がありませんが、この表を参考にしてCHR$関数を使うことで利用可能です。
また、PCG(ユーザ定義文字)機能を使えば、全てのキャラクターのフォントパターンを自由に変更することができます。1キャラクターのサイズは8×8ドットです。ゲームのオリジナルキャラクター作りにも応用できます。
(2023.9.30追加、Ver1.30以降で対応)
MachiKania type Pの表示デバイスは解像度320x240ドットのILI9341搭載液晶ですが、480x320ドット表示できるILI9488搭載液晶も利用できるようになりました。利用するにはダウンロードしたZIPファイルから、ILI9488用の実行ファイル(uf2ファイル)を書き込んでください。BASIC命令もそのまま利用可能です。なお表示ドット数が2倍となり、またILI9488の仕様上1ドット当たりの転送ビット数が増えるため、表示速度がILI9341の液晶に比べて遅くなります。
MachiKania type Pを使ったサンプルを紹介します。ダウンロードしたソースプログラムは、SDカードにそのままコピーしてご利用いただけます。
今後随時増やしていく予定です。
クラスライブラリにある長倍数演算ライブラリ「BIGNUM」クラスを使用して、円周率を1000桁計算します。マチンの公式に基づいた計算をしています。
SDカードのLIBディレクトリ配下にBIGNUMディレクトリがあることを確認してください。
ダウンロード PI.BAS
LEDコントローラMAX7219搭載のLEDマトリクスを8連結した表示器を作成し、SPI接続してBASICから制御しました。
SPI関連命令があるのでで簡単に制御することができます。4連結の場合はSPIWRITE命令で8個並んでいる引数を4個にしてください。
<接続>
VCC -- +5V(外部電源、3.3Vでも動作します)
GND -- GND
DIN -- GP19 SD-DI(MOSI) / SPI TX(25番pin)
CS -- GP3 I/O bit3 / SPI CS(5番pin)
CLK -- GP18 SD-SCLK / SCK(24番pin)
ダウンロード MAX7219.BAS
MachiKania type PのKM-BASICにはI2Cのマスターとしての機能があります。
I2C接続の温湿度センサーAM2320と8×2キャラクター液晶AQM0802を同時に接続し、キャラクター液晶画面に温度と湿度を表示します。I2C接続の場合、プルアップ抵抗が必ず必要ですが、AQM0802のキット基板の抵抗(10KΩ)を利用する場合は省略可能です。(特にこの液晶はプルアップ抵抗値が低いと正しく動作しません。)
I2Cは各装置に固有のアドレスがあるため、複数の周辺装置に対して2本の線(SCLとSDA)で通信することができます。
MachiKania type PではSCL(クロック線)をIObit7、SDA(データ線)をIObit6に接続することで、BASICでI2C機器と通信することができます。簡単な使い方は下記でサンプルプログラムをダウンロードして参照ください。
Raspberry Pi PicoのI2Cは通信時にアドレスのほか、必ず1バイト以上のデータが必要です。プログラム13行目のI2CWRITE命令でAM2320の起動を行っていますが、アドレス$5Cの後ろにダミーで0を1つ付けています。このとき実際にはAM2320はNACKを返し、ダミーデータは送られません。
接続図
WiFi接続可能なRaspberry Pi Pico Wが発売される以前に行った実験です。
トランジスタ技術2016年9月号を参考に、WiFi機能搭載マイコンESP WROOM-02をシリアル(UART)接続しました。WiFiアクセスポイント経由で5秒おきに時刻サーバから日付と時刻を読み出して画面表示します。
ソースプログラムは以前MachiKania type M用に作成したものそのままです。
118行目のAT+CWJAPコマンド行の「ssid」「password」は実際のアクセスポイントのものに変更してください。
接続はWROOM-02のTxDをMachiKania type PのUART RX(GP5/7番ピン)、RxDをUART TX(GP4/6番ピン)に直結してください。
温湿度センサーAM2320および気圧センサーBMP280を利用した実用的な温湿度気圧ロガーです。
接続はどちらもI2Cで行い、一定時間ごとに測定した結果をグラフ描画します。また同時にファイルにも記録を行います。(TPHLOG.TXT)
測定間隔はソースプログラム9行目の変数Wの値で設定します。(60分のW秒間隔)
縦軸の目盛りは温度と気圧は自動的に適切な目盛りを計算して描画します。湿度は0%〜100%固定です。また最新の測定結果は画面上部にテキスト表示もします。グラフが画面右端まで到達すると、スクロールして左端の描画は消えますが、ファイルには記録が残ります。
BMP280のピン配置は製品によって異なるので注意
アナログ出力タイプの温度センサLM61BIZの出力を内蔵ADコンバーターで読み取り、1秒おきに温度を画面表示するシンプルなサンプルです。
MachiKania type PではANALOG関数で、Raspberry Pi Picoの内蔵12ビットADコンバーターを簡単に利用することができます。
ANALOG関数の引数は内蔵ADコンバーターの番号で0〜3を指定可能です。戻り値は0〜4095となります。
接続
LM61BIZ -- MachiKania
+Vs ---- VDD
Vout ---- IO bit14/ADC1 (32番ピン)
GND ---- GND
TO-92パッケージでは正面から見て1番左が+Vs端子です。
近年、街中でもよく見かけるフルカラーのLEDテープをMachiKania type Pで制御するサンプルです。
Worldsemi社のWS2812Bを数珠つなぎに接続したNeoPixelとも呼ばれるLEDテープは、LED1つずつにマイコンを内蔵しており、データ線にかかる信号のパルス幅で1と0を区別して24ビット分の色情報を受け取ります。データを受け取った次からは後ろのマイコンに信号を送ります。
MachiKania type Pに標準で提供しているWS2812Bクラスライブラリを使うことで、簡単にこのLEDテープを制御することができます。サンプルプログラムでは色相環を表示し回転させています。LEDの数は変数Nで設定変更できます。
利用する際には、SDカードのLIBディレクトリ配下に「WS2812B」ディレクトリがあることを確認してください。
(2024.10.6追加) Raspberry Pi Pico 2では動作しません。
LEDテープを使ってパックマンのデモ画面っぽいものを表現してみました。
利用する際には、SDカードのLIBディレクトリ配下に「WS2812B」ディレクトリがあることを確認してください。
(2024.10.6追加) Raspberry Pi Pico 2では動作しません。
最近街中でよく見かけるLEDディスプレイのパネルを制御しました。実験には64x32ドットのマトリクスのものを使用しています。HUB75と呼ばれるインターフェイスで詳細はこちらの実験記事を参照ください。RGB各2ビット(消灯含め4階調)で計64色を表現できるようにしました。サンプルプログラムでは、色のついた長方形および円を高速に描画しながら割り込みで常時信号出力を行っています。
高速処理が必要なため、信号出力は直接レジスタを制御しています。高速I/O処理の参考にしてください。
HUB75Eと呼ばれる縦のドット数が倍のパネルにも簡単に変更できるようにプログラムは書かれています。ただし、チラつきをなくすには割り込み処理間隔を縮める必要があり、画面の書き換え処理などを行う時間がほとんどなくなってしまいます。
信号出力端子としてIO bit8〜13も使用しているため、上下左右、START、FIREのボタンを使用することができません。ボタンのない組み込み環境での使用を想定しています。プログラムの起動はファイル名を「MACHIKAP.BAS」として自動起動するように設定してください。通常環境で実験する場合はボタンを押さないよう気を付けてください。
ボタンは押さないように注意
接続図
Raspberry Pi Pico WのWiFi接続機能を利用して、MachiKania type Pに接続したLEDマトリクスにPCやスマートフォンから送信したメッセージを表示します。
HTTPDクラスを利用してMachiKania type Pで簡易Webサーバを立ち上げ、SDカード内の特定のディレクトリに保存したHTMLファイル(拡張子は.HTM)を配信し、フォームに入力されたパラメータ取得します。
LEDマトリクスはMAX7219搭載8x8ドットのものを8個連結したものを使用し、右記のように接続します。
動作にはまずMachiKania type PのSDカードに下記2ファイルを保存し、HTTPLED.BASを実行しておきます。その後、PCやスマートフォンなどから「http://xxx.xxx.xxx.xxx/TEXTFORM.HTM」にアクセスしフォームにメッセージ(半角英数字)を入力して送信します。(xxx.xxx.xxx.xxxはMachiKania type PのIPアドレス)
ダウンロード
HTTPLED.BAS
TEXTFORM.HTM 右クリックで保存し、SDカードの/HTTPROOTディレクトリにコピー
<LEDマトリクスの接続>
VCC -- +5V(外部電源、3.3Vでも動作します)
GND -- GND
DIN -- GP19 SD-DI(MOSI) / SPI TX(25番pin)
CS -- GP3 I/O bit3 / SPI CS(5番pin)
CLK -- GP18 SD-SCLK / SCK(24番pin)
秋月電子でアウトレット販売されている32x16ドットのLED基板を2枚使って、上記のWiFi対応LEDメッセージボードの日本語文字対応版を作製しました。
MachiKania type PまたはPUをRaspberry Pi Pico Wで動作させ、同じネットワークに接続したPCやスマートフォンから日本語メッセージを送信し右からスクロールさせて表示します。
HTTPDクラスを利用して簡易Webサーバを立ち上げ、SDカード内の特定のディレクトリに保存したHTMLファイル(拡張子は.HTM)を配信し、フォームに入力されたパラメータ取得します。
日本語表示には16ドットフォント対応のCKNJ16クラスを文字コードUTF-8で使い、GETBMPメソッドでフォントパターンを取り込んでいます。
LEDマトリクスは右記のように接続します。このLEDマトリクス基板はいくつかの接続方法がありますが、この例では基板2枚で6ビットパラレル接続としました。IObit番号はIObit10より上位がGP番号と異なりますのでご注意ください。(IObit10:GP20、IObit11:GP21、IObit12:GP22)
(参考)パラレルではなくシリアル接続しSPIで送信した例
動作にはまずMachiKania type PのSDカードに下記2ファイルを保存し、HTTPLEDJ.BASを実行しておきます。その後、PCやスマートフォンなどから「http://xxx.xxx.xxx.xxx/TEXTFORM.HTM」にアクセスしフォームにメッセージ(半角英数字)を入力して送信します。(xxx.xxx.xxx.xxxはMachiKania type PのIPアドレス)
MachiKania基板上のボタンの接続ポートが信号出力ポートに使われているため、動作中はボタンを押さないように注意してください。
ダウンロード
HTTPLEDJ.BAS
TEXTFORM.HTM 右クリックで保存し、SDカードの/HTTPROOTディレクトリにコピー
MachiKania type PUでの使用例
スマートフォンから送信した日本語メッセージが右から左に流れる
<LEDマトリクスの接続>
カッコ内の数字はボード番号、1が左側、1/2は両方
IObit0 - CLOCK (1/2)
IObit1 - LATCH (1/2)
IObit5 - STROBE (1/2)
IObit8 - SIN 1 (1/2)
IObit9 - SIN 2 (1)
IObit10 - SIN 3 (1)
IObit11 - SIN 2 (2)
IObit12 - SIN 3 (2)
+5V - LED_PWR(1/2)
+3.3V - IC_PWR (1/2)
GND - GND (1/2)
I2C接続のデジタル温湿度センサDHT20を読み取り、Raspberry Pi Pico WのWiFi機能を用いてIoTデータ可視化サービスAmbientにデータ送信して、PCのブラウザに温湿度の推移のグラフ表示する実験を行いました。
Ambientは無料で利用可能なWebサービスです。利用にはユーザ登録が必要です。登録ができたらチャネルを作成してください。チャネル作成するとチャネルIDとライトキー、リードキーが生成されます。このIDとキーを用いて、サーバーのチャネルにJSON形式でデータを送信することで、サーバにデータが保存されます。PC等のブラウザでそのチャネルにアクセスすると動的にグラフを表示させることが可能となります。
ダウンロード DHT20.BAS
本プログラムでは1分ごとにDHT20から読み出した温度と湿度のデータをAmbientの指定されたチャネルに送信しています。この時間間隔はRTCで時刻を読み取って判断しているので、システム起動時のNTPへの接続を有効とするよう、INIファイルの設定を行ってください。
xxxxxx....部分はチャンネルに対して指定されたライトキーに、yyyyy部分はチャネルIDに書き換えてください。
また、WGETクラスライブラリを使用していますので、SDカードにWGET.BASを保存しておいてください。
このサンプルでは温度と湿度の2つの値の推移を折れ線グラフで表示させていますが、Ambientのサービスではデータは8種類まで送信可能で、様々な種類のグラフ表示を行うことが可能なようです。
自宅から離れた場所の環境管理や、留守中の自宅の状況監視など実用的な利用もできると思います。
接続図
Ambientサービスにアクセスしブラウザでグラフ表示
秋月電子の「BME280使用 温湿度・気圧センサモジュールキットAE-BME280」を利用する実験を行いました。
I2C接続するため、J1/J2/J3をはんだでジャンパ接続します。またはJ2/J3をジャンパ接続しない場合SDI、SCKを4.7KΩ程度でPULL UPしてください。
実験プログラムでは約10秒ごとに、気圧、温度、湿度を浮動小数点数でテキスト表示します。BME280のセンサ読み取り値から求めたい気圧、温度、湿度への変換はやや複雑な計算が必要ですので、参考にしてください。これを応用することで液晶画面へのグラフ表示やCSVファイルでの保存、ネットワークサービスへの送信なども可能となります。
ダウンロード BME280.BAS
※本プログラムを実行する際には、MachiKania type PシステムVer1.31(KM-1504)以降をご利用ください。
AE-BME280接続図
MachiKania type Pで利用可能なファイル管理ツールです。SDカード上のファイルに対してコピーや移動、名前変更、削除などが可能です。ディレクトリの新規作成、名前変更、移動、削除も行えます。
キー操作は上下矢印キーで目的のファイルを選択しCtrl+Cでクリップボードにコピー、コピー先のディレクトリに移動した後Ctrl+Vでクリップボードから貼り付けというようにWindowsライクなものとなっています。ディレクトリを選択してEnterキーでサブディレクトリを表示、親ディレクトリに戻るにはF4キー(またはCtrl+上矢印)を押します。
また、F3キーでファイル一覧の表示順をファイル名、更新日付、ファイルサイズそれぞれ昇順、降順に順次切り替えることができます。
ファイル選択しEnterキーでファイルの中身をテキスト表示します。大きいファイル表示中に何かキーを押すとスクロールが一時停止します。また、Shift+Enterでファイルのバイナリ表示が可能です。このときも何かキーを押すことでスクロールが一時停止します。
その他詳細なキー操作はF1キーで表示されるヘルプ画面をご確認ください。
ダウンロード FILEMAN.BAS
※本プログラムを実行する際には、MachiKania type PシステムVer1.40(KM-1505)以降をご利用ください。またUSBキーボードが必要です。
ファイルマネージャメイン画面
ヘルプ画面
3Dグラフィックの一種、ポリゴンを使ってワイングラスを描画するプログラムを作成しました。
以前ワイヤーフレーム用に作成した回転体のエッジデータから面情報を計算し、光の当たり具合から明るさに応じて色合いを変えています。また、表面と裏面のどちらが見えているかを区別し違う色で描画するようにしました。
上下左右ボタンで回転させることができます。奥側から順番に描画するよう工夫したことで隠れた面は上書きされ最終的に見えている面だけが残ります。
ダウンロード POLYGON.BAS
ポリゴングラフィック
BASICプログラムではありませんが、MachiKania type P本体で動作するパックマンです。以前こちらで作成したものを、せっかくなのでI/Oポート番号などMachiKania type Pに合わせて作成し直しました。
MACHIKAP.INIファイルの読み込みも行うので、ボタンの回転指定と液晶の反転を行っている環境でも遊ぶことができます。
Raspberry Pi Pico上の白いボタン(BOOTSEL)を押しながらUSBでパソコンに接続し、下記ZIPファイルのphyllosoma-pacman.uf2ファイルをRaspberry Pi Picoにドラッグ&ドラップすると自動的にゲームが始まります。
MachiKania BASICシステムに戻る場合は、元のuf2ファイルを書き込んでください。
(2023.1.28追加) MachiKania type P BASICシステムのファイル選択画面で選択して実行できるpacman.hexを追加しました。この場合uf2ファイルの書き換えは不要です。Ver1.20以降で利用可能。
(2024.10.6追加) Raspberry Pi Pico 2では動作しません。
ダウンロード phyllosoma-pacman.zip
これもBASICプログラムではありませんが、以前作成したRaspberry Pi Picoの液晶接続環境で動作するテトリスを、I/Oポート番号などMachiKania type Pに合わせて作成し直しました。
MACHIKAP.INIファイルの読み込みも行うので、ボタンの回転指定と液晶の反転を行っている環境でも遊ぶことができます。
下記ZIPファイルの中にあるphyllosoma-pacman.uf2をRaspberry Pi Pico上の白いボタン(BOOTSEL)を押しながらUSBでパソコンに接続してRaspberry Pi Picoにドラッグ&ドラップすると自動的にゲームが始まります。MachiKania BASICシステムに戻る場合は、元のuf2ファイルを書き込んでください。
また、tetris.hexファイルはMachiKania BASICシステムのファイル選択画面から実行可能です。(Ver1.20以降)この場合、RAM上で実行するので、リセットすると元のBASICシステムに戻ります。
(2024.10.6追加) Raspberry Pi Pico 2では動作しません。
ダウンロード phyllosoma-tetris.zip
Pico互換ボードでも動作
画面が回転スクロールするオリジナルのシューティングゲームです。元々PIC32MX用テレビゲームとして製作しましたが、Raspberry Pi Picoの液晶出力版も製作しました。ゲームの詳細はこちらを参照してください。
回転スクロールシューティングゲーム VELUDDA
MACHIKAP.INIファイルの読み込みも行うので、ボタンの回転指定と液晶の反転を行っている環境でも遊ぶことができます。
下記ZIPファイルの中にあるveludda_pico.uf2をRaspberry Pi Pico上の白いボタン(BOOTSEL)を押しながらUSBでパソコンに接続してRaspberry Pi Picoにドラッグ&ドラップすると自動的にゲームが始まります。MachiKania BASICシステムに戻る場合は、元のuf2ファイルを書き込んでください。
また、veludda.hexファイルはMachiKania BASICシステムのファイル選択画面から実行可能です。(Ver1.20以降)この場合、RAM上で実行するので、リセットすると元のBASICシステムに戻ります。
(2024.10.6追加) Raspberry Pi Pico 2では動作しません。
ダウンロード veludda_pico.zip
DOZAN氏による完成度の高いXEVIOUSもどきのMachiKania type Pのハードウェアそのままで動作するものが公開されました。使用する液晶はもちろんSPI接続したILI9341搭載のものです。
液晶を縦置きにして画面いっぱい使用するものと横置きでプレイするものが公開されています。また音声出力が単純なポートのオンオフのNORMAL版と高音質のPWM版がありますが、PWM版はアンプを通さないと音が小さいので注意が必要です。
MachiKaniaのBASICシステムは使っていないので、uf2ファイルを直接Raspberry Pi Picoに書き込んでください。SDカードはなくても動作しますが、起動時にSDカードのチェックを行い、MACHIKAP.INIのボタンの回転指定と液晶の反転指定に対応しているようです。
(2024.10.6追加) Raspberry Pi Pico 2では動作しません。
ダウンロードはこちらから
例)VERTICAL → Normal → Xevious_lcd_9341.uf2
液晶縦置き版
液晶横置き版