3Dプリンタと無料のツールで「うんこクッキー」を作った

f:id:inajob:20220122080901p:plain

事の発端

1月某日、我が家の電子レンジが壊れました。これを機に新しいものを買おう・・という事になりいろいろと吟味した結果・・

オーブンレンジを買いました!

オーブン機能をつけたのは、「お菓子」を作りたかったから!

ということで早速クッキーを作る事にしました。

3Dプリンタで型を作る

クッキーの型は市販のものも購入していたのですが、せっかく家に3Dプリンタがあるので、オリジナルの型も作ってみることにしました。

今回作るのは、みんな大好き「うんこ」です!

unko.svg

まずはSVG画像でうんこのシルエットを作ります。作図にはInkscapeを利用しました。 ベジェ曲線を使った作図は少しコツが必要ですが、慣れればこのくらいは簡単に作れます。

f:id:inajob:20220121215523p:plain

unko.scad、unko.stl

SVG画像をもとに3Dデータを作成します。ツールはOpenSCADを利用しました。 offsetで少し輪郭を大きくして、元のデータとdifferenceすることで、クッキー型の3Dデータを作成します。

ソースコードはこんな感じです。

module unko()
  import("unko.svg", center = false, dpi = 96); // unko.svgの読み込み

linear_extrude(height=20) // 型の厚さは20cm
difference(){ // 膨らませたものから元のデータの差をとる
  offset(3)  // unko.svgのデータを3mm膨らませる
    unko();
  unko();
}

完成したらSTLデータとしてエクスポートします。

f:id:inajob:20220121215543p:plain

unko.gcode

Silc3rでSTLファイルをG-Codeファイルに変換します。

f:id:inajob:20220121215602p:plain

3Dプリンタに転送して印刷

3Dプリンタにデータを送って印刷を開始し、後は待つだけです。 今回は手元にあったPLAのフィラメントを使いましたが、おそらく厳密には健康に良くない物質が混ざる危険があるような気がします。 真似して実施する場合は自己責任でお願いします。

f:id:inajob:20220121215632p:plain

クッキーの製作

今回は市販のクッキーの素を使いました。

クッキー型で生地を抜くとこんな感じです。

f:id:inajob:20220121215759p:plain

で、電子レンジのオーブンで加熱。大体30分ほどで完成です。

f:id:inajob:20220121215834p:plain

おまけ

Twitterのアイコンもクッキーにしてみたらいい感じに出来ました!

f:id:inajob:20220121215907p:plain

感想

オリジナルの形のクッキーを作るというのは思った以上にテンションが上がりました。 データを用意する方法も、はじめのSVGを作るところ以外は機械的な作業なので、思った以上に簡単でした。

まだうちの子供は1歳なので、あまり楽しめていない感じでしたが、もう少し大きくなったら、子供の好きなものの形のクッキーを作ってあげようと思っています。

子供がを持つことで、3Dプリンタも今までと違った使い方をするようになってきました。折角子供を授かったので、この環境の変化をポジティブにとらえ、このような楽しい活動をどんどんやっていこうと思っています。

2021まとめ

f:id:inajob:20211231203539p:plain

ピックアップニュース

娘(1歳)がコロナに罹患

なんといっても今年は、これが一番のニュースでした。24日間の隔離はとても大変でしたが、家族全員大事が無くて良かったです。

inajob.hatenablog.jp

育児と仕事の両立

1月から長い9か月の育休を終え、仕事に復帰しました。妻は4月から復帰で、2オペで育児しつつ仕事と両立させています。 時短勤務などを駆使して、なるべく無理しないように努めています。

インターネットを活用したパパ友との交流も活発に行うことが出来ました。

パパ育コミュ | 子育てパパが集う場所 に参加し、たくさんの子育てを楽しむパパと交流したり、育児Scrapboxを公開し育児ノウハウの共有を行うこともできました(自由参加)。

inajob.hatenablog.jp

toICNの開発

クラウドファンディングで購入したインスタコード専用の楽譜変換ツール「toICN」を作り、これが、そこそこ利用され、OSSとしての開発も、小規模ながら体験することが出来ています。

インスタコードはまだまだアップグレードが続いているので、今後も開発をやっていきます!

inajob.hatenablog.jp

ステータス

  • 引っ越してから5年目
  • 会社に入ってから12年目(来年で13年目)
  • 結婚して5年ちょっと
  • 娘が生まれて1年目

今年学んだスキル

育児全般(引き続き)

育児は学びの連続です。娘もいつの間にか歩けるようになり、大人のいう事も少しずつ分かるようになってきて、また少し言葉もしゃべるようになってきました。来年もどんどん成長するんだろうなぁ・・

オクラの育て方

今年はミニトマトに加えて、オクラとスイートバジルも栽培しました。 inajob.hatenablog.jp

自作キーボードづくりの一通りの流れ

ALLPCB39というキーボードを設計しました。

inajob.hatenablog.jp

怒涛の基板設計

ALLPCBさんで、無料のクーポンが毎月利用できるという事で、基板設計を毎月行い 3枚の基板を試作できました。

  • CheapSeqDuo

  • ALLPCB39
    • 前述のキーボード
  • PiPoPa
    • 携帯電話型のArduino互換ボード。まだ記事を書いていない・・
    • ALLPCBのUselessコンテストの「BestIdea」入賞した

勢いで設計した割には3枚ともそこそこ面白いものが出来て満足しています。また記事を書かねば・・

CH451制御

