« 2025年07月 | 2025年08月のアーカイブ | 2025年09月 »
2025/08/28
古いプラットフォームという奴
このサイトはさくらインターネットを使っているのだけど、最近来たお知らせ。
流石に MySQL 4 はしょうがない。もうサポート終了から 20 年近く経ってるのか。良く今まで動かしてたよな。
と思ったけど、MySQL に限らず過去の遺物みたいなものの上で動かしているものがあちこちにあるので色々と駄目かも。
来年2月になったら全部スタティックに固めてしまって遺跡化するかも知れん。
posted by g200kg : 11:24 PM : PermaLink
2025/08/25
KiCad IPC Plugin sample
KiCad の IPC API はまだ開発中で環境が安定しておらず、ドキュメントも不足しているので、PCM パッケージのサンプルを作ってみた。内容はできるだけ単純にバージョンを表示するだけ。
取り合えず Windows および Mac の KiCad PCM でインストール/起動できる事は確認したけど Ubuntu ではインストール後再起動すると起動アイコンが消失してしまう現象がある。issue には上げたのでその内修正される事を期待。
https://github.com/g200kg/kicad-pcm-package-test
posted by g200kg : 10:44 AM : PermaLink
2025/08/19
KiCad+GerberZipper+PCBWayで基板を作る
この記事はプロモーションを含みます。
9月開催の NT 東京 2025 ではマルチリボン型の楽器を出展予定ですが、実は、NT 東京には間に合わないかも知れないけどもう一つ楽器を準備中です。数年前にギターのように弾ける「Soroban」という電子楽器を作ったのですが、スイッチ部分の耐久性がやはり楽器としては弱いなという事で、耐久性に余裕がありそうなマウスボタンで使われているスイッチにして、ついでにコントローラーも刷新したバージョンを作ろうとしています。
旧バージョン↓

