ばかおもちゃ本店:Youtube twitter:@sashimizakana Amazon.co.jpアソシエイト

2014年7月21日月曜日

Adafruit Trinketを使ってHID(キーボード)を作る



AdafruitのTrinketというArduino互換機を買った。


ごらんのとおりとっても小さいマイコンボードで値段も国内で買っても¥1,000と手頃だ。これを使ってHIDのキーボードを作ってみたというのが今回の動画だ。

HIDっていうのは噛み砕いて言えば、普通のキーボードやマウスとして使えるUSBデバイスの規格のことである。これに準拠していれば、ドライバとか無くても、普通のキーボードやマウスにつないだときみたいにそのまま利用することができる。

もっともその規格に合わせるためには守らないことも多くて、汎用的な目的に使うのでなければ、USB仮想シリアルドライバを入れて、それと通信して動くようなソフトを書く方がたいていの場合容易だ。ただ、Trinketにはv-usbというAVR用の仮想USBソフトを利用して作られた、簡単にHIDを作るためのライブラリがAdafruitから配布されている。
そのため、コード自体は数行で今回の物を作ることができた。
しかしTrinketは完全にArduinoと互換があるわけじゃなかったりして、前段階でちょっと悩むこともあったので、そのあたりをまとめておく。

Trinketまずはじめに

公式の原文を読めば分かることしか書いてないので、ちゃんとしたものが読みたい人は以下のリンクの内容を読めば良い。実際の所私もここを読んだだけである。

Introduction | Introducing Trinket | Adafruit Learning System

以下の説明はすべてWindows 7環境下で構築される前提で書いた。

Triketには3.3V版と5V版がある。
3.3Vのほうが消費電力が低いが、動作速度の最大値も低い。
HIDを作る場合、USBの処理にそれなりの速度が必要になるため、5V版が必須になる。
ちなみに3.3Vと5Vで値段は変わらない。
接続にはUSBミニBコネクタで接続できるケーブルが必要だ。マイクロBではない。ミニBである。携帯とかについてる薄い奴よりもうちょっと背が高い奴だ。

またTrinketはデバッグ用のシリアルポートを持っていないので、そのままシリアルモニタは使えない。それから書き込みなんかもAVR書き込み用のドライバを入れる必要があり、その後Arduino IDEを書き換えるか、Adafruitが既に書き換えたものを利用する必要がある。

Trinketのドライバと接続

このページと次のページにだいたい書いてあるとおり。


まずAVRの書き込み用ドライバを入れる。以下のページにまとまっている。


この状態でまずUSBケーブルでPCと接続してみる。失敗したと出たなら失敗である。
私もここで一番長いこと時間がかかった。なぜか知らないが、TrinketはPCとの接続周りがわりと繊細っぽい。海外のフォーラムでは普通に接続したら認識されなかったが、セルフパワーのハブに刺したらちゃんと動いたとかいう書き込みもあった。ちなみに私は逆で、普段利用しているセルフパワーのハブに刺した場合は動かなかったが、PCに直接接続したら動いた。関係ないUSB機器を全部外したりしてみたので、電力が足りないとかではないと思うのだが謎である。

とにかくハブを入れたり抜いたり、他のポートに変えたりしてみると良い。
接続して表面のケーブル右のLEDがチカーンチカーンって感じで光ったら成功のはずである。

ちなみに一個のポートでHIDに使えて、書き込みも使うためだと思うが、Trinketにプログラムを書き込めるのはこのチカーンチカーンってなっている間(10秒間?)だけである。うっかりチカーンが終わるとケーブルを引っこ抜くか、基板上のリセットボタンを押して再起動する必要がある。
私はケーブル抜き差しでやったが、HID作ってそのままプログラムを書き換えたいときは、リセットピンを引っ張ってきて、作品の外側からリセット出来るように作った方が便利かも知れない。

Trinketの開発環境

TrinketをArduino IDEで使うためにはいくつかの変更が必要になる。
といってもスケッチブックフォルダにハードウェアの設定をダウンロードして入れたり、avrdude.confを差し替えたり、Idリンカーを差し替えたりする程度だが面倒なので説明しない。現状既にIDEに色々複雑な設定なんかを突っ込んだりしてない限りは、単純にAdafruitが配布してるカスタム版のIDEをダウンロードすれば良いと思う。
リンクは以下。


