The Long Tweets

ただ長いツイート。

事実上の無期限先延ばし

昨日のSPCアドカレの自分の記事の下の方に,

f:id:gurigoroblog:20171206144402p:plain

って書いた。

言い訳すると,授業中だったから部室にいなかったから,部内LANに繋いでスクショが取れなかったっていうだけ。

でも,こうやって書いちゃったら,永遠に書かないって知ってる。

以上。

 

これ,ツイートで良かった感ある。

SPC部室の3Dプリンタ(Reprap Prusa i3)の使い方

この記事は、SPC同好会 Advent Calendar 2017 - Adventarの5日目の記事です。
adventar.org

こんにちは,(もう闇に消えた)SPC同好会に所属しているぐりです。
旧ブログ「ぐりごろぶろぐ」から,新ブログ「The Long Tweet」に移ってから,初めての記事になります。
旧ブログhttps://blog.gurigoro.net:blog.gurigoro.netへリンクを貼っている方は,http://tlt.gurigoro.net:tlt.gurigoro.netに書き換えといてください。
このブログでは,「140字には収まらないツイート」ぐらいのイメージでバンバン投稿していこうと思います。
ですが,この記事は7000字ごえの予定です…

はじめに

この記事は、完全にSPC部内向けのドキュメントですが、一般的なRepRap3Dプリンタの使い方として多少は参考になりそうなので公開します。

3Dプリンタの紹介

f:id:gurigoroblog:20171204170754j:plain
これがSPC部室に置いてある私物の3Dプリンタです。機種はRepRapのPrusa i3です。AliExpressで購入したものです。ワークサイズは200mm x 200mm x 170mmぐらいです。ヒーテッドベッドを搭載しているので、ABSにも対応します。また、改造してZ軸方向のオートベッドレベリングを追加してあります。

素材

f:id:gurigoroblog:20171204170839j:plain
素材はABSとPLAを用意してあります。ABSは白と黒、PLAは透明(ほぼ不透明の白だけど、白ではない)と黄色が今のところあります。それぞれの素材の特徴を簡単にまとめておきます。素材の選択はMake: Japan | ABSかPLAか? 正しいフィラメントの選び方が参考になります。

メリット デメリット
ABS 硬いのでヤスリがけなどの加工がしやすい。 冷えた時に収縮するので、板状のものは反りやすい。
PLA 収縮しにくいので、大きなものに有利。 柔らかくて加工しにくい。高温に弱い。

PC側の準備

PC側で必要となるソフトは,Repetier-Hostです。Linuxユーザは適当なパッケージマネージャからインストールするといいでしょう。Macユーザは,ずっと更新されていないMac版が使い物にならないので諦めてください。ここでは,Windowsでのインストール方法を説明していきます。

Repetier-Hostのインストール(Windows)

Repetier-HostのダウンロードページDownload Software - Repetier Softwareから,ダウンロードします。寄付を求められますが,心が広くてお財布に余裕がある人以外は"Download without donation"をクリックして次に進みましょう。
Windows版,Linux版,Mac版それぞれのダウンロードページに飛ぶので,自分の環境に合わせてダウンロードします。画像から分かるようにMac版だけクソ古いですので諦めてください。
f:id:gurigoroblog:20171204172302p:plain

ダウンロードしたインストーラを起動してインストールを進めます。
Windows版では一緒にRepetier-Serverをインストールするオプションがありますが,解除しておきます。
f:id:gurigoroblog:20171204172911p:plain

インストールが完了して,起動させると次のようなウィンドウが出ます。
f:id:gurigoroblog:20171204173050p:plain

APIキーの入手

