メイン
- WCHのCH32V003との出会いがあり、開発ボードやガジェットに組み込んだよ
- 電子工作&自作キーボードのイベントに出展や参加したよ
- 技術書典でも電子工作をテーマに2冊書いたよ
- JLCPCB、WCHのおかげで、たくさんの電子工作を楽しんだよ
CH32V003との出会い
CH32V003という格安マイコンが秋月電子通商でも取り扱われるようになりました。
3月くらいからCH32V003をさわり始め、それからch32v003funというコミュニティ開発スタックが整備されて、多くのサンプルコードがコミットされていくのを眺めていました。
StickPointと呼んでいる、アナログジョイスティックをPIMORONI Trackball互換にするファームウェアも、ATTiny402で開発していたものから、SOP8のCH32V003とch32v003funを置き換えていきました。
ジョイスティックモジュールでつくるTrackpointもどきデバイス、40円マイコンCH32V003に置き換えたファームウェア動いた!!!
— 74th (@74th) July 29, 2023
ch32v003funの、ADC+DMAとI2C Slaveのコードがすごく助けになった。https://t.co/lz4R1BHmS4 pic.twitter.com/Fdc8qdv1KU
ここでI2C Slaveの使い方を習得した結果、Relay USB HubのスイッチをI2C Groveで外出しにしたりしました。
Relayを使った切り替え機能付き USB Hub(CH334)、電源周り少し修正した新基板でも作ってみたが、こちらも問題なく動作したー!
— 74th (@74th) September 8, 2023
こちらもKitとしてBoothに出そう!
ただしRelayは高いのでご自身で準備いただくことにする。Relay制御に使ってるCH32V003もあらかじめファームウェア書いとこう。 pic.twitter.com/97kfZUNHjn
また、ESP32-C3のPinが足りないのを補うのに使ったりしました。
安いので何でもサクッと組み込めるので、電子工作の幅が広がったように思います。
CH32V003の開発ボードは、Boothにて販売中です。
また、ch32v003funの使い方については記事にしました。
M5Stack Creative Contests に応募
Maker系イベントに参加したことは無かったのですが、作ったSparrowTVが面白いと思い、M5Stack Creative Contests に応募しました。
ESP32を手軽に扱えるようになるM5Stackの試みを、改めて面白く感じることになりました。
電子工作&自作キーボードでイベント出展
今までイベント出展は、技術書典以外には、テックカンファレンスしか参加したことは無かったのですが、Maker系ともいえるコミュニティイベントにも参加するようになりました。
天下一キーボードわいわい会 vol.4、5
コロナ禍を明けて、天下一キーボードわいわい会 Vol.4、5に両方とも参加しました。天キーVol.4ではトラックポイントもどき付きキーボードを展示していました。
設置Done #天キー pic.twitter.com/h5Pg8w6Oiu
— 74th (@74th) March 4, 2023
他の方のキーボードに刺激を受けるのもありますが、自分で作ったデバイスを体験して、良かったとコメントいただくのは本当に嬉しいです。トラックポイントもどきを作って展示したことを記事にしていました。
Vol.5ではM5Dialをトラックパッド化したものを展示していました。
#天キー キーボード設置
— 74th (@74th) November 4, 2023
USB HubのI2Cで伸ばしたやつが動かないけど、全部のポインタ動いた pic.twitter.com/d2hN7V6hyg
この試みについても記事にしています。
ピコケット3
電子工作者&シンセビルダー同人展示即売会「ピコケット」に出展しました。今まで作ったProMicro型開発ボードが増えていったので、この機会にすべて展示しました。
#ピコケット 始まりました!
— 74th (@74th) September 23, 2023
実物紹介してます! pic.twitter.com/bCEiM9vpev
理系フリマ3
理系フリマ2は残念ながらコロナにかかってしまい、参加はできませんでしたが、理系フリマ3に参加しました。
今ままで作ってきた試作途中のジャンク品や、開発ボードや新作キットを展示しました。
明日の #理系フリマ で展示するもの用意してました。リユース品に多少ものを追加したり、お別れのコメントを追記したりしました。 pic.twitter.com/f8uFMgYJM1
— 74th (@74th) December 16, 2023
技術書典で電子工作をテーマに2冊書いたよ
技術書典14、15には今回も参加しました。技術書典3からなので、13回連続新刊持参のサークル参加になります。 今回も、電子工作をテーマにした書籍を執筆しました。
『マイコンさんに知らないプロトコルを喋らせる技術』技術書典14
ArduinoやMicroPythonも便利なのですが、ArduinoとMicroPythonで抽象化されたマイコンの機能には、多くの機能によって制御が実現されています。ただ、NeoPixelをGPIOで光らせる、それだけでも中でできることを知っていないと使いこなせないとわかり、DMAやカウンタを学ぶために執筆しました。されにRP2040で特徴的なプログラマブルIOを理解したいと思い、それを解説できるまでに理解して、まとめてみた本になります。
まだまだその辺りの機能への理解が足りていないですが、自分としてはかなり理解が進んだように思っています。
『WCHのICを活用する電子工作の本』
CH32V003を始めとして、多くのWCHのICを使って電子工作を楽しみました。その都度、ブログ記事を書いてはいますが、それを書籍として改めてまとめた本になります。
JLCPCB、WCHのおかげで、たくさんの電子工作を楽しんだよ
JLCPCBに1年で50回発注していた
JLCPCBがANAのOCSでの配送を格安で行うようになってから、おおよそ500円くらいでPCBが注文できるようになり、便利さと安さのあまり注文しまくりました。OCSでも一定以上のサイズを超えると、$0.99→$1.99→$10?とステップがあり、$1.99に収めた方が安くなるので$1.99に収めるようにしていました。
その結果、2023年の注文を数えてみたところ注文回数が50回に及んでいました。
しかし、この価格は流石にサービス価格だと思うので、いつまで続けていただけるのやら。
WCHのICを組み込んだ
技術書典の本にも書きましたが、多くの安価で個人でも買えるWCHのICを使っていました。
CH32V003、CH213、CH217、CH334、CH224K、CH32X035、CH9329、CH340Xなど。まだ使いこなせていないICも多いですが、自分の制作にはまりやすいICがお手軽に購入できるのはありがたいです。
ここから制作物の振り返り
ことしから制作物にIDを降ることにしました。今までの制作物にも番号を振りましたが、2023年以降No.12から40にまで到達しました。
制作物・ガジェット系
Sparrow60C と StickPoint
ジョイスティックに、トラックポイントのキャップを被せたモジュールを作りました。このキーボードが今のメインのキーボードになっています。
ブログ記事にしています(再掲)。
M5DialTrackpad
M5Dial をトラックパッドデバイス化しました。M5Dialは非常にものが作りやすく完成したデバイスでした。それは、ジョイスティックマウスが過去のことになるくらいには。
これもブログ記事にしています(再掲)。
SparrowTV
M5Stack Creativity Contestsに応募した奴です。YouTubeを見たりするTV横PC用のマクロパッドとして、TVリモコン、キーボード、マウスの3役を備えたデバイスです。
ESP32-S3のUSBデバイスがいまいちだったことから、CH9329、ESP32-C3の構成に置き換えました(再掲)。
ここでは、iPhoneケースに収めると言うこともやってみており、手触りの良いデバイスができました。
iPhoneケースに入れるTV横PC用マクロパッド、枠がしっかりしたケース(Seria 110円)に入れ替えてみた。収まりよくて良い!
— 74th (@74th) October 29, 2023
そして、このケースは裏が透明で、基板が透けて見えるの良い! pic.twitter.com/psiSlWvYVo
Relay USB Switch Hub
作っている雑USB切り替え機能(リレー)付きUSBハブに、USB切り替えの操作部をGrove I2C線で外出しにできるやつ実装できた。
— 74th (@74th) August 31, 2023
これで配線ごちゃるUSBハブをモニタ裏に隠して、操作部だけを手前に持ってこられる。 pic.twitter.com/02falnSpKH
CH334Rとリレーを使って、ホスト4ポート切り替え機能付き4ポートUSB HUBを作りました。制作は記事にしています。
キットはboothでも販売中です。
USB Rebooter
使いたいときにハングってるIoT機器対策に、USB電源を12時間に一度1秒間オフにするアダプタできた。
— 74th (@74th) August 12, 2023
12時間の計測はCH32V003で、電源スイッチはCH217を使った。 pic.twitter.com/36aPzqRNO4
たまにハングするUSB機器を強制的に電源断で再起動するデバイスを作りました。制作は記事にしています。
完成品をboothでも販売中です(売れたことがない)。
ESP32-IoT-Server
赤外線リモコン機能をもったWebServerを立てるESP32-C3を、お家の至る所に設置するのを計画しています。M5Stamp-C3でも良いのですが、安価にESP32-C3が使えるボードを作りました。
ESP32-C3でM5Stackのセンサーモジュールつないで使う基板、直したやつUSB、LEDともに動いた!
— 74th (@74th) September 24, 2023
白物家電の近くに置くので、白レジンのケースに入れて白レジスト基板にした。
ESP32-C3のUSBが、ダンピング抵抗ないと壊れる説も検証する。 pic.twitter.com/fgcI7jlsIq
そのうち、boothでも販売する予定です。
WIP
SparrowDial
M5Dialがトラックパッドとして良かった旨は既に書きました。ならば、M5StackCore2、M5Dialを組み込んだSparrow60Cが欲しくなり、作ってみることにしました。
M5DialをPIMORONI TracballのI2C Slaveのプロトコルで動かし、それをQMK Firmwareから利用できるところまで確認できました。まだまだチューニングが必要な感じでした。キーケットに間に合わせるべく、動いています。
SparrowG
格ゲーはやらないのですが、握るコントローラーではなく、キーボード的なもので操作できた方がゲームの操作が上手くなるだろうと思っており、自作キーボードの汎用ケースを使ったGP2040-CE対応HitBoxクローンを作ろうとしています。
格ゲーはやらないにしても、時々アナログスティックが必要になるので、アナログスティック付きにしようとしています。
GP2040を使ったコントローラー作ってみた。
— 74th (@74th) December 30, 2023
格ゲーをするわけではないので、DeadCellsやローグレガシーで弓を拾った途端必要になるアナログスティックを追加した。割とちゃんと動いてる。
1回目の試作で確認したかったことはできたので、次は完成できそう。 pic.twitter.com/UVK5FF3Bbk
制作物・開発ボード・電子工作グッズ系
CH32V203 ProMicro / X32Micro
CH32V203のProMicroサイズ開発ボードを作りました。
今日の工作。ProMicroサイズの、RISC-V MCU の CH32V203 ボードと、ARM MCU の RP2040 ボード。それぞれ2つ作れて、再現性あったので、Boothに出そう。 pic.twitter.com/tFW706BtQN
— 74th (@74th) January 22, 2023
作った後に、要するにSTM32F103のピン配置を揃えてあるMCUなので、STM32F103でも良いのではと気づき、X32Microを作りました。ただ、USBで書き込める機能は便利だったため、結局CH32V203基板を作り直しました。
設計し直した STM32F103CxT6 互換開発ボード基板、STM32 でももちろん動くことを確認。
— 74th (@74th) July 20, 2023
SWD の 1.27mm 10ピンポートを追加したので、ここに DapLink をつなげばすぐ書き込めて便利。
このピン内に UNO R4 仕様の UART も持たせた。 pic.twitter.com/j0pFvzhWw5
どちらもboothでキットを販売中です。
KiCadデータ自体はGitHubで公開しています。
CH32V003 ProMicro
今年、こちらの商品を多くお求めいただきました。自分のCH32V003を使った制作でも、まずこれでアプリの動作を確認してから組み込むようにしています。
GitHubでKiCadデータは公開しています。
WIP CH32X035 ProMicro
WCHは、USB PD機能と、USBデバイス機能がついた1個100円くらいのRISC-V MCUを出しています。安価にキーボードが作れそうなので良さそうと思い、トライしています。しかし、まだ理解が足りていないのか、安定して動作できていません。
作ったCH32X035開発ボード2つ、WCH-LinkEと繋いでも、つながったりつながらなかったりすごく不安定、両方とも。なんでや、、、。1回は書き込みできたけど、その後からなんかおかしい。 pic.twitter.com/wmw4nBVmvT
— 74th (@74th) November 25, 2023
WCH-LinkEクローン
CH32Vシリーズのデバッガに、WCH-LinkEがあります。CH32V003開発では必須です。今は秋月で750円で買えるので入手性が良いのですが、この当時はアリエクでしか入手できないものでした。
ソースコードは公開されていませんが、ファームウェア自体はGitHubにあがっているので、自分の欲しい機能のついたWCH-LinkEクローンを作りました。10pinをコネクタにケーブルを挿すだけで使えるので、非常に便利です。
昨日作った WCH-LinkE クローン便利だなー。CH32V の書き込みと、DapLink モードにすればそのまま STM32 が書き込めてる。作ったモード切り替えボタンがなぜか動作しないが、CLI ツールでさくっと切り替えれる。https://t.co/yXcXGZHIBp pic.twitter.com/G0beNeHxfR
— 74th (@74th) July 22, 2023
boothでも取扱中です。
なお、KiCadファイルはGitHubで公開済みです。
USB 2.0 ソケットテスター
USB Type-Cソケットの実装を、既に100個以上やった実績があります。その際に、ブリッジしていないかチェックするための装置を以前はユニバーサル基板で作っていたのですが、とてもオススメできるので、専用基板に起こして販売を開始しました。
自分の電子工作にはなくてはならない USB Type-C ソケットテスターを booth に出品しました。これで USB Type-C の 0.5mm ピッチの手はんだ実装も怖くない。https://t.co/hVaIrtn1xa
— 74th (@74th) April 15, 2023
作業の様子をYouTubeにも上げています。
boothでも完成品を販売中です。
RP2040-ProMicro
RP2040のProMicroサイズ開発ボードを作り直しました。前のバージョンは販売していませんでしたが、今回のから販売するようになりました。開発ボードを使うのは主に実験の時で、その時にはProMicroのピンの数で充分なことが多く、とても役に立っています。
改善点は主に以下の通り。
boothにて販売中です。
なんと、この制作の様子を動画で配信いただきました!とても実装ノウハウが動画に納まっていてわかりやすいです。
RP2040キットに、ノウハウ集を追加
RP2040手はんだ実装挑戦キットを販売し、多くの方に挑戦いただきました。この実装ノウハウを改めてまとめたドキュメントを作りました。その名も「RP2040手はんだ実装挑戦指南ガイド」です。こちらは公開ドキュメントにしています。
ESP32-C3-MINI-1 ProMicroとステンシル
ESP32シリーズには、WROOMと付くエッジコネクタで実装するタイプと、MINIと付くSMDで実装するタイプがあります。WROOMはサイズが大きく、これを使って開発ボードを作っても、ブレッドボードの左右に1ピンと2ピンの余裕しかありません。MINIの方が1まわりほど小さいモジュールになります。さすがにProMicroの横幅で作ることはできませんが、1ピン増える程度で済みます。これを使って開発ボードを作りたいと前々から思っていました。そして作りました。
ESP32-C3-MINI-1で作った開発ボード、ESP32なのにブレッドボードにも左右2ピンずつ余裕があって、コンパクトで使いやすく、何度も自画自賛して愛でている。
— 74th (@74th) September 5, 2023
わざわざステンシル作った甲斐があった。 pic.twitter.com/id8CLuZDMz
しかし、SMDタイプなので実装にステンシルが必要です。ステンシルなしでフライパンリフローに失敗したため、ステンシルとプリヒーターを用意して挑みました。これについては記事にしています。
boothでもステンシルと合わせて販売していたのですが、在庫がなくなっています。
STM32F103/G030/G431 ProMicro とCH32V203を使ったDapLink
CH32V203を触った後に改めてSTM32F103に触ると、開発環境も整っているし、Arduinoにも対応しているしこれで良いのでは?という気分になりました。
StickPointに組み込もうとしてたATTiny402が割高になってしまったので、代替にSTM32G030を検討していました(今はCH32V003ですが)。わりとLCSCで手頃な価格で買うことができます。
さらにSTM32F103は新規設計には採用するべきではないと言う話もあったので、最新のSTM32G4も試してみたいと思っていました。
そこで、STM32F103、STM32G030、STM32G431のProMicroサイズ開発ボードを作りました。
これらのボードには、SWD10ピンヘッダを持たせてあり、同時に今年作成したCH32V203を使ったDapLinkと便利に使うことができます。
実のところ、STM32を使うまでもなくCH32V003で充分であることが多いので、組み込む機会はないのですが……。
PD Exporter
CH224KというUSB PDトリガーICを使って、USB PDから目的の電圧を取り出してブレッドボードにさせるやつを作りました。
CH224Kを使ったUSB PDから任意の電圧取り出して、ブレッドボードにさせるやつできた。
— 74th (@74th) September 6, 2023
スイッチでオンオフできる。
裏のジャンパで電圧は設定できる。小さいモジュールなので、電圧変えるときは取り替えて使う。 pic.twitter.com/PU4JSCboAl
USB PDトリガーは多くの製品が既に出ていますが、割と便利です。
boothにて販売中です。
Conv3
今年は多くの制作物に、Groveコネクタを追加してきました。そのままseeed studio、M5Stackのモジュールが利用できます。
一方ブレッドボードでテストするときにすこしだけ取り扱いが面倒です。これを解決するための変換基板を作りました。ついでにQwiic、XH2.54ソケットも含まれています。
Grove、Qwiic、XH を変換したりピンヘッダに出すやつ作った pic.twitter.com/wctjekUHps
— 74th (@74th) July 27, 2023
ここでQwiicを組み込んだことが、自作キーボードのトッププレートとPCBの間の3.5mmにQwiicソケットが収まることに気づいたのが効いてきます。
boothにて販売中です。500円!
ESP32 Micro
2022年には、ESP32-S3、ESP32-C3の開発ボードを作っていました。時々素のESP32が欲しくなるような気がするので、ESP32のProMicroピン配置のボードを作りました。
ESP32-S3/C3 の開発ボードを作っていましたが、ESP32のも時々欲しくなるので、ProMicro互換ピン配置(サイズは異なる)なESP32ミニ開発ボードを作りました! この部品付きキットをboothに追加しました!https://t.co/aYmxxtOYM7 pic.twitter.com/V7iZU6booH
— 74th (@74th) June 24, 2023
まぁ、活躍の機会はないですが。boothにて販売中です。
電子工作を楽しむ環境で変わったこと
パーツをバインダーで管理するようになった
去年から、ほぼスルーホール部品は使わなくなり、SMDパーツばかりになりました。かさばらなくなった結果、一覧の検索性を良くするために、名刺入れのバインダーで部品を管理するようになりました。
最近、チップタイプの電子部品はすべてピンが曲がらないように厚紙にマステで留めて、静電気防止袋に入れて、名刺入れのバインダーに格納している。
— 74th (@74th) September 5, 2023
薄くなって一覧性が良い。
内寸50x70mmの袋が端を少し切れば名刺サイズに収まる。 pic.twitter.com/sMMHagz2C1
現在、「MCU・アプリケーションIC」「Register・Capacitor・Inductor」「その他受動部品(水晶発振器、MOSFETなど)」の3冊で運用しています。眺めているだけでも楽しいです。
ペン型テスターを使うようになった
ina_aniさんが紹介されていたペン型テスターを使うようになりました。テスターを出してくるときの面倒さがなくなり手軽に使えるようになりました。
ESP32-C3がメインになった
利用するESP32の中心がESP32-C3になりました。それは以下の利点です。
- 実装可能なモジュール ESP32-C3-WROOM-02 が、秋月で310円で買える! 10個単位で買っても困らない。
- オープンな一般的なアーキテクチャRISC-V(RV32IMAC)であり、わりとRustもメインでサポートされている。
- 外付けUSBシリアルが不要で、キット化しても他にツールが必要になりにくい。
- ESP32-S3のUSB HIDが思ったように動かなくて、結局ESP32-S3のUSB機能は使わない。
- ESP32-C3のピン数で割と十分となった。
リフローツールを使うようになった
今更ながら RP2040 の実装、プリヒーター使えば、0.4mmピッチの位置合わせという苦行から逃れられることに気づく。裏のランドでさっと少し動いて良い位置になる。 pic.twitter.com/nZ9xV9oaOD
— 74th (@74th) July 22, 2023
Aliexpressで2,000円以下で買えるリフロープレートが話題になり、わたしも購入しました。
1台目はアルミプレートに電流を流すポゴピンがなんか引っかかるときもあるが使えると言う状態で、2台目は早々に3Dプリントされたボディーが破損した状態で、難はありますが、それがわかって使う分には十分使えるものでした。
これで裏面パッドのあるICも臆せず実装ができるようになり、大変助かっています。
電子工作一式道具バケットを作った
電子工作でよく利用するツールをいれたバケットを作りました。
今の電子工作グッズが入っているバケット。このバケット、はんだこて台(フラックスも収納)、吸煙器をだしてこれば作業に取りかかれる。… pic.twitter.com/8T2pAVbkFV
— 74th (@74th) December 31, 2023
ペン型テスタ/ラジオペンチ/ニッパ/ピンセット/汚れ取り用はけ/LED付きルーペ/プリヒーター/鉛入りはんだ/鉛フリーはんだ/低融点はんだ/はんだ吸い取り線/ガラスカッターマット/よく使うSMD部品ケースx2/マスキングテープ/USBシリアル/DAPLink/WCH Link-E/ロジックアナライザ
これに、はんだこて台と、吸煙器を出して起これば作業に移れます。
リードフリーを選んで使うようになった
これまでは、なるべくリードフリーを使った方が良いのではと思いつつ、JLCPCBで安いものを頼むときは有鉛になってしまうことと、RP2040やQFNの実装ではリードフリーで失敗することが多く鉛入りはんだと併用していました。
しかし、ここ1年で、リードフリーはんだ完全に慣れた気がします。RP2040、QFNであったとしてもリードフリーでなんとかなるようになりました。苦手にしていた理由の一つに、はんだごての温度が適切ではなかったようなのもありました。
そして、海外向けに売れることもあったり、完成品を売る時にはリードフリーの方が望ましいと思うようになり、リードフリーを積極的に使うようにしました。特にいまのところ問題は生じていません。
始めて100gリールを使い切った
2021年11月に秋月で購入した日本アルミットはんだDB-1RMA LFM-48をついに使い切りました。このはんだ購入後も鉛入りも併用していたのもあって、やっと使い切りました。100gを使い切ったのは初めてでした。
あと、秋月で買った100g鉛フリーはんだリールを遂に使い切った!達成感!
— 74th (@74th) October 23, 2023
鉛フリーに慣れるきっかけになり、JIS-AA級フラックス使用という人体に少し優しいやつだが、結局別のフラックス足してて、吸煙機も使ってるし、フラックス落とした後白い汚れが残るので、別の鉛フリーはんだを使いたい。。。 pic.twitter.com/T8qI9Kw2wn
このはんだ、フラックス洗浄後も擦らない取れない白い跡がのこることが多く、別のリードフリーはんだを利用することにしました。0.3Agは避けて、3AgのHOZANのものを利用してみています。特に使い勝手は悪くないですが、若干フラックスが落ちにくいように感じています。
OrangePi5+がメインの開発機になった
マイコンの開発時、Ryzen2700のUbuntuデスクトップか、M1MacにLinuxVMを立ててその中で開発していました。
せっかくならばM1 Macのようにコスパの良いaarch64の動くLinuxマシンで開発をしたいと思っていました。
RG3588というARMを積んだSBCが発売され、それに飛びつき、今はOrangePi5+が開発のメインマシンになっています。 現状、机の下に設置したSBCのOrangePi5+に、MacからVS CodeのリモートSSH機能を使ってアクセスして開発できています。ただし、CH32V203は専用コンパイラが必要でそれがamd64でしか提供されていないので仕方なく旧マシンを使っています。
Linuxデスクトップを諦めた
Rock5B、OrangePi5+はUbuntuイメージが提供されるため、Linuxデスクトップとして使えないか見ていましたが、Waylandのためにチューニングするのが辛くて止めました。Ryzen2700マシンも、GTX1080で動かせるx11で使っていて、そろそろWaylandに移行すべき時期になってきたのですが、やっぱりチューニングがきつくて、Linuxデスクトップで消耗しない道を選びました。
今のところ、VS CodeのリモートSSH機能で、Arduino(VS Code拡張機能)、PlatformIOはちゃんと動いているので困りません。不便があるのは、STM32CubeMXが動かないので、Macで動かしたのを毎回コピーしているくらいでしょうか。
まとめ
来年もいろいろ作って、楽しく技術を磨きたい。ひとまずの目標は以下の通り。