以下の内容はhttps://inajob.hatenablog.jp/より取得しました。


2025年にinajobが作ったもの

今年も自分の趣味でいろいろと物を作りました。

本当は1つずつブログ記事を書くくらいの情報量があるのですが、今年はブログ記事は少な目で来てしまったので、ここで一気に紹介してみようと思います。

 

Yjsで共同編集にAPIから参加できるか試す (Gemini CLI)

とくに公開しているものではないですが、前から気になっていた共同編集Webサービスを作るためのライブラリであるYjsを使って共同編集のメモサービスを作りました。

さらに、そのサービスに対して、API経由で横から書き込みができるかどうかの実験を行いました。

 

特に問題なくAPIから書き込めました。Cosenseのような共同編集Wiki的なサービスでBotからの書き込みをサポートしたものを作れるなぁと確認しました。

 

さらにここから、人間がこのメモサービスに書いていると、どんどんLLMが割り込んできて書き込みを追加してくる謎のWebサービスを作りました。

github.com

LLMでチャットのログをWiki化する

私が管理しているDiscordサーバー「inajob川」のチャットの履歴を食わせてWikiのようなデータを作成する実験を行っています。

普通にチャットで会話しているだけで、再利用可能な知見がたまっていく体験は面白いです。

 

その成果は以下のWebページで公開しています。

inajob.github.io

 

HanamuguriをQMKでも動くようにする

以前作成した40%キーボード、Hanamuguriのメインボードを RP2040-ZeroからProMicroに変更しました。

よりスペックの低いボードに移行した感じですが、どうもRP2040-Zero + KMKの組み合わせで動作しない端末があるという問題にあたり、いっそかれているProMicro+QMKの方が良かろうということで、この改造をしました。

このキーボードには上部分にユニバーサル基板の領域があるので、こういう改造がし易くて良かったです。

inajob.hatenablog.jp

16×16のフルカラーLED表示機(一部Gemini CLI)

よくあるNeoPixelを16×16マトリクスに配置したものを使って、素朴な表示機を作成しました。

コアはArduino Nano互換ボードで、u8g2ライブラリを使いひらがなを表示する装置としてまずは作り始めました。

Flash ROMの容量が小さいので、必要なフォントだけをROMに置く方法を調べました

scrapbox.io

3Dプリンタでグリッド状の枠を用意し、初期バージョンは段ボールの筐体に本体を収めました。

 

その後筐体全部を3Dプリンタで作り直し、ゲームが遊べるようにコントローラを取り付けたりしています。

 

 

 

もう少しやりたいことがあるので、来年も作りこんでいこうと考えています。

 

また、この装置の内部で利用するためのUSB電源を2つに分岐する回路を3DPCBの技術で作りました。

このくらいの簡単な回路であれば3DPCBが便利だなと感じています。

 

 

また、このガジェット用のプログラムはemscriptenを使い、Webブラウザでも動作できるような仕組みで開発しており、実機を使わずともデバッグができるようになっています。

 

4.3インチESP32-S3開発ボードとHanamuguriつなげる部品

なかなか進捗していませんが、「日本語入力ができる小型端末」の開発計画としてESP32-S3をターゲットにして実験を進めています。

この実験のためのプロトタイプとして4.3インチESP32-S3開発ボードと自作の40%キーボードHanamuguriの組み合わせを利用しています。

これをいい感じの角度で固定するための部品を3Dプリンタで作成しました。

 

Luaをベースとした日本語入力をサポートしたソフトウェア実行環境

上の「日本語入力ができる小型端末」の計画の一部として実装しているものです。

以前作成したo-bakoに、かな漢字変換を追加したような作りになっています。

o-bako同様に、WebブラウザとESP32環境の両方で動くように作ったので、実機を使わずともソフトウェアの開発ができ、開発サイクルを早めることが出来るという作戦です。

3DPCBで作るArduBigBOY

3DPCBの技術を使いArduboyの画面大きい版であるArduBigBOYを作成しました。

ArduBigBOYはソフトウェアについてはオープンソースのものがしっかり用意されているので、単に回路図の通りに部品を配置するだけでしたが、このハードウェア部分を3DPCBを用いて作成したということです。

なかなか良いものができたなと自画自賛しています。

inajob.hatenablog.jp

3DPCBとワイヤラッピングの組み合わせ

3Dプリンタ電子基板のようなものを作成するテクニックである3DPCBをもっと簡単にできないかということで、ワイヤラッピングとの組み合わせを実験しました。

この結果は結構微妙で、ワイヤラッピング用の導線の被覆を向くのが面倒とか、丸い導線に対してワイヤラッピングしてもすぐ抜けてしまうとか、が課題でした。

 

そういえばこれ、立体交差しないなら被覆なしのワイヤーでもできるなぁと思ってたのに、続きを実験するのを忘れていました・・、また挑戦してみようかなぁ。

導電フィラメントで3DPCBの結線を試す

導電フィラメントというものがあるということで、3DPCBの結線に使えないかと挑戦してみました。

非常に抵抗値が高いので、かなり限定された条件でないと役に立たないことがわかりました。

scrapbox.io

 

 

簡単な作りのプロッタの実験(失敗)

インターネットで見つけた簡単な作りのプロッタを試してみましたが、雑に作ったということもあり、安定した動作ができないということで、途中で放棄しました。

 

しかし、この取り組みをSNSやDiscordサーバーで紹介したところ、とある方の全然別の仕組みの似たような簡単な作りのプロッタの開発を始めるきっかけとなったようで、失敗例でも公開してよかったなと思いました。

 

ESP32を用いたマルチタップ方式の日本語入力端末

いわゆるガラケーのような操作感で日本語入力ができる端末を作ってみました。

一応かな漢字変換もできるようにしてみました。

以前作ったPiPoPaというガラケーArduino端末とよく似た外見となりました。

www.youtube.com

タイムラプス撮影装置

カメラ付きのESP32開発ボードを使い、インターバル撮影をする仕組みを作成しました。

豆苗が成長する様子や、部屋から見た外の様子を撮影してタイムラプス動画のようなものを作成することが出来ます。

 

PostPixel (Gemini CLI)

モノクロのドット絵の作成・共有ができるWebサービスです。

作成したドット絵をSTL形式で出力する機能もあるので、すぐに3Dプリントすることもできます。

post-pixel.inajob.freeddns.org

 

魔法陣言語をGemini CLIに再実装してもらう (Gemini CLI)

公開するには至っていませんが、以前作成していた魔法陣言語をGemini CLIに再実装してもらう実験をしました。

言語処理系は、テストがやりやすいので生成AI向きだなと感じました。

 

Create Your Own Adventure用のゲームをAIに作ってもらう (Gemini CLI)

以前作ったみんなでアドベンチャーゲームを作ってみませんか? - inajob's blogの仕組みを使ったゲームをAIに作ってもらいました。

 

inajob.github.io

inajob.github.io

NumDun (Gemini CLI)

マインスイーパのルールを基にしたローグライトなダンジョンRPGです。

そこそこ遊べるような完成度にはできたかなと思っています。

inajob.github.io

Reversi Puzzle (Gemini CLI)

オセロのルールを基にしたパズルゲームです。

いうなれば「詰めオセロ」という感じですかね? 与えられた盤面にオセロの駒を置いていき盤面をすべて自分の色にすれば勝ちというゲームです。

inajob.github.io

 

言わせてみろ! (Gemini CLI)

ブラウザで動作するローカルLLMを用いたゲームです。

実行時に1GB程度のデータをダウンロードするので、気を付けてください。

inajob.github.io

Tiny CH32 Pad Lite用のUFOキャッチャーゲーム for 5歳の娘 (Gemini CLI)

5歳の娘でも遊べる非常に単純なルールのUFOキャッチャーゲームを Tiny CH32 Pad Lite用に作成しました。

 