部室3Dプリンタは,すぐ横に設置してあるRaspberry Piに接続されていて,Repetier-ServerによってLAN内からアクセスできるようになっています。部内でRepetier-Serverのアカウントを持つ人に,自分用のアカウントを作成してもらうように頼んでください。また,APIキーも発行してもらってください。現在のところ,ぐり(twitter: zgtk-guri)か,yuki@へっぽこ技術者(twitter: heppoko_yuki)がアカウントを作れます。
(アカウント作成者へ: User can configure the serverのチェックは外してください)
同時に,Slackの #3d-printer チャンネルにも入ってください。

アカウントを入手したら,Repetier-Server(部室LAN内専用)にアクセスして,自分のアカウントでログインしてください。
f:id:gurigoroblog:20171204174345p:plain

これでRepetier-Serverに接続できました。
f:id:gurigoroblog:20171204185141p:plain

Repetier-HostでPrinterの設定をする

ここからは,Linux版とWindows版で作業は同じです。ここでは,Windowsでのスクリーンショットでいきます。
Repetier-Hostのウィンドウ右上にある"Printer Settings"をクリックします。
f:id:gurigoroblog:20171205024007p:plain
"Connection"タブにて

  • "Connector"を"Repetier-Server"に
  • "IP Address"を"192.168.1.93"に
    • IPアドレスは変更される時があるので,繋がらないときは問い合わせてください。
  • "Port"は"3344"のまま
  • "Port requires secure transfer"はチェックを入れない
  • "API Key"に,前節で入手したAPIキーを入力
  • "Connect to Continue"をクリック
  • "Printer"で"SPC-Prusa i3"を選択
  • "Copy Server Config Settings"をクリックして,プリンタの設定をサーバから取得する

以上の設定をすると上の画像のようになります。

スライサCureEngineの設定

スライサとは,3Dのオブジェクトを水平方向にスライスして,実際に3Dプリンタのヘッドが動く軌跡を生成するソフトウェアのことです。
Repetier-Hostには,スライサとして,CureEngineとSlic3rが付属しています。ここではCureEngineを使うことにします。
部室3Dプリンタに合わせて,ある程度調整してあるファイルを用意しました。
Dropbox - Prusa_i3.zipからダウンロードして解凍しておいてください。
これをCureEngineにインポートしていきます。

Repetier-Hostの"Slicer"タブを開き,SlicerでCureEngineを選択します。
その下のConfigurationをクリックして,設定画面を開きます。
f:id:gurigoroblog:20171205091154p:plain

ウィンドウ左側にCureEngine Settingsが表示されます。
Importをクリックして,先程ダウンロードして解凍した中にあるCure.rcpを開いてください。
f:id:gurigoroblog:20171205091743p:plain

次に,CureEngine Settingsのすぐ下の"Filament"タブを開いてください。
同様にImportをクリックして,ABS.rcfとPLA.rcfを開きます。

最後に右上の"Close"をクリックします。

これでRepetier-HostでのPrinterの設定は終了になります。

3Dプリントをする

大まかな流れは,

  • PCのRepetier-Host上でオブジェクトをスライスし,G-Codeを生成
  • Repetier-ServerにG-Codeをアップロード
  • 3Dプリンタの準備をして,プリントする。

という感じです。

注意事項

一応,共有の3Dプリンタですので,多少の注意事項を書いておきます

  • 使用前後に,Slackの #3d-printer チャンネルで一言言ってください。
    • 今空いてるかどうかの目安になります。できれば所要時間も書いてくれると嬉しいかも
  • フィラメント交換時,ノズル詰まり等のトラブルの時も #3d-printer で教えてください。
  • 使用後は,少なくともホットエンドのヒーターは止めること
    • 高めの温度設定のまま放置すると,フィラメントがノズル内で焦げて詰まります
    • 途中でプリントを中断しない限り,終了した後は自動的にヒーターは止まります。
  • プリントが終わったら,できるだけ速やかに造形物を取り外して持ち帰ること
    • プリント直後は熱いので無理しないこと

使用料と寄付のお願い

