Bitcoin送金できるIoTゴミ箱をMaker Faire Tokyo 2018に出典した (実装編)

前回の記事に続き、実装編です。

利用したもの

1. 蓋つきゴミ箱
2. Raspberry Pi
3. USBカメラ
4. 光センサー (できれば重量センサーが良かったが、実装が難しかった)
5. Speaker (ゴミを捨てが完了したら音がなるように)
6. Mini Display (カメラがどこを読んでいるかわかるように)

※Serverなしです、bitcoin nodeも今回は立ててません。

またwalletに関してはご自身でお持ちのものを使ってもらう予定でしたが、お持ちでない方ようにi phoneにBitcoin Wallet By Bitcoin.com
をinstallしたものを用意しました。

‎Bitcoin Wallet By Bitcoin.com
‎Bitcoin Wallet By Bitcoin.com

Raspberry Pi内の実装

1. pythonよりUSBカメラからの画像にQRコードが写ったことを認識したら、そこからBitcoinのWallet Addressを取得
2. ゴミ箱の蓋が開き、ゴミが入ったことを光センサー経由で認識
3. Blockchain.infoのAPIを使って、読み取ったWalletにBTCを送金

BTCに関しては取引所で購入したものをBlockchain.info経由で作成したWalletに入れておき、配布しました。

Bitcoin周りの実装

当初Bitcoinの送金の実装を調べた時、ゼロから実装するとBitcoinのフルノードをたてる必要があることに気づき、Ethereum, NEMにしようかと悩みましたが、BTCのWallet作成、BTC送金がAPIでできるBlockchain.infoを知り、非常に簡単にRaspberry Piのみで実装できました。(正確にはBlockchain.infoのServiceをRaspberry Pi内で起動させた上でそこ経由でAPIを利用)

詰まったところ

1. センサーの読み込み

安いセンサーだと壊れやすく、また長時間動かすと誤差が含まれやすくなります。実装もセンサーの種類によって異なることが多いため、
実装が間違っているのか、故障かを判断するのが難しく、Raspberry Piとの繋ぎ込みは辛い思いをしました。
また、Raspberry piも開発中に壊れてしまい、2台目を購入するという心が折れそうな瞬間が多々ありました。壊れているのかどうかの判断ですら半日費やします。

2. チーム開発のしにくさ

利用しているUSBカメラの機種によって実装が異なることがあるため、チームで別のものを使っていると実装がバラバラになってしまいます。
pythonソースをgithubで管理していましたが、Raspberry Piになんのmoduleが入っているのかは、動くかどうかのtry and errorで進めていたので
自分のRaspberry Piでは動いても、別のRaspberry Piでは動かないという事態も多々起きました。

さらにSoftware開発ではdockerが当たり前になっているので、同様の仮想化、構成管理や配信方法が今後Iot開発でも進んで欲しいです。
最近はisaaxのようにRaspberry Piに資材を配信できるサービスもあり、使えばよかったなと思います。

また、Raspberry Pi用のgithubのような共有サービスもあるといいと思います。QR code Readerを作りたい、人を認識できる防犯カメラを作りたいなどに対してrepositoryから落としてinstallすれば使えるようなサービスがあれば、Iot開発のハードルを下げることができそうです。module同士で競合しあう可能性もあるので、仮想化も非常に期待したいです。

開発を通じて

Bitcoinを利用したproductは初めて開発しましたが、bitcoinという価値を持っているものをこんなにも簡単に流動させることができるのは非常に面白く、可能性を感じました。法定通貨でもできなくはありませんが、実装以外に資金移動業等の登録や規則を厳守する必要があり、一個人が簡単にできるものではありません。多くの人が銀行に資産を置いているため、銀行との繋ぎ込みも必要です。

価値の流動性の向上に関して、Bitcoinを始め多くの仮想通貨に可能性を感じるのは納得の理由がありました。

Seed期のFintech Startupで働くアラサーEngineer. Web,DevOps,iOSが主, 時々Blockchain. ピンと来たことを発信します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


Scroll to top