ダウンロードしたら、書き込み時には以下の設定を行う。

ツール>マイコンボード>Adafruit Trinket 16MHz(HID作るなら16MHzにする)
ツール>書込装置>USBtinyISP

これでとりあえず何も無いスケッチを作って検証してみてエラーが出なければ問題ない。
マイコンボードが無いとかいう場合はどっかで何かを間違えてる。

HIDをつくる

この辺読みなせえ。

ライブラリは以下のページからダウンロードする。


んで、解凍したらフォルダを丸ごとスケッチブックフォルダのlibrariesに放り込めば良い。
一緒に出てくる圧縮ファイルはたぶん前のバージョンをzipにして置いてあるだけっぽいので要らないと思う。必要なのはフォルダだけである。

スケッチブックフォルダが分からない場合、

ファイル>環境設定>スケッチブックの保存場所

で確認できる。スケッチブックのフォルダはプログラム置いたり、ユーザー設定のコアの設定ファイルを置いたり、ライブラリ置いたりと、ユーザー側で作ったものとか第三者から配布されたものとかはここに入る感じっぽい。

コードに関しては説明するまでも無いので、上のリンクの続きを読んでほしい。

その他

なんか書き込むときにすげーエラー出たけど、以下のリンクの対処で行けた。


(Arduinoのフォルダ)\hardware\tools\avr\etc\avrdude.confのATiny85の設定箇所(コメントアウトしてATiny85って書いてあるパート以下)のchip_erase_delayを以下のように変更する。

chip_erase_delay = 900000;
chip_erase_delay = 400000;

今確認した限りだと10896行目だったけど、他に変更してたりとか、バージョンによって違うかもしれないので良く確認して変更すべき。

他にも上記ページには問題の対処とかあるので、何か分からないなら読めばいいかも。

あと「システムに接続されたデバイスが機能していません」というエラーが出るけど書き込みが出来てれば問題ない(公式のフォーラムでの回答)らしい。

おわりに


USB接続するだけでキーボード代わりに出来るなら夢が広がりんぐ!
動画編集とか画像編集みたいなショートカット山ほど使う作業で、自分用の専用操作卓を作ったり、ショートカットを登録できるフリーソフトと連携させてボタン一発で生放送開始みたいなことやったり。私はとりあえずボタン一個でパスワード管理ソフトのマスターパスワードをタイプするようにしてみた。
セキュリティ的に良くはないだろうけど、物理的に侵入されない限りは安全なので割と大丈夫なんじゃないかという気もする。
ただ普通にPC落として、接続したまま再起動すると認識に失敗して動作しなかったりするので、もうちょっと研究しないと実用は難しいかなという感じ。あるいは直接AVRで作っちゃった方が安定するかもしれない。


Trinket自体はスイッチサイエンスから買った。



Amazonベーシック USB2.0ケーブル 1.8m (タイプAオス- ミニタイプBオス)
AmazonBasics (2009-11-18)
売り上げランキング: 464

HIDに使うならUSBケーブルは長めのが取り回しが良いかも。

2014年7月13日日曜日

自動スカートめくり販売機



ニコニコ動画版

一年ぶり三、四回目。


前の動画でも使ってたコイン投入器を使った。
制御にはちょっと前に買ったまま放置してたRaspberryPiを使った。


サーボはServoBlasterというモジュールを使った。
これはecho サーボ番号=角度 > /dev/servoblaster というような感じで出力すると対応するピンからサーボ用のパルスを出力できるもの。これとonoffというGPIOの割り込みを利用するモジュールを使ってnode.jsでプログラムを書いた。


毎度同じようなことを書いているけど、プログラムはすぐできあがるんだけど、箱を用意したりサーボモーター三つをちゃんと動くように接着したりするのがとにかく面倒くさい。更に今回は音に合わせて連携させるのも結構面倒くさかった。
なので、どういう順序で動くとか、どれくらいの速度で動くとか、何秒待機するかみたいなことをjsonで書けるようにした。それから任意のサーボの角度をちょこちょこ打ち込めるような設定用スクリプトも書いた。


複数のサーボが連携して動くのは、なかなか見た目に面白くて良い物が出来たなと思った。なにかもうちょっと胸を張って人に自慢できる作品で使ってみたい。