現在,部室に置いてある3Dプリンタ本体ならびにメンテナンス工具,フィラメントや定着剤などの消耗品は,基本的に私の私物です。
メンテナンスを行うためにも,プリントの際に利用料を取ろうと考えています。予定では,使用したフィラメントについて,10円/g程度を考えています。
3Dプリンタ専用の貯金箱を用意するつもりですが,とりあえず食品等々の貯金箱に入れた上で #3d-printer で投入額を教えてください。

また,フィラメントを購入して寄付してくれたら,しばらくは利用料を取らない方針で運用しよう思います。#3d-printerで相談してください。
その場合でも,できれば毎回数十円程度でいいので寄付をお願いしたいです。

とりあえず集まったらRepetier-Serverの有料版とか,ケープの無香料版とか,追加のベッド用銅板を買うことを考えています。

Repetier-HostでGコードの生成

Gコードは,NCフライスやNC旋盤などの数値制御の工作機械を制御するためのプログラムのようなものです。
3Dプリンタでは,それを応用したものを利用しています。普通は使いませんが,リファレンスはG-code - RepRapWikiにあります。

オブジェクトの追加と配置

まず,Repetier-Hostの"Object Placement"タブを開きます。
+を◯で囲ったボタンをクリックすると,オブジェクトを追加できます。複数追加することも可能です。
オブジェクトは基本的にSTLファイルになります。

3Dモデルの設計には他に3D CADが必要です。自分のPCを使うなら,Fusion 360あたりが無料なので,それをオススメします。
校内の各演習室にはSolidWorksがインストールされているので,それを使うのもいいでしょう。
また,Thingiverse - Digital Designs for Physical Objectsなど,無料で3Dデザインを配布しているサイトもあります。

例として,Bolt Nut Washer M16 by Dezign-it - Thingiverseを使用させていただきます。

一通り追加すると以下の画像のようになります。
f:id:gurigoroblog:20171205033431p:plain
この状態で,

  • 左ドラッグで視点の回転移動
  • 中ドラッグで視点の平行移動
  • ホイールで拡大縮小
  • 右ドラッグでオブジェクトの移動

ができます。

3Dプリンタでは,空中に浮いているオブジェクトはそのままではプリントできません。
そのような配置をすると,必要に応じて後の段階のスライスの際にサポートが追加されます。
サポートがあると,除去が大変であったり,除去した後の表面に凹凸が残って汚くなることがあるので,できるだけサポートが生成されない向きにします。
どうしてもサポートができる形状であれば,できるだけサポートが少ない,または,サポートによる品質低下の影響が少ない向きにするべきです。

今回の例では,初期の配置でボルトが横倒しになっており,ネジ部が浮いています。
f:id:gurigoroblog:20171205035903p:plain
回転させたいオブジェクトを選択して,回転ボタン(下画像赤丸)をクリックし,X,Y,Zの適切な軸で適切の回転をします。
f:id:gurigoroblog:20171205040238p:plain

また,オブジェクト同士が重なっていると反転表示になって警告されます。
f:id:gurigoroblog:20171205092001p:plain

スライス

オブジェクトの配置が終わったら,"Slicer"タブを開きます。
"Slicer"で"CureEngine"を選択して,以下のように設定します。

  • "Print Configuration"を"Prusai3"に
  • "Adhesion Type"を"None"に
  • "Quality"を"0.2mm"あるいは"0.3mm"に
    • "0.2mm"の方がより細かくできますが,時間が長くなります。
  • "Support Type"はサポートがいらない場合は"None"を,それ以外の場合は"Touching Bed"か"Everywhere"を選択
  • "Speed"(速度)と"Infill Density"(インフィルの充填率)は好みに応じて設定します。
    • オススメは,"Speed"を最も"Slow"側に,"Infill Density"を40%です。
  • "Enable Cooling"にチェックを入れる
  • "Filament Settings"の"Extruder"は,"ABS"か"PLA"どちらか実際に使う素材を選択します。

f:id:gurigoroblog:20171205093515p:plain

