自作電子楽器RakuChord(らくこーど)の通販までの道のり

ちょいちょいブログでも紹介している、僕の製作している電子楽器「RakuChrd(らくこーど)」ですが、 3/12から通販を開始していました!

f:id:inajob:20190316232850p:plain

f:id:inajob:20190316220543p:plain

予定ではもう少しゆっくり売れていき、この週末の時点では、ブログで宣伝をしているのだろうな・・と思っていたのですが、順調に売れていき、3/13の夜に完売しました!

f:id:inajob:20190316220857p:plain

RakuChordがどんなものか、については公式ページ( RakuChord(らくこーど) - 楽にそれっぽい演奏ができる電子楽器) を見ていただくとして、本日のブログでは通販にこぎつけるまでの流れを紹介しようと思います。

RakuChordのフェーズについて

流れの話の前に、RakuChordの計画について少し書きます。

RakuChordは僕が、「楽に演奏できる楽器」というコンセプトでほぼ10年ほど(!)作り続けている電子楽器です。
販売は昨年のMaker Faire Tokyo 2018で初めて行いまして、今回の通販は2回目の販売ということになります。

inajob.hatenablog.jp

RakuChordはすでに十分に”演奏することができる楽器”にはなっているものの、細かい改良点がまだたくさんある状態です。
基板の発注は最低単位があり、1つだけ、というわけにはいかないため、せっかく作った基板だし、ということでキットで販売をしている、というのが実情です。

RakuChordを買っていただくことで、僕が次のさらに進化したRakuChordや、他の何かを作り始めることができます。
また、RakuChordを他の人に見せびらかしていただくことで、さらに多くの方が、RakuChordに興味を持ってもらうことができ、このサイクルを回しやすくなります。

 

作りかけを売るってこと? と思われるかもしれませんが、RakuChordの開発はライフワークなので、諦めない限り無限に改良できます。その時その時でベストを尽くしていますので、手を抜いてるわけでは無いことをご承知おきください。

RakuChord や inajob への貢献のやりかた

RakuChord自体に興味を持ってくださった方、またそれを作っているinajobに興味を持ってくださった方は以下の方法でこの活動を促進することができます。

 

RakuChordを購入する
これはRakuChord自体に興味がある方向けの方法です。ぜひ本物を手にして、遊んで欲しいです。
さらにフィードバックなどがあればぜひ教えてください。電子回路的なことでも、音楽的なことでもなんでもOKです。 それによりRakuChordがより良いものになります。

