RP2350240x320TOUCHLUA 5.4
PICO
-OS_
Raspberry Pi Pico 2 W で動く、自作のタッチGUI OS。
240×320のちいさな画面に、ホーム画面と20あまりのアプリ、Luaで書けるアプリ、ゲームボーイまで。 ウィジェットも合成も描画も、すべてマイコンの上で自前で動いています。 実機とおなじコードをWebAssemblyにして、ブラウザでもそのまま動かせます。

SCREENS
画面 PC BUILD --SHOT







APPS
アプリ C++ / LUAほかに、テトリス・マインスイーパー・リバーシ・ブロック崩し・ペイント・天気・ニュース・QRコード・Spotifyリモコンなどの Luaアプリ。ホーム画面はフォルダでまとめられ、使わない内蔵アプリはビルド時に外せます。
INSIDE
しくみ 520KB SRAMWIDGETS
ウィジェット・シーン・ダイアログ・キーボード3種まで、GUIフレームワークを自前で実装。書き換わった所だけを合成して液晶へ送ります。
NO HEAP STRINGS
文字列はヒープを使わない固定長。部品はオブジェクトプールで使い回し、小さなRAMで断片化を起こさない作りに。
DUAL CORE
1コア目が画面と入力、2コア目は音声だけを担当。チップチューン・ゲームボーイの音・マイク録音をI2Sで。イヤホンを差すとスピーカーから自動で切り替わります。
JAPANESE
日本語の表示とかな漢字変換を内蔵。オンスクリーンキーボードのほか、CardKB2などの物理キーボードもつながります。
NETWORK
Wi-Fi・HTTPS・SSH・IMAP。Wi-Fiの設定はスマホからも送れ、picoos.local の名前で見つかります。認証情報は端末ごとの鍵で暗号化して保存。ファームウェアの更新もSDやWi-Fiから。
SAME CODE
実機とおなじソースを、PC(SDL)とブラウザ(WebAssembly)でも動かせます。差し替えるのはハードの窓口だけ。画面の大きさや載せる部品もビルド時に選べます。
LUA
Luaでアプリを作る PICO.*- SDカードの
/lua/apps/<名前>/main.luaに置くだけで、ホーム画面にアプリが増えます。 pico.*でウィジェット・描画・タッチ・音・SD・ネットワークを扱えます。- ゲーム用の
pico.game、2.5Dエンジンpico.isoも。 - 暴走しても止まる実行時間の上限と、アプリごとの権限つき。
- PCビルドでは保存するたびに読み直すホットリロードと、テストランナーで手早く試せます。
-- 画面を開いたときに1回だけ実行される local label = pico.create("Label") pico.set(label, "text", "Hello, pico-os!") local back = pico.create("Button") pico.set(back, "text", "戻る") pico.on(back, "press_start", function() pico.pop() end) function loop(dt) -- 毎フレーム。dtはミリ秒 end
SPEC
ハードウェア RPIPICO2W| 本体 | Raspberry Pi Pico 2 W(RP2350・Wi-Fi) |
|---|---|
| 画面 | 240×320 TFT 液晶(SPI 75MHz)・バックライトはPWMで調光。320×480など大きさと液晶の種類はビルド時に選べる |
| タッチ | XPT2046(抵抗膜) |
| ストレージ | microSDカード(専用のSPI) |
| 音声 | MAX98357A(I2Sアンプ)・PCM5102A(イヤホン、任意)・SPH0645(I2Sマイク)。音声・マイク・電池は外したビルドも作れる |
| 入力 | Wiiクラシックコントローラー・CardKB2(I2C)・USBシリアル |
| 開発 | PlatformIO + Arduino(C++)・LovyanGFX・Lua 5.4.7 |
16 COLORS
画面は16色のパレットで描きます。番号ごと色を差し替えるとダークテーマに。このページも同じパレットで塗っています(右上で切り替え)。