2017年3月3日金曜日

格安サーボSG90にバージョンがあった話

SG90というサーボモータはArduinoを使った電子工作界隈では非常によく使われているサーボです。 $2 以下の信じられない値段で売っています。 最近ロボットの製作に取り組んでいるのですが、 SG90に異なる仕様のものがあることに気づきました。

性能に差がなければそれでいいのですが、 若干差があるようなのでメモしておきます。 多くの中国製品の例にもれずコピーかとも思ったのですが変なところから買っているわけではないのでそうでもなさそうです(もしかしたらコピーかもしれませんが...)。


明らかに歯の異なる歯車

形の異なるサーボホーンを設置するための軸


左と右のサーボで細かな差異があるのがわかると思います。 左は2016年の7月ごろに購入したもの、 右は2017年の1月ごろに購入したものです。 最上部から見える歯車の歯数やサーボの軸の白いプラスチックの形状が異なることがわかります。コピーを行うにしてもわざわざ歯車を設計し直すことは考えにくいため、 いつの間にかバージョン変更があったと考えるのが妥当かと思います。 写真には写っていませんが、 サーボの制御基板自体も右側の新型(?)の方が小さくなって綺麗に収まっています。 可動時の音も新型の方が小さくなっています。

もっともここまでは新しくなってよかったというレベルなのですが、 左の旧型と右の新型ではサーボの軸の寸法が異なります。 旧型は直径4.7mm、 新型は直径4.9mmです(誤差はあると思います)。 また飛び出している長さに関しても旧型は2.6mm、 新型は3.4mmと大きく異なります。 当然新型の方が便利なのですが、 うっかり旧型設計でCADのモデルを書いたりすると困ったことになるので注意が必要そうです。

2017年3月2日木曜日

Kickstarterで投資する楽しさと注意点

2016年度にKickstarterで投資した5つほどのガジェット類が出揃ったのでまとめようと思います。まとめは下の方にあります。

※紹介しているものは出資を締め切っています。 プロジェクトが成功し一般販売を始めたものもあるので探せば買えるものが大半です。


Kickstarterとは


クラウドファンディングの一種で、 クラウドファンディングとは誰かがこんなものを作りたい広めたいという企画をWeb上で公開し、みんなでそれにお金を出してプロジェクトを支援するというものです。 クラウドと聞くとクラウドサービスみたいなものを想像すると思いますが、クラウドファンディング = Crowdfunding であり群衆(crowd)からfunding(投資)を集めるという意味の造語です。

投資とは企画にお金を払うことであり、 見ず知らずの人の企画にお金を出す意味がわからないと思うのですが、 これには企画する人と投資する人双方が得をするための仕組みがあります。 クラウドファンディングにはリワード(reward[褒賞])というものが用意されており、 投資額に応じて企画者からプロジェクトが達成された場合に何かしらの見返りがあるわけです。 例えば、新しいイヤホンを作りたいというプロジェクトでは$1の投資でステッカー(シール)$40の投資でイヤホン本体が送られてくるということが考えられます。 企画者は大抵、 大量の需要は見込めない物(マニアックな機械だとか自家製ソース、小説、映画e.t.c...)、 需要はあるけれどビジネスとしては成り立たない代物をプロジェクトとして出資を募ることが多いです。 企画者は実現しにくいプロジェクトのお金を集めて実行することができ、 投資者はプロジェクト成功の見返りに何かしらを受け取る、これがクラウドファンディングのいいところです。

ただし気をつけなければならないのはあくまでこれが投資であるという点です。 販売ではないのでお金を払えば品物が受け取れるという保証はありません。 お金を払うのは企画であって、 お金を払った時点で基本的に品物は存在しないからです。 出資を募ってみんなから集めたお金で開発したり製作したりします。 当然失敗すればそれでおしまいです。 決してお店では買えない物を生み出す素晴らしいプロジェクトが存在する一方で、 多額の投資を集めて失敗するプロジェクトや、 酷い出来のゴミが到着するパターンも存在します。

幸い、今回投資を行った5つのプロジェクトは無事完了しました。しかし当然問題もありました。


1. TRINUS(3Dプリンタ)




Kodamaという会社が企画した3Dプリンタのプロジェクトです。 全体が金属製パーツの3Dプリンタでありながら$299程度で本体を受け取ることができました。 積層ピッチ0.05mm、出力可能な体積は120x125x125でPLA・ABS・NylonなどPolymakerのフィラメントには全て対応しています。 動画のお兄さんが喜んでいるように非常にシンプルな部品構成で簡単に組み立てることができることも特長です。 この価格帯の3Dプリンタでは最強と言えるレベルの性能を持っています。 しかし到着は数ヶ月遅延しました。