inajobの年表リニューアル (Gemini CLI)

以前から存在していた私の年表ページを、きれいにリニューアルしました

inajob.github.io

 

Coffe Time Factory (Gemini CLI)

Webブラウザで動作する工場建設ゲームです。一応遊べますが、完成度は微妙

inajob.github.io

ポッドキャスト分析ツール (Gemini CLI)

ポッドキャストの文字起こしデータをいい感じに分析して、特徴的な単語でエピソード間を行き来できるツールです

inajob.github.io

 

自分ニュースレター

inajobの過去データを参照して、今日の自分のためにニュースレターを作成する取り組みです。

プロトタイプだけ作ってお蔵入りになりました。

 

inajob川にAIを住ませる (Gemini CLI)

上の自分ニュースレターを発展させて、inajobの過去データを参照して、今日の自分のための「神託」をDiscordサーバーに投稿するBotを作りました。

 

「神託」自体は結構微妙なことが多いのですが、これをきっかけにDiscordで人間同士の会話が発生するきっかけになるという目論見で実験しています。

 

rururuの情報をSNS投稿用に加工するスクリプト(Gemini CLI)

ポッドキャストの感想をrururuに書くようにしたので、その情報を基にSNS投稿する流れを支援するスクリプトを作りました。

まだ自動投稿までは出来ておらず、このスクリプトが生成した文言をコピペしてSNSに投稿しています。

100均のアクリルスタンドを立たせる補助具

見たまんまです。

ノートパソコンのキーボードをキーボードにする

秋葉原とかで安くで売っているので、試してみました。中身はESP32-S3 + KMK

 

まとめ

育児、仕事で忙しくなり、最近はモノづくりのペースが落ちているな・・と思っていたのですが、生成AIの登場と3か月のサバティカル休暇の取得により今年はけっこうたくさんのモノづくりに挑戦できたなと感じています。

 

今年のアウトプットはポッドキャストに寄せていたので、ブログの記事としては全然書けていなかったので、ここでまとめて紹介してみました。

 

ポッドキャストはこちら(ポッドキャストも今年もほぼ毎週収録できました!)↓

open.spotify.com

 

Discordサーバはこちら↓

inajob.github.io

エンジニアパパと5歳の娘で2025年に行った場所

今年も5歳の娘と様々な場所にお出かけしました。

私は関東圏に住んで長いですが、子供と一緒に遊びに行くようなスポットはほとんど知りませんでした。

また、子供向けでない施設でも意外と子供にウケるような施設があることもわかりました。

 

ということで紹介していきます!

 

目黒寄生虫館

一時期クラウドファンディングで話題になったり、あのビルゲイツが絶賛しているなんて話も聞いたことがある博物館です。

万人受けする施設ではありませんが、うちの娘は「はたらく細胞」に出てくる「アニサキス」などをしっかり見学していました。

 

目黒にはほかにもホテル雅叙園東京に併設している百段階段(今は休館してしまっていますが・・)があり、様々な展示をしていたりします。

またマイナースポットとして、お七の井戸(あのお皿を数える怪談の井戸)、とろけ地蔵(すごい数の地蔵が並んでいる)などもあり、道中もいろいろと見るものがありました。

 

記念に↓の絵本を買ったのですが、意外と気に入ってくれて、何度も読んでいます

 

 

 

お札と切手の記念館

5歳になるとお金のこともわかってくる、ということで行ってきました。

歴代のお札や様々な国の切手などが展示してあります。

近くに大きな遊具がある飛鳥山公園もあり、いい感じに時間をつぶすことができます。

飛鳥山公園までの無料のモノレールも子供は楽しんでくれました。

 

ゴミうんち展(21_21 DESIGN SIGHT) + スケート

21_21の展示は、格式高く子供には難しいものも多いのですが、「うんち」ということで見に行きました。冬のシーズンはミッドタウンの裏でスケートを楽しめるので挑戦してみました(結構高かった・・)。

科学未来館 + 南極観測船宗谷

本当は企画展を見に行きたかったのですが、すごい人で、入場をあきらめて常設展を見ました。

 

その後近くの南極観測船宗谷の見学をして、海を見ました。この船は港に停泊した状態で博物館のようになっており、子供と一緒にその内部を探検しました。

うんち展

うんちが続きますが・・ 東京ドームシティのGallery AaMoで開催されていたイベントです。その後東京ドームシティの観覧車に乗ったりしましたが、めっちゃ混んでいて、都心の遊園地の過酷さを思い知りました。

 

 

港区立みなと科学館

一般的な科学館に加えて、気象庁の気象科学館が併設されており、結構なボリュームの展示物がありました。一時期は子供が怖がっていたプラネタリウムも、今年はだいぶマシになったようで、楽しんでいました。

すみだ水族館

東京スカイツリーの根元にある水族館です。サイズ的には小さめですが、その分小さくてかわいい・きれいな生き物が所狭しと水槽で並んでいる様子が魅力的でした。

子連れで行くというより、デート向きかな?と思ったりもしました。

 

しながわ水族館

こちらは、広い水族館で、イルカショーやアシカショーなども見ることが出来ました。

 

今年は行きませんでしたが、都内にはもう一つ池袋の「サンシャイン水族館」がありますね。ここは以前行ったことがあるので、これで都内の3大水族館を制覇しました。

大島小松川公園

知人とのバーベキューで訪れた公園です。広い芝生と大型の遊具があり体を好きなだけ動かせる良いスポットだと思いました。

内牧公園

www.city.kasukabe.lg.jp

YouTuberであるフィッシャーズの動画を見た影響か「アスレチックがやりたい」という娘のために、小さな子でも遊べるアスレチックを探してみました。

アクセスは悪かったですが、12個のアスレチック的遊具で遊ぶことが出来て、娘も満足そうでした。

那須ハイランドパーク

こちらは関東圏からは少し外れた、那須塩原の遊園地です。

今年はちょっと遠出をしようということで行ってきました。都内の遊園地と比べると非常に空いていて、快適に遊ぶことが出来ました。

体を動かすようなアトラクションも多くあり、体力有り余る5歳児にもピッタリでした。

宿泊を伴う外出にはなってしまいますが、少し郊外に出ることで、混雑を回避するというテクニックを学びました。

Japan RepRap Festival 2025 (in 東京流通センター第一展示場Eホール)

3Dプリンタの展示会です。完全に私の趣味ですが、娘もつれて見に行きました。

今年のこのイベントがMakerChipが流行し始めた初めのきっかけだと思います。

我が家も娘と一緒にMakerChipを作って各ブースの方と交換しながら見て回りました。

 

「青少年のための科学の祭典」2025 全国大会 (in 科学技術館)

科学技術館で開催していた自由研究の発表会的なイベントです。

協賛企業や団体が、こども向けの科学体験を提供してくれており、やや対象年齢よりは小さい5歳のうちの子もいろいろ体験させてもらいました。

 

ゆるメカトロ展示会 3 (in 専門学校東京テクニカルカレッジ)

知り合いが展示するということと、以前自分が住んでいた「東中野」で開催ということで、娘を連れて行ってきました。8月の暑い時期だったのでちょっと娘にはきつそうでした。

 

NT東京2025 (in 科学技術館)

ここ3年くらいは毎年娘と行っています。5歳の娘でも遊ばせてもらえる展示が結構あって良いです。娘も含めて私と顔なじみの方もちらほらいらっしゃって、懇親会的な楽しみ方をしています。

Maker Faire Tokyo 2025 (in 東京ビッグサイト)

規模が大きく、5歳の娘と行っても全部を回ることは出来ないのですが、今年はスポンサーブースでたくさん遊ばせてもらいました。

私としては、個人製作のブースが気になるのですが、じっくり話を聞いたり、デリケートな展示物に気を遣ったりすることがまだ5歳の娘には難しそうなので、仕方がないですね・・

