MBSハッカソン - Hack on Airに参加してみた その2
さて、今回と次回で、作成した銃の心臓部である基板部について掘り下げていこうと思います。
銃の全体イメージ
まずは銃の全体イメージをもとに、この銃で実現したこと・したかったことを紹介します。
まず、銃の先端には、エフェクト用に振動スピーカーをつけます。このスピーカーから音が鳴ると振動が伝わってかすかに銃が震えるため、臨場感をアップします。
また、銃を発射した感を出すためにソレノイドを仕込んでいます。発射ボタンを押すと、ソレノイドの動作によって先端のナットが引き寄せられたのち解放されるので「カチッ」という音が出ます。
オプションアタッチメントですが、これはハッカソンの時は実現できなかったのですが、例えばハートのアタッチメントをつけると攻撃ではなく、キューピットの矢っぽいデバイスに変化してお気に入りキャラを撃ちまくる(=ラブコール)ということを考えてました。
爆風は小型モータとLEDで実現します。LEDを赤に光らすことで、心理的に熱風にみせようとしています。最初はヒーターで本当に熱風を出すことや、匂いを出すことも考えていたのですが、実現はできませんでした。
本体にはシリアルLEDを左右に並列につけて、起動時のエフェクトや弾の残量等の情報表示に使用します。
発射ボタンは、普通の押しボタンが標準でついていますが、ジャックの口を設けて、他のボタンでも利用できるように拡張用の口を用意してあります。これは手の不自由な子供でも銃を楽しめるためにと、もう一人のエンジニアでテンプラ―筋電車いすの作者である、ならなびさんの配慮でつけられたものです。ハッカソンで作った銃ですが、この後も作り続けて行きたいという開発者の思いも詰まっております。
あとは、目に見えないですが、メイン基板には3軸の加速度センサーがついており、銃口を下向けたといった銃でのモーションを検知できるようになっております。銃を横向けることで防御するとか、銃口を下向けることで弾を充填するといったことが可能になります。
ハードウェアの詳細が決まるまで
短期間での開発のため、各部品はこれまでの利用した経験があるものや、利用方法が簡単もので要件を満たすものを選ぶ必要があります。部品選びを間違うと、その部品の調査・解析で数日ぶっとんでしまうので、このあたりがエンジニアの経験が効いてくるところです。
最初に決めるのは、使用するマイコン。これは開発のし易さを考えるとArduino系にすることは早くに決まりました。最初は、小型のArduino互換ボードである、Adafruit Pro Trinketを考えてました。
最終的には、ならなびさんが今回用に基板を作る!といわれ、それで決定いたしました。マイコンはArduino UNOと同じ、ATMega328を使用しました。
えっ、基板てどうやってつくるの?という方はこちらをご覧ください。
また、時間がもう少しある(1か月程度)場合は、以下のサービス等で中国でお安く基板を作ってもらうことができます。
次は電源。モーターや通信デバイス等を使うため、乾電池では心もとなく、リチウムイオンポリマー電池かUSBでモバイルバッテリーを使うかが候補になりました。最近のモバイルバッテリーは低電流時に自動OFF機能が動いて電力供給が止まってしまうリスクがあるので、リチウムイオンポリマー電池の1000mAhのものを使用することになりました。
次回は、メイン基板と制御プログラムについて書こうと思います。
3COINSで買ったお家をアンビエントデバイスに仕立て上げる その1
この記事は、大晦日ハッカソン2015に関する記録です。
私、100均や3COINSが結構好きです。なぜか。それはハックしたいものがゴロゴロあるからです。
先日も娘の付き添いの用事で時間ができたので3COINSに寄って、以下のお家をゲットしてきました。
これ自体は物入れ兼飾りとして通常は使われるものでしょう。屋根を外すとこんな感じです。
が、この空間、小さいブレッドボードがきっちり納まるんですよね。
ということで、これは絶好のハックデバイスだとピーンときたわけです。
アンビエントって?
最近、IoT(Internet of Things)というキーワードをよく聞くと思いますが、ちょうど10年ほど前はユビキタス(Ubiquitous)というキーワードが大流行しました。言葉や内容は変われど、今のIoTはこのユビキタスの流れを汲むものだと思います。ちょうどこのユビキタス → IoTの流れの中でアンビエントという考えが一部で盛り上がったことがあります。
アンビエント(ambient)は、英語で「周囲の」、「環境の」という意味で、一般的には音楽のジャンルの一つとしてよく使われます。アンビエント・コンピューティングという場合、多数のデバイスが環境に同化して(人に意識させずに)動作するという意味となります(=ユビキタス)。
一方で、インタラクションの観点では、環境に溶け込む意味でつかわれ、直接的な情報の通知ではなく、環境に同化した形での人とのインタラクションを示す言葉として使われます。具体的な例であれば、明日の天気が”雨”ということを人に伝える場合、文字や音声で伝えるのではなく、設置した照明の色を青っぽくすることでさりげなく人に意識させます。これを具体化した、ambient ORBという製品もアンビエントデバイス社から発売されました。(売れなかったようですが。。。)
ということで、このアンビエントデバイスをこのお家で作ってみようと思います。
結局何をするの?
という昔話はさておき、やりたいことは、このお家の窓の4枠にカラーLEDをそれぞれ配置し、4個のカラーLEDでお家やその他の情報を通知するデバイスをつくります。
例えば、明日の天気を通知する場合、LED4個を1日と考え、1つのLEDを深夜~早朝、午前、午後、夜の4区分として色で天気を伝えます。午前中までは曇りだが、午後から雨の場合はこんな感じです。
また、各窓を各部屋に見立てて、それぞれの電気がついてる場合に黄色のLEDをつけます。例えば、誰かがお風呂に入ってる場合は以下のようなイメージになります。
寝る前に、玄関のLEDがついていれば、電気を切り忘れてることがわかります。
また、レベルメータ的な使い方をして、電気の使用量に応じて赤色のLEDをつけるというのもあるかと思います。
システムの概要
このシステムを実現するために必要なものは以下になると思います。
LEDについては、シリアルLEDを4つ使うことにします。
LEDを制御するマイコンと無線でクラウド側につなぐデバイスの組み合わせですが、いくつか候補があります。
1) Arduino + ESP-WROOM-02
2) RedBearLab WiFi Micro
3) MESH GPIOタグ + α
4) AirBoard + 無線デバイス
また、クラウドサービスとしては、IFTTTやMQTT等いろいろ候補があります。
ということで
アイデアをまとめたり、デバイスの選定をしている間に新年を迎えてしまいました。
あけましておめでとうございます。
この続きは以下のイベントで続けます。
Raspberry pi Zeroをミンティアケースに入れてみようとした
この記事は、大晦日ハッカソン向けの小ネタとして書いています。
Zeroとミンティア
2015年11月、5$で買えるRaspberry pi、Zeroが発売されました。
日本国内のお店ではまだ買えないようですが、我慢できずにPimoroni(英国)から購入しました。Pimoroniは送料が£4とお安いのがいいです。
このZero、お値段の安さもありますが、サイズも小さくなっています。Raspberry pi Bと比べてみた感じは以下です。
このサイズとなると、まずはFRISKケースに入れてみたくなりますよね。で、既に試されています。
結果は残念ながら収まらないとのことでした。でも、ここであきらめてはいけません。
これは、ミンティアブリーズという少し大きなサイズのミンティアです。
先に結果をいうと、ピンヘッダをつけなければミンティアブリーズには収まります。ちょうどmicroUSBの電源部分を取り出し口の位置につけることが可能な感じです。
ピンヘッダをつけると、こんな感じでアウトです。ので、ピンヘッダの部分だけ切り抜く必要がありそうです。
ただ、これだとHDMIやUSBの口を塞いでしまうのでちょっと不便です。
なので、Wifiをつないでログインできるようにしてみようと思います。
Wifiをつないでもケースにはいるかやってみる
Wifiをつなげるには、電源でないmicroUSBにOTGケーブルをつなげてその先にドングルを差す形になります。ただ、スペースが限られるので、よさげなOTGケーブルを探しに千石電商に物色にいった結果、以下のものを購入。
さて、お試し、、、
残念。ちょっとそのままでは無理。
ケーブルだけなら入りそうかと思えば、
コネクタ側の先端の厚みが少し太くケースがしまりませんでした。
結論
結論としては、ケースからケーブルがでてよいならミンティアケースは加工しやすいので、口を開けてあげればいけそうです。
一方、Wifiをつないでとなると、そのまま既製品を使っての収納は無理そうです。
ただ、OTGケーブルのアダプター側を改造してあげればいけそうな感じです。(ちょっと今日は他のこともやりたいので来年に持ち越し)
できれば、既製品で薄くて短いOTGケーブル(or アダプタ)を出して来ればいいのですが、そんなニッチな製品はでないですよね。^^;
がっつり使うと発熱もあるでしょうし、最終的にはちゃんとしたケースがでるのを待つか3Dプリンタかアクリルキャスト板でつくるのがいいですね。
ということで、ちょっとした小ネタでした。
※やってみようという方は自己責任でお願いします。m(_ _)m
(18:10 更新)
ついでなので、普通のミンティアケースで試してみた。ピンヘッダの部分はデザインナイフで適当に切ったためUSBコネクタの位置が取り出し口とずれてしまった^^;
Raspberry pi Zeroがやってきた
Raspberry pi Zeroですが、日本ではまだどこのお店でも買えない状態(2015.12.27現在 σ(゚∀゚ )オレ調べ)
我慢ならぬ!ということで、Pimoroniを見に行ったが在庫なし。"Notify me"して待つと入荷したメールが届く。
ちなみにPimoroniは、Raspberry piのケースで有名なPibowの作者であり、Raspberry Pi財団の創設者 Eben Upton氏の友人である、Paul Beech氏が設立した会社です。
メールが届いたあと1時間程度後に見に行くも、本体だけやケース付きはすでに売り切れ。英国でも大人気のご様子。
Scrool pHATという50個のLEDがついたHATとのセットは一人1個制限があったため何とか残っていたので、これを注文(12/15)、本日(12/26)届きました。到着まで約2週間というところですね。送料でもう1個Zeroが買えますが^^;
Bとならべてみました。
気を付けないといけない点は、HDMIがminiHDMIなので、miniHDMI<->HDMIアダプタが必要な点。あと、USBドングル類つかうには、OTGケーブル/アダプタも必要。今回はこれらはキットに含まれていたのでここはクリア。
さていじってみようとおもって気がついた。
GPIOを使う場合は”ハンダ付け"が必要です。これは、これまでは必要なかった点です。
電子工作が趣味な私は全然問題ないですが、これまでRaspberry piをブレッドボードで使ってきたユーザさんにはちょっとした試練かもしれません。
ただ、Zeroは私にも試練を与えてくれました。
そう、ハンダ付けするピン形状を何にするか決めないといけないんです。
つまり、こうか
こうか
こうもありますね。
なんとも悩ましいw
まぁ、悩むくらいならもう数台買えばいいです。5$って素晴らしい。
一方のScrool pHatは、LED55(5 x 11)個をならべてI2Cで制御するもの。Python用のライブラリがGitHubで公開されてます。
これはこれでLED好きには萌える基盤です。これまでのRaspberry pi でも使えるピン配列です。
まずはこれをつなぐのにどのピン形状がいいか考えてみます。
簡単なご報告でした。(^^)ノシ
MBSハッカソン - Hack on Airに参加してみた その1
「はじめに」
今年で2回目の開催となる、MBS主催のハッカソン「Hack on Air」に参加してきました。
10月17日のアイデアソン予選をチーム「BATTLE 7」で突破し、10月31日、1日に開催された本戦にて「審査員特別賞」と「マイクロソフト賞」をいただきました。
この様子はMBSさんでTV番組で放映されます。司会進行はMBSのアナウンサーさんがされ、ハッカソンの会場は「ちちんぷいぷい」のスタジオ、発表は「サタデープラス」のスタジオで行われました。これだけでも貴重な体験です。ただ、本人らはハッカソンに必死でゆっくり堪能してる暇はなかったですが。。。
それを知ってか、発表後の懇親会の司会をMBSのアナウンサーさんがしてくれるというホスビタリティの高さに感動しました。
ハッカソン中の昼食、夕食の弁当も豪華で、テイクフリーな飲み物やおやつ、カップヌードルも揃ってました。あと、ハンズラボさんから癒しグッズが提供されていました。快適なハック環境です。
ロケ弁は”大御所専用”だったり、たむけんのたむらの弁当だったりとネタ入りもの。
途中、サバンナの八木さんが現場風景の撮影でインタビューに来られたのですが、追い込み作業でみんなそれどころじゃない感がw
そんな感じで、ハードでしたが、非常に楽しく快適なイベントでした。
それからそれから
ブログを書くまでがハッカソン!ということで、「BATTLE7」で作成しようとしたシステムの概要について、数回にわけてざっくりまとめたいと思います。
「BATTLE TV」って
今回、私たちのチーム「BATTLE 7」が提案したアイデアは「BATTLE TV」です。
今年のアイデアソンは7つのテーマから1つを選びます。私たちのチームは「ガンダム」がテーマです。
チーム構成は、エンジニア4名とデザイナ1名、プランナ1名の計6名。これにMBSの担当さんを含めた7名ということで「BATTLE 7」というチーム名となっております。
リアルタイムにアニメを見ようと思わせるために考え出した「BATTLE TV」。コンセプトは「臨場感」です。
アイデアはざっくりいうと、
・アニメの戦闘シーンが始まると、連動して銃型のデバイスが起動。テレビに向かってシーンにあわせて銃を撃つ、守ることでポイントがたまって、他の視聴者と対戦ができる。
・臨場感を伝えるために「銃が震える」「爆風が来る」に加えて、骨伝導を使って現場(戦場)の振動をリアルに伝える。
・twitterのつぶやきでプレイヤーを支援(銃弾たライフの回復など)できることで、銃をもたない人や、銃をうつことに興味ない人もバトルに参加できる。
というものです。
「BATTLE TV」の構成
簡単にシステムの構成をまとめるとこんな感じです。
- テレビ
対象となるアニメが放送されている普通のテレビ - スマホ
アニメのシーンを音声透かしや画像透かしで判定し、バトル銃に通知する。また、バトル銃の操作履歴を受信してクラウドサーバに通知したり、クラウドからの回復コマンドをバトル銃に通知したりする。 - バトル銃
射撃・防御の入力を行う。また、シーンやユーザ操作に合わせて振動やファン、LEDの制御を行う。 - 骨伝導デバイス
バトル銃からの命令にあわせて振動をユーザに伝える。 - クラウドサーバ
スマホからのデータをうけてポイントの集計を行ったり、twitterの履歴から回復等の情報をスマホに通知する。
スマホとバトル銃の通信はBluetooth、バトル銃と骨伝導デバイス間の通信はTWE-Liteで行います。 スマホはAndroidを選択、バトル銃の制御マイコンはAVRのATMega328(Arduino UNOが搭載しているマイコン)を使用しました。
「BATTLE TV」ができるまで
アイデアソンで決勝までは2週間の期間があります。ハッカソンは発表含めて2日間しかないので、当然準備なしでは完成しません。特に、我がチームはバトル銃/骨伝導デバイスというハードを作る必要があります。また、提供APIの調査・選定や利用申請を行う必要もあります。
本番では最後の結合で手一杯になることは見えてるので、調査・設計から結合の一歩手前までを行っておく必要があります。エンジニア4名のうち2名がバトル銃/骨電導デバイスの担当、残り2名でスマホとクラウド側を担当という役割分担で動きました。提供APIの利用申請はプランナーさんが進めてくださいました。デバイスについては詳細打ち合わせを中間の週末に大阪イノベーションハブさんのスペースをお借りして、対面で行って効率化しました。
アイデアもブラッシュアップする必要があります。Facebookやchatworkを使ってオンラインディスカッションをしていくことになります。
MBSハッカソンの良いところは、チームに一人MBSの社員さんがついてくれる点です。とはいえ、アイデアをブラッシュアップするのはチームメンバーであり、MBSの社員さんはフォローアップがメイン。今回はアニメということで、素材の用意や版権関連の相談に積極的に対応してくださいました。
私はデバイス側を担当しましたので、以降ではデバイス側ができるまでの話をまとめてみようと思います。
まずは銃選び
銃ですが、お安く作ることや改良しやすさを考えると水鉄砲をベースにすることは結構すぐに決まりました。まずは実物をみないと始まらないので、二人で以下の3種類を購入。
ザクマシンガンは小さすぎるということで一番に脱落。余談ですが、私の子供(小3)はこのザクマシンガンが気に入ったようでお風呂で遊びたくってました。
次のポイントは骨伝導デバイス。骨伝導デバイスは鎖骨の部分に当てる必要があります。一番最初の案として、この骨伝導デバイスを銃の後方につけて自分で鎖骨に押し当てる案があがっていました。この案を実現するにはそれなりに全長の長い銃を採用する必要があります。水撃ショット ライフルスナイパーの77.5cmに対してツインアリゲーターは56.4cm、長さの点では水撃ショット ライフルスナイパーが有利となります。
一方で、マイコン等を内蔵すること考えるとツインアリゲータの構造は魅力的でした。また、見た目や作りの質の良さは定価が5,000円近くするバンダイナムコ製のツインアリゲータがリードです。
この時点で、骨伝導デバイスの固定について先に検討することにしました。骨伝導デバイスの固定の別案として、◯ブトロニックのような低周波治療器を固定するバンドをつかって固定する案も出ていました。こんな感じです。
実際に、いろいろ装着実験をしてみた感じ、ゴムバンドである程度押し付けられるので振動が伝わり易いこと、かつ、いろいろな体型の人でも柔軟に対応できそうという結論にいたりました。あと、骨伝導デバイスを制御する方法ですが、TWE-Liteを使って無線制御しようということになりました。
ということで、銃の長さという制限が取り払われました。そこで、再度、銃の選定を行った結果、ツインアリゲーターに軍配が上がりました。
次回に続く
次回はバトル銃のハード構成について書こうと思います。
最後に、バトル銃の中身をチラ見せしておきます。
続きはこちら
Smalruby(スモウルビー)をMac OSに入れてみる。
下の子が小学3年生になるので、そろそろScratchをさせてみようかと思い、MacBookに入れて使わせてみました。途中からお姉ちゃん( Scratch経験済み)が乱入して主導権うばわれてましたが、特に詰まることなく楽しく遊んでいました。Raspberry Pi版のようにMinecraft連携できないの!プンプンと怒ってましたが。入れればできるようだけど、脱線しそうなのでできないと言い切りました^^;
Smalrubyって?
で、次なるステップに向けて、Smalrubyを使わせてみようとおもいます。
Smalrubyとは、Scratchと同じようにブロックを使ったプログラミングができる開発環境ですが、Rubyのコードを吐いてくれます。
Rubyといえば島根県松江市。その松江市で、Rubyプログラミング少年団という活動をされている高尾さんという方が作成されているそうです。
Smalrubyの何が良いか。それは、ブロックで作ったプログラムが実際のコードになるという点かなと。プログラミングを覚えるには、やはり実際のコードを書くステップに入っていくことになると思うのですが、その際に対比できてわかりやすいのではないかと思うのです。
(それ以外にも、ちょっとやりたいことがあったという理由もありますが^^;)
Macじゃうごかない? いいえ、動きます。
最初、Rubyプログラミング少年団のサイトをみて、Windows版しかないのかと思っていたのですが、私のFBの書き込みをみた方からMacで(Linuxでも)動くと教えてもらえました。(Akiさんありがとう!)
じゃぁ、やるしかないじゃんということでトライしてみました。Windows版のようにインストーラであれこれというわけには行かず、Homebrewやrbenv、gemといったRubyの環境構築の知識が必要です。多少手古摺ったので、やり方を以下に簡単にまとめてみます。
Macでのインストール方法
といっても、作者様がマニュアルを用意してくださっているので、それを入手し、その手順に従うだけです。マニュアルはgitで入手します。( 私環境だとPDFへの直アクセスだと文字化けしてしまいました。)
> git clone https://github.com/smalruby/smalruby-book
取得したフォルダ内の"Smalruby.pdf"をご覧ください。
以下、注意点
- 後述のsmalruby-editorをインストールする場合、2.0.0-p353以降がサポート対象なので、マニュアルにあるバージョンだと古い。2.0.0-p353以降をインストールすること。2.2.0で動作するのを確認済み。(smalruby-editorのrakeで警告がでますが無視しました。)
- rbenvでローカルにインストールしたruby環境を使用するのがよいかも
最初、標準(system)で入っているrubyを使ってインストールしたのですが、SDLのモジュールが見つけられないエラー(これと同じ)が発生してうまく動きませんでした(理由不明)。入れたgemをアンインストールして、rbenvで新しく入れたrubyでマニュアルの手順通りに構築することで、無事動きました。 - マニュアルの"1.2.4 SDL"にて、SGEのHomebrewのリンクが切れているので以下に書いておきます。
https://gist.github.com/mitmul/5410467/raw/c4fa716635e951b61f489726976b10f00dd41306/sge.rb
Smalruby-editorの設定(5/6追記)
ここまでは、Smalrubyで作成したrubyコードを実行する環境の構築でした。実際に、ブロックプログラミングを行うには、
- Rubyプログラミング少年団のサイトのメニューから、「スモウルビー」→「試してみる」からherokuに用意されたサンドボックスを使用する。プログラムできたら、ダウンロードしてrsdlで実行(rubyじゃないことに注意)する。
- gem install smalruby-editorでローカルにインストールする。インストールが正常に終われば、smalruby-editorが実行できるようになります。Chromeがインストールされている必要があります。
のどちからで。
以上です。
OpenWebBoardをHDMIPiにつなげてみる
HDMIPiとは
HDMIPiとは、Raspberry Piを収納できるHDMIディスプレイのことで、1年以上前にkickstarterでファンドに成功したものです。ファンド成功後1年ちょっとたって物ができたので送られてきました。
こんな感じで、Raspberry Pi Bを格納でき、HDMIの接続とUSBからの電源供給ができるという代物です。HDMIの入力は2系統もっているのも便利。
ただ、主流につかっているRaspberry PiがB+や2になってしまった等の理由であまりつかわれてない子でした。
OpenWebBoardにいれかえてみよう
一方、OpenWebBoardはRaspberry Piのようにディスプレイなしでの使用はつらいので、この際、HDMIPiをOpenWebBoard用として流用しようと思います。
で、やってみた結果は以下。いけそうやね。
それからそれから
あとは、
を予定しております。
これでOpenWebBoardを手軽にいじれる環境ができあがり。
ハンズオン資料作成にむけて加速していくつもりです。
実際に動いてる感じは以下の通り。ダンボーバッテリーの2.1A側のポートで動作できました。