グリッド状のスイッチとLEDを制御できる便利ICであるCH451の試作基板を作り、制御の方法を学びました。(同時押しが検出できないこともわかり、お蔵入りですが・・

今年買ったもの

  • ガス給湯器
  • 電動コーヒーミル

(追記予定)

感想

育児と仕事の両立というのは思った以上にハードで、自分の趣味の活動や、勉強に使える時間が限られてきたと感じた1年でしたが、そんな中でも、このブログの毎月更新や、もう一つのinajobがいろいろ紹介するサイトです – inajobのいろいろレビュー の平日ほぼ毎日更新が出来たのは、育休中に育児に向けた生活のリズムや、夫婦の役割分担がうまくできたからだと思っています。

こうやって記事にして見直してみると、いろいろ挑戦したが、アウトプットできていない作品が結構あるなと感じました。子育てなどで可処分時間が減っている中で、インプット・アウトプットのバランスをもう少し考えていく必要があるなと思っています。

育児はまだまだ長期戦ですが、息切れしないように気を配りつつ、自分のやりたいこともうまく両立していきたいと考えています。

月別生データ

1月

  • 育休から復職
  • Arduboy FX Modをもらう
  • 保育園決定

  • M5Paper使ってみる

inajob.github.io

inajob.github.io

  • clubhouse初体験
  • 夜間断乳頑張る

2月

  • 娘用電子工作

inajob.hatenablog.jp

  • duktape, emscriptenなどで遊んでいた
  • 1週間のレシピを考案するソフトを試作してた
  • HACHIBARのLiPo化
  • Graphviz Live Previewの開発

inajob.github.io

3月

  • igeta試作
  • ひな祭り
  • パパ育の電子書籍でアイコンを書いてもらったり
  • クラシルでレシピを決め始める

inajob.hatenablog.jp

  • Meowbit

inajob.github.io

  • コンセントカバー

  • M5StackとUSB-Host-Shield
  • ノートパソコンスタンド

inajob.github.io

  • HACHIBARを増やす
  • おうちサイネージにランダム画像を出すようにする

4月

  • 慣らし保育
  • RakuChord,HACHIBARの新バージョン発注(まだ倉庫に眠っている・・)
  • TTGO T-Watch Keyboard

inajob.github.io

  • LibreCADを試すが、合わない
  • 手挽のコーヒーミル購入
  • ぼにぎり
  • 毎月風邪をひく生活に・・
  • Aliから謎の荷物が届く事件

5月

  • テープカッターチャレンジ

inajob.hatenablog.jp

  • 冷蔵庫調味料棚をDIY

  • パンダのうんこ 購入
  • HACHIBAR少し販売再開
  • igeta組み立て
  • mmf21
  • ヨトウムシにやられる
  • ironingを試す
  • カニカルキーボード

inajob.github.io

6月

  • PVBフィラメントを試す
  • カニカルキーボードデビュー

inajob.hatenablog.jp

  • 役員トレカを作ってみる
  • CheapSeqのケースを作る
  • Arduboy FX Mod組み立て

inajob.hatenablog.jp

  • 3Dプリンタでキーキャップを作ってみる
  • FitBitに腕をやられる
  • おもしろいのを3Dプリントしたらちょっとバズる
  • コードリーディングメモの記事が盛り上がる

qiita.com

7月

inajob.github.io

  • オクラ収穫開始

inajob.hatenablog.jp

  • ニューブロックで遊ぶ
  • CheapSeqDuoの設計
  • Type-C to VGA
  • MCE3開発

github.com

  • SONICWARE LIVEN 8bit warps LVN-010 -- ほとんど遊べていない・・もったいない

8月

inajob.hatenablog.jp

  • 新しいロボット掃除機
  • toICN実装開始
  • 高解像度ディスプレイモジュール

inajob.github.io

9月

  • World Makerのクローズドベータ当選
  • インスタコードが届く

inajob.hatenablog.jp

  • 5000フォロワー達成
  • PiPoPaの設計・実装
  • 大量のPLAフィラメントを購入

  • 水で落書きできるシート
  • ABAさんのゲームをRaspberryPiで動かそうとしてみる
  • XDAキーキャップ

inajob.github.io

  • ALLPCB39とM5Stackの組みあわせ
  • RaspberryPi4スターターキット

inajob.github.io

10月

  • toICNひと段落

inajob.hatenablog.jp

  • 給湯器の予防交換
  • 電子計り

inajob.github.io

  • 貧者のUSBチェッカー

  • インスタコードのボリュームの固定具を3Dプリント
  • TodayTwitの開発

11月

  • ALLPCB Useless Contest 受賞(何賞だったかな?)
  • ALLPCB39の記事

inajob.hatenablog.jp

12月

  • 3DPCB

inajob.hatenablog.jp

  • おうちサイネージのオープン化

  • クリスマスオーナメントを作る

  • 怒涛の帰省

参考

3Dプリンタで基板のようなもの(3DPCB)を作ってみた

基板のようなもの?

下記の記事で紹介していた方法が、前から気になっており、今回はこの方法でオリジナルの基板のようなものを作ってみました。

inajob.github.io

この手法は Developing 3DPCB – 3D Printed Circuit Board with lots of potential. – Johan von Konow で紹介されており、「3DPCB」と呼ばれています。

基板設計

基板の設計は通常のプリント基板と同様にKiCADで行います。

こんな風に論理回路図を書いて・・

f:id:inajob:20211202213528p:plain

基板を書きます。

f:id:inajob:20211202213553p:plain

この時KiCADを「レガシーツールセット」に切り替えて、「配線時の角度を45度単位に制限」のチェックを外して、自由な角度に配線できるようにしておくのがポイントです。

45度に制限しても良いのですが、実際に配線をするときに導線を曲げる必要があり面倒です。なるべく直線で配線します。

f:id:inajob:20211202213743p:plain

3Dプリンタの精度にもよりますが、私は2mmの配線幅としました。

データ作成

基板の片面にのみ配線したので、その面のデータをdxfで出力します。

f:id:inajob:20211202214044p:plain

ドリルデータはいつも通りに出力します。

ドリルデータはそのままだとCADソフトに読み込ませることが出来ないので、下記スクリプトでDXFに変換します。 (元となるソースコードDRL NC file to DXF · GitHub を参考にしています。)

import ezdxf
from sys import argv
import re

if len(argv) < 2:
    print("Need filename")

in_filename = argv[1]
out_filename = in_filename[:-4] + ".dxf"

doc = ezdxf.new(dxfversion="R2010")

doc.layers.add('holes', color=2)
msp = doc.modelspace()

tools = {}
current_tool = None
for line in open(in_filename).readlines():
    line = line.strip()

    match = re.match("^T(\d+)C(.+)$", line)
    if match:
        tool_id = int(match.group(1))
        size = float(match.group(2))
        tools[tool_id] = size
        continue
    match = re.match("^T(\d+)$", line)
    if match:
        current_tool = int(match.group(1))
        continue
    match = re.match("^X(.+)Y(.+)$", line)
    if match:
        x = float(match.group(1))
        y = float(match.group(2))
        size = tools[current_tool]

        print(x/100,y/100,size/2*50*4)
        msp.add_circle((x/100,y/100), radius=size/2*50*4)

print(out_filename)
doc.saveas(out_filename)

3DPCBの作成

OpenSCADを使います。

difference(){
  translate([0,0,-1])
  // 雑に外形線を描く
  linear_extrude(height=3){
    polygon([[0,50],[40,20],[25,20],[50,-20],[30,-20],[15,-20],[10,-40],[0,-40]]);
    mirror([-1,0,0])
      polygon([[0,50],[40,20],[25,20],[50,-20],[30,-20],[15,-20],[10,-40],[0,-40]]);
  }
  // 配線をくりぬく
  linear_extrude(height=3)
    translate([0,40,0]){
      import("out/christmas-B_Cu.dxf");
    }
  
  // ドリル穴をくりぬく
  translate([0,0,-2])
  linear_extrude(height=2-0.3)
  translate([0,40,0]){
    scale([1/4, 1/4, 1/4])
    import("out/christmas.dxf");
  }
  
  // ドリル穴の上部にはんだ付けしやすいように大き目の穴をくりぬく
  translate([0,0,0])
  linear_extrude(height=6)
  translate([0,40,0]){
    scale([1/4, 1/4, 1/4])
    offset(5)
    import("out/christmas.dxf");
  }
}

これでこんな立体が生成できます。

こちらははんだ付け面。

f:id:inajob:20211202214615p:plain

部品配置面はこんな感じ。

f:id:inajob:20211202214647p:plain

ドリル穴部分は裏面には小さな穴をあけつつ、表面にははんだ付けしやすいように、大きな穴をあけています。

dxfデータはドリル穴しかないですがOpenSCADのoffsetを使うことでこの穴を大きくして大きな穴のデータを用意しています。

今回は配線面を下にして、部品実装面を上に3Dプリントしようとしていたので、オーバーハング部分の造形をうまい事やるために、1層だけあえて穴をふさぐようにデータを作っています。

f:id:inajob:20211202215846p:plain

(このテクニックは FDM(FFF)3Dプリンタで印刷する機械部品をモデリングするときの、たくさんの小さな工夫|はるかぜポポポ|note この神記事を参考にしています)

3Dプリント

あとは3Dプリンタが出力するのを待つだけです。

厚さは3mmでそこまで大きくないので、40分ほどで完成しました。

部品取り付け穴は1層分だけふさがっているので、キリで突いて穴を貫通させます。

部品の取り付け

今回の部品はLEDと抵抗です。部品取り付け穴に部品を差し込んで、溝に沿って余った足を折り曲げて配線します。

配線すべき個所には溝があるため、迷うことなく配線できました。これがこの3DPCBを使う利点ですね。

PLAは熱に弱いので、はんだ付けは素早く行います。と言っても普通にはんだ付けしてる分にはそこまで気を遣う必要もなさそうでした。 (PLAが溶けたとき独特の甘い匂いが少し出ます)

そんなこんなでできた基板がこちら!

f:id:inajob:20211203072456p:plain

まとめ

挑戦してみたかった3DPCBを試してみました。

PCBほどではありませんが、ユニバーサル基板に実装するよりは簡単でミスが少ない基板が出来たように思います。

今回は試していないですが、配線面を下にして3Dプリントすることが出来ることもわかったので、部品実装面にも造形できそうです。

参考とした記事には具体的なツールの紹介などは無かったのですが、使い慣れたKiCAD, OpenSCADを組み合わせる事で比較的「職人芸」なしに3DPCBが作れることが分かったのも大きな収穫でした。

リアランスなどはPCBには遠く及びませんが、家にある3Dプリンタでこういうものが作れるのは意外と使えるテクニックのように思いました。

ALLPCBの無料キャンペーンで初めての自作キーボードを作ったら本当に無料で最高だった件

無料プリント基板が作れる!?

f:id:inajob:20211110123159p:plain

Twitter「無料でプリント基板を作ってくれる中国の会社がある」と聞いて、調べると、どうもALLPCBという会社がキャンペーンをやっているようでした。

f:id:inajob:20211110102332p:plain

キャンペーンの詳細を見ると・・

  • 毎月送料も含め無料で 5枚の基板を1回注文できる
  • 基板には大きさの制限がある(100mm*150mm = 15000mm2以内)
  • 基板の色は緑と白のみ
  • クレジットカード情報不要

というようなものでした。

f:id:inajob:20211110102353p:plain

プリント基板の製作会社は中国にたくさんあり、最近は少量を安くで作ってくれる業者も増えてきましたが、「送料を含めて無料」というキャンペーンは初めて見ました。

※このキャンペーンは2021年6月から9月ごろまで行われていたようですが、今現在は「1つ有料で注文すると、以降6か月は毎月無料で1度5枚基板を注文できる」というキャンペーンに変更されているようです。これでも十分お得です。この記事を見て興味がわいた方は → ALLPCB から試してみてください。

月に1回無料で基板を注文する日々

無料と聞いたら試してみたくなるのが人情です。

自分はプリント基板を設計し、中国の業者に発注したことは何度かあったので、これはうれしい!と思いこのキャンペーンに乗じて毎月基板を発注しました。

今回はそんな基板の中でも、比較的うまく作ることが出来た、「自作キーボード」について紹介しようと思います。

自作キーボードとは

このブログを見ているような人は、ご存知だとは思いますが「自作キーボード」という電子工作のジャンルがあります。

キーボードというのは、いわゆるパソコンに接続するキーボードです。

このキーボード、かなり奥が深く、配列やキーボードスイッチの押し具合の違い、テンキーの有無や、有線・無線など、こだわりポイントがたくさんあります。

市販の製品も大量に販売されていますが、キーボード自体を「自作」することもでき、近年この「自作キーボード」というのがエンジニアを中心に話題となっています。

「自作キーボードを作る」と言っても、様々なレベルがあり、「組み立て済みのキーボードを購入する」、「キットを買ってきてはんだ付けする」、など、様々な取り組み方がありますが、今回自分が挑戦したのは「基板の設計からおこなう」という比較的ガチ目な方法です。

キー配列を設計する

前述したALLPCBのキャンペーンを見ていて、気になったのが「基板の大きさの制限」です。

基板には大きさの制限がある(100mm*150mm = 15000mm2以内)

と書かれていますが、この100mmと150mmというのはあくまで例のようで、面積さえ条件を満たしていれば、とても細長い基板などもキャンペーンの対象であることがわかりました。

※残念ながら、現在のキャンペーンではこの制限は少しきつくなり長辺が150mm以内となっているようです。キーボードを作るのであれば左右分割式や、キーボードスイッチの小さなものが選択肢となりそうです。

f:id:inajob:20211110102353p:plain

この制限は中国の基板製造会社の中では異例です。

通常よくあるのは、100mmx100mmサイズがとても安く設定されており、それよりはみ出すと途端に料金が高くなるという価格設定です。 そのため、キーボードなどの細長い基板を作る際は、思った以上に基板の製造費用が高くついてしまっていました。

しかし、ALLPCBではこれが毎月5枚まで無料!!

ということで、自分はこの制限の中で自作キーボードを作る事を計画しました。

15000mm2以内のサイズでキーボードを作ろうと考えると、まずは標準となるキーボードスイッチの大きさが19.05mm程度なので、、

13×3のキーボードスイッチを並べるのがよさそうです。

一般的なキーボードはファンクションキー、数字、英字3列、機能キーと6列キーが並ぶものですが、今回作るキーボードはたった3列だけです。

自作キーボードの世界では、キーの数の少ないキーボードも数多く設計されており、このような3列のキーボードは30%キーボードなどと呼ばれるジャンルが確立されています。

f:id:inajob:20211110102555p:plain

少なくなったキーはLayerという仕組みを用いて、Layerキーと同時押しすることで利用することが出来るようにします。

キーボードのスイッチには様々なサイズがあります。例えばShiftキーは一般的に細長く、Enterキー縦長で、少し変わった形をしているものが多いです。

しかし今回は、設計を簡単にしようという事で、すべてのキーを文字キーと同じ正方形のキーとしました。

また、キーボードの各列は、通常のキーボードだと列ごとに少しずつずれているものですが、今回設計するキーボードはずらさず格子状にキーボードスイッチを並べました。

このような格子状のキーボード配置をOrtholinearなどと呼んだりするようです。

この段階で各キーの役割はふわっと決めていましたが、まぁ後でいくらでも変更することが出来るので、そこまでしっかり考えていません。

キーボードの配列の設計には下記サイトが非常に役立ちました。

www.keyboard-layout-editor.com

f:id:inajob:20211110102944p:plain

実はこのサイトでキーボードの配列を作ると、この後の基板の設計に必要な下準備も出来てしまうという優れものです。

基板を設計する

前項でキーボードの配列が決定したので、基板を設計していきます。

設計にはKiCADというオープンソースの基板設計ソフトウェアを利用しました。

keyboard-layout-editorでキーボードを設計し、生成されるjsonファイルを使うと基板設計のひな型になるデータを作ることが出来ます。

GitHub - yskoht/keyboard-layouter-playground: A sample circuit and netlist to quickly try the Keyboard Layouter plugin.に元となる基板データがあります。 さらに、このプラグインGitHub - yskoht/keyboard-layouter: Footprint auto placement plugin for keyboard layoutを使うことで、keyboard-layout-editorで設計したキーボードに必要な部品だけが残されます。

ここまでで、基板に載せるキーボードスイッチとダイオードのデータが用意できました。

これを基に以下の作業を行うことで基板データを完成させます。

  • マイコンの配置
  • 部品間の論理配線
  • 基板上の部品配置
  • 基板上の物理配線

マイコンの配置

今回はPro micro(Arduino)互換のマイコンボードを使うことにします。

f:id:inajob:20211110111152p:plain

加えてマイコンをリセットするためのスイッチや、デバッグに利用できるようにシリアルポートや、電源ポート、I2Cポートなどを接続するためのピンヘッダも配置しておきます。

f:id:inajob:20211110103326p:plain

部品間の論理配線

マイコン、キーボードスイッチ、ダイオードを論理配線します。

マイコン、キーボードスイッチ間はマトリクス状に配線を行います、何行、何列に配線するかはお好みです。 今回はなるべくArduinoのピン数を節約するために、6x7のマトリクスで配線を行いました。

f:id:inajob:20211110103350p:plain

基板上の部品配置

論理配線が終わったら次は部品配置です。 キーボードスイッチは、ほぼ自動生成された形のまま利用します。 ダイオードを対応するキーの近くに配置し、マイコンモジュールをなるべく邪魔にならないと頃に配置します。

基板の外形線もここで設計します。ALLPCBの無料の範囲をはみ出さないように気を付けて設計します。

基板とケースを固定するための穴もここで指定します。

f:id:inajob:20211110103431p:plain

基板上の物理配線

最後に物理配線です。各部品の足を、論理配線に従って配線します。 配線にこだわりがある場合は、手で配線を1つずつ指定することが出来ますが、今回はFreeroutingという自動配線ツールを使います。

KiCADから部品情報をExportしてFreeroutingに読み込ませ、自動配線を指示して、数時間放置するだけで、勝手に配線を行ってくれます。

ここまで作ると、出来上がりのイメージを3Dで見ることもできます。

折角なので「I Love ALLPCB」みたいな文字を入れてみることにします。

f:id:inajob:20211110103539p:plain

基板を発注する

基板データが出来たらいよいよ発注です。

KiCADから基板発注に必要なデータを出力しZipファイルに固めてALLPCBの注文フォームからアップロードします。

上手くキャンペーンが適応されると、合計金額が$0と表示され、本当に0円で注文ができます。

f:id:inajob:20211110103756p:plain

製造の状況は適宜アップデートされ、今回の場合は、8/15に家に届いたので、注文から1週間かからずに基板を手に取ることが出来ました。

Webページやメールはすべて英語で書かれており、中国語が必要となる事はありませんでした。

部品を注文する

自作キーボードづくりに必要な部品は、様々なパーツショップで購入することができます。

今回必要となった部品は以下です。

  • キーボードスイッチx39
  • キーボードキャップx39
  • ダイオード(表面実装版)x39
  • ネジとナット
  • リセット用タクトスイッチ(表面実装版)
  • Pro micro(Arduino)互換モジュール

自分はもっぱらAliExpressを使います。届くに1か月以上かかることもあり、また記載されている部品と違うものが届いたりすることもたまにあるので、あらかじめ買っておくのが良いと思います。

(すぐに部品が欲しい場合や、信頼のおける部品が欲しい場合は遊舎工房など、国内のパーツショップを利用するのが良いと思います。)

実は自分はすべての必要部品をすでに購入済みだったので、このステップは不要でした。 f:id:inajob:20211110104031p:plain

ファームウェアを用意する

自作キーボードのファームウェアは、QMKというものが非常に有名です。

QMKを自作のキーボードで使うためには、配線とキーの関係を設定ファイルとして用意して、QMKをビルドしなおす必要があります。

これにはプログラミングの知識が必要ですが、下記サイトを利用すると、ポチポチと配線をGUIで設定するだけで、QMKをビルドして、ファームウェアをダウンロードすることが出来ます。

どのキーに何の役割を持たせるかといった試行錯誤もこのツールがあれば非常に簡単でした。

Keyboard Firmware Builder

f:id:inajob:20211110104211p:plain

キーボードを組み立てる

さて、基板が届いたら、いよいよ組み立てです。

Pro micro(Arduino)互換モジュールに前述のファームウェアを書き込みます。ファームウェアはhex形式なので、avrdudeなどを使えば書き込みができますが、下記サイトを使うとWebページから簡単に書き込みが出来ました。

Pro Micro Web Updater

Pro micro(Arduino)互換モジュールと、キーを1つ、対応するダイオードを1つはんだ付けをして、パソコンにつないでみて、キーボードとして認識されるか?、1つのキーを押すと期待する文字が入力されるかを確かめるのが良いです。

f:id:inajob:20211110104236p:plain
写真は2つのキーで動作確認をしている様子です。

動作が確認出来たら後はひたすらはんだ付けです。

ケースを作る

ここまででキーボードの内臓は完成しましたが、このキーボード、このままではまっすぐ机の上に置くことが出来ず、使うことが出来ません。

ということで3Dプリンタを使ってケースを作る事にしました。

我が家の3Dプリンタでは、横幅が足りず、このキーボードのケースを一気に作ることが出来ず、左右2つの部品に分割してケースを出力しました。

f:id:inajob:20211110110615p:plain f:id:inajob:20211110110652p:plain

ケースの設計にはFreeCADを用いました。

f:id:inajob:20211110104506p:plain

応用する

前項までで、キーボードとしては完成ですが、この自作キーボード、コンパクトでかつ、ケースなどを取り付けるためのネジ穴もあるので、このキーボードと電子工作を組み合わせる事で、キーボード付きのガジェットを自作できそうだなと考えています。

もちろん市販のキーボードでも似たようなことはできるのですが、キーボード自体が大きかったり、ほかのパーツを取り付ける余地が無かったりと、不便が多いです。

こんな感じでM5StackとUSBHostシールドを組み合わせて、モバイル入力システムを作ってみたりしています。

f:id:inajob:20211110114206p:plain

今回の反省点

初めての自作キーボードという事もあり反省点は山積みです。同じようなことに挑戦する人のために、少しメモを残しておきます。

ネジがキーボードスイッチと干渉しそう

ネジ穴をキーボードスイッチの隙間に開けたのですが、いざ組み立てた後にねじを取り付けようとしたところ、ねじの頭が引っかかってしまい、ねじを取り付けるのが難しいという問題が発生しました。

f:id:inajob:20211110111738p:plain

ナットを上にすることでこの問題は一応回避できました。

f:id:inajob:20211110111816p:plain

Pro micro(Arduino)互換モジュールがかさばる

基板の面積を小さく保つために、キーボードスイッチの裏側に重なるようにPro micro(Arduino)互換モジュールを取り付けるように設計しました。 そのため、キーボード自体の厚みが増してしまいました。

また、キーボードスイッチとPro micro(Arduino)互換モジュールの両方をはんだ付けしてしまうと、部品をつけなおすことなどが非常に難しいという点も気になります。(普通に組み立てる場合は部品のつけなおしは不要なので、そこまで問題になりません。)

ハートマークが消えた

これは自分のデータの作り方がまずかったのですが、 この基板のキモの1つであるI Love(ハートマーク) ALLPCBの ハートマークが消えてしまっていました。

発注前にガーバーデータを確認していればこの間違いに気付けたのですが、、残念です。

仕方が無いのであとから修正液でハートマークを書きました。これはこれで好きな記号が書けて面白いという事で結果オーライです。

f:id:inajob:20211110112212p:plain

キーボードスイッチが基板取り付け用ではなかった

今回家にあったキーボードスイッチは、「パネル取付用」でした、このほかに「基板取り付け用」というものがあり、今回のようにに基板だけでキーボードスイッチを「基板取り付け用」を使うべきでした。

「基板取り付け用」のキーボードスイッチには基板に固定するための足が付いており、これによりまっすぐにキーボードスイッチを固定することが出来ます。

「パネル取付用」を使うと、この足が無いのでキーボードスイッチが微妙に傾いて、ガタガタになってしまいました。

複数のキーボードスイッチに対応したフットプリントを使いたい

キーボードスイッチのフットプリントはCherry MX専用のものを使いましたが、ホットスワップソケットや、ロープロファイルなど、ほかのキーボードスイッチにも対応したフットプリントもあるようで、これら複数のキーボードスイッチに対応したフットプリントを使うと、拡張性がさらに広がると思います。

GitHub - foostan/kbd: for building keyboard libraries に良いフットプリントがあるようです。

キー配列は12x3でもよかったかも

今回なるべくたくさんキーボードスイッチを並べようと13x3の配列にしましたが、 実際に利用してみるとどうも1列多く感じました。

30%キーボードの良いところの一つに、指を横にずらす必要が無い、というがあるのですが、13列だとどうも1列指が左右に動く箇所が出てきてしまい、もてあます感じがありました。

実際キーに文字を割り当てていても1列だけどうにも割り当てが難しい箇所がありました。

少しだけ隙間を開けてマクロキーとして使えるようにすると良いかもしれません。

参考

この記事が非常によくまとまっており、ほとんどこれに従ってキーボードを作ることが出来ました。

zenn.dev

まとめ

自作キーボード、気になってはいたのですが、基板を作るとなるとお値段が・・と躊躇していましたが、ALLPCBの素晴らしいキャンペーンのおかげで、ついにその一歩を踏み出すことが出来ました。

この記事を見て興味がわいた方は → ALLPCB から試してみてください。

流行っているだけあって、周辺ツールが充実しており、プログラミングすることなく、オリジナルの自作キーボードを作ることが出来ました。

皆さんもこの機会に自作キーボードに入門してみませんか?

エンジニアパパの1歳6か月の子育てスケジュール

うちの娘も1歳6か月となり一人で少し歩くこともできるようになりました。

そんな我が家の子守のスケジュールを紹介します。

 

前提条件

  • 自分、妻、娘(1歳6か月)の3人暮らし
  • 自分と妻は時短で共働き
  • 娘は保育園に通っている

f:id:inajob:20211017131600p:plain

娘は6:00ごろに目が覚めます。しばらくベッドでゴロゴロしてから起きます。

主に自分が娘と同じ部屋で寝ているので、起きた娘をあやしたりしています。
起きたらまずやるのが、おむつ替えと保湿です。

赤ちゃんの肌は乾燥しやすく、乾燥していると肌荒れや、アレルギーの原因となるとのことで、毎日寝起きとお風呂上がりには体にベビーローションを塗っています。

一方、妻は別室で寝ており 6時には起きて、夜中に回していた洗濯物の片付けや、朝ごはんの用意をします。

朝ごはんは私が食べさせつつ、妻も横で一緒に食べます。余裕があれば自分も一緒に食べるのですが、娘に食べさせつつ、自分が食べさせるのはなかなか大変です。

娘が食べ終わったら、妻に娘を任せて自分も残りを食べるというのがほとんどです。


自分、妻のどちらかが睡眠不足の日は、ここで「朝寝」をして、子守は一人に任せます。


保育園は8時からなのでそれまで娘と遊んで過ごします。

家から徒歩10分以内にある保育園なので、朝はそこまであわただしくないです。抱っこ紐に娘を抱っこして登園します。最近は最後の数メートルを歩かせたりしています。

娘を預けたら、帰宅して仕事開始です。

 

夕方

f:id:inajob:20211017131630p:plain

仕事は自分も妻も16時には切り上げます。現在夫婦ともに「時短勤務」を申請しているので、このくらいの時間で上がることが出来ます。(その分給料は減りますが・・・)

一人が夜ごはんの準備、一人が保育園のお迎えです。

最近はここの役割を夫婦で1週間ごとに交代しています。

晴れている日は保育園のお迎えの帰りに公園などに立ち寄り娘と遊んだりして 17時を目途に帰宅します。

夜ごはんの準備も17時を目途に行い、自分たちのご飯と娘の離乳食を用意します。

帰宅した娘はまずはミルクを少し飲みます。(そろそろ断乳したいのだけれど、ここで飲まないと不機嫌になります)

その後まずはお風呂に入ります。お風呂に入れるのは基本はお迎えにいった方が担当します。

お風呂に入っている間にもう一人は夕食を食べます。

30分ほどお風呂に入ったところで、娘だけ先にお風呂からあげて、子守をバトンタッチ

服を着せて、離乳食を食べさせます。

離乳食を食べさせている間にもう一人もお風呂から上がってきて、夜ごはんを一緒に食べます。

 

f:id:inajob:20211017131655p:plain

19:15を目途に娘のお休みの時間です。 暗くした部屋で20分ほど絵本を読んで落ち着いてきたところで、ベビーベッドにそっと寝かします。

夫婦で夜の掃除ルーチンをざざっとやって20時には片付けます。

20時から21:30くらいまではそれぞれの自由時間です。

夜は一人は娘のいる部屋、もう一人は別の部屋で寝ます。

 

朝タスク・夜タスクの管理

f:id:inajob:20211017131747p:plain

朝タスク、夜タスクは夫婦のうちで手が空いているほうが率先して進めるスタイルなので、「何をやるか」「どこまでやったか」を共有するために写真のような「タスクボード」を作っています。

これが意外と便利で、「あれやって欲しいのにやってくれない・・」とか「どちらも気づかずにずっと実施されない」などと言った問題が無くなりました。

 

また定期的にこのタスクボードを見直すことで、見落としていた家事や、家事の最適化についても話し合うことが出来ています。

 

まとめ

1歳6か月の娘を持つ共働き夫婦の日常のスケジュールを紹介しました。

他の家ではどうやっているのかなど、すごく気になるので、「うちはこうやっているよ!」というような話をぜひ教えてください。

インスタコード用コード譜変換プログラム「toICN」ここまでの開発の記録

この記事ではtoICNの開発の記録を残しておこうと思い書いています。

toICNとは

コード譜サイトの和音表記を、インスタコードのための記法 「ICN」 に変換するためのブックマークレットです。

インスタコードやICNについては以下の記事で詳しく紹介しています。

inajob.hatenablog.jp

toICNは以下で公開しています。

github.com

→→→ インスタコードの購入はこちらから!←←←

バージョン0

8/31に作りました。記憶が怪しいですが、8月は娘のコロナ騒動で非常にバタバタしており、その後自分は2回目のコロナワクチン接種などをして、副反応で寝込んでたりしたのがこの頃です。

バタバタでプログラミングがしばらくできていなかったのと、待ちに待っていたインスタコードがそろそろ届きそう、というワクワクの2つの感情から、前々から作りたかったブックマークレットの作成に着手しました。

618文字の比較的簡単なスクリプトですが、単純な楽曲であればこれで十分に役立つものでした。

GitHubで公開

バージョン0はgistで公開しましたが、今後ももう少し改良していきたいのと、音楽がわかる方にアドバイスをもらいたかったので、GitHubリポジトリを作る事にしました。

github.com

9/3 nonoyu さん 参戦!

9/3 nonoyuさんからプルリクエストを頂きました。ここからnonoyuさんの怒涛の快進撃が進みます。

github.com

この変更が、この後の転調機能対応時に非常に役立ちました。

github.com

今後のことを考えてテストコードを入れたのもここです。 あとからこのテストコードは非常に役立ちました。入れておいてよかった・・

github.com

すでにこの時点でChordWikiのKey情報を読み取り 適切な調を認識できるようになりました。

github.com

9/3 インスタコード作者様 参戦!

nonoyuさんと日を同じくして インスタコードの作者様である ゆ~いちさん からもアドバイスをいただきました。

以降、音楽的な疑問や、インスタコードの設計思想など様々な面でゆ~いちさんからアドバイスをいただいています。

github.com

9/5

その後GitHub Actionsを設定しPR時に自動的にテストを実行するようにしました。めっちゃ便利です。 (このあたり仕事でも似たようなことをやっていたのが役立ちました)

github.com

インスタコード利用者のことを意識してGifアニメーションでの説明を用意しました。 このあたりからインスタコード利用者の方々からtoICN便利!という感想をいただき始めました。

github.com

9/6

ChordWikiに記載された曲の途中での転調にも対応しました。(by nonoyuさん)

github.com

9/9

toICNのURLをTwitterなどに投稿したときにいい感じの画像が出るようにしました。 (ロゴを頑張って書きました)

f:id:inajob:20211014152415p:plain

github.com

9/11 pastakさん 参戦

user.js版をpastakさんに作ってもらいました。 これは今後、ブラウザの機能拡張など作る場合に大いに役立ちそうです。

github.com

インスタコード公式ページに紹介してもらう

仕事が早いですね。インスタコード利用者の中にはPC操作が苦手な方も多く、そういった方にも優しく書いていただけているようで、助かっています。

みやびさんの動画で紹介していただく

インスタコード公式Youtuberである「みやび」さんにも紹介いただきました。こちらも非常にわかりやすい。

www.youtube.com

怒涛のUI変更 by nonoyu さん

キーやレベルを表示・変更するUIを一気に作ってくださいました。見た目が良くなり一気に使いやすくなりました。 f:id:inajob:20211014153433p:plain

github.com

レベル変更機能もインスタコード初心者のためによさそうです。

github.com

Twitterでの音楽理論話 by さろげーと さん

和音名とその構成音について、よくわからなくなってまとめていたら、いろいろ教えてくださいました。 これ以外にも音楽理論的な側面で様々なアドバイスをいただいています。

10/2 そして新たな楽器へ・・

こちらもnonoyu さんの成果ですが、 「一五一会」という楽器に対応させるという野心的な試みです。

新たなモードを追加(Offモード・一五一会モード) by ts-uc · Pull Request #128 · inajob/toICN · GitHub

10/7 YouTuber 東雲めぐ さんの弾き語り動画

これは toICNの話というよりはインスタコードの話ですが・・ チャンネル登録数がすさまじい YouTuberさんにもインスタコードを紹介されていて、すごいところまで来たなーと感じました。

ちらっとtoICNの話も触れられていてうれしかったです。

f:id:inajob:20211014153303p:plain

www.youtube.com

10/9 AndroidChromeで突然toICNが動かなくなる対応

Twitterやインスタコードのフォーラムで報告があって気づいたのですが、どうもAndroidChromeブックマークレットの文字数制限が急に実装されたようで「5000文字」を超えるブックマークレットがうまく登録されない問題が起きました。

GitHub PagesにJavaScriptを配置し、それをブックマークレットから呼び出すように構成を変更し事なきを得ました。

pastakさんが作ってくださったユーザスクリプト用のJavaScriptが役に立ちました。

github.com

まとめ

インスタコードが届くのが楽しみすぎて自分のために作り始めた toICNですが、ここまで書いてきたように様々な方の助けを得て、私が思っていた以上に良いものとなりました。

ここまでのところで大まかな機能は完成しているので、今後は開発のペースは落ちていくとは思いますが、継続して機能追加やバグ修正をしていこうと思っています。

バグ報告やプルリクエストもお待ちしていますので是非是非!

github.com

→→→ インスタコードの購入はこちらから!←←←

インスタコード/InstaChordファーストインプレッションとtoICNの紹介

インスタコード/InstaChordとは

ついに我が家にもやってきましたよ!

ってインスタコードって何?って人のために少しだけ説明すると・・

インスタコードとは「誰でも弾ける新しい楽器」です!

具体的には、こんな形の楽器で、ネックの部分のボタンで和音を簡単に選択でき、ボディ部分の6個のパッドを撫でることでギターのように演奏ができるというものです。

→→→ インスタコードの購入はこちらから!←←←

f:id:inajob:20210915002311j:plain

インスタコードのクラウドファンディングが行われたのは2020年5月のこと。

確かこの記事を見てその存在を知りました。

fabcross.jp

自分も「和音が鳴る電子楽器」を開発しているので、このクラウドファンディングにはかなり注目しました。

加えて、Maker Faireなどでも良く出会う、電子楽器の先輩(と勝手に思っている)「電子楽器”ウダー”の宇田さん」が開発にかかわっているという事で、自分の中の期待が非常に高まりました。

f:id:inajob:20210915002400p:plain
https://instachord.com/company/developper/ より

そして自分は2020年6月1日に予約注文しました。

インスタコード/InstaChord ファーストインプレッション

非常に洗練された筐体で、かなりの高級感があります。

画面も大きく見やすく、音色も安っぽくなくいい感じです。

f:id:inajob:20210915002911j:plain

和音を選択するボタンは、ダイアトニックコードがワンタッチで選択できるようになっており、それ以外の和音については修飾キーを利用して選択します。

f:id:inajob:20210915004626p:plain
https://instachord.com/instruction/manual/ から転載

まぁこの辺の思想は自分も似たような楽器を作っているのでするっと理解できました。

全体的な仕様は予想していた通りで、そこに関して驚きは少なかったのですが、やはり「実物を演奏する」というこの体験はモノがあってこそです。

和音を選択した状態で6つのパッドを撫でるとギターさながらの「ジャララーン」という音が鳴るという体験は、予想していた以上の物でした。

インスタコードでは、伴奏のみでメロディを弾くことが出来ないのですが、そこはいわゆる「弾き語り」スタイルで、歌を歌いながら弾くというのが標準的な使い方のようです。

実際に歌を歌いながら演奏してみるとこれまた楽しく、あえて文字で書くとするとカラオケと音ゲーが合わさったような楽しい感覚を感じました。

開封動画や、使い方のチュートリアルなどはYoutubeに動画が上がっているので気になる人は見てみると良いと思います。

InstaChord用の専用表記「ICN」

インスタコードは和音を簡単に入力できますが、和音というのは一般的な楽譜には「C」「Am」のように音名で書かれています。

では、インスタコードのボタンはこの音名と直接対応しているのかというと、話はそう簡単ではありません。 曲にはそれぞれ「キー」があり、キーが異なると曲を構成する和音のセットも変わります。そのため、曲のキーがCの時によく使う和音は「C, Dm, Em, F, G, Am, Bm」ですが、曲のキーがAとなると「A, Bm, C#m, D, E, F#m, G#」というようによく利用する和音の音名が異なります。

f:id:inajob:20210915004740p:plain

よく使う和音の数はキーが定まれば、さほど多くないのですが、キーに応じて異なる和音の表記がインスタコードのどのボタンに対応しているかをいちいち覚えておかないと演奏できないという問題があります。

インスタコードではこの問題を解決するために、あらゆるキーの曲を簡単に弾けるようにするために「InstaChord Number (ICN)」という特別な表記を用意しています。

ICNの簡単なものは単なる数字で「1」とか「2」とかです。

f:id:inajob:20210915003016p:plain
https://instachord.com/instruction/icn/ から転載(表は一部の和音の例です)

この番号はインスタコードのネックにある9つのボタンと対応しており、ICNが書いてある楽譜があれば、「C」とか「Am」とかのキーにより異なる和音とボタンの対応を覚えることなく演奏することが出来ます。

インスタコードに対応した楽譜をどうやって用意するか?

これはすごいんですが、このICNはインスタコード独自の表記のため、楽譜を専用に用意しないといけません。

インスタコードでは当初「楽器.me」というコード譜サイトと提携して、ICNをサポートした楽譜を提供する予定だったのですが、もろもろの事情により、この計画は頓挫しました。

現在インスタコードが公式で用意している方法としてはコード譜ライター」というツールがあります。これは一般的な音名に基づく和音(「C」とか「Am」とか)を入力すると、それをICNに変換して表示してくれるというアプリです。

www.youtube.com

コード譜ライター」も便利なのですが、弾きたい曲の和音を調べて、それを入力し、ICNに変換する、という手間が結構面倒なのが難点です。

コード譜ライター」で変換したICNをインターネット上で共有する試みも行われていますが、正しく権利処理しないと、歌詞などのデータは著作権侵害になる恐れもあります。

そこで自分が思いついたのが「toICN」です。

toICNの開発

インターネット上にはコード譜を公開しているWebサイトが多数あります。これらのWebサイトでは、一般的な音名に基づく和音(「C」とか「Am」とか)で和音が表示されるのみで、ICNには対応していないのですが、これを何とかICNに変換できれば、「コード譜ライター」にちまちま和音を入力して変換しなくても良くなるのでは?と考えました。

f:id:inajob:20210915005729p:plain
譜面は https://ja.chordwiki.org/wiki/%E3%81%B5%E3%82%8B%E3%81%95%E3%81%A8 から転載

実現の手段としては、ブックマークレットを用いることにしました。

これは結構古くからある手法で、ブラウザのブックマークにURLではなくJavaScriptを登録することで、任意のWebサイトで独自の処理を実行できるというものです。

これを思いついて、簡単な実装を試してみて、公開したのが8/30でした。

その後GitHubリポジトリとして公開したところ、インスタコードの購入者の方にも見つけていただくことが出来、さらには一緒に開発してくれる方も現れました。

toICNの開発の軌跡も紹介したいのですが、長くなるので、ここでは割愛します。

ともかく、toICNは「ワンクリックでコード譜Webサイトの楽譜をインスタコード用に変換できる」という便利なツールです。

↓↓↓↓↓ インスタコード持っている人にはぜひ試してほしいです。↓↓↓↓ github.com

下記で利用方法をGIFアニメで紹介しているので、試してみる際は参考にしてみてください。 (パソコンでも、iPhoneiPadでもAndroidでも利用できます)

何とインスタコード公式Youtuberである「みやび」さんがtoICNの説明動画を作ってくださいました。 こちらも非常にわかりやすいので是非見てみてください。

www.youtube.com

まとめ

インスタコードがやっと届いて、少し触ってみましたが、期待以上に面白い製品でした。

弾き語り用の楽器としてはかなり良いものとなっているので、楽器演奏が苦手だけど歌は好き・得意という人にはぜひ試してみて欲しいと思いました。

また拙作「toICN」もインスタコードで既存の楽曲を演奏するうえで非常に便利ですので、ぜひ試してみてください。

最後にこの記事を読んで「自分もインスタコードが欲しい!」と思った方!ぜひ下記リンクから注文してみてください。

(インスタコードは代理店を持たず、紹介パートナー制度を使ってマーケティングをしています。下記リンクは私のアフィリエイトコードとなっています。)

→→→ インスタコードの購入はこちらから!←←←