設定が終わったら,一番上の"Slice with CureEngine"をクリックします。
スライスが実行され,終了すると自動的に"Print Preview"タブに切り替わります。
f:id:gurigoroblog:20171205094721p:plain

"Printing Statistics"の"Estimated Printing Time"が予想所要時間です。
"Visualization"の項目をいじると,1層ごとにプリントの様子を見るなどできます。

Gコードのアップロード

スライサから出力されたGコードをRepetier-Serverにアップロードします。
部室のLANに接続した上で,Repetier-Hostの左上にある"Connect"をクリックします。
エラーの表示がなく,ボタンが"Disconnect"に変わったら接続完了です。
3Dプリンタが接続されると,"Print Preview"に"Save to Server"ボタンが出てきます。
それをクリックして,適当な名前をつけて保存してください。

3Dプリンタ側の準備

3Dプリンタ側では,アルミベッドの上にケープを撒布した銅板をセットします。
また,フィラメントを交換するときは,この段階で交換します。

ベッドの準備

銅板にケープを均等に吹き付けます。あまり多く吹き付けすぎると,プリント終了後に造形物が取り外しにくくなるので注意してください。
また,今までのプリントした樹脂等がまだついている場合,造形物に跡が残ることがあります。きになる場合は,カッターで削り落としてください。
f:id:gurigoroblog:20171205100143j:plain

銅板をプリンタのアルミベッドの上にセットし,黒のクリップで固定します。
f:id:gurigoroblog:20171205100259j:plain

プリントを開始する。

ブラウザでRepetier-Server(部室LAN内専用)を開き,ログインします。

TODO: 書く

造形物の取り外し

プリントが終わったら,後の利用者のためにできるだけ早く造形物を取り外します。
銅板のベッドを取り外し,そこから造形物を外します。
3Dプリンタ本体のメニューから,"Prepare"→"Move Axis"と選択すると移動できるので,Y=200mmに移動すると取り外しやすくなります。
プリント直後のベッドはABSのときは特に熱いので,注意してください。
造形物が上手く剥がせないときは,カッターを造形物と銅板の間に差し込んで剥がします。

最後に

クッソ長い記事をここまで真面目に読んだ人は少ないと思います。なぜなら,ここを書いている時点で7000字を超えているからです。
下手なレポートよりも長いと思います。マニュアルを書くのは本当に大変です。

スライサの設定等はめんどくさいので設定ファイルを配布してしまいましたが,時間があって興味ある人は,色々いじってみてください。
そして,より最適な設定を見つけたら教えてください。

もう少ししたら,3DプリンタのSlack Botとか,Webカメラで造形中の画像を見れるようにしたりとかやってみようと思います。
ぜひ,部室の3Dプリンタをつかって色々作ってみてください。そして,いろんな色のフィラメントを寄付してください。

明日は6日目,Hatanaka1101が何かを書くようです。楽しみにしています。

DeployGateを使ってみて思ったこと

どうも、ぐりです。今回は短めです。

仕事で一人Androidアプリを開発しているわけですが、相手に動作とか操作感を確認してもらいたいというときがよくあります。最初はメールでapk投げればいいかなーとか思っていましたが、めんどくさくて手間がかかるので、DeployGateを使ってみることにしました。

Android Studio上で開発→デバッグして動く段階にして→コミット&GitHubにプッシュ→Travis CI上でビルドされて→成功したらDeployGateにデプロイされる

という流れにしました。

設定方法とか使い方は紹介するのがめんどくさいのでWebで調べてください。

そして、DeployGateのSDKをアプリに埋め込んだので、テスターがインストールしたり起動したり、アプリがクラッシュしたりしたときにログがあがってくるようになります。便利そうです。

ですが、ちょっと懸念点があって、端末の情報はどれくらい送られてくるのかという点のドキュメントが見つけられなかったっていうところです。自分の端末にデプロイすると、機種名とかが管理画面に出てくるわけです。機種特有の不具合ってのもあるのは分かりますが、ちょっと気持ち悪いな、と思いました。

