昨今テレビやネットでよく目にするようになったIoT。
IoTと聞くと敷居が高く感じる方もいるかと思いますが、これは私がまだ、IoTという言葉すらも知らない、超初心者プログラマーだった頃に作成した、バイクとスマホを連携するアプリケーションの話です。
IoTのとっかかり易さを理解してもらいたいので、今回は詳しい事は省きたいと思います。
そもそもIoTって何?
IoTとはInternet of Thingsの頭文字を取ったものです。
直訳すると『モノのインターネット』。
ようするにモノがインターネットとつながって、操作出来たり、情報を収集したりできる仕組みの事です。
スマートスピーカーなんかが代表的です。
具体的にはどんな仕組み?
Androidアプリと、バイクに搭載したArduinoというマイコンを、Bluetoothで接続して相互に通信します。
Androidアプリと、Arduinoに組み込むプログラムのプログラミングが必要になります。
本来、モノ(今回はバイク)自体がインターネットにつながらないとIoTではないかもしれないですが、通信方式がBluetoothからインターネット経由になるだけで、他は変わらないので、今回はIoTという事にします。
用意したモノ
- バイク:1台
- Android端末:1台
- Arduinoをはじめようキット:1個
- Bluetoothドングル:1個
- バイクとArduino接続用リレー:1個
- ギボシ端子:複数
- 配線:1~2m
作業内容
作業内容は大まかに分けると下記のようになります。
- Androidアプリのプログラミング
- Arduino組み込みプログラムのプログラミング
- モノの物理的な組み込み作業
Androidアプリのプログラミング
AndroidアプリはUI(見た目の部分)はXML、処理自体はjavaという言語を使ってプログラミングします。
今回の場合は、まず初期表示時にBluetooth接続をする処理を実装します。
Bluetooth接続が完了したらメイン画面が表示されます。
メイン画面には、ボタンをいくつか配置し、そのボタンが押された際に、ArduinoにBluetooth通信で特定のパラメータを送信する処理を実装します。
(例:Aボタンを押されたら『onClickABtn』というパラメータを送信)
Arduino組み込みプログラムのプログラミング
Arduinoのプログラミングには、Arduino言語というC/C++をベースとした言語を使用します。
開発にはArduino IDEという総合開発環境を使用します。
Arduinoには入出力用のピンがありますが、拡張する事により、そのピン以外でも入出力が可能になります。
今回の場合であれば、Bluetoothトングルを使う事で、Bluetooth通信による入出力を拡張しています。
具体的なプログラミングはというと、Androidアプリから送信されてきたパラメータ毎に処理を実装する形になります。
またバイクからの特定の信号(エンジンがかかった、ギアがNなど)を受け取ってAndroidアプリに送信する処理も実装します。
(例:先ほどの『onClickABtn』というパラメータを受け取った場合、1番の出力ピンに一定時間、電気を流す)
モノの物理的な組み込み作業
モノの組み込み作業とは、Arduinoの物理的な拡張と、そのArduinoを物理的に接続する側(バイク)の改造になります。
今回の場合は、Arduinoの物理的な拡張はBluetoothトングルをUSBポートに指すだけです。
バイクの改造は、バイク側の操作したい電源に、Arduinoからの電気信号を介入させる作業になります。
その際に、Arduinoの電源では電圧が弱い為、リレーを介して介入させます。
(例:1番の出力ピンに電気が流れた場合、バイクのスターターモーターに電気を流す)
以上が具体的な作業内容になります。
本当はもう少し細かい実装や作業が必要になりますが、今回は割愛します。
実際に動かしてみよう!
これは当時プレゼンに使った動画が残っているので、それをご覧ください。
https://www.youtube.com/watch?v=rJG5Es5fovQ&t=1s
プレゼン用の動画なので説明がないですが、主な機能としては下記になります。
- エンジンの状態確認(かかっているかどうか)
- アプリ側で許可してない場合に、N以外のギアに入った場合エンジンストップ(盗難防止)
- アンサーバック機能(ウインカー点滅&ホーン)
- エンジン始動履歴の確認
- 実走!
以上のように、簡単にIoTは試してみる事が出来るので、みなさんも是非チャレンジしてみましょう!
また福井県内の方で、IoTをビジネスに使いたいが、どうすればいいかわからない方など、お気軽にお問合せください。