基板設計はいつものように KiCad で進めます。KiCad のバージョンは 9.0.3 です。スイッチは Omron D2LS を使用。
コントローラーは RP2040 を想定しています。
3D Viewer で見るとこんな感じ。ここまで表示するには各部品の 3D データを全て準備する必要があるので基板を作るだけならやらなくて良いのですが、筐体設計時の参照にも使えますのであればあったで便利にはなります。余計な時間はかかりますけど。
今回 PCB 製造と SMD 部品の PCBA を以前にも協力いただいた PCBWay に頼みました。ここは深圳の企業ですが、日本語サイトが割としっかりしています。
基板を発注するには設計データを所定のフォーマットに収める必要がありますので、KiCad のプラグイン、GerberZipper で準備します。プラグインのインストール手順等は下のリンクを参照してください。KiCad の最新版は Ver 9.x ですが、メジャーアップデートに伴ってプラグイン API が更新されていますので、KiCad 9.x で使用するには GerberZipper 1.1.6 が必要ですのでご注意ください。
https://github.com/g200kg/kicad-gerberzipper
GerberZipper で必要な設計データが出力されますが、この中で部品表(BOM)の Manufacturer と Mfg Part # については実際に部品手配に必要な部品メーカー名と部品メーカー側の部品番号が必要ですので、追記が必要になります。この辺は必要な情報さえあれば適切なものを探してもらえるかも知れません。
実装位置を表す POS データについては適切に調整してくれますが、部品の向きの確認などレビューのやり取りは何度か発生すると思った方が良いです。
さて、今回の進行状況ですが PCBWay への発注は 7/24、その後内容について多少やり取りの後、7/29 にGo、何度か内容について連絡しつつ 8/11 製造/SMDアセンブル完、8/15 発送、8/18 到着。今回割と時間はかかりましたが、アセンブリ込みの場合は部品調達の時間が支配的だったりしますので、部品選定を慎重にした方が良いと思います。
なお、KiCad に関して、今後の KiCad の開発スケジュールでは来年の 2 月頃に KiCad 10.x がリリースされると共にプラグイン API の大幅な更新が予定されています。今までのプラグインは動かなくなると思われますので、これに合わせて GerberZipper も「GerberZipper 2」として対応版を準備中です。
まだ途中ですが、GerberZipper2 では DRC の実行や 組み立て時参照用の Fab 用 PDF の出力なども連携する予定です。
https://github.com/g200kg/kicad-gerberzipper2
さて、今回到着した基板はこんな感じ。もう少しまとまったら設計データ等は後日 GitHub にでも上げておきます。
思ったより箱が大きかったですね。段ボールは多少ダメージを受けていますが中身は大丈夫そうです。MCU 周りはこれからまだやる事があるので NT 東京に間に合うかどうかはわかりませんが、機会があれば何かのイベントには持って行きます。
posted by g200kg : 3:15 PM : PermaLink
2025/08/18
NT 東京 2025 に出展します
9月にあるものづくりイベント、NT 東京 2025 (なんか作ってみた) に出展します。
旧シンセビルダーサミット関係の人がかたまって出展する予定ですので、ご都合よろしければご来場ください。
NT 東京 2025 (なんか作ってみた)
会場 : 東京都千代田区北の丸公園2-1 科学技術館イベントホール 1~5号館
日時 : 2025年9月6日(土)・7日(日) 10:00~17:00
入場無料・出入り自由
こんなのを持って行く予定です。
posted by g200kg : 11:23 PM : PermaLink
2025/08/14
wxPython の ComboBox とマウスホイールの挙動のメモ
このところ wxPython で GUI を作ったりしていたのだけど、コンボボックス上でのマウスホイールの挙動が気に入らない。
コンボボックス上にマウスカーソルがある場合にマウスホイールの操作をすると選択肢が順次切り替わるのがデフォルト動作になっている。やりたい事はまあ分からなくもないのだけど、意識せずマウスカーソルがコンボボックス上に乗ってしまっている場合にホイールに触ってしまって選択肢が勝手に切り替わってしまうのがとても困る。
特にコンボボックスがスクロールパネル上にある場合、パネル上ではホイール操作でスクロールするので、スクロールした結果マウスカーソルがコンポボックスに乗ってしまうと次のホイール操作で選択肢が切り替わってしまう。これはまずい。
という事で、対応としては結局コンボボックス個別にハンドラを設定するしかないようだ。
wx.PostEvent(e.GetEventObject().GetParent().GetEventHandler(), e)
という感じで親のパネルにイベントをそのまま流すのがよさそう。
import wx
import wx.lib.scrolledpanel
def Ignore(e):
wx.PostEvent(e.GetEventObject().GetParent().GetEventHandler(), e)
class MyFrame(wx.Frame):
def __init__(self, parent, title):
super().__init__(parent, title=title, size=(400, 200))
panel = wx.lib.scrolledpanel.ScrolledPanel(self)
panel.SetScrollbars(20,20,50,50)
combobox = wx.ComboBox(panel, -1, 'BBBBB', choices=('AAAAA','BBBBB','CCCCC', 'DDDDD'), pos=(400,100), size=(200,20), style=wx.CB_READONLY)
combobox.Bind(wx.EVT_MOUSEWHEEL, Ignore) # コンボボックスのマウスホイールイベントを親に流す
self.Show()
if __name__ == '__main__':
app = wx.App()
frame = MyFrame(None, "Test")
app.MainLoop()
ささいな小技だけど、その内忘れそうなのでメモ。
posted by g200kg : 11:20 AM : PermaLink
2025/08/02
KiCad IPC API を試してみる
基板CAD、KiCad の Python スクリプティング環境は今後 [KiCad IPC API]に移行して行くとアナウンスされています。KiCad 9.0 からサポートされ始めていますが、今のところはまだ動き出したばかりで機能的にも不足している部分があり、プラグイン開発者向けのベータ版という扱いです。
KiCad IPC API の概要はここ
https://dev-docs.kicad.org/en/apis-and-binding/ipc-api/index.html
目的は今までの Python プラグインと同じようなものですが、内部の構造が今までと大きく変わります。
今までの Python プラグインとの違いは
- API の仕様が今までよりも安定する(はず)
- Python 以外の言語でもプラグインが作れる
- 複数の KiCad を起動している場合の接続がややこしくなりそう
また、今までのスクリプト環境とは違い、想定しているのは基板データの編集処理でガーバーなどの基板データの出力機能そのものは別のプログラムである kicad-cli (コマンドライン形式) を使用する事が推奨されています(これについては、いつかはサポートするかもという含みがあります)。
プラグインと KiCad との接続は IPC ですので、プラグイン環境としては Python に限らずどんな言語で書いても良いのですが、今のところは Python 用のインターフェース (kicad-python) だけが準備されています。
という事で Win11 上の VirtualBox で Ubuntu 24 を入れた新しい状態から KiCad 9.0 の KiCad IPC API をテストします。 環境は以下の通り
Windows 11 24H2
VirtualBox .1.10 r169112 (Qt6.5.3)
Ubuntu 24.04.2 LTS
KiCad 9.0.3
これは PPA からインストールできます。https://www.kicad.org/download/details/ubuntu/
- KiCad を起動し、メニューの [Preferences] - [Preferences...] ダイアログ内 [Plugins] タブで [Enable KiCad API] をチェックします。これは今のところデフォルトではオフになっています。
kicad-python
- https://pypi.org/project/kicad-python/
- KiCad IPC API を使うための Python 用のライブラリは "kicad-python" として公開されています。2025/08/02 時点のバージョンは 0.4.0。
- KiCad IPC API は pip でインストールできますが、"externally-managed-environment" エラーがでます。
- これは、インストールにより他の Python モジュールの動作に不具合が出る可能性がある事を示していますが、今回は VirtualBox 上の実験環境なので"--break-system-packages"オプションで取り合えず無視する事にします。
- "pip install kicad-python --break-system-packages"
Git Lab
- Git Lab には kicad-python のリポジトリがあります。
今はまだちゃんと起動できているかの確認程度ですが、このリポジトリの examples フォルダにサンプルのスクリプトがあります。
examples 内の version.py を動かした結果が下の図です。最初の
python3 version.py
は KiCad を起動していない場合、2番目のpython3 version.py
は KiCad を起動後に動かした場合です。
KiCad IPC API の詳細ドキュメントはここ
まだまだ機能もドキュメントも足りないですが、現在の予定では来年2月の KiCad 10 で KiCad IPC API が公式推奨となって現在の Python API は廃止される事になっています。今から何か作るなら KiCad IPC API が必須になりそうです。
posted by g200kg : 6:32 PM : PermaLink
« 2025年07月 | 2025年08月のアーカイブ | 2025年09月 »
-->
g200kg