どこら辺まで回収するのかはDeployGateのほうの利用規約にしっかり書いてあるんだと思いますが、SDKを埋め込んだ自分のアプリにもちゃんと表示したほうがいいのか少し悩みますね。

以上。特にためにならない記事でした。

大型4Kディスプレイを買った

こんにちは、MFTに応募して見事落選したぐりです。

落選して交通費や滞在費や出展費が必要なくなったので、ずっとずっとほしかった4Kディスプレイを買ってみました。

買ったもの

4Kディスプレイ本体は Philipsの43インチ BDM4350UC/11 を購入しました。購入先はNTT-Xで、税込みで52,780円、送料は無料でした。キャンペーン価格だったので、通常は55,000円程度だったと思います。Amazonよりは安いですよw

[amazonjs asin="B01D9FP20A" locale="JP" title="Philips 43型ワイド液晶ディスプレイ (4K対応/IPSパネル/5年間フル保証) BDM4350UC/11"]

また、壁掛け用に、サンワサプライの壁掛けモニターアーム CR-LA303 と、100mm x 100mmと200mm x 200mmを変換するVESA変換プレートも購入しました。

[amazonjs asin="B000S73VEC" locale="JP" title="サンワサプライ モニタアーム CR-LA303"]

[amazonjs asin="B00LCKZ79Q" locale="JP" title="サンコー VESA変換プレート200x200 MARMVESA200"]

これら2つで購入時の価格が5,041円、モニタと合わせて57,821円でした。NTT-Xでの割引時に買えたので意外とお買い得でした。

設置

ぐりは寮住まいで、年に2回部屋の入れ替えがあるので、備え付けの事務机以外に机を入れるのが厳しいですし、そんなスペースありません。というわけで、壁掛けにしました。壁掛けといっても、寮の壁を傷つけるわけにはいかないので、ディアウォールを使って2x4材の柱を作り、そこに設置することにしました。今回の購入品の中にディアウォールや2x4材が入っていないのは、以前からモニターアームの設置に使っていたものを流用したからです。このあたりも書きかけの記事があるので、また今度紹介したいと思います。

それでは、設置前と設置後のBefore & Afterをご覧いただきましょう。

[caption id="attachment_323" align="alignnone" width="788"] Before - 4Kディスプレイ設置前[/caption]

[caption id="attachment_325" align="alignnone" width="788"] After - 4Kディスプレイ設置後[/caption]

4K設置前の右下のモニタは、15インチのゲーミングノートの液晶画面です。右上は21.5インチのタッチパネル(が死んだ)液晶です。ガラスでグレアなので思い切り反射してますね。この二枚はFullHD (1920 x 1080)です。左上は19インチの1440 x 900のモニタです。

4Kを設置するときは、各モニタを左側に移動させました。その右側に4Kを取り付けましたが、ノートPCの画面が開かなくなりましたw

左下のFull HD液晶ですが、今のところ何も表示させていません。また適当にRasPiとかつなげてもいいかなと思っています。

[caption id="attachment_328" align="alignnone" width="788"] 4Kディスプレイ取り付け部[/caption]

裏の取り付け部はこんな感じです。200mm x 200mmから100mm x 100mmへの変換プレートを介してモニタとアームが固定されています。基本的に付属していたネジ類で設置できましたが、アームのベースを壁に固定する付属のネジが長くて2x4材を貫通してしまうので、ホームセンターで手ごろな長さのものを買いました。6x35mmのタッピングトラスネジが2本です。

使い心地

はっきり言って最高です。複数のウェブサイトやドキュメントを同時に見ながら作業するときの効率が非常によくなりました。

