Arduino101 / tinyTILE BLE:マッチメイキングサングラス
コンポーネントと消耗品
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 4 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> |
| |||
|
アプリとオンラインサービス
> |
| |||
|
このプロジェクトについて
アプリを使用する代わりに、遠くからでも、社交の場で、話したい相手にアイコンタクトするための信号を送信できるとしたらどうでしょうか。私はデートを始める別の方法を提案していません。人間の相互作用の分野でBluetoothの新しい使用法を模索しています。
Intel Curieモジュールを中央および周辺のBLEデバイスとして機能するように割り当てることができることを知ったとき、私はすぐにこれらのメガネを作りたかったのです。 (ここからCurieBLEの詳細をご覧ください。)Adafruitのチュートリアルのおかげで、3DプリントLCDガラスのリファレンスフレームワークをすぐに利用できます。私がAdafruitチュートリアルに追加したのは、2つのメガネのBLEコントロール(スイッチコントロールではなく)で、一方がマスター、もう一方がスレーブであり、3Dプリントフレームを再設計しました。
このプロジェクトは、最初にArduino 101で開発され、tinyTILEでプロトタイプ化されました。どちらにも、IntelCurieモジュールが搭載されています。将来的にIntelCurieモジュールを入手できなくなる可能性がある場合でも、ここでの方法論が引き続き役立つことを願っています。 Bluetoothの中央機能と周辺機能を適用するさまざまな方法を想像できます。このトピックについての議論を楽しみにしています。
ステップ1-開発
2つのArduino101と2つのLEDを使用して、回路を開発し、コードをテストしました。最終回路は複雑であるため、すべてをはんだ付けする前にブレッドボードから始めることをお勧めします。
<図>周辺機器については、CurieBLEの例->周辺機器-> LEDのコードを使用して、HIGHとLOWを交換できます(最後のステップで理由を見つけてください)。セントラルのコードは、プロジェクトの最後に提供されています。これは、CurieBLE-> Central-> LEDcontrolとほぼ同じですが、LCD用に2本の線が追加されています。
<図>
<図>
TinyTILEは、ほぼ正確にArduino101のミニチュアです。主な中央の長方形はIntelCurieモジュールです。それらは同じコードでフラッシュすることができます。 Arduino101のピンは常に使いやすいですが、tinyTILEのサイズはウェアラブルにとってより魅力的です。私は最初にArduino101で開発し、すべてをtinyTILEに転送するのが好きです。ここでtinyTILEを使用した別のプロジェクトをチェックしてください。プロジェクトでフォームファクターが問題にならない場合は、Arduino101を自由に使用してください(ここの例を参照)。
<図>Arduino101をtinyTILEに変更し、LEDをLCDに変更したときに、各コンポーネントを段階的にテストします。
ステップ2-3Dプリント
Adafruitが提供するフレームに加えて、SolidWorksを使用してフレームを再設計しました。ここから基本的なデザインをダウンロードして、3Dプリントに適したソフトウェアで変更できます。私がデザインしたルックスが気に入ったら、下の添付ファイルで見つけることができます。なぜハート型と宇宙をデザインしたのですか?説明のためにビデオを見て、あなたの想像力を使ってください。
あなたの顔により良くフィットするようにデザインを変更することができます。小さな鼻をつかむのは少し難しいと思いました。最近、顔の3Dスキャンを実行し、メガネをカスタマイズしている会社がいくつかあります。これはすばらしいことです。
<図>使用したAdafruitの3DプリンターRuizBrothersは、私のものよりも優れているに違いないと思います。出にくい場所にたくさんのサポート素材を印刷していたからです。 UXデザイナーとして、私は3Dプリンターの不便さについて多くのことを言う必要があります。水溶性のサポート材、サポート材を必要としないプリンター、液体ベース/光固化の3Dプリンターが欲しいのですが。
ステップ3-組み立て
配線、はんだ付け、取り付けに関するAdafruitのチュートリアルのアドバイスは非常に優れています。あなたはそれをチェックする必要があります。 tinyTILEとボタンを追加するだけで済みました。ワイヤーを適切な長さに切断するように注意してください。
<図>
ステップ4-完了して楽しんでください!
電源がオンになると、LCDに電圧が印加され、濃いサングラスが保たれます。マスターのボタンを押すと、マスターの電圧がオフになり、同時にスレーブの電圧がBluetooth経由でオフになり、両方のメガネが透明になります。
<図> <図><図>
2つのグラスは、BLEの範囲内にある限り、かなり離れた場所で制御できます。私は家でテストしました。心臓は少なくとも15歩離れた宇宙の注意を引くことができます。
ボタンではなく、ジェスチャー、うなずき、または一致するハートビートを使用することを想像してみてください。
Heart(master =center): "私はあなたの洗練された心が好きです<3" Universe(slave =Peripheral): "私はあなたに会います。話しましょう。"
コード
- 中央のボタンコントロール
中央の Arduino のボタンコントロール
これは、CurieBLEの例とほぼ同じです。/ * * Copyright(c)2016 IntelCorporation。全著作権所有。 *ライセンス条項については、このファイルの下部を参照してください。 * // * *スケッチ:LedControl.ino * *説明:*これは、周辺機器からの*特定の特性を持つ特定のサービスを探す中央スケッチです。検出に成功すると、*ボタンの状態を読み取り、その値を* PeripheralCharacteristicに書き込みます。 * *注:* *-期待される周辺機器サービス:19b10000-e8f2-537e-4f6c-d104768a1214 *-期待される周辺機器特性:19b10001-e8f2-537e-4f6c-d104768a1214 *-期待される周辺機器スケッチ:* * /#includeにご連絡ください。// buttonconstintの変数buttonPin =3; int oldButtonState =LOW; const int ledPin =5; // LEDに使用するピンvoidsetup(){Serial.begin(9600); //ボタンピンを入力として構成しますpinMode(buttonPin、INPUT); pinMode(ledPin、OUTPUT); // BLEハードウェアを初期化しますBLE.begin(); Serial.println( "BLE Central-LED制御"); //周辺機器のスキャンを開始しますBLE.scanForUuid( "19b10000-e8f2-537e-4f6c-d104768a1214");} void loop(){//周辺機器が検出されたかどうかを確認しますBLEDeviceperipheral =BLE.available(); if(peripheral){//周辺機器を検出し、アドレス、ローカル名、およびアドバタイズされたサービスを出力しますSerial.print( "Found"); Serial.print(peripheral.address()); Serial.print( "'"); Serial.print(peripheral.localName()); Serial.print( "'"); Serial.print(peripheral.advertisedServiceUuid()); Serial.println(); //スキャンを停止しますBLE.stopScan(); controlLed(peripheral); //周辺機器が切断され、スキャンを再開しますBLE.scanForUuid( "19b10000-e8f2-537e-4f6c-d104768a1214"); }} void controlLed(BLEDeviceペリフェラル){//ペリフェラルに接続Serial.println( "Connecting ..."); if(peripheral.connect()){Serial.println( "Connected"); } else {Serial.println( "接続に失敗しました!");戻る; } //周辺機器の属性を検出Serial.println( "属性の検出..."); if(peripheral.discoverAttributes()){Serial.println( "属性が検出されました"); } else {Serial.println( "属性の検出に失敗しました!"); Peripheral.disconnect();戻る; } // LED特性を取得BLECharacteristicledCharacteristic =Peripheral.characteristic( "19b10001-e8f2-537e-4f6c-d104768a1214"); if(!ledCharacteristic){Serial.println( "周辺機器にはLED特性がありません!"); Peripheral.disconnect();戻る; } else if(!ledCharacteristic.canWrite()){Serial.println( "Peripheralには書き込み可能なLED特性がありません!"); Peripheral.disconnect();戻る; } while(peripheral.connected()){//周辺機器が接続されている間//ボタンピンを読み取るint buttonState =digitalRead(buttonPin); if(oldButtonState!=buttonState){//ボタンが変更されましたoldButtonState =buttonState; if(buttonState){Serial.println( "ボタンが押されました"); //ボタンが押されたら、0x01を書き込んでLEDをオンにしますledCharacteristic.writeByte(0x01); digitalWrite(ledPin、LOW); } else {Serial.println( "ボタンが解放されました"); //ボタンが離されたら、0x00を書き込んでledCharacteristic.writeByte(0x00);のLEDをオンにします。 digitalWrite(ledPin、HIGH); }}} Serial.println( "Peripheral connected");} / * Arduino BLEセントラルLED制御の例Copyright(c)2016 ArduinoLLC。大丈夫です。このライブラリはフリーソフトウェアです。フリーソフトウェアファウンデーションによって公開されているGNULesser General Public Licenseの条件の下で、再配布および/または変更することができます。ライセンスのバージョン2.1、または(オプションで)それ以降のバージョン。このライブラリは、役立つことを期待して配布されていますが、いかなる保証もありません。商品性または特定目的への適合性の黙示の保証もありません。詳細については、GNU劣等一般公衆利用許諾契約書を参照してください。このライブラリと一緒にGNU劣等一般公衆利用許諾契約書のコピーを受け取っているはずです。そうでない場合は、Free Software Foundation、Inc.、51 Franklin St、Fifth Floor、Boston、MA 02110-1301 USA * /
カスタムパーツとエンクロージャー
回路図
Centralは、ボタンにピン3を使用し、LCDにピン5を使用します。周辺機器はLCDにピン6を使用します。 製造プロセス