Raspberry Pi Type B 512MB
Raspberry Pi Type B 512MB
posted with amazlet at 14.07.13
RS Components Ltd (ソースマーキング及び販売 Umemoto LLP)
売り上げランキング: 424
USB仮想LANとか付いてればもっと良いのに、とは思うけど割にかわいい。

2014年7月12日土曜日

動画でつかってるカエルのパペットとか/モンスイユのぬいぐるみ

ここ最近の動画でちょこちょこ出してるカエルのパペット。
モンスイユというオリジナルのぬいぐるみを作っているメーカーのものだけど、どれも可愛くてAmazonで見てるとほしくなってしまう。で、また買ってしまった。
ひよこマメとくま。
おしりのあたりが多少重くなるようになっていて、やわらかいんだけどちゃんと座る。
ほんとかわいい。



アメとかついてる。

モンスイユオリジナル ぬいぐるみ/ひよこまめとクマ
モンスイユ
売り上げランキング: 25,931
思ったよりちっちゃめ。

2014年7月6日日曜日

必要なさそうな便利さについて/ゼロール社製アイスクリームスクープ

日常生活で不便を感じることは少ない。
ただそれを感じないことは不便がないからではなく、自分の感性が鈍いからかもしれない。そしてその鈍さのせいで自然と自分の行動が制限されているということもあるかもしれない。何かをするときの手触りというのはそのすべてを含めているのだろう。たとえば魚料理が好きかどうかには魚の食いやすさとか骨の喉に引っかかる危険性なんかも含まれている。だから魚が嫌いという人でも身をほぐしたものなら食べるかもしれない。
なんの話かというと、ゼロール社というところのアイスクリームをすくう奴を買った話だ。


どういうものかというと、普通のアイスクリームすくう奴よりちょこっと高い分、すくいやすいというものだ。硬いアイスでもすんなりすくうことが出来る。プリンのように! とか言うと言い過ぎだけど、冷凍庫から出した瞬間でも、ちょっと柔らかくなるまで待ったアイスのようにすくえる。¥2,500円くらいする。


前まではこんな感じの普通のを使っていた。これが1,000円くらいだったので、都合ゼロール社のやつは2.5倍くらい高い。

そんなもん要るか? そう思った人もいるだろうけど、私もそう思う。
でも、これが案外、買ってみるとその便利さに驚いた。というかそこにそんなに不便があると思ってもいなかった。今のアイスクリームすくう奴でも全然満足していたし、使いにくいなんて思ったこともなかったのに、そこが改善されることで、一気にアイスまでの距離が近づいた。

妻は大きな箱に入ったすくうアイスが好きで、夏の間はよく冷凍庫に入れてある。
しかし自分は大箱のアイスだと、ちょっと小腹を空かして冷凍庫を覗いても食べずにいることがしばしばあった。それはあまり自分がこういうアイスを好まないからだと思っていたのだけど、どうやら違ったらしい。
ほぼ何の苦労もなくアイスがすくえるようになると、大箱のアイスを食うというのが全然有りだと思えてくる。冒頭の魚のたとえみたいに自分にとっての、大箱のアイスを好きじゃ無いという感覚は、(自分でも気づいていなかったけど)アイスがすくいにくいし面倒くさいという気持ちによって形成されていたのだ。

これはまったくもって良くないことである。
なんせ、アイスをすごい食べてしまう。
大箱の三色アイスを食べるときでも、今までは他の色も食いたいけどすくうの面倒だしチョコだけにしておこう、とか自然と考えていたのだと気づかされた。今は、ピンクのとバニラのも相盛りにして食べちゃおう、なんてやっている。まったくこれは恐ろしい。


電気ケトルなんかも、そういう自分で不便と思っていないものが便利になってすごい良かったなと思うものの一つだ。水なんてやかんで沸かせば良いだろうという意見に反論する気は無いし、電気ポット使えば良いというのもその通りだと思うんだけど、使ってみると水を入れてボタン押したら勝手に沸いて電源が切れるのがすごい手軽なのだ。
ついついカップ麺食う率が上がってしまう。
もうおやつ代わりである。太る一方だ。


ゼロール社製 アイスクリームスクープ 1020
ZEROLL(ゼロール) (2012-10-06)
売り上げランキング: 1,179
アイス食いな人には本当におすすめ。

T-fal 電気ケトル ジャスティン プラス サーブル 1.2L KO340172
T-fal (ティファール) (2012-03-08)
売り上げランキング: 356
カップ麺食いな人には割とおすすめ。