知り合いのおうち

今年も何度か、知人のおうちに遊びに行きました。

同年代のお子さんがいる方のおうちが多かったですが、私としては5歳の娘と一緒でも問題なければ、お子さんが居ない方や、もっと年の差のあるお子さんをお持ちの方ともぜひ会いたいと思っています。

おうちでなくとも、一緒の目的地(科学館など)に赴き、みんなでそこで遊ぶみたいなかかわり方も大歓迎です。

もし私の知人で、私と久々に会いたい、とかう、私の娘と交流したい!という方はお気軽にご連絡ください!

娘と相談の上、なんらかの交流が出来ればと思っています!!

 

最後に

改めて見ると5歳になって、もう週末は大体どこかに娘と遊びに行っていました。

子供がいないと行かないけれども、行ってみると自分も楽しめるような外出先がたくさんあることに気づき、隙間時間に地図アプリで近所を探索して、行きたいところにピンを立てたりしています。

 

王道の外出先よりも、ややマイナーなあまり混んでいない施設や、街ブラみたいなのが好きだなぁと改めて感じています。

 

このラインナップを見て「ここもおすすめだよ!」という場所があればぜひ、コメントやSNSなどで教えてください!

 

この記事が気に入った方は以下もぜひ見てみてください!

dinajob.hatenablog.jp

 

ポッドキャストについても引き続き毎週更新していますので、こちらも育児のエピソードを結構話しているので、ぜひ聞いてみてください!

open.spotify.com

 

Discordサーバもあります!電子工作の話題が多めですが、育児話なども大歓迎です!

inajob.github.io

 

エンジニアパパと5歳の娘で2025年に作ったもの

 

去年も書いた娘とのものづくりについて、2025年版も書いてみることにしました

inajob.hatenablog.jp

 

1年分の写真を見て思ったのは、今年は娘が一人で作ったものがかなり多くなっており成長を感じます。

今回はこの1年を通して、エンジニアの私と5歳の娘が一緒に作ったものについて、一言コメントと一緒に紹介していきます。

 

リビング正月モード

リビングの一番広い部分の壁は季節に合わせてデコレーションする仕様で運用しています。

この大量にあるL型の物体は「飴」らしいです

折り紙で手裏剣

自分が子供の頃もありました。世代を超えて受け継がれる折り紙ですね

ジョンとマイケル

梱包材のクラフト紙を切って作った謎のキャラクターです。

Geminiに絵本風にしてもらったりもしました

レシートプリンタで印刷してみました

数字カードゲーム

数字の大小とか2桁の数字の定着のために私が作ってみました

その後、娘と妻でカラフルなバージョンも作っていました

ブロックスライダーで文字を作る

クリスマスプレゼントのブロックスライダーに飽きてきたようなので、別の遊び方を提案してみる。こういうのはHackっぽくて良いですよね(特に娘は興味を示さず・・)

 

  • トップエース(TOP ACE)

ダミー豆

節分で外に撒くための豆です。撒いたら割とすぐに回収します(なんだこの儀式)

リビング美術館モード

幼稚園で使っていたスケッチブックが帰ってきたので、その中で面白い作品をリビングの壁に貼り付けました

チョコフォンデュ

今年もバレンタインはチョコフォンデュです

折り紙でSwitchらしきゲーム機

折り紙に慣れてきた娘は、自分で発明したのか、幼稚園の友達から教わったのか、様々な創作折り紙を作るようになってきました。(ちなみにうちにSwitchはありません)

2桁の数字を表示するおもちゃ

自分が作ったのですが、あまり娘には刺さらず・・

油粘土で血小板ちゃん

親の方が熱中してしまう粘土遊びです

こちらの絵本、娘も大好きで、このおかげで「ご飯をバランスよく食べる」とか「規則正しい生活をする」ことの大切さを納得したうえで実践してくれている気がします。おすすめです!

ストローで楽器

ちょっと吹き方にコツがいるので、うまく吹けずに機嫌が悪くなる娘なのでした・・

スピログラフ

模様はきれいなのだけれど、定規を固定してぐるぐると描き続けるのが意外と難しくて、これまた機嫌が悪くなる娘・・

ジオラマ

透明なプラスチックの入れ物があったので、水槽を模した工作をしてみた。意外と良いね。親子でそれぞれ作りました。

創作お面

娘が機嫌が悪くなる日が続いたので、娘に「どうしたら機嫌悪くならないかな?」と相談したところ、「面白いお面で脅かして欲しい」との事だったので作った。

 

メタに自分の機嫌が悪いことを認識して対策を考えるのは大事(効果は微妙だったかな・・)

カタカナ表

まだカタカナは怪しいので、カタカナ表を作りました。

めくるとその文字から始まるものの絵が描いてあります。

 

何の絵を描くかも娘と相談しながら書いたので、変なものが多いです。

創作折り紙

娘もいろいろ創作折り紙を作ってくるので、自分も頑張ってみました

リビング天の川モード

梱包材のクラフト紙をベースに天の川を作りました

風を感じる遊具

風が強かったので、あえて隙間風を拭かせてひらひらさせる遊具を作ってみた

材料はごみ袋です

設計図からロボットを作る

この時は私が主導しましたが、その後娘も自分で設計図を書いて工作をしていて「やるな!」となりました

食べたものを排泄する機能も搭載

子供はうんちとかすきね。

ひらがなカードゲーム

適当なひらがなを並べて文字を作る遊びをしようと思ったけど、まだちょっと娘には面白さがわからなかったみたい。

むしろランダムに文字を並べてそれを読み上げるとゲラゲラ笑ってました。まぁ大体こういうのは意図した通りには遊んでくれませんね、でもむしろオリジナルの遊び方を見つけるほうが大事だと思うので、路線変更して一緒にランダム文字を読み上げる遊びをしました。

物語を作るカードゲーム

もっといろいろあったんですが、サンリオのキャラクターとかだったので写真は省略。

ランダムに何枚か選んで、そのカードに描かれたものが出てくるお話を考えるという遊び。

娘はサンリオのキャラクターをたくさん描いて普通にごっこ遊びをしていました。手軽にキャラが増やせてそれはそれで良い遊び方!

二酸化炭素を作る実験

クエン酸重曹を混ぜると二酸化炭素が発生するというのを実験しました。ついでに洗剤も入れて泡立たせています。

なぜか娘は、絶滅とか危険生物とか毒とか毒ガスとか生命の危機に関係するトピックに関心があるようだったので、「ガス」つながりで二酸化炭素です。

 

思ったより噴き出さなくて主催者としては失敗かな・・と思っています

モンタージュ絵本

簡単な作りですが、娘は結構喜んでくれました。

どんなおもちゃでも割とすぐに飽きてしまうので、いっそこういう使い捨てのおもちゃの方がリーズナブルかなと思ったりします。

リビングハロウィンモード

梱包材が便利すぎるので、ハロウィンもこれをベースにしました

パパの絵

絵が上手になりました

クッキーにチョコレートでお絵描き

お菓子作りは休日の良いアクティビティですね

脅迫状づくり

こちらもひらがなの勉強がてら・・

Geminiで落書きの清書

今年の出来事としては画像生成AIの進歩がありますが、子供の落書きもほらこの通り!

これは魔法ですね!娘も驚いていました!

 

以下はちょっとプロンプトで「プリキュア風」とつたえましたが、それでもすごいですよね!

MakerChip

今年も娘を連れてMaker系の展示会に参加しました。その時に娘と一緒にMakerChipを作りました。

MakerChipというと通常は模様も含めて3Dプリンタで作るのですが、今回は土台となる部分のみを3Dプリンタで作り、模様は油性マジックで描くという方式にしました。

