2014年8月24日日曜日

BL600のVirtual Serial Portを動かす

BL600でSPPのようなシリアル通信ができないかとさがしていたところ、公式サイトでVirtual Serial Port (vSP) Bridge and Command Modes Demonstrationというデモがあったので、同じ物を作ってみました。

BL600のソフトウェア部分はファームウェアとSmartBasicの2段構えになっていて、古いバージョンのファームウェア(1.3.57未満)でvSPを使う場合は専用のSmartBasicのコード(upass.vsp.sb)を使う必要がありました。新しいファームウェア(1.3.57以降)ではファームウェア側にその機能が取り込まれており、ジャンパ線を繋ぐだけで利用可能になります。

公式のデモ動画にSIO_7とVCCを繋ぐと、特に何もせずvSPとして動作してくれました。デモ動画では開発キットで通信していましたが、今回は手持ちのBL600にUSBシリアルを接続し、配線を同じにしたものを使用しました。Nexus4にはLaird BL600 Serial(Google Playからダウンロード)をインストールしました。
PC側はUwTerminal(BL600の開発用ツール)を起動し、USBシリアル側を開いています。 Nexus4側はアプリでConnectを押してBL600と接続しています。

PCとNexus4の間で、BL600を経由したvSPでメッセージのやりとりができました。PC側は今回はUwTerminalを使用しましたが、Linuxで一般的なcuコマンドなどでも通信できます。

気になった点として通信速度があると思います。正直なところ遅いです。メッセージがやり取りができる程度だと考えたほうが良いでしょう。
ボーレートが標準で9600となっていますが、これはAT+CFGコマンドで変更が可能です。ただ大きい数字にするとデータ化けが発生していました。

Android側のサンプルアプリであるLaird BL600 SerialはiOS版もありますので、iOSから同様の通信もできると思います。

BLEで通信する場合、GATT上で大抵のことは事足りるのでユースケースとしては疑問が残るところもありますが、シーケンシャルな通信が必要な処理や、既存の低速な有線シリアル通信を置き換えることには使えるかもしれません。

2014年3月16日日曜日

BLE600でビーコンを手ハンダで作る

BL600というBLEモジュールを入手したので、BLEで何か作れないか試行錯誤している今日このごろです。

BLE600は技術基準適合証明が通っているので日本国内でも安心して使用できるBLEモジュールです。BLE600自体は非常に小さいモジュールで、裏の端子も0.8mmピッチと小さくなっています。

この小さいモジュールを無理やりブレークアウトしてビーコンを作ります。まず、適当なユニバーサル基板を準備します。小さい部品なのでフラックスは必須です。

ユニバーサル基板を適当に斬って、モジュールを押し込む穴を作ります。モジュールには端子にハンダを塗布します。ハンダの塗布にはこの動画(How to Solder QFN MLF chips...)の3:40辺りの方法を使いました。

動作確認に最低限必要な端子を半田付けします。細めのスズメッキ線をピンセットで押さえながらハンダゴテを軽く当てると溶接されます。この時にハンダゴテを当て過ぎると端子がモゲるので当てる時間は必要最低限にします。

ハンダゴテで炙りすぎてモゲた例。一つ駄目にしました、、、orz

USBシリアルを繋いで動作確認をします。BL600の場合は専用ツールのUWTerminalで通信できるかを確認します。

問題がなければ電池ホルダーや電源スイッチ、nAutoRun用のDIPスイッチを取り付けます。

裏の配線は触るとポロッと行くことがあるのでグルーガンで固めます。グルーガンはダイソーのものを使用しました。

このままでは何なので3Dプリンターで箱を作ります。不恰好だけど今回はただの箱にしました。

印刷が終わったら中に押し込みます。寸法を測って専用に作った箱なのでピッタリ収まります。
蓋を閉じて完成です。