最近時間が空いて使えるようになりましたが実に素晴らしい出来です。 日本ではDDDJapanというところが代理店をしているのでそこから購入できます(DDDJapanのTrinusのページ)。


2. OrbitKey 2.0(キーホルダー)




鍵がうるさく音を立てないキーホルダーです。 普通のキーホルダーでは鍵同士がぶつかりあってちゃりちゃり(?)とうるさい音を立てますがこのキーホルダーではそれがないため非常にスマートに鍵を持ち運べます。 あと見た目が結構格好いい。 2.0とついていることからわかるように最初に成功したプロジェクトのアップデート版です。 Kickstarterでは成功したプロジェクトの品物を改良して新しいプロジェクトを再び立ち上げるということも行われます。 既に2ヶ月程度使用していますが試用感・評判とも良好です。


3. Omega2(小型Linuxボード)




Omega2は以前あったOmegaという小型Linuxコンピュータの次世代版です。 性能の異なるOmega2・Omega2+の2つのバージョンを揃えそれぞれ$5、$9の出資で本体を受け取れます。 小型で低価格の本体にWifi(802.11 b/g/n)・Bluetooth 4.0(BLE expansion)・15のGPIO(PWMあり)とIoTのために生まれてきたようなコンピュータです。 CPUクロックは580MHzあります。


4. IoT HAT for Raspberry Pi




Raspberry Pi zero用のWifi & Bluetooth拡張ボードです。Wifi(802.11n)とBluetooth 4.1をRaspberry Pi zeroに追加できUFLアンテナもつなげる優れものです。 Raspbianネイティブのドライバで動くのでドライバ周りで苦労することはないです(やったことがある人はわかるかもしれないですが、Raspberry Piに市販のWifiドングルを繋ぐのはそこそこ大変です)。


5. Teensy 3.5 & 3.6




Arduino IDEでも開発が可能な高性能マイコンボードです。 性能に差のあるTeensy 3.5と3.6のモデルが$23、$28の出資で受け取れました。 既に先行しているTeensyがいくつもあり問題がないのかは知りませんがAliexpressなどでTeensy 2.0のコピー(?)をよく見かけます。 機能は挙げれば切りがないので省きますが、これがあればマイコンでしたいことはほぼ全てできると言えるレベルに仕上がっていると思います。 20以上のPWMは通常17DOF程度の人型のロボットを動かすのにも足りますし、RTCとmicroSDスロットが搭載されているので簡単な処理機能のついたデータロガーとしての活躍も期待できそうです。


投資して思ったこと


今回投資したプロジェクトのリワードは個人的に痒いところに届く絶妙なものばかりで届いた品物の完成度は十分に満足のいくものでした。 チームとはいえプロジェクトを実行するのは企業団体ばかりではないのでかなりの質のものが送られてきたことは素直に驚きました。 もちろん適当に投資を行ったわけではなくチームの信頼性や過去のプロジェクトの実績等を見てかなり堅実な投資の仕方をしたと思います(過去に成功しているプロジェクトは製造過程へのノウハウがあるのでその辺でこけにくい)。

しかしそれでもリスクはありました。特にTRINUSは高額であること、Kodamaがいまひとつよく分からない企業であったこと、度重なる遅延、チームからのUpdate(近況報告)の少なさと挙げれば切りがない始末でした。 結果的に素晴らしい品物が届きましたが、報告が少なすぎるため発送までのコメント欄はパラノイア状態の人で溢れかえっていました。


投資の楽しさ


どこにも出回っていないものが作り出されるのを支援すると言うのはとても楽しいです(届けばさらに楽しいし嬉しい)。 これがクラウドファンディングが流行った最たる理由だと思います。 企画者たちが試行錯誤して近況をアップデートするたびわくわくしました。 さながら有料のブログといったところでしょうか。 

もちろんガジェットだけではなく、 プロジェクトの中には秘伝のソースをたくさん作って分けてあげるから投資してほしいといったものもありました。 海外の家庭の味もまた決して簡単に得られるものではないので非常に魅力的に思います。


投資の注意点


Kickstarterで投資する場合に注意すべき点は以下の通りです。

  • 利益が含まれないので一般販売よりも安い
  • 目標額の出資が集まらなければプロジェクトはキャンセルされる
  • 上記の理由でプロジェクトがキャンセルされればお金は戻って来る
  • プロジェクトは必ず失敗のリスクが伴う
  • 失敗した場合に返金される保証はない(戻って来る場合でも時間がかかる)
  • 予想外のお金がかかることがある(通関や仲介業者の手数料)
  • 届いた品物の品質は保証されない
  • 製品保証はない
  • プロジェクトの説明が適当だったりするプロジェクトには出資するべきではない

