このトークでは、Swiftを使ったハードウェアのハックの方法をお話します。猫の貯金箱(上にコインを置くと、猫がそれを貯金箱の中に引き込むもの)の機能を、マイクロコントローラーや様々なセンサーをつかって拡張する様子をお見せします。 内容は
・お金が預けられた際にカウントする。 ・預金総額/総合収支を音声でお知らせする。 ・Bluetooth LEで電話と接続し、デバイス間で情報を送る。
です。このトークの目的は、どのようにSwiftでハードウェアを扱うことを始めるか理解することです。自分のプロジェクトで試せるように、必要十分な土台を提供します。
猫ちゃん銀行です。
より便利に。
PINナンバーを入れると猫が出てきて、振り込まれる、新しい預金残高がアプリに表示される
ラズベリーパイが便利、Swiftつかえていろいろ繋げられる
ハードウェアデバッガーで様々なテスト、おかしくなったことを調べられる
センサーをラズパイにつなげる
プリコンパイルされたSwiftを使う
ラズパイ用のツール、Geanyでビルドコマンドをカスタマイズする
ハードウェアハックをはじめましょう
コインBankの電源をラズパイにつなげる
回路はループ
スイッチがあって、閉ループにしたり開ループにしたりできる。閉じていると電流が流れる
こういうことがしたいわけです。
回路構築にあたってはボードを使う、プレイグラウンドのようなものです
基本的に同じ形で動いていきます。緑に電流が流れる
コンポーネントと通信にあたってはGPIOPをラズパイでは使います。
ピンが示されています。スマートな預金口座でも使われているものです。
SwiftyGPIOを入れる
Swiftで通信できるように成る。CoinBankに電源供給するようにしましょう
リレー(スイッチ)コンポーネントを使う
Swiftコードを見ましょう
設定を見ていきましょう
最終的にリレーをオンにしたい場合はswitchファンクションを使う
ラズベリーパイではデジタル信号のみを扱う
信号は0か1でしかありません。
1を送ると3.3Vの電圧を送る、0は送らない
電力のONOFFが出来ました。
ではどうやってコインが置かれたことが分かるのか
PhotoRegisterを使うことが出来ます。コインが置かれると、光量が落ちる
でもアナログ信号です。ピンはデジタル信号しか取得できません。変換が必要です。
アナログ信号はどのような値でも良い
デジタル信号を受信するにはアナログ・デジタルコンバーターを使う
若干データのやり取りが違うので別の依存性を入れます、MCP3008に対応しているもの
そしてコードを入れる
貯金箱で光量を測って空いているかしまっているか検出する
預金された硬化の重さでいくら投入されたか検出する。荷重センサー
重くなって歪むと抵抗が変わる。
コンバーターにはいってきてロードセルと連動する用に作られている。
もっと理解するにはデータシートを見ると良い
回路や電子部品を扱う上で重要な部分、技術的説明のマニュアル
Cのサンプルコードも
ソフトウェアがダイレクトにステートに合わせて利用できるシグナルを送れるようにつながっていく
シグナルはリレーを使って、1に送られてくると3.3Vが流れる
アナログは
ではどう変換していけばいいか
1と0ばかりの数字列にしていく
全部01で表されたものがバイナリに成る
一回に送れるのは一つの1または0nomi
理解すべき情報の長さを決めておけば、供給される情報は12ビットとわかれば、
全体が分かる
24回ループしている
そうすると24ビットの情報ができる
2の補数の塊。
2の補数はバイナリの中でマイナスの数字を表すことができる。0なら正、1なら負を表す。この行でその調整を行っている。
すべて揃いました。テストのときです。
投げ込まれた重さで残高が変わっていく
認証されたユーザーだけ預金を許すということをします。
CentralとPeriferalという概念があります。
CentralはスキャンしてPeriferalはサーバーの役割
iOSはCentral、ラズパイがPeriferal
どのようなプラットフォームの上でも共通のBLEの挙動をするようにProfileがある
2つの依存性を加える必要があります。Bluetoothの話が長くなってしまうがOverViewだけ紹介します。
CoreBluetoothをつかってPeriferalが見つかると通信を開始する。
何を構築したか
これが最終製品概要図
電源ON/Offの回路を作った。異なる2つのタイプのデータが有る。
これを全部つないでブルートゥースコミュニケーションしている。
新しい分野かと思うがエキサイティングな時が来ていると思う。質問があれば来てください。