RakuChordを拡散する
RakuChordを購入した方はぜひ”演奏してみた動画”をSNSや動画投稿サイトに投稿してください。
購入されていない方も、RakuChord周りの情報を「はてブ」したり「リツイート」したりしてください。( ina_ani (@ina_ani) | Twitter
これによりRakuChordの裾野が広がります。

 

というちょっと宣伝をしたところで、今回の販売に至るまでの流れを紹介していきます。

基板設計・発注

RakuChordはMaker Faire Tokyo 2018でキットとして頒布しました。

f:id:inajob:20190316233245p:plain

次は「通販」に挑戦しよう!と、思いMaker Faire Tokyo 2018が終わったころから活動を開始しました。
もう一度作るからには、気になっている箇所を修正した新バージョンを作ろうと思い立ち、まずは基板の設計から始めることにしました。

今回の主な変更点は

  • I2Cバスの引き出し(この時点ではOLEDを付けた状態で売るかは決めず、とりあえず引き出そう、という感じでした)
  • 全スイッチにダイオードを付ける
  • 他のタクトスイッチがマウントできるようにしたフットプリント
  • タクトスイッチのフットプリントのドリル径が小さすぎて差し込みにくかった問題の修正
  • Arduino Nanoをそのままマウント(これにより5VレギュレータとUSB書き込みが可能となる)
  • 部品をなるべく基板の裏側に配置し、表側にカバーがつけられるようにする

です。

今再確認すると、この基板を発注したのは2018/08/06でした。これはMaker Faire Tokyo 2018の翌日です。やりますね・・自分

f:id:inajob:20190316233130p:plain

思い出すに、Maker Faire Tokyo 2018での販売の準備をしつつ、次の基板の設計も少しずつやっていたのでした。
そして、売れ行きを確認して、自信を持ったので、再度注文を行ったと。 こういうことだったようです。

基板が我が家に届いたのはあまり覚えていませんが、8月末か、9月といったところでしょう。

部品調達1

基板と並行して、組み立てに必要な部品を調達します。ご存知AliExpressを使いました。
注文したのは8/23で、この時は基板の設計に自信がなかったようで、基板は10枚発注したのですが、そのうち2枚を作るのに必要な部品を注文しています。

動作確認

注文した部品が届いたのは、はっきりと覚えていませんが、9月の中旬から下旬といったところでしょう。
ここでドキドキの組み立てての動作確認です。

ここでいくつかの問題が発生しました。

問題1 タクトスイッチがはいらない!

フットプリントの設計に誤りがあり、実際にマウントしたいタクトスイッチがマウントできませんでした。
誤りというのは「3mmのものを通すのに3mmの穴をあける指示を出す」といった感じのやつです。思い当たる方も多いのではないのでしょうか?

f:id:inajob:20190316221631p:plain

しかし、幸い他のタクトスイッチはマウントできるので、セーフ と判断しました。

問題2 Arduino NanoのオンボードLEDの存在を忘れて設計した

今回のボードはArduino Nanoを直接載せています。そのため、D13にはLEDがついています。
僕は設計時にすっかりそのことを忘れていたため、D13はキーの入力に使うことにしていました。キーの片足とLEDの出力が並列につながってしまい、しかもLEDはGNDにつながっているため、スイッチの入力は取得できず常に押された状態だと誤検知してしまう挙動を示しました。

f:id:inajob:20190316223133p:plain

これではこの基板は使い物になりません・・

いっそArduino NanoのLEDをそっとはがすかパターンをカットしようか・・ と思っていたのですが、よく考えると、プルアップされていれば問題ないのです。
そこで、回路図を確認して、D13を1KΩの抵抗でプルアップしました。もともとプルアップはAtmega328のCPU内部で行っていたのですが、LEDの接続によるプルダウンのほうが抵抗値が小さいため、意味を成していない状態でした。

f:id:inajob:20190316223213p:plain

さて、この1kΩの抵抗をどこに実装するか、というのも問題でしたが、今回は運が良いことにArduino Nanoの配線をすべて引き出したパッドを用意していました。
そのため、このパッドのD13(Pin17)とVCC間に1KΩの抵抗を実装することで、期待通りにスイッチの入力を取得できるようになりました。

f:id:inajob:20190316223557p:plain
ということでこの問題もセーフ

最低限の動作は確認できました。

追加実験

OLED(有機ELディスプレイをI2Cで接続するのはオプションとして考えていたのですが、実際にちゃんと動作するかの確認は、このタイミングで行いました。
結果として、ハードウェアとしては問題なく動きました。

f:id:inajob:20190316231242p:plain

ファームウェア更新

OLEDの制御は今までのRakuChordのファームウェアには存在しない処理なので、書き足す必要があります。
OLEDを操作するライブラリはいくつか存在するのですが、「メモリ消費が多い」「書き換えが遅い」という2点から既存のライブラリを使うことがむずかしく、Wireライブラリを使って自分で実装しました。

RakuChrodは楽器ですので、常に音が鳴っています。CPUはATmega328が一つだけなので、OLEDの制御を行うとそのタイミングで音が途切れてしまうという問題があります。
幸い今回利用したOLEDモジュールは内部にVRAMを持っているため、一度書き換えた画面は覚えておいてくれます。そこで下記のような注意をしつつOLEDの制御コードを作成しました。

  • 設定の表示は変更時のみ画面を書き換える
  • 和音の音名の表示は、画面のすべてを使わず半分を使うことで時間を短縮する

このように注意して実装したため、演奏体験を損ねることなく、OLEDに必要な情報を表示できるようになっています。

f:id:inajob:20190316231359p:plain

OLEDを使うことで下記のような情報を表示できるようになりました。

  • 現在鳴っている和音名の表示
  • ドラムモード、アルペジエータモード、デチューンモードのON/OFF
  • ドラム、アルペジエータパターンの編集時に現在状態を表示
  • エンベロープの調整用表示
  • 和音とメロディ間のオクターブ調整用表示
  • アルペジエータとドラムのステップの倍率調整用表示(これにより、ドラムに対してアルペジエータが2倍の速度 などが実現できる)

機能は以前からあったのですが、現在状態を見ることができないので、設定するためには完全に仕様を理解している必要がありましたが、画面がつくことで、ある程度はわかりやすくなりました。

思った以上にOLEDが良かったので、オプションではなく標準装備とすることを決めました。

コミットログを見る限り、この辺で11月になっていたようです。

デモ動画の作成

RakuChordを通販するにあたって、初めてRakuChordを見る人も多くいるので、これがなにかを説明する動画が必要だと考えました。
ある程度は以前のバージョンの動画があったのですが、もう少し充実させたいと考え、いくつか演奏動画をYouTubeに投稿しました。
いわゆる「演奏してみた」動画なのですが、大半の曲はJASRACの許諾が必要です。YouTubeはそのあたり包括契約があるため、JASRACの管理番号(?)を入れて動画を作成するだけで、著作権的に安全に動画を公開できました。

www.youtube.com

筐体の再設計

RakuChordの筐体は3Dプリンタで作成しています。今回基板の構成を変更したため、3Dモデルも変更する必要がありました。
3DモデルはOpenSCADというプログラムで3D図形を定義するソフトウェアを利用して作っていたので、Gitでバージョン管理をしつつ、変更を行いました。

f:id:inajob:20190316224018p:plain

一番の大きな変更点はフロントパネルです。従来のRakuChordは部品が前面に存在していたため、フロントパネルは存在せず、部品がむき出しとなっていました。

しかし今回のRakuChordは前面にはOLEDとボタン、スイッチ、オーディオジャックのみが存在し、他の部品は裏側に実装してあるため、前面をカバーで覆うことができました。これにより「より製品っぽく」できたかな と思っています。

f:id:inajob:20190316231943p:plain

また、電子部品むき出しは、静電気や水によるダメージも受けやすいため、少しは堅牢になったかなと思います。

OLEDの部分は、この時点では深く考えずむき出しにしていました。
この作業はファームウェアの更新と並行して行っていましたが、3Dプリントのモデルが形になったころには12月になっていました。

 

OpenSCADについては別で記事にしているので気になる人は見てみてください↓

inajob.hatenablog.jp

部品調達2

さて、ここまでで発注した基板でRakuChordが動作することが確認できました。筐体のめども立ちました。
ということで販売用の部品を発注します。

AliExpressで必要分の部品を調達します。注文ログを見るとこれは2019/01/20に行っています。
すべての部品が届くいたのはおそらく2月の中旬です。

f:id:inajob:20190316231716p:plainf:id:inajob:20190316231759p:plain

説明書作成

部品が手元にそろったら、次は説明書の作成です。
今回も「キット」方式での販売を考えていたので、「組み立て説明書」が必要です。
ということでさらに1つRakuChordを組み立てます。この際、都度都度写真を撮影し、説明書に利用します。

説明書に1枚ずつ注釈を入れつつ、ドキュメントを作成します。
今回はドキュメントの下地は以前のものが使えたので、比較的簡単に説明書を作成することができました。

f:id:inajob:20190316224250p:plain

実際のページはこちら→RakuChord(らくこーど) Next - 組み立て説明

説明書が形になったのは2月の後半でした。

検品用RakuChordの作成

今回はキットでの提供のため、動作が確認できた製品を売る ということができません。
どれかの部品が壊れているかもしれません。

ということで、買った部品を一通り動作確認する必要があります。
そのために、簡単に部品を取り換えられるRakuChordを作成しました。

f:id:inajob:20190316224500p:plain

実はこれはじめに検証に使ったRakuChordの部品の一部を取り換えて実現しています。

今回確認したかったのは「アンプIC」と「OLED」です。経験上この部品は良く壊れています。

実際に検証すると案の定どちらも壊れているものが紛れ込んでいました。念のため多めに買っておいて良かった、、と思いました。

筐体作成

RakuChordの筐体は3Dプリンタでできています。我が家には3Dプリンタがあるため、製造は家で行いました。
筐体はおおきく下部と上部に分けられますが、下部の出力が非常に時間がかかります(3時間くらい)
そのため、2月は会社から帰宅して、3Dプリンタに指示を出し、風呂上りにうまくいっていることを確認しつつ、寝て、起きたら完成しているというルーチンを繰り返していました。
歩留まりがあまりよくなく、初めは2つ作ると1つ失敗している というありさまで、非常に苦労しました。

f:id:inajob:20190316232052p:plain
途中で各種設定値を見直して、ある程度安定して出力できるようにしてからは順調に作成が進みました。

f:id:inajob:20190316232216p:plainf:id:inajob:20190316232309p:plain

 

3Dプリンタについては下記にまとめています。気になる人は見てみてください↓

inajob.hatenablog.jp

レーザーカッターによるフロントパネル作成

OLEDを扱っていると、非常に破損しやすいことがわかってきました。
表面に少し力が加わると安易に割れてしまい、使い物にならなくなってしまうのです。
3Dプリンタの筐体の窓からOLEDをそのままさらすのは非常に壊れやすい、ということで、表面に透明なアクリル板を貼るという方法を思いつきました。

レーザーカッターはさすがに持っていないので、たまたま会社の関係で利用できるYahoo! JAPANのLODGEでレーザー加工を行いました。(社員じゃないと使えません)
レーザー加工用のデータはOpenSCADのモデルデータを流用することができて、とても楽でした。

f:id:inajob:20190216183318p:plain

レーザーカッターで難しかったのはパラメータ調整です。今回は1mmのアクリル板を利用したのですが、速度強さを正しく設定しないと、焦げてしまったり、逆にへこむだけでカットされない、などといったことが起きました。

f:id:inajob:20190316224755p:plain

f:id:inajob:20190316232139p:plain

梱包材の調達

キットの提供のためには部品を入れる「チャック袋」や、通販用の「箱」が必要です。
チャック袋は100均で、箱はヤマトのコンパクトサイズの段ボールを買ってきました。

ファームウェアの書き込み

今回はArduino Nanoをそのまま使う方式だったので簡単です。
Arduino NanoのUSB端子を使って、最新のRakuChordのファームウェアを書き込みます。
ついでに、この書き込みができることをもって、Arduino Nanoの動作確認も実現しています。(今回は全数問題なしでした!やったね!)

f:id:inajob:20190316224947p:plain

キッティング

ここまでで電子部品、基板、筐体、フロントパネル とすべての部品が必要な数手元にそろいました。この時点で3月です。
ここから販売用にキットを作ります。

キットなのですが、電池ボックスと、スピーカに取り付ける端子だけは、特別な工具がないと加工が難しいため、組み立てて提供することにしました。
そこでまずこれを組み立てます。

Before

f:id:inajob:20190316225113p:plain

After

f:id:inajob:20190316225239p:plain

基板や筐体はいっそ組み立てたほうが、検品も梱包も楽そうだったので、簡易的に組み立てました。壊れやすいOLEDも簡易的に組み立てた筐体の内部に入れておくことにしました。

f:id:inajob:20190316225419p:plain

部品は非常に細かいものが多いので、慎重に数える必要があります。部品表を作り必要な部品が足りているかを確認できるようにします。
今回は紙皿を使って、必要な部品を必要な個数「種まき」のように順番に皿に入れていく、という方法にしました。

f:id:inajob:20190316225521p:plain

部品がそろったらチャック袋に入れます。
RakuChordで苦労したのは「ボタン」と、今回初登場の「ダイオード」です。ボタンもダイオードもそれぞれ28個必要なのですが、これを数え間違えないように入れるのに非常に神経を使いました。

f:id:inajob:20190316232417p:plain

f:id:inajob:20190316232450p:plain

f:id:inajob:20190316232538p:plain

検品

個数が間違っていると後が面倒なので、箱に詰める前にもう一度確認することにしました。
RakuChordの部品表には2つのチェックボックスがついています。1つは、ここで私が部品の数を確認してチェックするものです。
もう一つは、お客さんが買ってくれた時にチェックするのに使ってもらえれば、と思って付けたチェックボックスです。 

f:id:inajob:20190316232616p:plain

一度チャック袋に入れた部品を出して、部品の種類・数を再確認してチェックボックスにチェックを入れて、問題なければ再び元に戻して、箱に詰めます。

f:id:inajob:20190316232700p:plain

通販の準備

通販は初めてだったので、通販サービスを探すところからのスタートです。
まぁみんなが使っているという理由でBOOTHを使うことにしました。
まぁ、さすがみんなが使ってるだけあって、全く悩むことなく、時間もかからずショップを開設することができました。

inajob.booth.pm

値付け

これはまた別の機会に書きます。

 

(ちょうどこの前の「同人ハードウェアミートアップ」で発表されていた例のシャツの画像を置いておきます。)

 

 

プレ販売開始

以前RakuChordを見せて「興味がある!・欲しい!」という人たちのアカウントを記録していたので、まずはその方たちに向けて通販の開始を連絡しました。
このタイミングでも何人かの方が購入してくださいました。

販売開始

そして2019/03/12 販売を開始しました。
まぁTwitterで「販売を開始したよ!」と書くだけなんですが、自分では珍しく拡散希望」的なことを書いたおかげか、多くの方にリツイートしていただくことができました。

 その甲斐あって、わずか3日で完売!に至りました。

発送

BOOTHの発送は、非常に簡単で、「ヤフオク」や「メルカリ」を使ったことがある方は、あれと同じですが、互いに匿名で送ることができるという非常に優れた仕組みです。
ファミリーマートの「ファミポート」にQRコードをうつして、出てきたレシートをレジに持っていくと、宛先票みたいなのを付けてくれて、それで終わりです。

販売後

さて、これを書いている現在、プレ販売で販売した方のうちの1人から完成報告をいただいています。
販売したものは「キット」であるため、実際の反響が来るのは、この週末以降かな・・それとも何も来ないかな、、 苦情が来るかな、、??

とビクビク、ドキドキしているのが今の状態です。

早速のフィードバック

完成報告をいただいた方、から「スピーカから気になるノイズが鳴る」という意見をいただきました。その方は電子工作もよくやられる方で「OLEDからノイズが出ているのでは?」という見解も合わせていただきました。

手元で実験を行い、劇的にノイズが減る方法を発見したので、説明書に追記しておきました。

このように買った方から様々なフィードバックが得られるのも販売してよかった点です。

f:id:inajob:20190317095618p:plain

まとめ

とにもかくにも、買ってくださった方拡散してくださった方に感謝です。

売れ行きも好調だったので、また少し改良して販売しようと思います。

とにかく物理的なモノを作って売るという、一連の作業はとても楽しい!です。この記事が、同行の士の皆さんの役に立てば幸いです。(より高度なことをされている方は、ぜひいろいろ教えてください!)

 

もし、RakuChordを買いたい!という方は下記BOOTHのページで「入荷お知らせメールを受け取る」をクリックしておいてください。次回生産数の参考にします。興味がある!という人f:id:inajob:20190316230251p:plainをクリックしておいてください!

inajob.booth.pm

 よろしくお願いします!

北千住で何もしない週末

2月は疲れがたまる!

ということで、週末に大浴場のあるホテルで、夫婦でのんびり過ごそう!ということで金曜日の朝、出社前にインターネットで探して予約しました。インターネット素晴らしい!

 

とくに観光目当てではないので近場でいいじゃない、ということで探していると「北千住」のホテルがヒット。

大浴場があり、そこそこリーズナブル。

金曜の仕事を終えて、家に帰らず北千住に向かいました。

f:id:inajob:20190224142823p:plain

 

お店は妻がいろいろ調べてくれたらしく、例えばinstagramで”北千住グルメ”などとすると見つかるのだとか 

www.instagram.com

 

ふむふむ。おされだな・・

 

サニーダイナー

夜ごはんはよさそうなハンバーガー屋にしました。

www.sunnydiner.com

 

気になる「フッツウノ」お客様の声から生まれたらしい・・

f:id:inajob:20190224142856p:plain

かわいいつまようじをアレする装置

おいしかったです。

f:id:inajob:20190224143054p:plain

あと、関係ないけど、店に置いてあった新聞の広告に気になる書籍が・・

f:id:inajob:20190224143148p:plain

”ゾンビ”のビジネスとは・・

ホテルのPC

ホテルのフロントにPCがあったので、興味本位で見てみると、謎のキーボードがついていた!(結局使い方はわからなかった)

あとおもむろにブラウザを開いたら誰かのFacebookにログインしっぱなしだったよ!(閉じておきました)ホテルのPCを使うときは注意が必要ですよ!どなたか知らないけど。

f:id:inajob:20190224143235p:plain

大浴場でのんびりしてから、睡眠。

北千住ぶらり

朝ごはんを食べて、妻は再び寝てしまったので、僕は一人北千住の街をうろうろ

 

店員のウルトラマンさん

f:id:inajob:20190224143420p:plain

 

すごいPayPayを押している。

f:id:inajob:20190224143442p:plain

やけに雰囲気の良い眼科。ここだけ異世界から転生してきたような様子

f:id:inajob:20190224143523p:plain

instagramで人気そうなお店は、行列ができていました。これがインスタ映えの力か・・・

 

Sd Coffee

朝ごはんをホテルでしっかり食べたので昼は軽めでよいだろうということで、立ち寄ったのが、こちらのカフェ

 

www.kita-senju.jp

 

謎の店内

f:id:inajob:20190224143632p:plain


謎の「OK!DOG」なるメニュー (どうやらOKと桶を掛けているらしい)

f:id:inajob:20190224143609p:plain

やけに長い名前のシェイク「抹茶めっちゃむっちゃシェイク」(めっちゃ迎春ひなまつりVer.2)

f:id:inajob:20190224143730p:plain

これが

「抹茶めっちゃむっちゃシェイク」(めっちゃ迎春ひな祭りVer.2)

 だっ!!

f:id:inajob:20190224143811p:plain

これが「OK!DOG」

f:id:inajob:20190224143921p:plain

おいしかったけど、シェイクを食べたら寒くなったのでホテルに帰って再び風呂

ダラダラしていたら、もう夜だよ!ということで夕食

足柄野菜の店 YOSHI

夕食はこちらに店でいただきました。まぁSD Coffeeからと比較すると普通のお店でした。

osteriayoshi.gorp.jp

 

帰り道

ということで、帰ってきてこのブログを書いています。

たまにはこういうダラダラ週末も良いなと感じました。

 

前回ブログに書いた平塚旅行(平塚旅行してきました - inajob's blog)以上に近場で、かつ何もしない旅行となりましたが、こういうのが良いんだよ・・

 

OpenSCADによる3Dプリンタモデルの設計

はじめに

3Dプリンタ用のモデル、どうやって作っていますか?

僕はFusion360も使いますが、ここぞというときにはOpenSCADを使っています。

www.openscad.org

 

OpenSCADとは

OpenSCADはプログラムで3Dモデルを作成する環境です。プログラム言語で図形を定義することでいくつかのメリットがあります。

  • 変数が扱える
  • Gitなどのソースコード管理ツールと相性が良い
  • パーツのモジュール化などが用意

一方で、GUIによる編集ができないので直感的なモノ作りは難しいです。

僕は雑な形状をまずFusion360などGUIのCADで作ったのちに、OpenSCADを使うことが多いです。

ちょっとデモ

cube([1,1,1]);

 f:id:inajob:20190216181314p:plain

 こんな風に、立方体が作れます。

2次元の形状を定義することもできます。

square([10,10]);
circle(r=5);

f:id:inajob:20190216181606p:plain

 さらにこれを引き延ばせます

linear_extrude(height=5){
union(){
square([10,10]);
circle(r=5);
}

f:id:inajob:20190216181806p:plain

offsetを指定すると角が丸くなります

linear_extrude(height=5){
offset(3){
union(){
square([10,10]);
circle(r=5);
}
}

f:id:inajob:20190216182040p:plain

offsetを同じだけマイナスすると大きさを保ったまま角を丸めることができます。

linear_extrude(height=5){
offset(-3) offset(3){
union(){
square([10,10]);
circle(r=5);
}
}
}

f:id:inajob:20190216182120p:plain

図形同士を演算してくりぬいたりもできます。

$fn=50;
module sketch(){
    union(){
        square([10,10]);
        circle(r=5);
    }
}

linear_extrude(height=5){
    difference(){
        offset(-3) offset(3){
            sketch();
        }
        offset(-2) offset(1) sketch();
    }
}

f:id:inajob:20190216182615p:plain

まぁ、こんな感じで3Dデータを作ることができます。

 

3Dプリンタやレーザーカッターでの出力

こうやって作った3DモデルはSTL形式でエクスポートすることができるので、3Dプリンタで印刷することができます。

また2次元データはSVG形式の出力もできるため、うまくモデルを作るとレーザーカッター向けのデータも作成できます。

今私が作っているRakuChordは、3Dプリンタで作った筐体に加えてレーザーカッターでフロントパネルを作っています。

このようなデータを用意する際もOpenSCADで同じように扱うことができます。

また私の場合は3Dプリンタは家にあるのですが、レーザーカッターは持ち合わせていません。このような状況だと、まず3Dプリンタでレーザーカッター用のデータで部品を出力してみて、位置合わせをする。というのがさっとできるのがこの方法の良いところです。

f:id:inajob:20190216183318p:plain

下が3Dプリンタで作ったもの、上が同じデータをレーザーカットしたものです。

f:id:inajob:20190216183532p:plain

回路設計ソフトKiCADとの連携

さらに便利な機能としてKiCADでの外形データをdxfとしてOpenSCADで読み込むことができます。

私の場合は、下記の図でいうと白い枠線をCmts.Userなど、製造とは関係ないレイヤーに作成し、そのデータをdxfで出力してOpenSCADに取り込んでいます。

こうすることで、基板上のコンポーネント配置とぴったり合ったカバーなどを作ることができます。

f:id:inajob:20190216183955p:plain

まとめ

といった具合にOpenSCADを使うと非常に簡単に3Dデータのワークフローを構築できます。

もちろんFusion360でも似たようなことはできるのでしょうが、オープンソースのソフトを組み合わせて使おうとすると、テキストファイルとして3Dデータを扱えるというのは非常に取り回しが楽です。

しかし、OpenSCADは直感的な3Dの造形が難しく、今回紹介したoffsetを2回実行することで角を丸くするテクニックなども知らないとわかりません。Fusion360だと、フィレットや面取りはUIから簡単にできるため、そういう点ではFusion360のほうが簡単です。OpenSCAD使いの方で、こういったテクニックを知ってる人は、ぜひその知見を公開してほしいです。

私が使ってて気づいたことは 下記Scrapboxに随時まとめています。

scrapbox.io

またOpenSCADは独自の言語なので敬遠する人もいるかもしれません。そういった方にはJavaScriptで似たようなことをするOpenJSCADがお勧めです。

openjscad.org

 

最後に、今私が頑張って作っているRakuChordの紹介ページを貼って、この記事を締めます。

気になる方はぜひ見てみてください↓↓↓↓↓

inajob.github.io



 

 


 

 

ESP32ゲーム機o-bakoによるゲームのオンラインダウンロード

o-bakoにゲームのオンラインダウンロード機能が付きました!

o-bakoは、僕が作っているESP32で動作するゲーム機です。

inajob.hatenablog.jp

ゲームのオンラインダウンロード機能を作っているので、その紹介をします。

o-bakoの現在の状況

昨年5月から、ずいぶんと開発が進み、プリント基板化も行いました。

ちなみにこの基板、設計を大量に間違えており、工夫をしないと作ることができません・・

そして、3Dプリンタで筐体を作りました。

 さらに、リチウムイオンポリマー二次電池による、充電機能も付けてみました。

といってもこれは、市販の充電回路と、5V昇圧回路を組み合わせただけですが、、

f:id:inajob:20190131164124p:plain

o-bakoのランチャ

o-bakoはLuaでゲームプログラムが書けるという環境です。描画命令や、キーの入力スキャンなどの処理はネイティブ実装を行っており、Luaの関数から呼び出すことができます。

また、o-bakoのランチャ自体もo-bakoのアプリケーションの一つとしてLua言語で実装されています。要は”ランチャ”というゲームです。

o-bako-esp32/main.lua at master · inajob/o-bako-esp32 · GitHub

この150行程度のプログラムがランチャです。

f:id:inajob:20190131164705p:plain

実行するとこのようにSPIFFS上のファイルを一覧し、十字キーでゲームを選んで実行することができます。

o-bako用のゲーム

ゲームらしいゲームの例を見ていきましょう。

o-bako-esp32/main.lua at master · inajob/o-bako-esp32 · GitHub

この104行のプログラムは、ジャンプで敵キャラをよけるという単純なアクションゲームです。

f:id:inajob:20190131195313p:plain

o-bako固有の命令については o-bako Simulatorに紹介していますので参考にしてください。

 

ゲームを構成するファイルについてみていきます。

o-bako-esp32/example/jump at master · inajob/o-bako-esp32 · GitHub ここにあるように、このゲームを構成するのはgame.jsonとmain.lua、sprite.bmpです。

game.jsonはこのような内容です。

{"title":"jump", "files":["main.lua", "sprite.bmp"]}

これが、このゲームのタイトルと、依存しているファイルの一覧です。

main.luaはゲーム本体のLuaスクリプトです。sprite.bmpは128x128の256色インデックスカラーのビットマップファイルです。

ゲームのオンラインダウンロード

ゲームのオンラインダウンロードのため、まずはダウンロード可能なゲームの一覧をファイルにまとめています。

o-bako-esp32/games.json at master · inajob/o-bako-esp32 · GitHub

{"games":["jump", "loader", "downloader","doteditor"]}

このような内容です。この例では4つのゲームがダウンロード可能となっています。

 

ゲームのオンラインダウンロードを行う機能も一つの”ゲーム”としてLuaで記述しています。

o-bako-esp32/example/downloader at master · inajob/o-bako-esp32 · GitHub

主となるのはmain.luaで、120行程度のプログラムです。

このプログラムが、上記のゲーム一覧のjsonファイルを読み込みます。そして、ゲームをダウンロードします。

f:id:inajob:20190131172555p:plain 

まとめ

ESP32はWiFiが利用でき、非常に高性能なマイコンモジュールです。

o-bakoでは esp32-arduinoでluaを使う - Qiitaで紹介した方法でLuaを利用しています。

これらの強力な機能のおかげで、”インターネットからのオンラインゲームダウンロード機能”を備えた携帯ゲーム機を作ることができてしまいました。

これからもo-bakoの開発を進めていきますので、気になる方は私のTwitterアカウントina_ani (@ina_ani) | Twitterと、このブログを要チェックです。

 

 

 

2018年まとめ

f:id:inajob:20181228182232p:plain

所感

今年はなんといってもRakuChordのキットを販売できたのが大きかったです。昨年試行錯誤していた3Dプリンタのノウハウがようやく生きてきたのを感じます。来年もバージョンアップして売りたいな、と考えています。まだ形になっていませんがESP32を使ったゲーム環境o-bakoにも力を入れました。これは来年も継続して取り組みたいです。

また、このはてなブログの記事のうち2つの記事で非常にたくさんのブックマークをもらうことができました。

去年の反省で、”もう少しWeb系の活動がしたかった”と、書いていたのですがまぁこの2つ目の記事で実現できたかなと思います。

それと、半分仕事ですが、KubeWeeklyで紹介されている記事を読んで、一言感想を書いてQiitaに投稿する。という活動を継続して行うことができました。 → KubeWeekly 13 posts - Qiita

おかげで「英語の技術文章をさっと眺める」ということが抵抗なくできるようになってきました(理解できるとは言っていない)。次はリスニングについて抵抗をなくしていきたいところです。

体調不良は相変わらずなのですが、今年は新たなるチャレンジとして「ダンスダンスレボリューションを毎朝する」というのをはじめました。来年はもう少し健康でありたいです。

 

このブログは、今までは”自分の作ったもの”を記事として投稿していたのですが、今年は”自分の買ったもの”、”旅行記”についても投稿してみました。今後も面白いものを買ったり、変わった旅をしたときはそれも投稿していくつもりです。 興味のある方はぜひ読者登録してみてください。

ステータス

  • 引っ越してから2年目
  • 会社に入ってから9年目(来年度で10年目)
  • 結婚してから2年ちょっと

今年学んだスキル

  • 電子工作キットの販売
  • 英語の技術記事をざっと読める
  • ESP32

月別振り返り

今年はTwitterでのみ製作報告した取り組みが多かったので、少し細かい粒度でまとめてみました。

1月

  • 映画オデッセイを見る
  • PIC32に挑戦しようとして挫折
  • おうちKubernetes増強
  • 豆苗を育てるブーム
  • 3Dプリンタを簡易的な箱で覆う
  • 瞑想中 作る 

  • Arduboy Writerを作る

inajob.hatenablog.jp

 

  • タッチパネルキーボードを作る

inajob.hatenablog.jp

 

  • モバイルRaspberryPiを作ろうとする

  •  鼻笛に興味を示す。
  • 月蝕

2月

inajob.hatenablog.jp

 

inajob.hatenablog.jp

inajob.hatenablog.jp

  • ESP8266で和音

inajob.hatenablog.jp

  • T.Chordstrumを発見する
  • 布教用RakuChord完成
  • RakuChord紹介動画作成

www.youtube.com

  • RakuChord公式ページ作成

inajob.github.io

  • リビング改造 こたつ机からちゃんとしたデスクに!
  • FM音源ボードを購入してRakuChordから鳴らしてみる

www.youtube.com

  • フィラメント送り用の補助具を作った

3月

  • 掃除しないルンバ

inajob.hatenablog.jp

  • RakuChordのキット組み立て手順作成

inajob.github.io

  • シャープの電子ノートを購入
  • Osushiが流行る
  • OctoPrintのホストをRaspberryPi3に変更 遠隔プリントの準備が整う

  •  映画 her を見た
  • 名前入りキャンドルを作る

  •  納豆ボタン日本語対応

  •  モバイルRaspberryPiをつくろうとする

  •  組みひも作り器の糸巻をつくる

  •  蕁麻疹に悩む(結局花粉症だったのかな?)

4月

  • 掃除しないルンバをしゃべるようにした

  • ESP32初購入
  • ヤマハFM音源チップYM2413を購入(仮組みしただけで放置)
  • T.Chordstrumを購入した。

www.youtube.com

  • ケースも作った

  •  ESP32で豊四季TinyBASICを動かしてみる

  •  ESP32でLuaを動かしてみる

  •  本を開きっぱなしにするやつを作った

  •  倉敷観光からの帰省

5月

  • 風邪っぽい症状
  • Arduboyに自分の名前が入っているようで感動

  •  木製フィラメントを購入

  •  o-bakoシミュレータの開発

inajob.hatenablog.jp

6月

inajob.hatenablog.jp

  • RakuChordを貸し出して、演奏してもらう。うれしい。 

  •  m5stackを購入
  • 電子工作合宿
  • esp32-arduinoluaを使う 

qiita.com

qiita.com

  • makeに向けてキットを作り始める

7月

  •  腹痛からののどの痛み、風邪
  • RakuChordのケースをレーザーカッターで作れないか試行錯誤

inajob.hatenablog.jp

8月

  •  MakeにてRakuChordの販売

  •  RakuChordキット販売への道のり

inajob.hatenablog.jp

9月

inajob.hatenablog.jp

  • 平塚旅行 

inajob.hatenablog.jp

  • o-bako実機の作成

10月

  • 毎時新聞

inajob.hatenablog.jp

  • RakuChordディスプレイテスト

  • 技術書展お手伝い
  • o-bakoテストのためにソフトを書いてみる

  •  コメを炊く必要があることを知らせるやつ作った

  •  RakuChordで演奏してみた動画を作った

www.youtube.com

11月

inajob.hatenablog.jp

  • テレビチューナー購入

inajob.hatenablog.jp

  • さくら展に行った
  • Qooboが届いた。
  • 出張で中国へ
  • 映画 レディプレイヤーワン 見た
  • 映画 カメラを止めるな! を見た
  • 同人ハードウェアミートアップに参加
  • Wiiのセンサーバーを固定するやつ

12月

  • ESP32でタッチパネルと液晶

  • のどが痛い からの体調不良(熱は出なかった
  • OrangePicoPocketを購入

  • HackDayの全作品をまとめた 

scrapbox.io

 

参考

テレビチューナーを買った

いんとろ

買ったエントリばっかり続いていますが、テレビチューナーを購入しました。

何を隠そう僕は高校生くらいの時からテレビのない生活をしてきたので、テレビにはめっきり詳しくない、、、 そんな僕の奮闘を記録しておきます。

要件

  • テレビ番組が見たい(妻が年末のガキ使が見たいと言っている)
  • ものを増やしたくないのでディスプレイはパソコン用のものを流用したい
  • うちのディスプレイはDVI-DかVGA接続ができる

調査

HDMI接続あり、という絞り込みができたので、ここを参考にする。

kakaku.com

 

ちなみにHDMI接続にこだわらないとこんな感じ。

kakaku.com

 

  • 1万円程度のチューナーはコンポジット出力のみ
  • 2万円程度からHDMI接続をサポート
  • 上には上がいる

決める

コンポジット出力されたものをVGAやDVI-Dに変換するという手もあるが、なんか負けた気がするのと、しょぼい地デジチューナーは旅先のホテルとかで触ったことがあるが、すべてにおいてもっさりなので、中くらいの性能のものがいいな、、などと考えた結果、HDMIをサポートしていて一番安そうな

 こいつに決定!

テレビは難しい

B-CASカード

よくわかっていないが、これを刺さないとテレビが見られないらしい。地デジの信号はなんか暗号化か何かされていて、このカードを使ってそれを複合化している、、という認識。

HDMI変換

このチューナはHDMIを出力しますが、我が家のディプレイはDVI-DかVGAしかサポートしていない。(もっと詳しく言うと我が家には2つのディスプレイがあり、1つはVGAとDVI-D、もう一つはDVI-Dのみサポート)

ということでHDMI → DVI-D or VGAの変換が必要となる。

HDMIからDVI-Dは普段から使っている。 

ELECOM HDMI DVIアダプタ AD-HTD

ELECOM HDMI DVIアダプタ AD-HTD

 

 こういうやつ。

しかし、、これ、音声はどうなるのか・・。

パソコンの場合は音声端子は別にあるのでそっちを使えばよいが、今回のチューナはHDMIから映像と音声を出力することしかできないようだ。

つまり、HDMIから音声を分離する必要がある。

DVI-Dはひとまずあきらめて、VGAだとこういう製品がある。

このアダプタ、すっきりしそうだが、USBで給電する口がある、配線だらけになるな・・と思っていたが、実際接続してみるとUSB給電しなくても動作した。HDMIバスパワーといった仕組みなのだろうか・・ まぁ動いたからいいや。

 

たくさん探したけどHDMIをDVI-Dとオーディオに分離するアダプタは見つからなかった。

 

買っていないけど、こういう商品で一度オーディオを取り出してHDMI-DVIアダプタでHDMIをDVI-DにすればDVI-Dとオーディオになるのかな・・つらみ

まぁとりあえずはVGAで良いことにする。

同軸ケーブル

チューナーを購入して、いそいそと設置準備をしているときにふと気づいた、、「同軸ケーブルがない」部屋の壁についているテレビアンテナからのコネクタをチューナにつなげるためのケーブルです。我が家の場合は5mくらい必要そうです。

ということでそれも購入 

 こういうやつ

さて、チューナの後ろを覗くと、同軸ケーブルを刺すところが4つもある!

  • 地上デジタル出力 これはテレビにつなげるときの線で使わないはず
  • BS・110度CS出力 これもテレビにつなげるときの線で使わないはず
  • 地上波デジタル入力 これは入力らしい、それっぽい
  • BS・110度CS入力 これは入力らしい、それっぽい

ん?同軸ケーブルを刺す箇所が2か所ある。しかし壁には1つしか穴がない。

始めに間違えてBS・110度CS入力にさしてしまったが、番組スキャンがすべて失敗した。

その後地上波デジタル入力に刺したところ地上波デジタルの番組が視聴できました。

 

試していないが、こういうコネクタで「分波」してやれば見られるようになるのだろうか、、謎技術だな・・

HORIC アンテナ分波器 BS/CS/地デジ対応 白ケーブル2本付き(S-4C-FB) 40cm  BCUV-971

HORIC アンテナ分波器 BS/CS/地デジ対応 白ケーブル2本付き(S-4C-FB) 40cm BCUV-971

 

で、無事PCモニタへVGAケーブルで接続してテレビを見ることができました。

スマートフォンからの視聴 

このチューナ、スマートフォンからも視聴できるようで、LANケーブル端子がついています。

せっかくなので設定して、iPhoneに視聴アプリを入れてみてみました。見れる!しかもチューナが2つ内蔵されているので、2端末から見れるらしい!

 

ちなみに妻はAndroid端末を持っているが、USBデバッグがONだと視聴アプリは起動できないらしい。テレビアプリともなるとその辺厳重になるのだな。

PCからの視聴

スマートフォンから見れるのだから当然PCからも見れる、、と思って調べてみると、、

Windowsの場合は1世代前のアプリが使えるようだ、、 お、、おう

Macの場合はアプリが提供されていない

スマフォファースト、ということか。って、PCからみられるならHDMI接続なんて頑張らなくてもPCで全画面表示すればよいじゃないか!とおもってそれも試してみる。

しかし、、ノートパソコンのメインディスプレイだと受信できるが、外部ディスプレイで表示しようとするとみられない。どうやらノートパソコンと外部ディスプレイの接続がVGAなのが気に入らないらしい。著作権保護信号的なものがサポートしていないディスプレイには表示できないということか・・?

僕のノートPCにはVGA端子しかない、妻のノートPCはMacBookなのでそれもダメ。まぁいいや直接つなぐから。

まだ試していない機能

どうやらこのチューナUSBでハードディスクを接続すると「録画」ができるらしい。今のところ空いているHDDを持っていないので、後で試そうと思うが、これは非常に役立ちそうだ。

また、スマートフォンからの視聴は設定を適切に行えば出先からもできるらしい。すごい通信量になりそうだが・・。リアルタイムではなく録画したものをスマートフォンに転送しておいて、見ることもできるらしい。これは通勤時間にお気に入りの番組を見ることができそう。まぁまだ見たい番組がないけど

テレビを買って気づいたこと

テレビがある生活というのは、17年ほどしてこなかった、もちろん友人の家や親戚の家で見ることはあったが、そんな僕の感想

  • テレビは常にさっと付けられることが価値の一つ(うちはPCディプレイがプライマリなので、この状態にはなっていない、切り替え機とかを買うのが良いのかな。)
  • 新聞のテレビ欄はテレビ番組を見るのに最適なUI、テレビ自体の番組表はいろいろつらい
  • テレビは基本的に見たい番組がない。ごくまれに見たい番組があるが、時間を合わせるのが大変なので録画が重要

 毎週のお気に入りの番組でもあればまた気持ちも変わるかもしれない。

テレビがないとき僕はどうやって動画コンテンツを視聴していたかというとYouTubeGyaoやAbemaTVで見ていた。

わざわざ録画をして見るより、インターネット上のコンテンツの好きなものをタップして見始められるほうがはるかに簡単だ、残るは番組の魅力だが、これはまだ僕のテレビ経験が浅いため今後に期待といったところ。

さて、来年の自分がテレビを活用できているのか、否か・・

 

 

 

1万円未満で始められる!自宅ダンスダンスレボリューション!

ふと家でダンスダンスレボリューションがやりたくなった

なぜだかやたらとダンスダンスレボリューション(以下DDR)がやりたくなったので、一式そろえてみました。

f:id:inajob:20181118155207p:plain

昔友人の家で遊ばせてもらったことはあったけど、飽きるまでやったことはなかった・・大人になった今、欲しいものは買える!!! という反動のようなものがあったのかもしれません。

DDRはどうすれば遊べるか?

DDRを遊ぶためには、コントローラか、専用マットが必要です。僕は専用マットで遊びたかったので、マットも含めて調達する必要があります。

調べたところ次のゲームハードでDDRが遊べるようです

PS/PS2

PSとPS2は両方でDDRがリリースされている。ただ、PS2だとしても結構古い。PS3,PS4も互換性があるので、どれかのPSがあれば遊べそう。しかしPS3,PS4は比較的新しいため中古だと少し高い気がしました。逆にPS2やPSは古いので、故障が心配です。(主観です)

GameCube

GameCubeでもDDRがリリースされていたようです。しかしWiiの中古が十分に安いのでGameCubeをあえて選ぶこともないかな。

DreamCast

DreamCastでも遊べそうですが、中古、、あるかな?

Wii/WiiU

Wiiでも遊べます。WiiUも互換性があるので遊べそう。

 

ここまで調べたところで、独断と偏見でWiiにすることに決めました。特に専用マットの経年劣化が心配なため、比較的新しいハードウェアが良かったのです。ちなみにWiiは2018年3月にオンライン機能が実質終了しているので、価値がガクンと落ちているようです。

 

価格.com - 任天堂 Wii [ウィー] シロ (Wiiリモコンプラス・Wii Sports Resort同梱) 価格推移グラフ

f:id:inajob:20181118155303p:plain

家に元からあるもの

  • パソコン用ディスプレイ(HDMI接続できるやつ)
  • スピーカ

買い物

Wii中古は「すぐ遊べるセット」などと銘打って2000~3000円で販売されています。(付属品の有無に注意してください)

Amazon.co.jp: こちらもどうぞ: Wii本体 (シロ) (「Wiiリモコンプラス」同梱) (RVL-S-WAAG)【メーカー生産終了】

続いてDDR専用マット

Amazon.co.jp: こちらもどうぞ: Wii用 ダンス ダンス レボリューション コントローラ

こちらは2600円程度で販売されています。

また、我が家にはテレビがなく、パソコン用のディスプレイのみがあります。通常Wiiはアナログ端子でテレビと接続します(赤、白、黄のケーブルのやつ)。しかし次の装置を使うことでHDMI端子でも接続できるようになりました。 

最後にソフトウェアです。

Wiiでは複数のDDRタイトルが出ており、 最後に販売されたMUSICFITが最も高い(中古で5000円程度)ですが、収録曲も多いようです。 

しかし、私はなるべく安く遊びたかったので、次のソフトを購入しました。

 こちらは中古で1000円程度で購入できます。

 さて、ゲーム機本体+専用マット+ソフト+HDMI変換器 がそろったので、これでDDRで遊ぶことができます。1万円かからないくらいで、DDR環境を用意することができました。

 

Wii版のDDRは足だけでなく、両手を振るアクションもあって、それはそれで面白いです。(オプションでOFFにすることもできました)

感想

ひさびさに遊ぶDDRは思った以上に体力を使いました。普段から運動不足を自覚しているので、うまく生活に組み込んで楽しんで体力をつけることができればと思っています。ダイエットモードというものもあるようなので、慣れてきたらそっちも遊んでみようと思います。

 

あ、あとWiiで面白いゲームタイトルがあれば教えてください!