作ったMakerChipは展示会で出会った人に渡しました。自分の作ったものを人にプレゼントするという体験を娘に提供できたかなと思っています。

まとめと宣伝

今年もたくさん子供と一緒にものづくりが出来ました。

5歳にもなると自分でどんどん工作できるので、今年の作例は、親は親、子は子でそれぞれ作るようなものが多くありました。

今年は画像生成AIが話題となりましたが、子供とのものづくりにおいても、画像生成を活用することができました。

 

そんなこんなで、今年も娘と一緒に楽しくものづくりができた1年でした!

 

子育て周りのTipsについては以下のCosenseでもまとめているので、ぜひ見てみてください

scrapbox.io


また、ポッドキャストについても引き続き毎週更新していますので、こちらも育児のエピソードを結構話しているので、ぜひ聞いてみてください!

open.spotify.com

画面の大きなArduboy FX互換機を3Dプリンタで作った

Arduboy(FX)とは?

Arduboyとは、名刺サイズの8bit携帯ゲーム機です。 モノクロで128×64のミニマルなディスプレイを搭載し、Atmega32u4という8bitマイコンをコアとして構成されています。

  • seeed studio

www.arduboy.com

Arduboyはクラウドファンディングで資金を集め開発が行われ、無事資金が集まり、ここ数年間の間世界各地で買うことができました。 また、途中で新しいバージョンのArdbuboy FXも開発され、最近はArduboy FXが主として販売されていました。 Arduboy FXというのは従来のArduboyに複数のゲームを保持し、切り替えて遊ぶためのFlashメモリを追加したものです。

(現在は関税の問題などもあり、在庫切れとなっており、入手が少し難しくなっているようです)

Arduboyは自作できる

Arduboyは製品として販売されていますが、その回路図やソースコードオープンソースとなっており、部品をそろえて回路を同じように組めば、誰でも作ることができます。

また、そのために必要なツールや資料もかなり充実しています。

ということで、今回は、Arduboy FXの互換機を作ってみることにします。

こだわりポイント

ただ単にArduboy FXを真似して作るのでは、芸がありません。今回は以下のポイントにこだわることにしました。

  • 2.42インチの大きなOLED(解像度は同じく128×64)
    • オリジナルのArduboyは1.3インチのOLEDです、また市場に広く流通しているよく似たOLEDは0.96インチです。
  • 3DPCBと呼ばれる3Dプリンタを活用した回路を採用する

回路の設計

3DPCBを作るためには、まず普通のプリント基板を作るときと同じように基板を作るプロセスを採用します。 これは、以前3Dプリンタで基板のようなもの(3DPCB)を作ってみた - inajob's blogで私が行ったのと同じ方法です。

主な部品は以下です(細かいパーツがほかにもあります)

  • ProMicro
    • Arduboy互換機を作る際はAtmega32u4搭載のマイコンボードを使うのが基本です
      • KEYESTUDIO
  • 2.42インチのOLED(128×64)SPI接続版
      • Buerjia
  • 基板取り付け型の小型スピーカー
  • 押し心地の良い6mmタクトスイッチ
  • W25Q128搭載のFlashストレージモジュール
      • Saras

設計と言っても、配線については以下のページに詳しく解説されているので、この通りに配線します

github.com

Pin wiring tableと書かれた表のProMicro 5V(standard wiring)に従って配線しました。

いくつか注意点があります

  • OLED CSはGND/(inverted CART_CS)と書かれています。 Arduboy FXを作る場合はGNDではなく inverted CART_CS にする必要があります。
  • CART_CSはorgとnewの2通りが書かれています。今回はnewを採用しました。これはArduboy FXと同じ配線です
  • 上に出てきたinverted CART_CSを実現するために、NOT回路を構成する必要があります。に従いトランジスタで回路を構成しました
  • スピーカーは適当に電解コンデンサでデカップリングしたのちに取り付けています。十分大きな音が鳴ります
  • リセットボタンを搭載しました

基板の設計

回路図が出来たら次は基板の設計です。

3DPCBということで、2mmの太い配線で、なるべく片面だけを使うように回路を設計します。クリアランスは0.2mmと、いつものプリント基板と同じ設定のままで設計してしまいましたが、これだとフィラメントが1本だけの壁になるようで、もう少し太くなるように設計してもよかったかなと思っています。

3DPCB化

3Dプリンタで基板のようなもの(3DPCB)を作ってみた - inajob's blogと同じようにOpenSCADを使い3DPCBを作っていきます。

今回作るのは3DPCBのメインの造形と、2つのカバーです。

まずメインの3DPCBです。

基板でいうところの導通する部分を溝にしてViaは少し大きめの穴にしました。またカバーと結合するための穴をあけています。データはKiCADから出力したDXFをそのまま使うので、モデリングは不要です。 Viaや穴はドリルデータに出力されるので、前回同様DXFファイルに変換して利用しています。

Viaの穴は貫通させずあえて底面1レイヤーだけは塗りつぶしています。こうすることで1層目の定着を安定させる目論見があります。

次がボタン部分のカバーです。

ボタン部分は6mmの良くあるタクトスイッチを使っています。ボタンの頭が長いものを使ったので、その頭が飛び出すようなカバーを作ります。 このカバーは無くても遊ぶことは出来るのですが、3DPCBはボタンを十分に基板に固定することができず、グラグラするため、このカバーで固定するようにしました。

ボタンの頭の穴をあける部分は、KiCADのUser定義レイヤーに○を描いたものをほかの配線と同様にDXF形式で書き出して利用しています。

最後が、メイン部分のカバーです。

3DPCBの配線面と反対側に設置する部品の部分だけ窓を開けたようなカバーです。 また、ProMicro、OLED、Flashモジュールは直接3DPCBに接続するのではなく、2.45mmピッチのソケットを介して繋ぐようにしており、そのソケット部分も窓になっています。

こちらも3Dプリンタの印刷を安定させるために底面1レイヤーは塗りつぶしています。またソケットの部分については、上からピンを差し込むための穴と、ソケットを取り付けるための窓の高さを変更して、ソケットとピンの間にこのカバーが挟まるような形状にしています。