ぶっちゃけていうと汎用のタグを使ったほうが早いし安いので意味的なものはあんまり無いですが、今回ここまで作れたので、次からはセンサー的なものを載せたものを作りたいと思います。

ちなみに今回は自力でブレークアウトしましたが、半田付けに自身が無い人は頑張らなくても、@ksksue 氏がBL600 Breakout Boardを頒布されているので、そちらを使えば余計な苦労をしなくても済みます。
並べると一目瞭然ですが、明らかに手ハンダの方が大変です、、


2014年1月14日火曜日

PocketDuinoで温度湿度計を作ってみた

Androidの標準の温度センサーは実質的に端末の温度がとれてしまうので、センサーを外にだして温度と湿度を取れるようにできたらと思っていたところ、PocketDuinoを頂いたので温度湿度計を作ってみた。


PocketDuinoは@ksksue氏が制作したAndroidのUSBポートに直接差し込むことのできるArduino Pro Mini互換のボードです。(PocketDuino公式サイト
 
パッケージにスマートフォンにサクッと刺せそうなイラストが描かれています。
外観はArduino Pro miniの上にUSBコネクタがそのままついたような形になっています。
裏面は何も無く、配線用のホールだけとスッキリしています。


そのままでは遊びにくいのでDIPピンをつけました。
これでいろんな物を繋げることができます。


取り付けたDIPにGrove系の温度湿度計を繋げたいので接続用の中継基板を作ります。
紙エポキシのユニバーサル基板から作ります。
紙エポキシは柔らかいので金鋏で簡単に切れます。大きさを合わせて切断します。
メスのDIPピンのコネクタと、Grove用のコネクタを繋ぐためのDIPピンを取り付けます。今回使用した温度湿度センサーはSeed StudioのTemperature and Humidity Sensor Proです。VCCとGNDはそのままArduinoのVCCとGNDに結線し、今回は信号線をD3ピンに接続しています。(実はA0やD2といった別のピンに繋ぐとデータ化けが発生しました。)
Grove用のコネクタの片方を雌のDIPピンにしていたので、それを接続します。写真ではわかりにくいですが、引っ張っても抜けないように画像の赤と白のコードの辺りにワイヤーロックをしています。
Grove用のコネクタのもう片方を温度湿度計に接続します。

PocketDuinoにスケッチを焼き、Android側も専用アプリをインストールした後、PocketDuinoを接続します。(スケッチとAndroidのソースはこちら)
PocketDuinoの電源が入って青いLEDが点いているのがわかります。アプリ側も温度と湿度が取得できて画面に表示できています。


流石に基板剥き出しでは何なので、外装を作ります。
基板の寸法を測って収まる箱を作ります。デザインは適当で少々無骨ですが今回は気にしません。(FreeCADの3Dモデルデータはこちら
3Dプリンターで印刷します。
印刷し終わったら部品が収まるか確認します。問題がなければ部品を納めて蓋をします。今回は背面の4箇所をネジ止めできるようにしているのでタッピンビスでサクッと閉めます。
箱からはMicroUSBの端子が出ているのと、センサー部が外気に触れるように窓があります。


以上でPocketDuinoを使って温度湿度センサができました。USBの端子をUSB Host APIに対応している最近の端末に挿せば温度と湿度が測定できます。
実際に作ってみて意外に大きいと感じました。挿しっぱなしにすることは出来無さそうですが、たまに指して測定という用途には使えるかも知れません。ただ、外装をジャケット型にすれば挿しっぱなしも可能だと思います。

今回はAndroid側のソフトやスケッチについては特に触れませんでしたが、なんだかんだで、プログラムの実装も大変でした。それでも個人ででもこういったデバイスが作れる時代になったのでモノ作らーとしては嬉しい限りです。

2013年12月21日土曜日

フォクすけ人形の制作風景

データから印刷するまでの流れです。


写真をBlenderという3DCGソフトの背景に設定します。正面や上からなども併せて貼ります。

それを見ながらモデルデータを作ります。

印刷用に整えます。

印刷データへの変換ツールに喰わせます。

印刷します。途中省略してるけど、2時間くらいかけて印刷して組み上がるまでの動画です。


2013年11月4日月曜日

Maker Faire Tokyo 2013に出展してました

夏のYamaguchi Mini Maker Faireに続き、11月3日〜4日のMaker Faire Tokyo 2013に出展しました。今回は一人での出展でしたので自分が作ったものを全面に並べました。(知人と一緒にやろうと思ったのですが、それぞれが自分のブースを持ってたのでそれぞれ自分の戦いをしてました)。
今回は前回出展していた画像認識で自動走行するロボットと猫型ロボットに加え、新作のフォクすけロボットとフォクすけ人形を展示しました。


フォクすけロボの作成工程については以前の記事()の通りで3Dプリンタでフルスクラッチで作成しました。顔認識で人を見つけると手を振るようにしていたので見に来てくれた方々に可愛がって貰えました。

このロボットは両手両足、首、尻尾、両耳が動きます。特に両耳は重用なのでかなり頑張りました。また展示では伝えきれなかったのですが、外部から繋がってるケーブルは電源とHDMIケーブルのみなので、内臓バッテリーに繋げばスタンドアロンでの動作も可能です。
反省点としては見栄えを良くしすぎたためか既製品と間違われたり、巧妙に作りすぎたためか目に仕込んだWebカメラに気づいて貰えないことがありました。次の展示の際はもう少しお客さんにわかるようにしたいです。
他には以前から問題になっていた顔認識などの画像認識が会場の照明に影響を受けていたことが今回は顕著にでてしまい、経験上もっとも悪かった感じがしました。フォクすけロボに仕込んだWebカメラは汎用のものの皮を剥いで基板のみ埋め込んだのですが、目の部分のカバーやWebカメラ自体に安いものを使ったのが原因のようなので今後調整します。


フォクすけロボの展示に合わせてフォクすけ人形も展示しました。3Dプリンターで印刷、パテ埋め、サーフェイサーで表面を整えるなど、製作途中のものが残っていたので製作工程として並べました。
見に来てくれた方や他のMakerやプレスの方に「手順を踏んで一から作ってるのは珍しい」といってくれた方が何名かいらっしゃったのでこちらもまずまずかなと感じました。


実際に作って、出展して、お客さんや他のMakerさんと話をしているといろいろと勉強になります。実のところそれらの話から触発されて2つほど次に作りたいネタが浮かんできたので次はそれを作って行きたいと思います。

最後にMaker Faire Tokyo 2013の出展者、参加者、そして運営のスタッフの方々お疲れ様でした。今後もモノ創らーとして活動して面白いものを創っていきたいと思うのでこれからも宜しくおねがいします。

2013年11月1日金曜日

フォクすけロボ開発進捗報告2

以前より作成していたフォクすけロボが遂に完成しました。制御系機器やバッテリーが内部に収められるので、外からケーブルを繋ぐこともなく動作させることができます。ソフトウェアにはOpenCVを使って顔認識をしていて、人を見つけると振り向いて手を振るなど比較的高度なこともやっています。

外観ですが以前作成したフォクすけ人形と比べると圧倒的に大きいです。多少バランスは変更しているものの、3Dモデルの原型は同じものなのでそのまま大きくなります。これができるのも3Dプリンターだからだと思います。

最終的に部品点数はそれなりの数になりました。これらに制御系機器とサーボモーターを組み合わせて最終的な形になります。


制御系の中枢であるAndroid StickとArduino Nanoは頭部に埋め込むので、両手足や尻尾、電力系の10本のケーブルを胴体側へ通しています。これは筐体の設計のときから考慮していて首の部分に必要な隙間を空けています。


胸部にはバッテリーと両手足のサーボモーターが、尻尾には予備のバッテリーが収められるようになっているので、中はケーブルでいっぱいです。でも胴体の内部に駆動する部品はないのでとりあえず押し込んでおけば大丈夫です。もし少しでも動くものがあるとケーブルを巻き込んで切れることがあるので、その場合は巻き込まれないように保護するか設計の見直しが必要になります。


画像認識や顔認識で動かしたかったので目にはWebカメラが仕込まれています。市販のWebカメラを分解して嵌め込んでいます。流石にそのままでは見た目が悪いので上からカバーをつけます。


忘れがちなのが梱包材です。イベントの出展にあたって輸送中の破損は付き物です。東急ハンズでスチロールブロックを買ってきて、フォクすけロボが収まるように電熱線で切って梱包材を作りました。スチロールブロックは加工もしやすく入手が容易なので非常に便利です。

このフォクすけロボはMaker Faire Tokyo 2013に出展予定で、それ以降も関連するイベントがあれば展示に出していきたいと思いますので、イベントの会場で見かけたら是非顔を覗きこんで見てください。巧く行けば顔認識して手を振ってくれると思います。

2013年10月8日火曜日

フォクすけロボ開発進捗報告

フォクすけ人形を作ってます。そのモデルを使ってロボットを作ろうとしています。このフォクすけロボはMaker Faire Tokyo 2013に出展する予定です。

筐体の作成

FreeCADとBlenderと使って3Dデータを作成し、それを3Dプリンターで印刷して作ります。
内部にモバイルブースターやサーボモーター、制御ユニットが収められるように注意して設計します。

印刷するとこんな感じになりました。実際に形にしてみると意外に大きいです。 ちなみに全部合わせると20〜30cmで、普通に印刷するとかなり時間が掛かる(数十時間)ので、印刷精度と引換に高速印刷をしているため外観が荒いです。

 首と尻尾は2軸の関節にしたかったので少し手がこんでいます。

ABS樹脂は元々塗装と相性が悪いので、サーフェーサーで表面を整えます。
高速印刷のため目が荒いので、一緒にパテ埋めもしています。

塗装はこれから行います。

制御系回路

画像認識で動くようにしたいので、少し性能の高いものを使います。
  • Android Stick(MK808)
    • Android4.1
    • USB Host API
    • Physicaloid Library
  • Arduino nano
今回はAndroid4.1が動くAndroid Stickを使用しました。これなら顔認識や簡単なタグ認識程度ならこなしてくれます。手足のサーボモーターはArduino nanoを用いて動かします。AndroidとArduinoの接続には@ksksue 氏作の Physicaloid Libraryを使う予定です(プロトタイプはFTDriverを使っています)。

基本的にAndroidとArduinoはサーボモーターの制御しかしないので、電子回路は単純なものをユニバーサル基板で作成します。
LibreOffice Drawでわかる程度にざっと書いて作成します。Arduino Nanoを載せる基板とサーボモーター用の中継基板の2つにわかれています。

Android Stick、Arduino Nano、制御用基板をひと通り繋ぐとこうなります。Android StickとArduino Nanoは頭部に、サーボーモーター用の中継基板は胸部に搭載する予定です。

プログラム

筐体や制御系ができてもそれらを制御するのはプログラムです。いきなり本番のプログラムを作るのは難しいので試験用プログラムを作成します。
この試験用プログラムはAndroidアプリです。首、両手足、尻尾、耳の全てを動かすことができます。

今後の予定

筐体がまだサーフェイサーを吹いただけで灰色なので、目立つ凹みをパテで修正した後、塗装します(完全に綺麗にするのは期間的に厳しそうだけど、、)。
OpenCVとそのFaceDetectorを使って顔認識やタグ認識で動くプログラムをAndroidアプリで作成する予定です。また、リモートコントロールの機能をHTML5で実装してみたいと思っています。
Maker Faire Tokyo 2013まで1ヶ月を切りましたのでどうにかして完成までこぎつけます。参加される方は是非ブースまでお越しください。