初めての表面実装に挑戦!失敗とコツのまとめ。

表面実装に挑戦!

RakuChordなどいろいろと作ってきましたが、私はリード部品しか使ったことがなかったです。

しかし、量産なども見据えると表面実装は一度経験しておきたい!ということで表面実装に挑戦してみました。表面実装ができるようになると、PCBAなども安くできるため、夢が広がります。


基板は何でもよかったのですが「電池1本で動く音が鳴るArduinoボード」を作ることにしました。
数々の失敗をしたので後学のためのメモ。「KiCADでリード部品を使う基板は作ったことはあるけど、表面実装部品を使ったものはまだ作ったことがない」という人の役に立てば幸いです。

 

電池一本で動く音が鳴るArduinoボード

今回作った基板はこれです。写真の通り大半が表面実装部品です。

f:id:inajob:20190406223019p:plain  f:id:inajob:20190406223245p:plain

  • Arduino Nanoと同じピン配置
  • 単4電池1本駆動(昇圧して5Vにする)
  • イアホンジャックとボリューム
  • タクトスイッチ2つ
  • 電源LEDと制御できるLED

まぁ、開発ボードなので何にでも使えるのですが、「チップチューンプレーヤー」みたいなものを作るときの試作ができるかなと思って設計しました。

基板作成

表面実装の部品を使うためには基本的にはプリント基板を作る必要があります。今回はFusionPCBの5枚$7.9セールを利用しました。(失敗することを考えると10枚はいらないし・・)
基板は今まで何度も作っているので、ここでは表面実装特有の注意点について記載します。

手はんだ用フットプリントが便利

KiCADのフットプリンタには手はんだ用のフットプリントがあり、今回はこれを使いました。はんだを付けやすくするために広めの金属面が確保されています。

f:id:inajob:20190406220842p:plain f:id:inajob:20190406220859p:plain

電解コンデンサのサイズ違い

今回の基板には10uFと22uF、47uFの4種類の電解コンデンサを利用していたのですが、後で調べると47uFの電解コンデンサはフットプリントが少し大きいことがわかりました。

f:id:inajob:20190406221028p:plain

今回は基板を発注と同時に部品を発注したので(しかもスペックがよくわからないAliExpressから)事前にサイズを合わせられなかったことが原因です。

容量がわかれば、ある程度サイズは相場があるのかな?という気もしますがその辺のことはよくわかっていないです。

部品の干渉

3.5mmオーディオジャックと、ボリュームがやや干渉しそうでした。少し斜めに固定することで、ぎりぎり干渉することは避けられましたが、もう少し余裕をもって配置すべきでした。

f:id:inajob:20190406221157p:plain

部品注文

部品はAliExpressや秋月電子から調達しました。

AliExpressの部品はフットプリントが明記されていないものや、書かれたものが間違っていることがあり、結構つらいです。ちゃんと作るときは型番で注文できるところ買うのがお勧めです。(当たり前ですがw)

フットプリント間違い

今回使った昇圧ICはHT7750というものですが、このICパッケージが複数存在します。
SOT-23のつもりで基板を作り、それを買ったつもりだったのですが、SOT-25のものが届きました。
フットプリントは大きさ以外にもピン配置などの違いがあることをあまり意識していなかったので間違えてしまいました。

f:id:inajob:20190406221339p:plain

http://akizukidenshi.com/catalog/g/gI-12555/ より転載)

部品実装

表面実装の部品の実装は非常に肩がこりました・・

ICのはんだ付け

フラックスを使うことで、非常にスムーズにはんだ付けできました。また、Twitterで教えていただいたはんだ付けのやり方の動画が非常に参考になりました。

 要ははんだごてにはんだをのせて、ピンを順にあっためていくだけ、という感じでした。

ICの向きを間違える

十分に注意したのですが、向きを間違えてしまいました。うまく剥がすことができず、ICを一つ無駄にしてしまいました。

f:id:inajob:20190406221556p:plain

コンデンサの容量間違い

AVRにつける16MHzの水晶に付けるコンデンサ、22pFのものであるべきなのですが、間違えて22uFのものを付けてしまっていました。
コンデンサをアソートで買ったため、様々な容量のコンデンサから選ぶところで間違えてしまいました。