上の写真では、左1/3はこの記事の編集画面、中央1/3は書いている記事のプレビュー、右1/3は上下に分けて、上が記事を書くときの資料等、下がTwitterです。サブモニタとしてつないでいる19インチ液晶は、作業用BGMを再生するVLCとタスクマネージャーを表示しています。

Full HD複数枚でマルチディスプレイを組むよりも絶対に4K1枚のほうが作業性が上がります。合計画素数が同じでも、ベゼルがないことで、ウィンドウの配置が自由になります。最大化なんてめったに使いません。

[caption id="attachment_330" align="alignnone" width="788"] 4KでTweetDeck[/caption]

ちなみに、TweetDeckを最大化するとこんな感じ。幅がNarrowで13カラムは表示できます。正直そこまではいらないです。

不満点

正直に言うと、少しだけ不満点があります。このあたりは買う前から予測済みというか、避けられない問題ですね。

  • PCがHDMI2.0に対応してなく、DP端子もないので3840x2160@30Hzになる
  • 箱がでかくて邪魔
  • ちょっと威圧感がある

このあたりの問題点を上回るようなメリットがありますので、全体的には満足です。

 

さて、クレカの引き落としに備えないと…

NT京都2017に出展してきました (1) 設営日編

長らくブログを放置してきたぐりです。今年もRといっしょにtessecraftとしてNT京都に参加してきたので記録に残しておきます。とはいいつつ、もう2週間ほど経っているので記憶はあいまいですが…

移動

3/18(土)はNT京都の前日、設営日ですが、ほとんどの出展者はこの日に会場入りするので、我々にとってはもうここからNT京都です。もちろん、見学者は基本的にこの日に出入りできませんが、毎年結構盛り上がって徹夜していますよ。

カートに乗っている荷物は、今回展示したVVVFインバータとモータ、MIDIキーボード、直流安定化電源です。あと、写真下、迷彩柄のリュックの中にサーマルプリンタちゃん一式とか、MIDIキーボード用のサスティンペダルとか。

ツイートの写真、左側の黒いリュックにはRのLEDキューブとか入っているらしいです。

この写真からわかるように、今年は浜松から京都まで新幹線に乗って移動しました。去年までは、ぽんずとかと一緒に浜松に泊まってから青春18きっぷを使って鈍行で京都を目指していましたが、重い荷物を持って乗り換えるのは非常に厳しいので、新幹線にしました。

さらに、京都駅に着いてから会場までの移動ですが、去年までは京都市営地下鉄烏丸線で四条駅まで行き、烏丸駅阪急京都線に乗り換え、西院まで行っていましたが、乗り換えが大変なのと、地下にある西院駅はエレベーター・エスカレーターがないので、非常につらいので、タクシーでの移動にしました。

新幹線を使っても、自宅から最寄り駅まで、駅での乗り換えとかで大荷物を移動しないといけないので、来年はレンタカーでも借りて車にすべて積んで会場に直行したいですね。

設営

ちゃぶ台にRが持ってきた布を敷いて、その上にてきとーに2人の作品を並べました。Rがテーブルタップ忘れてきたので、来年は気を付けてほしいですね。

てきとーに並べ終えたら、いつもの若者出展者らに挨拶して、名刺交換をして、ぐりぽんRふぐR友の5人で大阪日本橋に出かけました。ポンバシにいたので、ことしのDominoピザパは不参加です。

デバッグ

設営日の夜、ここからがNT京都の本番です。ほかの部屋は確か酒を飲んだおっさんたちがつぶれていましたので、酒が飲めない&作品が出来上がっていない若者勢はある部屋に集まって徹夜で作業します。自分はほとんど作品が完成状態だったので、主にデバッグでしたね。

まず、サーマルプリンタちゃんの電源をポンバシで買ってきたACアダプタから供給するように修正しました。これはちょっとはんだ付けするだけでしたが。