こうすることで、ソケットからマイコンボードを抜く際に余計な力が3DPCBにかからないようにしました(実際組み立ててみると、3DPCBとソケットは結構強い力でくっついているので、この配慮は不要だったように思います。

そんなこんなで、3DPCBが完成したので、これらを数時間かけて印刷しました。

前述したように、配線と配線の間のクリアランスを0.2mmとしたため、一部の溝は間の壁が非常に薄くなって、触ると折れてしまうような感じに仕上がりましたが、まぁそのくらい壊れても配線は問題なくできるので、このまま実装に移ることにしました。

配線・部品実装

溝に沿わせて配線します。

配線が交差することはないので、被覆なしの導線で配線することもできるのですが、手持ちがなかったので被覆付きの導線を使って配線しました。

折角被覆付きなので、役割に応じて違う色で配線してみました。

このような導線アソートを使うと好きな色を好きなだけ使えて楽でした。太さは28 AWGを使いましたが、もっと細くてもよいと思いました。より線よりも単線のほうが扱いやすかったかもしれないとも感じました。

  • CBAZY

3DPCBでの配線は、どこからどこに配線を接続すべきかが一目瞭然なので、「無心」で配線作業できるのが面白いと感じました。一種のセラピーを受けているような時間でした。

3DPCBの欠点としては、はんだ付けが難しいことです。配線と部品をはんだづけするわけですが、すぐ近くにプラスチック(PLA)でできた3DPCBがあるため、簡単にプラスチックを溶かしてしまいます。 慣れれば適切な箇所に熱を加えたり、サッと作業するなどで、対応できますが、それでもいくつかの箇所で3DPCB自体を溶かしてしまいました。(たぶんこの溶かしたときの煙も健康に良いものではなさそうです・・)

配線が終わったらカバーを装着します。部品のある場所は窓が開いているので、スッと入ります。

カバーを付けるとこんな感じです。この上からOLED、Flashモジュール、Pro Microを突き刺すことになります。

Pro Microの準備

Arduboy FXを作るにあたり、Pro Microに適切なブートローダーを書き込む必要があります。

ここでも、以下のリポジトリを使います。

github.com

READMEの指示に従い、Arduino IDEのBoardとしてHomemade Arduboyを追加します。

さて、ここからPro MicroにArduboy FXのブートローダーを書き込むのですが、これを実現するためにはAVRのライターが必要となります。

今回はArduino UNO(の互換機)をライターとして使うことにしました。Arduinoをちょっと深く触った人なら体験したことがあるかもしれませんが、Arduino UNO自体をAVRライターとして使うという技があるのです。

配線やArduino IDE上での操作は以下のページが詳しいので参考にしてみてください。

ht-deko.com

↑の記事の中で「目的のArduino」と書かれて図ではArduino Microが選択されている個所で、「Homemade Arduboy」を選択することで、Arduboy FXのブートローダーを書き込むことができます。

Homemade Arduboyを選ぶと、さらにいくつかの項目を選択することができますが、今回は以下の図のように設定しました。

  • Port
    • PC上で認識されたポートに合わせてください
  • Based on "Pro Micro 5V - Standard wiring"
    • Standard wiringで配線したのでこれを選択
  • Bootloader "Cathy3K (starts with menu)"
  • Display contrast: "Normal"
    • 変更していませんが、コントラストが設定できるようです
  • Core: "Arduboy optimized core"
    • 変更していません
  • Display: "SSD1309"
    • ここは要変更。利用するOLEDに合わせてコントローラを選択します
    • 純正のArduinoはSSD1306です
  • Flash select: "Pin2/D1/SDA (official)"
    • 配線をこのようにしたのでこれを選択
  • Programmer: "Arduino as ISP"
    • Arduino UNOを書き込み機として利用するのでこれを選択
    • 事前にArduino UNOにはArduinoISPというスケッチを書き込んでおきます

で、ここまで出来たら、ArduinoISPを書き込んだ、Arduino UNOをPCに繋ぎ、さらにそのArduino UNOからPro Mircoに適切に配線して、Burn Bootloaderを選択すると書き込みが開始されます。

自分の場合ですが、この書き込みがうまく行かないことが何度かありました。配線を見直したり、何度か挑戦していると書き込むことができたのですが、原因は不明です。

動作確認とFlash Cartの書き込み

上記でブートローダーを書き込んだPro Micro、OLED、Flashモジュールをカバーの上から3DPCBに突き刺して準備完了です。

ここからは以下のツールを使います。 READMEに従いFX Activatorを起動します(WindowsMac/Linuxかで操作が違います)

github.com

このツールは本来、純正のArduboyに後からFX mod chipを付けた際にそれを有効化するためのものです。(以前この作業を紹介しました Arduboy FX Mod-ChipによるArduboyのFX化 - inajob's blog

今回はこのツールの機能を一部利用してFlashモジュールの接続確認と、Flash Cartの書き込みを行います。

まず、今回作成したArduboy FX互換機をPCに繋いでFX Activatorの画面のUpload Hex fileをクリック

画面がやや乱れるのですが、ここでMOD CHIPがNGを示す×、FLASH CHIPがOKを示すチェックマークになっていることを確認します。(MOD CHIPが×なのが不気味かもしれませんが、これであっています)

FLASH CHIPがOKであれば問題ないので、この画面では何も操作せずに 続けてFX ActivatorのOptionsのメニューから「Apply SSD1309 display patch」をクリックしてチェックマークを入れます。

この機能は素晴らしいもので、純正Arduboy FX向けのゲームのバイナリの一部をSSD1309用に自動的に書き換えてくれるというものです。この機能のおかげで、大量のゲームをこの互換機用に再コンパイルするという手間が省けます。 (これはSSD1309のみに提供されている機能で、ほかのOLEDはこのような便利な方法はありません)

チェックマークがついたら、画面上の「Upload Flash image」をクリックします。プログレスバーが伸びるのがゆっくりなので、しばし待ってください。

最後まで書き込めたら、互換機の真ん中のRESTボタンを押すことで、Arduboy FXとして起動します。

最新のFlash Cartの入手

今回書き込んだのはFX Activatorに同梱されているFlash Cartですが、これは少し古いものです。

最新が欲しい場合はPress Play on TapeページのArduboy FX - The whole encildaのリンクをクリックして遷移するCartBuilderのページからDownload BINをクリックして最新のBINファイルをダウンロードできます。

このbinファイルを先ほどのFX Activatorから選択して「Upload Flash image」をクリックすることで、このbinファイルをArduboy FX互換機に書き込むことができます。

まとめ・感想

Arduboy FXの互換機が比較的簡単に作れることは知っていたのですが、実際にやってみたのは初めてでした。 Arduboyは資料やコミュニティが充実しており、この記事に書いたような情報はちょっと調べればすぐに見つけることが出来、非常に進めやすかったです。

3DPCBは以前も少し試したのですが、ここまで実践的な回路ではなかったので、今回やっとまともに使ってみたという気持ちです。 プリント基板を作るほどでもないが、ユニバーサル基板にもじゃもじゃ配線するのもちょっと・・というニッチな需要にこたえる面白い手法だと感じました。

Arduboyの入手性が悪くなっている、今だからこそぜひ皆さん自分でArduboyを作ってみてはいかがですか?

20ドルで情報収集の未来を体験!自作「全録音生活」システムを試してみた

※この記事は私のポッドキャストの音声を基に作成しています。音声で聞きたい方はこちら listen.style

ローカル文字起こしAIとウェアラブルレコーダーで構築する「パーソナル全録音システム」の衝撃

最近、AIの進化が目覚ましいですね。特に大規模言語モデル(LLM)や生成AIは、私たちの情報収集や整理のあり方を大きく変えつつあります。文字ベースのAI活用はすでに身近なものになりましたが、音声の文字起こしAIの進化は、さらに新たな可能性を秘めていると感じています。

今回は、私が個人的に試している「全録音生活」というプロジェクトをご紹介します。これは、安価なウェアラブルレコーダーとAI技術を組み合わせることで、日常の会話や出来事を自動でテキスト化し、情報として活用する試みです。


音声データのテキスト化:ローカル文字起こしAIの活用

音声データをテキストに変換する「文字起こし」は、AIの中でも特に身近な技術になりつつあります。以前は専用のサービスや高性能なPCが必要というイメージでしたが、今は手元の環境でも十分に実用レベルの文字起こしが可能です。 (今回利用したのは、ThinkPad L15 Gen2を購入した - inajob's blog で紹介しているノートパソコンです。特にGPUが強いとかでもないので、CPUのみで処理を実行しています。)

私はまず、オープンソースの文字起こしツール「Whisper」を試しました。これは無料で利用でき、PCのCPUだけでも動作するのが魅力です。しかし、実際に試してみると、私のノートPC(GPUオンボード)では、10分の音声データに20分近い処理時間がかかり、日常の雑音や無音区間が多いデータでは精度も今ひとつでした。同じ言葉を繰り返したり、意味不明な文字が羅列されたりすることも。

そこで見つけたのが「Faster Whisper」です。名前の通りWhisperを高速化した実装らしく、これを試したところ、驚くほど処理速度が向上しました。10分の音声データがなんと5分もかからずに文字起こしできるようになったんです。特に無音区間が多いデータでは、その部分をうまくスキップしてくれるようで、効率が格段に上がりました。

プログラムはたったこれだけです

from faster_whisper import WhisperModel
import subprocess
AUDIO_FILE_NAME = "XXXX.mp3"

model = WhisperModel("large-v3", device="cpu", compute_type="int8")

segments, info = model.transcribe(
        AUDIO_FILE_NAME,
        beam_size=5,
        vad_filter=True,
        without_timestamps=True,condition_on_previous_text=False)
print("Detected language '%s' with probability %f" % (info.language, info.language_probability))
for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

実際には全録音生活の録音データの大半は会話ではなく雑音なので、10時間とかのデータであっても書きおこし自体は1時間以内で終わることがほとんどでした(多く会話がある日は書きおこしにも時間がかかります)。

同じ文字が繰り返し出力されてしまう問題に関してはcondition_on_previous_textFalseに設定することで回避できました

加えて音声データを少し加工することで、音声認識の精度が上がることにも気づきました。具体的には、ノイズの低減、低周波数の音声のカット、ラウドネスノーマライズを実施しました(この手法は私のポッドキャストの音声編集時にも行っています。こんなところで知見が役に立つとは!)

もちろん、Faster Whisperで出力されるテキストは完璧ではありません。単語レベルでは合っていても、文脈が不自然だったり、固有名詞が間違っていたりすることはよくあります。


生成AIとの連携によるデータ分析

Faster Whisperで文字起こしされたデータは、そのままでは活用しにくい部分があります。そこで、私は次のステップとして、クラウドベースの生成AIを組み合わせることにしました。具体的には、普段使い慣れているGoogleの「Gemini」や「ChatGPT」といったサービスです。

文字起こしされたテキストをこれらの生成AIに投入し、「このテキストは音声から文字起こしされたもので、多少の誤字脱字や繰り返し、意味不明な箇所がある。これをきれいな日本語に直してほしい」「箇条書きで要約してほしい」といった指示を与えます。すると、比較的自然な日本語で、かつ要点がまとまったテキストが返ってくるんです。

ここでもローカルLLMを使う選択肢もあるのですが、ローカルLLMでは速度・性能面でクラウドベースの生成AIに劣るということに加え、Geminiの無料使用の範囲で十分に分析できるという理由から、クラウドベースの生成AIを利用することとしました。

この「音声データ → ローカル文字起こしAIでテキスト化 → 生成AIで分析」というワークフローを確立することで、不完全な文字起こしデータでも、実用的な情報へと生まれ変わらせることができるようになりました。日常の何気ない会話も、トピックレベルであれば十分に把握できるレベルになります。


全録音生活を支えるデバイス(このデバイスは買い換えました、追記を確認してください)

この全録音生活を実践する上で、手軽に長時間録音できるデバイスは欠かせません。私が目をつけたのは、中国通販サイトのAliExpressで見つけたウェアラブルレコーダーです。

私が購入したのは、わずか15ドル(約2,000円強)ほどのキーホルダー型の小型レコーダーです。バッテリーは8時間程度持続し、16GBのデータ容量で約160時間分の録音が可能。8時間なので丸一日には少し足りませんが、どこかで1時間ほど充電時間を取るか、明らかにしゃべらない時間帯に録音を停止することで、1日のほとんどすべての会話を録音することができます。(現在もっとバッテリー容量の大きなものを注文中です)

盗聴器として販売されているケースも多いようですが、私自身のプライベートな記録として、倫理と法律の範囲内で利用する分には非常に魅力的なデバイスだと感じました。もし試してみたい方がいれば、AliExpressやAmazonなどで「ウェアラブルレコーダー」と検索してみてください。様々な形状やバッテリー容量のものが、10ドル〜30ドル程度の価格帯で手に入ります。

以下はAmazonで探した近い製品です。私の手元にあるものは16GBモデルなので厳密には違います。

  • Jectse

もう少し電池が長持ちするとしたらこれかなと思っていますが、上と比較するとちょっと値段が高いかなとも思います(電池も長持ち、容量も大きいので妥当な値付けだとは思いますが・・)。

追記: 全録音生活を支えるデバイス

上で紹介したデバイスは、1日中の録音に堪えなかったため、新しく以下のモデルを購入しました (AliExpressで$20程度でした)

  • Howabo

ポッドキャストにて音声で紹介もしています。 listen.style

  • 1日中録音できるバッテリー(カタログによると35時間、実際に16時間程度録音しているが問題なし)
  • USB Type-C端子がそのまま刺さる(前機種は特殊ケーブルだった)
  • mp3で録音できるのでストレージにたくさん音声が入る
  • 大きさは前機種よりむしろ小さい
  • 録音中かどうかをLEDで確認する方法がない(前機種は長押しでLEDが点灯した)
  • 2時間単位でファイルが別になる
  • 充電しながらの録音ができない(前機種は出来た、これは人によってはつらいかも)

日常への適用:家族との会話の記録

この「全録音生活」は、特にご家族、とりわけお子さんがいる環境と非常に相性が良いと感じています。普段の生活では、家族間の会話は常に発生し、大人も自然と発話する機会が非常に多いですよね。例えば、子供と遊んでいる時、食事中に話している時、ちょっとした出来事を話している時など、意識せずとも多くの会話が生まれます。

そうした自然な会話を継続的に録音することで、例えば先日科学館に行った際の会話や、昼食の感想、娘との何気ないやり取りなども、後からテキストデータとして手元に残せるようになりました。これは、後から振り返るための貴重な「日記」や「記憶のトリガー」になりうると感じています。

実践における課題と今後の展望

実際にこのウェアラブルレコーダーとAI連携システムを導入し、3〜4日ほど「全録音生活」を試してみた結果、期待通りに機能していることを確認できました。1日の行動内容や、どのような会話をしたかといったトピックレベルであれば、問題なく抽出できています。先日科学館に行った際の会話や、昼食の感想などもテキストデータとして手元に残るようになりました。

このシステムの最大の魅力は、そのコストパフォーマンスです。

  • バイス: ウェアラブルレコーダーは15ドル程度の初期費用のみ。
  • 文字起こし: ローカル文字起こしAI(Faster Whisper)を使用するため、PCのCPUパワーと電気代のみ。
  • 整形・要約: 生成AI(Geminiなど)は、無料の範囲で十分に利用可能。

つまり、実質的にかかる費用は15ドルのデバイス代と、PCの電気代くらいで、誰でもこの「全録音生活」を試すことができるんです。Pythonでの簡単なプログラミングは必要ですが、それ以外は購入してボタンを押すだけなので、エンジニアでなくとも十分チャレンジ可能です。

しかし、現時点での最大の課題は、「集まった大量のデータをどう活用するか」という点です。日々の記録がテキストとして手元に集まるのは素晴らしいのですが、それをどう整理し、ナレッジとして活用していくかについては、まだ明確な答えが見つかっていません。これは、世の中のAI活用全体にも言えることかもしれませんが、データを集めることはできるようになっても、その次のステップが見えていないのが現状です。

もちろん、過去の会話を聞き直して「あの時何話してたっけ?」と確認するような使い方はできますが、日常でそこまで頻繁に振り返ることもありません。今後は、これらのデータを知識ベースとして構築したり、パーソナルアシスタント機能と連携させたりといった、さらなる活用方法を探っていきたいと思っています。

既存サービスには、録音とAIによる文字起こし・要約を組み合わせた「PLAUD AI」のような製品もすでに存在します。しかし、これらは28,000円前後と高価な上に、クラウドサービス利用料がサブスクリプション形式になっている場合が多いです。今回ご紹介した自作システムは、それらのサービスに比べて圧倒的に低コストで、同様の体験ができるのが大きなメリットです。

もちろん「PLAUD AI」が法外に高いというわけではなく、このような製品はまさに、前述した「集まった大量のデータをどう活用するか」についての答えを考えて実装されているものとなっています。このような点に価値を見出すのであれば妥当な金額とは思いますが、今回私はこの部分を自分で作りたいという気持ちと、PLAUD AIが(おそらく)フォーカスしているビジネスでの活用という面には興味がないということから、自作することを選択しました。

  • PLAUD


手元で現在行っている分析

「集まった大量のデータをどう活用するか」ということで、今試しているのが、音声データからナレッジを抽出する試みです。ここではナレッジというのはタイトル+短い本文という形のデータです。全生活録音の書きおこしデータをもとにこのナレッジを生成させるのです。

今の仕組みでは1日の録音に対して大体50~100個のナレッジが生成されています。まぁこれがあっても「それで?」という話なのですが、何となくこの形式のほうが活用しやすいと考えています。

たとえばある日の会話データの書きおこしから、以下のようなナレッジが抽出できます

  • 缶詰の蓋の危険性
    • ある容器の蓋が非常に危険であると警告されている。開けた後の蓋の縁が鋭利で、指を切る可能性があるとのこと。包丁ほどではないが、滑らせるように触ると切れるほどの切れ味があるため、取り扱いには注意が必要である。
  • 幼稚園への適応と遊び方の変化
    • 以前は幼稚園に行きたがらなかったが、現在は適応している様子が語られている。休みの日には幼稚園に行けないことを残念がるほどになった。また、幼稚園のおもちゃに飽きても、新しい遊び方(絵本を読むなど)を自分で見つけるようになったという成長が報告されている。
  • 青ワザのケアと出発前の身体確認
    • 青ワザの治療として軟膏を塗布し、ズボンをずり下げて患部を確認。青ワザはかなり治ってきている様子。その後、背中を「もちもち」とケアし、出発前の最終的な身体の状態を確認した。着替えを促し、準備が順調に進んでいることを確認した。
    • (注:これは「青アザ」の間違いですね)

さらにここから、LLMに雑談や蘊蓄(うんちく)のようなものを生成してもらいました

  • 缶詰の蓋の危険性
    • 缶詰の蓋の鋭利さ、本当に危険ですよね。古代エジプトでは、メスという道具が使われていました。これは、現代の外科手術で使われるメスと同じように、物を切るための道具です。石器時代から続く、鋭利な刃物への人間の探求心は、缶詰の蓋にも受け継がれているのかもしれません。缶詰の蓋は、その構造上、開けた時に縁が鋭利になってしまうことがあります。これは、缶詰の密封性を保つための工夫でもありますが、同時に危険もはらんでいるという、まさに諸刃の剣ですね。
  • 青ワザのケアと出発前の身体確認
    • 青ワザは、内出血によって赤血球が破壊され、そこに含まれるヘモグロビンが分解される過程で様々な色に変化します。最初は赤紫色ですが、時間が経つにつれて緑色、黄色へと変化していくのが特徴です。

とりあえず今はこんな感じで、翌日以降、妻や5歳の娘に隙あらばこの手のうんちくを伝えて反応を見たりしています。

これ以外にも、ナレッジの類似度の高いものを検索する仕組みや、1日の活動のサマリを生成する仕組み、明日に残したタスクを列挙するなど、いろいろと試していますが、なかなか「これぞ!」というものが見つかっていないのが実情です。

ぜひあなたも試してみてほしい

「全録音生活」は、現代のAI技術が個人の情報環境にどのような変化をもたらすのかを、身をもって体験できる面白い試みです。低コストで手軽に始められるので、もし興味を持たれたら、ぜひご自身でウェアラブルレコーダーを手に入れ、無料のツールと組み合わせて試してみてください。

もちろん、録音デバイスの利用には、法律やマナーを遵守し、周囲に配慮することが重要です。プライバシーに関する問題がない範囲で、ご自身の生活に新しい風を吹き込んでみてはいかがでしょうか。

この「全録音生活」から得られたデータに、もし何か良い活用アイデアがあれば、ぜひ教えてください!

参考

zenn.dev

2024まとめ

毎年恒例の1年のまとめです!

ピックアップニュース

体調が悪かった

体調不良な1年でした。今年から体調不良が発生した場合に、個人の日記に体調不良コーナーを設けて、どのような症状か、どのように対応したかを記録するようにしたのですが、皮肉なことに非常に充実した体調不良日記となりました。 (と言っても仕事を休むほどの体調不良ではなく、地味に咳が出る、鼻水が出るというようなものがほとんどでした。)

来年は日常的な運動を増やすなどして、体力をつけて、もう少し健康に過ごしたいです。

ポッドキャストで「ゆるやかな親孝行」を始めた

昨年から始めたポッドキャスト「#inajob の試しに録音してみた」ですが、この音声をSDカードに入れて実家の親に送るという活動をしています。 親にも好評のようで、ある程度まとまって聞いたところで、便箋にまとめて「おたより」として感想を送り返してくれており、新しいスタイルのコミュニケーションができています。

普段発信しているポッドキャストを流用する形で親孝行もできるということで、非常にコスパが良いと感じています。来年も続けていきます。

ポッドキャストでも話しました: talk32: ポッドキャストで近況報告という形の親孝行 - #inajob の試しに録音してみた | Podcast on Spotify

子連れでMaker Faire Tokyoに参加できた

娘も4歳となり、2人で一緒にお出かけする機会の多い1年でした。なかでもMaker Faire Tokyoに一緒に行けたのはとても嬉しかったです。 自分自身が久しぶりの参加、ということに加え、知り合いの皆さんに娘を紹介しつつ展示を見て回るという体験が良かったです。

ポッドキャストでも話しました: talk69: 4歳の娘とMaker Faire Tokyo 2024に行ってきた - #inajob の試しに録音してみた | Podcast on Spotify

過去の日記のサルベージ

地味ですが、20年前の自分の日記を発掘したので、日記システムに取り込みました。これにより毎日の日記を書く際に、過去20年分の(と言っても歯抜けですが)日記を見ながら、今日のことを考えることができるようになりました。

日々のやることに注視しがちですが、20年間前の大学生になって間もない自分の日記などを見ると、自然と視野も広くなる気がします。

ポッドキャストでも話しました: talk66: 20年前の自分を振り返りながら生活する - #inajob の試しに録音してみた | Podcast on Spotify

ステータス

  • 今の家に引っ越してから8年目
  • 会社に入ってから15年目
  • 結婚して8年ちょっと
  • 娘が生まれて4年目
  • 娘は幼稚園入園
  • ポッドキャスト2年目
  • Discordサーバー 「inajob川」 1年目

今年学んだスキル

  • CH32V003搭載基板の作り方
  • RP2040搭載機版の作り方
  • ESP32搭載機版の作り方
  • Audacity Scriptによるポッドキャスト編集の自動化
  • Vite + TypeScriptで自分用のWikiを作り直す
  • Discordコミュニティ inajob川 の運営
  • マンション理事長
  • 子連れイベント参加

今年買ったもの

オタマトーン。たまに演奏してます。

  • Otamatone

スマートフォンを新調しました

motorora g64 5G

感想

体調が悪かった1年でした。運動とかも意識してやっているのだが・・来年は強度を上げていこうかなと思います。

ポッドキャスト2年目、当初意識していなかった親孝行との繋がりも見つかり、Discordサーバも始めることができ、自分中心のコミュニティがじわじわと構成できつつあります。この辺りは在宅勤務、子育てによる課題の解決策として、模索していたので進展があって良かったです。

電子工作も予定通りほぼ1ヶ月に1Project取り組むことができ、ブログも継続できています。

ワークライフバランスを意識しながら、来年も色々挑戦していきたいです。

4歳の娘とのものづくりに関しては、別の記事を書いていますので、こちらもご覧ください inajob.hatenablog.jp

ESP32で64個のフルカラーLEDを制御する基板を作った

この記事ははJLCPCBの提供でお送りします。

JLCPCBとは

jlcpcb.jp (↑こちらは日本語版のログインページで、お得なクーポンも配布されています。)

JLCPCBとは、プリント基板製造などで有名な香港の企業です。

日本からでもWebページでポチポチするだけでKiCADなどで作成した基板データの製造を依頼できます。

値段もかなりお手頃で、ホビー電子工作ユーザーの間では広く利用されています

これは何?

8×8=64個のフルカラーLEDを制御するための基板です。 コアとなるマイコンはESP32で、USB接続で簡単に開発できるというものです。

設計

以下のような要件で基板を設計しました。

  • USB Type-Cでパソコンと接続できる
  • USB シリアル変換IC CH340G
  • 自動リセット回路
  • 2mm角のシリアル制御できるフルカラーLED (8×8=64個)
  • ESP32の足をそのまま引き出した拡張ポート
  • フルカラーLEDの制御を3.3V、5Vのどちらか選択できるジャンパ

個々の要素はこれまで作ってきた基板で検証済みのものが多いので、比較的スムーズに設計できました。

例えば、USB Type-CコネクタについてはUARTで書き込みできるCH32V003開発ボードを作った - inajob's blogで検証しましたし、自動リセット回路についてはESPboyというオープンソースの携帯ゲーム機を日本用に再設計してみた - inajob's blogで学んだものです。

部品も上記の製作の時に買ったものがまだ残っていたので、新たに買い足す部品は少なくて済みました。

2mm角、シリアル制御フルカラーLED

今回使用したのはYF923-2020というフルカラーLEDです。

このサイズでメジャーなものとしてはWS2812B-2020やWS2812C-2020なのですが、仕様書を見るとこれらのLEDは3.7~5.3Vということで3.3Vで動かないようなのです(しかし実際のところはそれでも動く、という情報が多数見られますが・・)

今回はどうせ買うなら、ということでプロトコルはWS2812互換ですが、3.3Vでも動作可能とうたっているYF923-2020を選びました。

この情報は3.3V電源で動くNeoPixel LED YF923-2020 をXIAO RP2040に乗っけてPRK Firmware使ってLチカ - kuriharaのブログで学びました。有益な記事に感謝します。

まぁ、3.3Vで動くということですが、何かあったときのために5Vで動かすための仕組みも用意しておき、ジャンパで切り替えできるようにしておきました。(5V接続は結局試してないですが・・)

LEDを配置する面はこんな感じ。GNDを白抜き文字にしてみました。

ICを配置する面はこんな感じ。 ESP-WROOM-32のアンテナ部分は基板から飛び出すように配置しています。 また、各フルカラーLEDに対応したコンデンサも実装できるようにしましたが、これは実装しなくても問題なく動作しました。

発注

サイズは63mm角なので、$4 + 送料という安価で基板製造できました。

実装

さて、この基板、結構表面実装部品が多いので、実装は大変です。

まずは、USB Type-CポートとCH340G、レギュレータ周りの部品を実装して、USBシリアルデバイスとして認識できるかを確認しました。

はんだ付けにははんだペーストとホットエアーガンを使いました。さすがに何度も実装しているので、ここはすんなりと認識されました。

その後、ESP-WROOM-32の実装です。このモジュールは1.27mmピッチの端面スルーホールになっており表面実装部品として実装することにしたのですが、意外とはんだ付けにてこずりました。

この程度のピッチであればそんなに苦労したことはないのですが、特にGNDの端子について、熱が伝わりづらくうまくはんだが乗らないような感じがしました。

まぁ四苦八苦しながらESP-WROOM-32をはんだ付けしたところで、Arduinoとしての書き込みができない問題に気付きました。

色々調べてみると、IO0をHIGHにした状態でRSTをLOWにしてHIGHに戻すとシリアルコンソールに文字が出ていることに気づきました。これはうまくESP32は起動しており、シリアル接続もうまくできているが、自動リセット周りが何かおかしいぞ・・・ということであたりをつけて調べていると、自動リセット回路にプルアップが足りていないことを発見しました。

これは凡ミス・・(こういう回路のピンに求める条件みたいなのをテストするような仕組みはないのかな?、ソフトウェアの単体テストで書くアサーションのような・・)

ということで、とりあえず手元にあった10KΩの抵抗でプルアップを付け足したところ、無事、Arduinoとしての書き込みができました。

自動リセット回路だけでなく、IO0やRSTに対応するスイッチをつけておいてもよかったかなと感じました。

さて、最後は大量のフルカラーLEDです。

その前に、LED制御信号線に問題があることに気づきました。まず3.3Vレベルの信号線と5Vレベルの信号線につけているラベルが逆になっており、シルクの記載と実際に流れる信号レベルが異なっていました。

まぁこれはシルクの記載を無視してジャンパすれば問題なさそう。

そしてもう一つは、3.3Vレベルの信号線が実際のフルカラーLEDの制御ポートと接続されていない問題がありました。

これは大問題で、接続されていないので、当然信号をいくら出力してもフルカラーLEDには到達しません。

原因となっているのがこのラベルのようで、これDIN5とIO27というラベルがくっついており、横切っている配線と2つのラベルはくっついていない状態だったのです。

設計図がこうなっていると、DRCでも配線ミスとして検出されないため、結果として必要な結線を見落としてしまっていました・・

まぁここも必要な配線をジャンパすることで、問題を解決できました。

気を取り直してフルカラーLEDの実装です。

まず1つ実装してみて、ESP32から制御できるかを確かめました。

簡単にESP32から制御するために、ここからはMicroPythonを用いることにしました。

ThonnyというMicroPython用のIDEを使って、MicroPythonのファームウェアをまず焼きこんで、その後以下のようなプログラムを転送して動作を確認しました。 ESP32向けのMicroPythonにはNeoPixel互換のフルカラーLEDを制御するためのモジュールが標準搭載されているので本当に簡単に制御できました。

import neopixel
import machine
import time
np = neopixel.NeoPixel(machine.Pin(27), 64)

count = 0
while True:
    for i in range(64):
        np[i] = (0,((i + count)%8)*2,((int(i/8) + count)%8)*2)
    np.write()
    time.sleep(0.1)
    count = count + 1

Arduinoだと、(特にWindowsだと)コンパイルが非常に遅く、転送も含めると開発のイテレーションが非常に遅くなってしまい、イライラするのですが、MicroPythonだと、さっと書いたコードを実行できるのでストレスなく動作テストができました。

さて、ここからはフルカラーLEDをどんどん実装していって、キリの良いところで動作テストをすることを繰り返しました。

このフルカラーLEDはデイジーチェーンで数珠繋ぎに接続されているので、あるLEDのはんだ付けがうまくできてない場合は、そのLEDより先は全部制御できなくなるため、これを頼りにはんだ付けを進めました。

そしてついに64個すべてのLEDの実装が完了しました。(肩凝った・・)

まぁここまでできれば、あとは好きな模様を表示したり、WiFi経由で表示内容を制御するなど、応用先は様々ありそうです。

まぁ今回は基板の機能が一通り動くことを確認できたということで、ひとまず記事にしました。

まとめ

ESP32をコアとした8×8=64個のフルカラーLEDを制御する開発ボードを作りました。 表面実装部品が結構ありましたが、実装面で苦労することはあまりなく、はんだ付けが少しは上達したかなと感じました。

ESP32の開発はコンパイルが遅いという印象でしたが、MicroPythonを使うことで迅速に開発サイクルを回すことができました。

回路のミスもいくつかありましたが、切り分けがうまくでき、そこまで悩まずに対処できたのもよかったです。

今までESP-WROOM-32を使うときには開発ボードを使っていましたが、今回初めて自作の基板に直接実装することを試すことができました。今後は自作のガジェットにも積極的にESP32を採用できそうです。




以上の内容はhttps://inajob.hatenablog.jp/より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14