f:id:inajob:20190406221749p:plain

表面実装品はパッケージに容量が書いてあるわけではないので、なかなか気づくことができませんでした。後で見てみると、22pFのほうがやや薄く、色も薄いように思いましたが、すべてのコンデンサがこうなのかはよくわかっていません。

そして、ここを間違えるとArduinoは外部発振で動かなくなり、しばらくは「ICが壊れている?」と疑ってしまいました。

ブートローダの書き込み

ATmega328をArduino化するためにICSP端子からFuseの設定とブートローダーをかきこみました。専用の書き込み器を持っていなかったのでFT232RLを使いました(参考:https://make.kosakalab.com/arduino/bootloader/)。

ICSP端子を付けていなかったら、ここで困ってしまうところでした。ICSP端子大事です。

f:id:inajob:20190406222124p:plain

そして前述のコンデンサ容量間違いをした状態だと、Fuseを変更して外部発振モードになった途端にICが動かなくなってしまうという症状になりました。

部品の極性

チップのLEDを扱ったのは初めてで、「向き」がよくわからなかったです。部品の裏面に矢印が書いてあるのと、+側の接点がやや緑色となっていることに気づきました。業界標準なのかな?

f:id:inajob:20190406222353p:plainhttp://www.my-craft.jp/html/aboutled/led_smdled.html より)
電解コンデンサは、黒く塗りつぶされた方向がマイナス極でした。これはリード部品も一緒なので簡単でした。

f:id:inajob:20190406222522p:plain(http://akizukidenshi.com/catalog/g/gP-10416/ より)

ダイオードもリード部品と同じく電流の流れる先の方向に帯がついていました。

便利な道具

温調付きはんだごて
すぐにはんだづけが始められました。 また高い温度にもできるので実装を間違えた部品をはがすのも比較的簡単でした。

精密ドライバー(マイナス)
表面実装部品を押さえたりしました。 

エンジニア +精密ドライバーセット 6本組 DM-20

エンジニア +精密ドライバーセット 6本組 DM-20

 

 ピンセット
表面実装部品をつまんで基板に置きました。

フラックス
基板の接点に塗ることで非常にスムーズにはんだ付けすることができました。これがないとICのはんだ付けは不可能だと思いました。 

まとめ

”初めてのこと”というのは非常に学びが多くて楽しかったです。
これで僕も表面実装部品を使う基板をつくる方法と、実装する方法がわかりました。いよいよ次はPCBAにも挑戦できそう、、かな?

横浜うんこミュージアムの旅

噂のうんこミュージアムに行ってきました

一度聞いたら忘れられないイベント「うんこミュージアム」を見に横浜旅行に行ってきました。

僕にとっては初めての横浜旅行です。仕事終わりに横浜に向かい、夕食+2泊2日の旅行となりました。

ale-box.com

仕事終わりに東京から横浜へ

仕事が終わってから、横浜へ移動。1時間ほどで元町・中華街駅につくことができました。案外横浜って近いんだな・・

f:id:inajob:20190323220028p:plain

招福門で夕食

知人が帰り道ついでに合流できる、ということだったので、妻、友人、僕の3人で中華料理を食べることにしました。

www.shofukumon.com

 

折角の中華料理ということで、少し値が張りましたが「食べ放題」メニューにしました。やはり中華料理は大人数で食べるといいですね!

 

エスカル横浜

元町・中華街駅の近くの「大浴場」のあるホテル、という条件で発見したホテル。

本当に駅から近い。中華街にも近いので今回の旅行にはぴったりのロケーションでした。

f:id:inajob:20190323220116p:plain

(ちょっとKubernetesのロゴっぽいホテルのロゴ)

うんこミュージアム

横浜駅からすぐの「アソビル」で開催されていました。

Twitterなどで非常に人気のイベントだということがわかっていたので、あらかじめ前売り券を購入していました。そして、10時からの開場に備えて9:40ごろに到着しました。

すでにすごい人!

とくに「うんこ」ということで、子供連れのお客さんでいっぱいでした!

イベントの思い出はまだ開催中のイベントですし、ネタバレにならないように、あまりここには書かないことにしますが、非常に楽しいミュージアムでした。

f:id:inajob:20190323220532p:plain

(はしゃぐ僕↑)

f:id:inajob:20190323220317p:plain

(↑いい感じのロックスクリーンの画像が撮れました。)

横浜散歩

その後、天気も良かったので横浜から元町・中華街までを散歩がてら歩いて移動しました。

カップヌードルミュージアムにすごい人だかりができていました(今回は目的とは違うのでスルー)。そして、横浜は風が強い・・結構歩くのに疲れました。

パシフィコ横浜を横目に食事処を探します・・・

築地食堂源ちゃん

中華じゃないものが食べたい、ということで立ち寄ったのがこちら

おいしい海鮮茶漬けをいただきました。

www.mec-markis.jp

赤レンガ卒業設計展2019

赤レンガ倉庫もちらっと中をのぞいてきました。

f:id:inajob:20190323220709p:plain

akarengadiploma2019.wixsite.com

ちょうどこの「赤レンガ卒業設計展2019」という建築コンペイベントをやっていました。

ざっと見ただけなので、写真などは撮っていないのですが、様々な建築物、都市計画のジオラマが大量に展示されていて圧巻でした。

作成手法も様々で、最近流行りの「レーザーカッター」を使ったものも多く、いちMakerとして非常に参考になりました。

 

氷川丸

そのあと、山下公園に展示されている「氷川丸」という船の見学をしました。1930年に建造された、非常に歴史のある船で、歴史的な説明のムービーなども堪能しました。

この氷川丸の「氷川」という名前は埼玉県の「氷川神社」に由来のあるもののようで、我が家の近くにちょうどその「氷川神社」があるため、何か不思議な縁を感じました。

f:id:inajob:20190323220755p:plain f:id:inajob:20190323220832p:plain

↓これがアール・デコ氷川神社の紋章(?)の融合らしい

f:id:inajob:20190323220933p:plain

船の見学が終わったら、一度ホテルに戻り風呂に入って一服しました。

 

中華料理再び 萬珍樓

夕食は再び中華料理。

少し高級な中華料理屋でおいしい中華料理をいただきました。

www.manchinro.com

港の見える丘公園

2日目は「港の見える丘公園」の周りを散策しました。

バラや桜はシーズンではなかったですが、パンジーなどが非常にきれいに咲いていました。

f:id:inajob:20190323221106p:plain

また非常に歴史のある洋館が多く、いくつか中を見学しました。

ROCHE ロシェ

f:id:inajob:20190323221135p:plain

昼ご飯は”横浜らしい洋食”が食べたい。ということでROCHE(ロシェ)で食べました。

オムライスと、ハンバーグをそれぞれ食べたのですが、どちらもおいしかったです。

ブリキのおもちゃ博物館

ちょっと気になるこの博物館、せっかくなので覗いてきました。

個人コレクションの昔のブリキのおもちゃがたくさん展示してあり、非常に見ごたえがありました。

どうやら「トイ・ストーリー」の発想の元となったのが、ここなんだとか・・何気にすごいスポットです。

販売しているおもちゃの中にあった、ゼンマイ式で、稼働時に体内に火花が散るというブリキのロボットが興味深かったです。

 ↓こういうのです。

SPARKING ROBO (スパークリング・ロボ) 青

SPARKING ROBO (スパークリング・ロボ) 青

 

 無 炭火焙煎珈琲

f:id:inajob:20190323221216p:plain

たくさん歩いて疲れたので立ち寄ったのがこちらの喫茶店。ネーミングが「無」とはなんとも中二病心をくすぐられます。

少しお高めのメニューでしたがPayPayが使えたので安く済ませることができました。

www.motomachi.or.jp

横浜人形の家

最後に立ち寄ったのがここです。市松人形からビスクドールまで、日本内外の様々な人形が展示されていて、非常に面白かったです。

www.doll-museum.jp

まとめ

ということで うんこミュージアム目当ての旅行でしたが、横浜は観光地が多く、ついつい色々と見て回ってしまいました。食事に関しては、妻が事前においしいお店を調べてくれていたため、スムーズに食事にありつくことができました。

思ったより近いことも分かったので、また気分転換に遊びに行こうと思いました。

f:id:inajob:20190323225649p:plain



© OpenStreetMap contributors OpenStreetMap著作権について



 

 

RakuChord(らくこーど)販売の後日談

f:id:inajob:20190323155628p:plain

この記事は下記の続きです。まだ読んでいない方は先に下記を読むことをお勧めします。

inajob.hatenablog.jp

 

RakuChordの通販が完売したのち、買っていただいた方からいくつかの報告をいただきました。
OLEDのノイズの件は、以前のブログに記載しましたので参照してみてください。


LM386の故障

f:id:inajob:20190323153016p:plain

「起動してもスピーカーから音が鳴らない」というお問い合わせをいただいた。

f:id:inajob:20190323153054p:plain

イアホン経由だと音が鳴っているようなので、アンプ・スピーカ周りのトラブルであると切り分けできた。
基板の表、裏の写真を見せていただいたのですが、それっぽい原因がわからず、「返品してもらい、手元で診断します」とまで、話していた。

f:id:inajob:20190323153209p:plain
「おそらくLM386というICが壊れているので、こちらで付け替えます。」という話をしたところ「手元にLM386があるので試してみる」というありがたい申し出。
そして無事動作するようになったと報告をいただきました。

一応出荷前にすべてのLM386の動作は確認していたのですが、キッティング時、運搬時、組み立て時のどこかで壊れてしまったようです。販売者としては申し訳ない、というシチュエーションではあるものの、買っていただいたお客様と一緒にトラブル対応をするという貴重な経験となりました。

f:id:inajob:20190323153258p:plain

また、今回「キット」の形での販売だったことが幸いしたのか、チャット越しでの動作確認の依頼や、さらには追加部品の調達などもお客様側で対応していただくことができたため、大きなトラブルにならずに済みました。

L字ピンが説明書と何か違う

f:id:inajob:20190323153350p:plain

”説明書通りに組み立てていたところ「L字ピンヘッダ」が説明書のものと違い、どのように組み立ててよいかがわからない。”
というお問い合わせをいただいた。

そんなことあるか・・?と思いつつ、写真をいただく。出先だったため、家にある組み立て済みのRakuChordと比べることができず、説明書の写真がわかりにくいだけなのか、部品がまずいのかがわからない状態でした。

f:id:inajob:20190323153432p:plain

帰宅後、家にある部品を見て衝撃!
L字のピンヘッダが2種類ある!!

f:id:inajob:20190323153459p:plain

幸い、どちらのピンヘッダでもRakuChordを作るうえでは問題ないことが確認できたので、その旨を返答し説明書を修正しました。

f:id:inajob:20190323153541p:plain
こちらの事例も購入者の方から「逆に勉強になった」といっていただき恐縮しつつも、私も非常に勉強になる事例でした。

製作報告のTweetがすごくうれしい

先週から購入者の方々から続々と製作報告や、演奏動画のアップロードをしていただいています。
RakuChordはマイナーな楽器であるため、本当にこの楽器が欲しい方にその存在を伝えることが課題の一つとなっています。そのため、購入していただいた方が積極的にSNSや動画投稿サイトにRakuChordを露出してくださることが、本当に助けになります。


このブログをご覧の方も是非、RakuChordがらみの投稿があれば拡散を手伝っていただけるとありがたいです。

 

 

 

↓↓↓↓ 折角なので張り合って、作者の演奏例も貼っておきます↓↓↓↓

 まとめ

とにかく、買ってくださった方・拡散してくださった方に感謝です。(前も書きましたが・・)

購入していただいた方には、今後も楽しくRakuChordで遊んでいただき、気が向いたら動画投稿などしていただけると大変ありがたいです!

 

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

inajob.booth.pm

自作電子楽器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ですが、値付けだけはクローズドとしています。そのため有料記事での公開とさせていただきます。

note.mu

 

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

 

 

プレ販売開始

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

販売開始

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

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

発送

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

販売後

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

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

早速のフィードバック

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

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

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

f:id:inajob:20190317095618p:plain

その他のアフターケアなど後日談は下記記事にまとめています。

inajob.hatenablog.jp

まとめ

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

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

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

 

もし、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と、このブログを要チェックです。