そのあとはメインのVVVFインバータです。NT京都数日前に周波数を1桁入力ミスしてFETをふっ飛ばしてその修理をして低電圧での動作確認をしてから持って来ました。つまり、現地でAC100Vを突っ込んでの火入れは修理後初でした。かなりビビってましたが、ぽんぽんに助けてもらって電源投入しました。その日は28時ごろまで作業してモータがまわるようになり、MIDIキーボードを接続して一応演奏できることを確認しました。

寝る

若者勢は大体作品が出来上がっていない()ので現地で徹夜していますが、少しは寝ます。今年は寝袋を持ってきました。去年までは床にそのまま寝ていましたがやっぱり寒いです。寝袋がない人やぐっすり寝たい人は少し高めですがやっぱりレンタル布団を利用したほうがよさそうです。

 

以上、NT京都2017の設営日の記録でした。

相互リンクについて

ぐりです。Advent Calendarを書くだけでその日のアクセス数が3桁になるのは非常に興味深かったです。

ところで、twitterを見るとこのブログへのリンクを張ってくださっている方がいるようです。当ブログは基本的にリンクフリーですが、せっかくリンクを張ってくださったなら相互リンクをしたいと考えています。

相互リンクは自分用のウォッチリストとしても使いたいな、と考えています。ぜひ、電子工作界隈やプログラミング界隈の方がいたら是非相互リンクをさせていただきたいです。

相互リンクのお願いはTwitterなどの他のSNSでも構わないのですが、あとで設定を忘れそうなので、この記事のコメントでお願いします。

コメントには、リンク名、リンク先URLと名前、Twitterの垢などを書いてくれれば結構です。

では、よろしく。

mbed HRM1017で忘れ物防止デバイスを作った話

この記事はmbed Advent Calendar 2016の17日目の記事です。

mbed Advent Calendar 2016 - Adventar


mbed祭り2016 @秋の虎ノ門

2ヶ月ほど前になりますが、mbed祭りで5分間のLT枠をいただき、mbedで作った忘れ物防止デバイスについて話してきました。似たような時間制限のあるプレゼンは何回かやったことはありますが、大勢(しかもほとんど知らない人)の前で話す機会はあまりないので、できてよかったと思います。 また、気がついたらTwitterに写真を上げられていたので初めてTwitter上で顔を晒すことになりましたw

https://twitter.com/mbed_fest/status/784661025035386880

LT用のスライドはdeveloper.mbed.orgに置いてあります。下記ページからpdfでダウンロードできます。

mbed祭り2016 @秋の虎ノ門 「mbed HRM1017で忘れ物防止デバイスを作った話」LT

忘れ物防止デバイス

ここからは作品の紹介です。スライドよりも少し詳しく書いていきます。

一言で言うと、「忘れ物を音や光、スマホの通知で教えてくれる」デバイスです。 忘れそうなものに取り付ける「タグ」とAndroidスマートフォンにインストールするアプリの二つで構成されています。

[caption id="attachment_282" align="alignnone" width="788"]忘れ物防止デバイス - タグ 忘れ物防止デバイス - タグ[/caption]

[caption id="attachment_284" align="alignnone" width="260"]忘れ物防止デバイス - Androidアプリ 忘れ物防止デバイス - Androidアプリ[/caption]

基板上にジャンパが飛ばしてあるのは気にしないでください。電源線を1本わすれていただけです…

ハードウェアの話

この記事ではハードウェア側を詳しく書いていきます。mbedアドベントカレンダーだから、と言うこともありますが、実際はチーム開発なのでAndroid側をほとんど触っていないからと言う理由が大きいです。

[caption id="attachment_286" align="alignnone" width="788"]チーム開発なのでハードのことしかわかりません - LT資料10ページ目より チーム開発なのでハードのことしかわかりません - LT資料10ページ目より[/caption]

電池持ちを良くする

このデバイスは電池で動くものなのでやはり電池持ちは良くないと困ります。電池持ちを良くするためには、マイコンやRF回路など電力を食うものをできるだけ寝かしておくことも必要ですが、電池から効率よく必要な電源を生成することも必要です。