随分と恐ろしい感じになりましたがこれは間違い無く注意点です。 しかし、これらのリスクを背負ってでも出資をする価値はあると思います。 現に多くの人が利用していますし、 それだけ人を惹きつける魅力があるということです。 ただしKickstarterのようなクラウドファンディングを利用する際にはそれがショッピングではないということを必ず胸に留めておくべきだと思います。

2017年1月31日火曜日

【Tips】ArduinoとPWM

LEDの明るさを変えたりサーボモーターに角度の信号を送る時、PWMというものを使います。 Arduinoを使ってDIYをするときに避けては通れない道なので、簡単にまとめます。


PWMとは


PWMとはPulse Width Modulationの頭文字を省略した略語で、パルス幅変調という意味です。 平均電圧を変化させることで0Vと5Vしか出力できないコンピュータで1Vや2.5といった電圧を出すために使います。


仕組み


ArduinoでdigitalWrite()関数を使うとき、ピン番号を指定してHIGHやLOWと書きますが、これは電気的には5Vと0Vです。 よくコンピュータの世界は1と0でできていると言われますが、電気的に言えばコンピュータは1を5V、0を0Vとして動作しています。 逆に言うと、1Vや2.5Vのような中途半端な電圧を使うことはできません。

しかし、LEDの明るさを変えるためには電圧を変化させる必要があります。 昔、理科の実験で豆電球を光らせたことがあると思いますが、豆電球は電圧を高くするほど明るく、電圧を低くするほど暗く光ったはずです。 LEDにも同じことが言えます。

そこで必要になるのが平均電圧という考え方です。 時間あたりに5V(HIGH)になっている時間を1秒間5Vを出力すれば平均電圧は5Vとなり、0.5秒間5Vを出力して0.5秒間0Vを出力すれば平均電圧は2.5Vになります。 下の画像では1秒間うち0.5秒間5Vを出力したものと、1秒間のうち0.2秒間5Vを出力した場合のグラフを示しています。


LEDを点滅するスケッチを描いてみると、平均電圧が2.5Vになる方が平均電圧が1Vの時よりもLEDがよく光ることがわかります(時間を1秒にすると点滅してしまうので、5ミリ秒くらいに調整してください)。

つまり5Vと0Vを切り替えることで電圧が変わっているのと同等の効果を得ることができます
そして、5Vになっている時間のことをパルス幅といい、この幅を変えることを変調と言っています。 これがPWMという名前の由来です。


デューティー比

先の画像の電圧のグラフでは、5Vにしている時間と0Vにしている時間が変わると平均電圧が変わることが分かったはずです。 この時間の比をデューティー比と言います。 平均電圧2.5Vであればデューティー比は50%、平均電圧1Vであればデューティー比は20%です。


ArduinoでPWMを使う


一定時間ごとに5Vと0Vを切り替えることで、電圧を変えるのと同等の効果が得られることが分かりましたが、loop()関数の中でいちいちdigital(10, HIGH)とかやるのは面倒です。 また、Arduinoに2つLEDを繋いで、別々の明るさにしたい時にはさらに面倒なことになります。 そこでArduinoにはPWMの機能を簡単に使えるようにした関数が用意されています。

analogWrite(10, 127)

これは10番ピンにデューティー比50%のPWM信号を出力するという意味です。 オシロスコープを使って波形を見るとArduinoが5Vと0Vを勝手に切り替えてくれているのが分かります。 この関数では、デューティー比0%から100%を0〜255の数字に割り当てています。つまり、数字が大きいほど平均電圧が高くなり、LEDを繋いでいればLEDがより明るく光ることになります。

PWM機能が使えないピンがある

便利なPWMですが、実は使えるピンの番号と数が決まっています。Arduino Nanoでは下の画像のPWMと書かれているD3、D5、D6、D9、D10、D11の6つのピンでしかPWMを使うことはできません。



2017年1月30日月曜日

【Tips】Arduino Nanoで測距センサーを使う方法

Arduino Nanoで超音波測距センサーHC-SR04を使ってみようと思います。

超音波測距センサーとは

超音波測距センサーはソナー(Sonor)とも呼ばれる部品です。スピーカーから超音波を飛ばし、物に当たって跳ね返ってきた超音波をマイクで拾うことで距離を測ります。

音は340[m/s]で進むので音を出してから音を拾うまでの時間を計れば音の進んだ距離がわかるという仕組みです。




回路図


回路を次のように接続します。5Vの位置が分かりにくいですが間違えないようにしてください。



ちなみにArduino Nanoのピン名は以下のとおり。




プログラム



説明


31行目

pulseIn()関数はピンの入力がHIGHかLOWになっている時間を返す関数です。上のプログラムではpulseIn(echo, HIGH)としているので、echo(D11)ピンがHIGHになるとHIGHになっている時間を計測してマイクロ秒で返してくれます。

37行目

この行では距離を計算しています。単位変換を行っているので謎の数字が入っていますが、本質は単純です。




