
2026/01/15 21:01
**カードプチュア uLisp マシン(2024)**
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
以下のテキストを日本語に翻訳しました。文脈や技術用語はできるだけ原文と同じ意味・表記で保持しています。
(主要ポイントを網羅)
記事では、M5Stack Cardputer Kit を使用して安価な携帯型 Common‑Lisp コンピュータを構築する方法について説明しています。
ハードウェア: Cardputer は ESP32‑S3 を中心に設計されており、240 × 135 のカラー TFT ディスプレイ(最大 16 行 × 40 文字、または大きめフォントで 9 行 × 30 文字表示可能)、56 キーの統合キーボード、SD‑カードソケット、120 mAh のメインバッテリー、およびオプションの 1400 mAh Li‑Po バックパックを備えています。価格は約 £30($30)です。
ファームウェアのインストール: Arduino IDE に M5Stack コア URL を追加し、ライブラリ(v1.0.3)をインストールした後、GitHub から uLisp ファームウェア (M5Cardputer) をダウンロードしてアップロードします。一般的な問題として、ESP32‑S3 が数行程度のプログラムで停止するケースがあり、対処法は G0 キーを押し続けてリセットし、アップロード後に G0/Rst を放すことです。https://github.com/technoblogy/ulisp-cardputer
uLisp の機能: ファームウェアは Common Lisp のサブセット(約 200 関数)を実装しており、list、symbol、integer(-32768 〜 +32767)、32‑bit float、string、stream、array などの型があります。GC は mark‑and‑sweep を採用し、約 1 ms の時間で処理されます。キーボード編集ツールにはバッファ移動、括弧一致確認、タブベースのオートコンプリート(キーワードを循環)、Aa↩ で最後の行をコピー、および Esc または G0 で実行中プログラムを中断する機能があります。
音声: デバイスは内蔵スピーカーを使って音符を再生できます。サンプルコードではとnoteを用いて C スケールを演奏します。delay
ファイル I/O: SD‑カード機能によりでファイル一覧を表示し、(directory)でワークスペースを永続化できます。また、(save-image)を無効化するオプションもあります。#define sdcardsupport
グラフィックスとターミナル: 拡張機能によりピクセル描画、図形描画、フルスクリーングラフィックスが可能です。ターミナルコード 14/15 は表示出力をミュートまたは再開します。Cardputer 固有のコマンドとして、get-key、SD にスクリーンショットを保存するread-pixelがあります。save-bmp
アップデート: リリース 4.7c でピクセル読み取りと画面キャプチャ()が追加され、リリース 4.7d ではオートコンプリート、Shift‑↩ で最後の行をコピーする機能、およびその他小さな修正が導入されました。save-bmp
記事の目的は、ホビイスト・教育者・開発者が携帯型デバイス上でグラフィックス、音声、ファイル I/O を備えた Lisp アプリケーションを作成できるようにし、組み込み Lisp 学習と迅速なプロトタイピングを促進することです。
本文
2024年11月16日
この記事では、M5Stack Cardputer Kit を使って携帯型 Lisp コンピュータを構築する方法をご紹介します。
概要
Cardputer uLisp Machine は
- キーボードとディスプレイを内蔵したポータブルな Lisp コンピュータです。
- M5Stack Cardputer はカードサイズで ESP32‑S3 ベース、価格は約 30 £ / 30 $ です。
- 240×135 のカラー TFT スクリーン(最大 16 行 × 40 列)と 56 キーのキーボード、SD カードスロットを備えています。
- M5Stack または UK の The Pi‑Hut から直接購入可能です。
制限事項
ESP32‑S3 の内蔵 USB サポートは、Mac の Serial Monitor 経由で数行以上のプログラムをアップロードするとハングすることがあります。(「Problem uploading」を参照)
イントロダクション
- プロセッサ:ESP32‑S3 デュアルコア LX7、2.4 GHz Wi‑Fi、Bluetooth 5 (LE)、8 MB フラッシュ。
- ディスプレイ:1.14″ ST7789V2 SPI IPS LCD、240×135 解像度、Arduino GFX ライブラリでソフトウェアスクロール。
- キーボード:56 キー、フル ASCII セット(小さいキーは小指で入力)。
- 電源:ボード上の 120 mAh リチウム充電池 + バックパック内の 1400 mAh LiPo。USB 経由で両方を充電。
注意:StampS3 モジュールは Cardputer のディスプレイに不可欠ですので、取り外さないでください。
ファクトリーファームウェア
Cardputer はいくつかのビルトインアプリケーションとともに出荷されます。uLisp をインストールするとそれらは削除されますが、必要なら M5Cardputer UserDemo GitHub リポジトリ (
M5Cardputer-UserDemo) から再インストールできます。
Cardputer uLisp ファームウェアのインストール
-
M5Stack コアをインストール
- Arduino IDE の Preferences → Additional Boards Manager URLs に
を追加。https://static-cdn.m5stack.com/resource/arduino/package_m5stack_index.json - M5Stack core (v2.1.2) をインストール。
- M5Cardputer ライブラリ (v1.0.3) もインストール。
- Arduino IDE の Preferences → Additional Boards Manager URLs に
-
ボードを設定
- Board メニューから M5Stack Arduino → M5Cardputer を選択。
- 設定項目:
- USB CDC On Boot:
Enabled - Flash Size:
8MB (64 Mb) - Partition Scheme:
8MB with spiffs (3MB APP/1.5MB SPIFFS)
- USB CDC On Boot:
-
uLisp をインストール
- https://github.com/technoblogy/ulisp-cardputer からファームウェアをダウンロード。
- Cardputer を USB 経由で接続し、Tools → Port でポートを選択。
- Sketch → Upload でアップロード。
アップロード後、ディスプレイに uLisp のプロンプトが表示されます。Arduino IDE の Serial Monitor からもプログラム入力が可能です。
アップロード時の問題
以下のエラーが出た場合:
A fatal error occurred: Failed to connect to ESP32-S3: No serial data received.
次の手順を実行してください。
- G0(背面パネル)を押したまま Rst を押して放し、再び G0 を離すとブートローダーに入ります。
- Tools → Port でポートを選択。
- 再度 uLisp をアップロード。
- アップロード完了後、Rst を押して放し、再びポートを選択。
これで uLisp のプロンプトまたは Serial Monitor 出力が確認できるはずです。
大きめフォント
9 行 × 30 列の大きいフォントを使いたい場合は、uLisp をアップロードする前に
#define largerfont のコメントアウトを外してください。
Cardputer uLisp Machine – スペック
| 項目 | 詳細 |
|---|---|
| サイズ | 84 × 54 × 19.7 mm (2.7″ × 3.9″) |
| 重量 | 93 g |
| ディスプレイ | 40 × 16 文字(大きいフォント時は 30 × 9) |
| キーボード | 統合型 56 キー |
| メモリ | 23,750 の Lisp オブジェクト |
| ワークスペース用フラッシュ | SD カード未使用時は 1.5 MB を予約 |
| プロセッサ | ESP32‑S3、240 MHz |
言語
- uLisp:Common Lisp のサブセット(約200関数)。
- リスト、シンボル、整数、浮動小数点数、文字、文字列、ストリーム、配列をサポート。
- 整数範囲は –32768 から 32767。16進 (
)、8進 (#x2A
)、2進 (#o52
) を扱える。#b101010 - 関数と変数のための単一名前空間。
- マークアンドスイープガベージコレクタ(約1 ms)。
uLisp の使い方
プログラム入力
- キーボードでコマンドを入力し Enter を押す。
- キーボードバッファは画面全体分保持でき、Backspace で編集可能。
- 括弧の対応が緑色でハイライトされる。
特殊キー
| キー | 機能 |
|---|---|
| Aa (Shift) | 大文字/青いシンボル入力 |
| Esc (`fn‑``) / G0 | 実行中のプログラムを中止 |
| Tab | ビルトインキーワードの補完。複数一致時はサイクル |
| Aa + Enter | 前回の行を再表示して編集 |
Serial Monitor
USB で接続し、Arduino IDE の Serial Monitor を使用してプログラムを入力/編集できます。
機能一覧
音声
(defun scale () (mapc (lambda (n) (note 0 n 4) (delay 500)) '(0 2 4 5 7 9 11 12)) (note))
write-byte 7 でビープ音が鳴ります。
SD カード
- ファイル一覧:
→(directory)
.("T1.bmp" "A1" … ) - SD カードを使わない場合は
をコメントアウト。ワークスペースはフラッシュに#define sdcardsupport
で保存。(save-image)
グラフィックス
(defun damped () (cls) (dotimes (x 240) (let ((y (round (+ 80 (/ (* 40 (sin (/ x 3.1416))) (exp (/ x 36))))))) (draw-pixel x y 2016))) (loop))
テキスト出力を
(write-byte 14) で停止し、(write-byte 15) で再開。
Cardputer 拡張機能
: キー入力待ち。文字を返す。get-key
: (x,y) の 5‑6‑5 色値を返す。read-pixel x y
: 現在の画面を SD に BMP 形式で保存。save-bmp filename
リソース
- ファームウェア: https://github.com/technoblogy/ulisp-cardputer
- M5Stack Cardputer ドキュメント: Cardputer(原文リンク参照)
更新履歴
| 日付 | 内容 |
|---|---|
| 2025年4月25日 | ピクセル読み取りと画面画像保存機能を追加 (Release 4.7c)。 |
| 2025年4月28日 | オートコンプリート機能追加 (Release 4.7d); 「最後の行コピー」を Shift‑Enter に変更(Tab はオートコンプリートへ)。 |
謝辞
本ファームウェアは @hasn0life が最初に Cardputer への uLisp 移植を行い、オートコンプリート機能を追加した成果物をベースにしています。