マイコンやRF回路をいかにスリープにして電力を抑えるか、という話はFirmware側なので置いておいて(友人に任せていたので本当にわからん)、電源回路の話をします。

[caption id="attachment_288" align="alignnone" width="788"]HRM1017はLDOモードです - LT資料11ページ目より HRM1017はLDOモードです - LT資料11ページ目より[/caption]

まず前提として、HRM1017の内部のSoCであるnRF51822のコアは1.8Vで動作します。外部から供給する電源は3.3Vがほとんどですので、その場合は内蔵のLDOレギュレータやDC/DCコンバータで1.8Vを作っています。

これを見分けるにはmbed-srcから該当するコードを探せばいいのですが、めんどくさいので簡単な実験を行いました。電流を測定しながら3.3Vから徐々に電圧を落としていくというものです。LDOモードなら電流は変化せず、DC/DCモードなら電流は大きくなっていくことが考えられますが、実験では電流が変化しないことが確認できた(具体的なデータは取っていないです)のでLDOモードであると判定しました。

LDOモードであるとわかったので、電源は外部で1.8Vを生成して供給することにしました。リポ電池から1.8Vを生成するDC/DCコンバータ回路です。上のタグの写真のUSBコネクタとHRM1017の間にあるインダクタやICがその回路になります。

ピンヘッダなしでの書き込み

完成品はできるだけ小さくしたいと考えていたので、プログラム書き込み用のピンヘッダは邪魔だと思いました。書き込み用ピンヘッダを取り除くためには、あらかじめマイコンにプログラムを書き込んでおいて実装するという方法もありますが、HRM1017はBGAなのでそれも難しいです。さらに、その方法だと一度実装してしまうと書き換えが難しくなってしまいます。

そこで、今回は基板側にパッドを設けて、そこにポゴピンを押し付ける方法を採用しました。今回使用したポゴピンはAitendoで売っているテストプローブ [AKI-P50D2]です。

[caption id="attachment_289" align="alignnone" width="788"]ポゴピンを利用したライタ ポゴピンを利用したライタ[/caption]

3Dプリンタで出力した枠によって、ポゴピンがパッドに正確に押し付けられるようになっています。USBコネクタ等を考慮するのを忘れていたので半田ごてで融かして削っています…

[caption id="attachment_290" align="alignnone" width="788"]タグへの書き込みの様子 タグへの書き込みの様子[/caption]

作って書き込みした後に気づいたのですが、BLE経由でOTA-DFUできるので書き込み用治具の出番はあまりなかったのかもしれません。でも、UARTも引き出してあったのでデバッグには役に立っていたみたいです(自分はFirmware書いてないのでデバッグしてない)。

そのほか細かい話

  • この作品でYahoo!JAPANと我が東京高専が主催のHACK U 東京高専で技術賞を頂きました。副賞がTポイント5,000円分!
  • 電池持ちについて上で熱く語っていましたが、実際にどれくらい電池が持つのかどうかは測定していません。HACK Uまで時間がなかったのでそんなことやってられなかった()
  • 記事の最初で引用している、mbed祭り実行委員会さんのツイートですが、「ぐり」の顔が写っているということで、他のツイートより伸びてます。つらい。
  • 顔をフリー素材化・オープンソース化されそうになりましたが、GPLライセンスであると宣言しました。クソコラを作ったら、商用非商用問わず(非商用でお願いします)GPLライセンスを継承し、公開してください。今のところクソコラはありません。作らないでください。

最後に

半分有益、半分無駄、といった感じの内容でしたが、どなたかの電子工作等の役に立てたらいいなと思います。この「忘れ物防止デバイス」は1年前ぐらいに作ったものです。今はHRM1017単体は出回ってないみたいですね。

最後までお読み頂きありがとうございます。明日はen129さんです。期待しています。