犬用遠隔おやつあげ機の製作 - ハードウェア編

2016/02/19
  • IoT 6
  • Arduino 1
  • 工作 1
  • 以前紹介した 犬用遠隔おやつあげ機 について、今回は使用したハードウェアの製作過程について紹介します。

    普段私はソフトウェアの開発現場におり、ハードウェアは日曜大工を楽しむ程度です。一方、IoT では、ソフトウェアの開発に加えて、専用のハードウェア(つまりモノ)の存在が必要不可欠です。普段からもの作りをされている方々にとっては笑ってしまうような内容だと思いますが、素人が IoT のためにハードウェア製作に転げ回った記録についてまとめてみました。

    使用した工具は Amazon.co.jp アソシエイトなどでリンクしておきましたので、加工の際の参考にしてみてください。なお、製作や加工、改造などの行為は、製作過程で怪我などのリスクがあるだけでなく、最終成果物に対しても感電や火災のリスクが伴います。参考にする場合は全て自己責任でお願いします。

    おやつあげ機のハードウェア

    おやつあげ機の完成形はこんな感じです。ベルトコンベアに小さな皿を並べ、Arduino から 1 皿分動かして下に落とします。

    このベルトコンベアは、モーターと Arduino を介して Windows PC につながっており、インターネット経由で制御できます。

    ベルトコンベア

    以前から外出先から犬におやつをあげたいというアイデアはあったのですが、おやつ 1 粒をどのようにあげるのかという実現方法に悩みました。

    ヒントとなったのは、すでに実現していたゴハンあげ機です。留守中に給餌するために、魚用の自動えさやり機を改造したものを使っていました。この自動えさやり機は、設定した時刻になるとえさが入ったケースが 1 回転(または 2 回転)して、内容物を一定量だけ落とすことができます。犬用には、内容物が全部落ちるように P カッターで口を広げました。落ちた内容物は、ペットボトルの漏斗で集めて皿に落ちる仕組みです。

    ちなみに、P カッターはアクリルなどの厚みのある素材を切る道具です。「切る」というよりは、1 ミリ幅ぐらいの溝を「掘る」という感覚に近く、プラスチックの加工には重宝しています。

    今回もこの延長で、おやつを 1 粒ずつ落とせる仕組みができればいいかなと思っていたところ、つぎのような偉大なヒントを見つけました。

    Yahoo 知恵袋 - 小さなベルトコンベアを作りたいんですが。

    これによると、タミヤのトラック&ホイールセットを使えば小型のベルトコンベアを作れるのではないかとのこと。早速、タンク工作基本セットを購入しました。小学生の頃に遊んだのと同じようなものが、まだ売っていることに驚きました。

    私が購入したのは左側の商品ですが、ベルトコンベアのみにする場合は右側の方が安上がりでいいと思います(ただしシャフトを自分でカットする必要があるかも)。最終的にステッピングモーターを使うことにしたので、ホイール、ベルト、シャフトがあれば十分でした。

    というわけで、ベルトコンベアに使用するパーツはこんな感じです。

    モーター

    次に検討が必要だったのはモーターをどうするかです。Arduino からコントロールすることで、ベルトコンベアを 1 皿分だけ動かす方法を考えました。

    20 年ほど前、学生アルバイトで組み込み系のプログラマをやっていたので、ステッピングモーターの存在は知っていました。モーターにパルスを入力すると、そのパルスの量に比例してモーターが回転します。

    購入対象となるモーターを調査したところ、大きな問題に気付きました。駆動電圧です。

    機材はすべて USB 給電にしたかったので、5V 駆動できるものがよいのですが、世の中にあるステッピングモーターの大半は 9V や 12V です。このほうがトルクが出て高速に回転するのでしょう。反面、これでは別電源を用意したり、電源の変換回路を用意したりする必要があります。いずれの方法も敷居が高いので困りました。

    そんな中、このような商品を見つけました。価格が 1 個 400 円程度と手軽で、駆動用の基板までセットになっています

    早速取り寄せたのがこちらです。

    モーターとホイールの接続

    モーターも、ベルトコンベアも、制御基板もそろったから後は簡単と思っていたのですが、最大の問題が発生しました。

    モーターの軸は 5 mm、ホイールのシャフトは 3 mm だったのですが、この 2 つを接続する方法が分かりません。

    私はハードウェアの素人なので、接続用の部品が存在するのか、もし存在するならその部品の名前が何なのかすら分かりません。名前が分からないので、ネットで調べるのも困難です。

    2 週間ほどかけてホームセンター数件と秋葉原のロボット専門店を探しても見つからず、自作するしかないのかとあきらめかけた頃、秋葉原の別のロボット店 ロボットショップ さんで次の商品を見つけました。

    これは「インラインカラー」というパーツだそうです。内径が異なる組み合わせにも対応していたため、今回は 3mm と 5mm の組み合わせを選びました。

    というわけで、この通り、無事に接続することができました。

    皿の固定

    次に皿をベルトコンベアに取り付けます。皿は犬のおやつ 1 粒が入ればよいので、次のようなケースを使うことにしました。

    これは SD カード、切手、クリップなどを入れておける汎用のケースです。

    カッターを使って中央で切り離した後、ドリルで穴を空け、釣り糸でベルトコンベアに固定しました。

    Arduino では、スマートフォンからのコマンドを受信するごとに一定量を動かすように制御するので、等間隔で固定することが重要です。冒頭に示したとおり、こんな感じになります。

    フレームの製作

    基本的な仕組みができたら、あとは普通の日曜大工です。

    通常、この種の商品にはアルミ製のケースなど、金属ケースを使うと思いますが、今回はコスト削減のため MDF ボードで我慢しました。MDF なら 90 cm × 60 cm でも 200~300 円程度で入手できます。

    これを、プロクソン卓上サーキュラーソーで加工しました。15000 円もあれば買えるコンパクトな電動のこぎりです。厚みが 5 mm ぐらいまでなら、きれいに加工できます。

    加工の誤差はホビーかんなで調整できます。こちらは調整に木槌とかが不要なねじ止め式のもので、10mm の MDF の加工ぐらいなら簡単にできます。

    そしてできあがったパーツはこの通り。最終的に木工用ボンドで組み立てます。

    あとは、Arduino の足とか、ベルトコンベアの車輪の位置に合わせてハンドドリルで穴を開けてねじ止めしていくだけです。

    当時は穴開けに左側の商品を使いましたが、最近、右側のミニルーター用ドリルスタンドを導入しました。誤差がほとんどなく、垂直に穴を開けられます。しかも、スタンドは分解して収納できるのが魅力です。

    こんな感じでベルトコンベアの裏側に設置しました。誤差の防止のため、一度、加工しやすいプラバンに実装してから MDF にねじ止めしています。

    あと、ステッピングモーターは放熱対策のため、金属製のステイを介して MDF につなげています。これは、ホームセンターに売っていた金具で、おそらく木造家屋の構造補強用と思われます。ちなみに、Arduino 側でも連続稼働しないようにタイムアウトを設けたりと、無人稼働前提なので安全第一でやっています。

    仕上げ

    MDF ボードで作ったまではいいのですが、そのままでは見栄えがしません。そこで、タモの突き板を貼り付けることにします。

    こちらは完成形。天然のタモ材を使って作ったような質感になります。

    突き板とは天然の木材を 2mm 程度の厚みにカットして、和紙を貼り付けたものです。こんな感じでロール状にして販売しています。今回は ツキ板屋GIFU さんから購入しました。

    購入時は天然の木そのものなので、クリアニスで表面を 3 回塗装しました。塗装のときは、タビログ(Tabilog)さんの こちら の記事が参考になりました。砥の粉は使わず、もう少し細かなサンドペーパーで軽くかけるようにしました。

    塗装後、接着剤で MDF に貼り付けます(専用のアイロンで接着する接着剤ではニスが溶け出すので、私は木工用ボンドを使いました)。

    機材ができあがったら設置です。今回は USB ハブを介して本体を Windows に接続し、ステッピングモーターの電源は別に USB 給電としました。

    稼働開始から 3 ヶ月経過していますが、安定稼働しています。

    最後に

    このページの最後にハードウェア製作についての感想を。

    初めにも書きましたが、IoT の開発ではソフトウェアの開発と同時に専用ハードウェアの開発も必要になります。

    1 年ほど前の記事になりますが、こちら の日経ビジネスオンラインの記事(2015/3/23)に共感できました(過去記事の参照になるので、無料の会員登録が必要)。

    記事の 4 ページ目に「ソフトウェアのサービスを実現するためのアプリケーションとして、ハードウェアが乗っている」という表現があります。今回の作業を通して、まさにその通りだと思いました。

    従来はハードウェアや OS の上で動くソフトウェアを製作するのがアプリケーション開発でした。IoT の世界ではサーバインフラなどのフレームワークの上に、専用ソフトウェアと専用ハードウェアを「アプリケーション」として動かしているという意味にも解釈できます。

    初めのブログでは Thing Interaction Framework をフレームワークを使う事例を示していますが、こうしたフレームワークの存在の重要性、そして、目的を実現するための専用ソフトウェアと専用ハードウェア(ここでいうアプリケーション)の重要性など、IoT ならではの世界観を感じた次第です。

    一連の連のブログ記事が、フレームワークの観点と、その上のアプリケーションの両方の観点から、IoT でのソリューション開発のヒントになれば幸いです。