このことを念頭に置いて時間と距離と速さの関係を考えてみます。音速は340 [m/s]で一定なので音の移動時間が判れば、音の移動した距離が分かることになります。



プログラムではduration/2となっていますが、これは距離を半分にするためです。音はスピーカーから出て壁に当たり、マイクに入るという経路を移動しているため、音が移動するのにかかった時間は実際には往復時間となるため半分しているわけです。


動作確認


測った距離を表示するためのディスプレイがArduino Nanoには無いので、今回のプログラムではシリアル通信を使ってコンピュータにデータを送っています。Arduino IDEにはシリアル通信で送られてきたデータを表示するためにシリアルモニタという機能が付いているので使ってみます。Arduino IDEのウィンドウの右上(下の画像の赤丸のところ)をクリックすると、データが表示されると思います。



以上です。訂正等は下のコメント欄へどうぞ。

2017年1月27日金曜日

【Tips】タイトルバーの無いアプリケーションにキー入力をする方法



公開した『Aoica's Nihongo Tool』の製作にあたって、タイトルバーの無いウィンドウを作成したところ、Storyboard上でViewに配置したNSTextFieldにどうやってもフォーカスを合わせることができない(入力できない)という問題に突き当たりました。

ボタンは押せるのでウィンドウはアクティブであろうという仮定の元、調べた結果、canBecomeKeyというBOOLの変数がtrueだとキーウィンドウ(キー入力を受け付けるウィンドウ)になるということが分かりました。


問題点


タイトルバーの無いウィンドウにキー入力をすることができない

押せないNSTextField


解決方法


NSWindowのサブクラスMyWindowを新たに作成し、canBecomeKey: BOOLのgetメソッドをoverrideし、常にtrueを返すようにすることで解決しました。もっと美しい(正しい)やり方があればコメント欄で教えてください...


【Tips】Raspberry PiでArduino IDEを使う




最近はコンピュータ学習にRaspberry Piを使うみたいですね。
部活の1年生がRaspberry Pi 3を持っていてビックリしました(講義で使うらしい)。
Raspberry PiでArduino IDEを使うにはどうしたらいいのか、調べたのでメモします。


やりたいこと

  • Raspberry Pi(Raspbian OS)でArduino IDEを使う。
  • 中華製Arduino互換機を接続する。

インストールのやり方


Arduino IDEは非常にシンプルにインストールできます。

  1. インターネットにつなぐ
  2. コンソールでsudo aptitude update
  3. コンソールでsudo aptitude install arduino
  4. 左下のメニューにArduino IDEが追加されている
以上。

Arduinoを入手する


いくらArduinoが安いとは言っても、Arduino Unoの純正は3000円以上するのでたくさん買うには向いていないです。そこでArduino Nanoの中国製互換基板を使うことになりました。


相変わらずの価格


Aliexpressで1つ$2.19 US(300円しない程度)で購入できました。
Freeshippingと書いてあれば送料無料、Estimated Delivery Timeは配送時間を示してます。
いくら安くても評価が低いお店から買わないようにしましょう。


中華製Arduino Nanoの問題点?


Arduino Nanoに限らない話ですが、新しいデバイスを接続する際にはドライバが必要になります。ところが、このArduino Nano互換機はCH340(公式はFTDI)という公式とは違う中国製ドライバが必要になります。ダウンロードすると当然のごとくソースコードとMakefileが入っているのでLinux初心者にはきついかもしれません(Raspberry Piでは上記インストールの過程で勝手に入ったっぽい)。

ちなみに公式のダウンロードページには古いドライバは置いていないので、古いMac(OSX 10.8など)でドライバをインストールしようとしたら、ネットを探し回るハメになりました。

Aoica's Nihongo Tool 1.0(α版)



最近再びMinecraft熱が再燃して、友人と身内のサーバーで遊ぶようになりました。Macで日本語入力するためのツールが無くて不便なので勉強も兼ねてツールを作成しました。

名付けて『Aoica's Nihongo Tool』です。バージョンは1.0αとしました。是非使ってください。ダウンロードリンクは一番下にあります。バグの報告はコメント欄にお願いします。


スクリーンショット





設定の仕方


この設定をしないとtまたは/キーに反応しない、もしくは起動できません
まず「システム環境設定」アプリケーションを開きます。



「セキュリティとプライバシー」をクリックします。



「一般」タブの「すべてのアプリケーションを許可」(赤丸の所)をクリックします。



「プライバシー」タブをクリックし、アクセシビリティから「Nihongo Tool」(赤丸の所)にチェックを入れます(一度起動しないと表示されないかもしれないです)。

以上で設定完了です。



Aoica's Nihongo Tool 1.0 ダウンロード
対応動作環境OSX 10.9〜