フォースを使用してください...またはあなたの脳波?
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> |
|
アプリとオンラインサービス
|
このプロジェクトについて
子供の頃、私はいつも思考で物を動かす、飛ぶなどの特別な能力を持ちたいと思っていました。もちろん「心の力」で物を動かそうとしましたが、成功しませんでした。そうですね、私はそうです。スターウォーズの大ファンですが、私は電子機器やプログラミングも好きなので、これら2つを組み合わせて素晴らしいプロジェクトを構築してみませんか?
すべてのパーツ、コード、ライブラリは、ハードウェアとソフトウェアのセクションにリンクがあります。
<図> <図> <図> <図>主なコンセプト さまざまな脳波を使用することで、ユーザーはロボット、PCのカーソル、または自宅のライトのオン/オフを制御でき、マイクロコントローラー(Particle Photon)はユーザーの脳波に関するオンライン分析を作成します。 これは、病気やストレスや眠そうな声明を検出するのに最適な方法です。 これは、人々がより良い生活を送るのを助け、感情をコントロールする方法を学び、常に幸せになる方法を学ぶためにも使用できます。人間の脳のバランスは、健康であるために、眠り、考え、動く必要があります...パーティクルフォトンとパーティクルの創設者によって作成されたウェブサーバーを使用して、人々が自然な脳のバランスを見つけるのを助けることができます。子供の頃の夢が私をこのプロジェクトに導いてくれました。私がそれを成し遂げたことをとてもうれしく思います。
しかし、スターウォーズとフォースを少し離れると、このデバイスは怠惰な人々やファンのためだけでなく、毎日障害を持って戦っている人々に能力を還元するために作られています。 私が設計したロボットは車椅子と同じように機能します。ホームオートメーションシステムは、ユーザーが移動できない場合でも、ライトやテレビを制御するのに役立ちます。 PCコントローラーモードは、完全に健康な人にも役立ちます。私たちは皆、コンピューターゲームをプレイしたり、考えだけを使ってインターネットをサーフィンしたりしたいと思っています。
プロジェクトのストーリーに関するこの短い紹介ビデオをご覧ください:
自分で作成しますか? ここでは、このプロジェクトで知っておくべきことをすべて説明します。コード、回路図、およびこの詳細な手順を共有しているので、はんだごてをウォームアップします…
プロジェクトの背後にある科学
脳波記録(EEG)は、脳の電気的活動を記録するための電気生理学的モニタリング方法です。通常は非侵襲的で、電極は頭皮に沿って配置されますが、特定の用途では侵襲性電極が使用されることもあります。 EEGは、脳のニューロン内のイオン電流に起因する電圧変動を測定します。診断アプリケーションは通常、EEGのスペクトルコンテンツ、つまりEEG信号で観察できる神経振動(一般に「脳波」と呼ばれる)のタイプに焦点を当てています。 (ウィキペディアに感謝します)しかし、2つの非常に正確な値を使用します
<図>- アルファは、7Hzから14Hzの周波数範囲です。目を閉じてリラックスすると現れ、目を開けたり精神的に運動したりすると弱まります。
- ベータは、15Hzから約30Hzの周波数範囲です。複数の周波数が変化する低振幅のベータは、多くの場合、活発な、忙しい、または不安な思考と活発な集中に関連しています。
どのように機能しますか?
このプロジェクトを実現するために、Arduino Mega、ArduinoLeonardo、UNO、ParticlePhotonの4つのマイクロコントローラーを使用しました。 Megaは、ヘッドセットから信号を受信し、分析してから他のデバイスにコマンドを転送するプロジェクトの頭脳です。 Webサーバーを作成するPhotonにすべてのデータを転送します。 LeonardoはPC上のマウスを制御し、UnoはIR(赤外線信号)を受信してロボットを制御するために使用されます。私が言ったように、デバイスは3つの異なるものを制御することができます(または他のものをプログラムしたい場合はそれ以上)。次に、これら3つの異なるものをチャネルと呼びます。目を閉じると、デバイスはこれらのチャネルを切り替えます:
- 目を閉じて1〜2秒:ホームオートメーション機能に切り替えます
- 目を閉じて2〜4秒:ロボットコントローラーモードに切り替えます
- 目を閉じて1〜6秒:マウスコントローラモードに切り替えます
私はリレーを使用して、テレビ、電球、壁のコンセントなど、何でも接続できるホームオートメーション機能を作成しました。
ワイヤレスヘッドセット:
<図> <図> <図>私はハッキングおもちゃが大好きなので、脳波(注意、瞑想)に応じて耳を動かすことができるネコミミと呼ばれる脳波感知おもちゃを購入しました。これは私が今まで見た中で最も役に立たないおもちゃですが、脳波を読み取り、ノイズをフィルタリングし、非常に良い信号を出す小さなチップの中にあります。 UART(シリアル)インターフェースで動作するため、ハッキングによってArduinosを使用して脳波を読み取ることができます。このヘッドセットの役割は、脳波を中央サーバーにワイヤレスで送信することです。誰も彼の頭にケーブルを付けたくないので、私はこの快適でユーザーフレンドリーなヘッドセットを作成しました。
下に移動して、分解してワイヤレスBluetoothヘッドセットを作成する方法を確認してください。
使い方は?
2つの測定可能なeSense値(NeuroSky値)があります。0から100までの瞑想と0から100までの注意です。集中力が高いほど、注意値は高くなります。リラックスすればするほど、瞑想のレベルは高くなります。
システムは思考で機能しており、集中したりリラックスしたりする方法を学ぶだけで他に何も必要ありません。 1週間の実験の後、「注意」値を非常に正確に制御することができました。私は意識的に注意レベルを約15、または39、65、90に設定できます。あなたは自分の価値観を制御する方法を見つけなければなりません。私たちは皆異なっています。それは感情と非常にうまく機能しました。愛、友情、怒り、恐れについて考えると、価値観に非常に良いコントラストが生まれます。
システムの電源を入れるには、マイクロUSB を接続します ArduinoLeonardoのケーブル。これにより、(必要に応じて)マウスも制御され、システムに5ボルトと500mAが確保されます。
ホームオートメーションシステムの制御
<図>ホームオートメーションモードに切り替えた場合は、注意レベルを70より高くして、最初のリレーをオンにします 、瞑想レベルを70より高くして、2番目のリレーをオンにします 、および両方を70より上に増やして、3番目のリレーをオンにします 。それは少しトリッキーですが、いくつかのマインドトレーニングの後で不可能ではありません。すでにオンになっている場合は、同じコマンドを使用してオフにします(したがって、オンになっている場合は、もう一度70に到達してオフにします)。システムが完成したら、高電圧デバイス(ライト、テレビ、PC、クーラーファン、必要なもの)をリレーモジュールに接続できます。
マウスの制御
<図>カーソルは感情で制御されます。注意レベルが左に25移動未満の場合 、 25から50の間にある場合は右に移動 、 50〜75の場合は上に移動 75から100の間で下に移動の場合 。瞑想レベルを上げることでクリックできます。前に言ったように、注意レベルは感情で簡単に制御できます(私にとって)。
ロボットの制御
<図>ロボットには、停止、左折、前進の3つの異なるステートメントしかありません。 なぜ2つの移動オプションしかないのですか?これらの2つの方向は、ロボットを好きな場所に移動させるのに十分だからです。 瞑想レベルを使ってスピン ロボットを使って、移動したい方向に到達したら、ロボットを停止し、注意レベルで前進します 。ロボットを制御するためのより良い方法であり、注意/瞑想の値をあまりうまく制御できない初心者でも、このロボットで遊ぶことができます。
私の計画 <図> <図>
これは私の計画についての古い写真ですが、成功したので、結果に非常に満足しています。 ヘッドセットはBT(Bluetooth)信号を送信します 着信バイトを分析し、ユーザーの考えに応じてさまざまな機能を制御するArduinoMegaに。この大量のデータを送信するための最良の方法を見つけるのは非常に困難でしたが、私はWiFiではなくBluetoothを選択しました。最初はParticlePhotonをデータ送信機として使用したかったのですが、その小さな男がWebサーバーの作成においてより良い役割を果たしました。これは、プロジェクト全体で最大の変更でした。 (写真で実際の計画を見ることができます)。 自家製のArduinoモジュールを使用しました 、私は自分の回路を設計するのが大好きだからです。必要に応じて、これらのモジュールをオンラインで購入するか、私と一緒に構築することができます。
半年間の学習と実験 <図> <図>
私はこのプロジェクトにたくさん取り組みました。そうです、私はほぼ半年前に始めましたが、Photonによって物事は加速しました。ダッシュボードの使い方はとても簡単でした。ちなみに、インターネット上には脳波のおもちゃをハックする方法のチュートリアルがたくさんあり、少し役に立ちましたが、追加の機能はありませんでした。そこで、このネコミミのおもちゃをハックして、自分の創造性を活かして、LEDを点滅させるよりもはるかに多くの機能を備えたこのデバイスを作成することにしました。楽しんでいただければ幸いです!
始めましょう!
ネコミミのおもちゃをハッキングする <図> <図> <図> <図> <図> <図>
このEEG玩具を改造して、Bluetooth経由でデータを送信したいので、最初にケースを分解します。ネジはステッカーの下にあります。ステッカーをはがします そして背中 デバイスの、そしてあなたは小さな回路の中に見つけるでしょう。主回路の下にあるのはNeuroskyTGAMチップです。これは4つのヘッダーピンでメインマイクロコントローラーボードに接続されているため、はんだ付け用の鉄を取り、この回路を取り外します 気をつけて。次に、3本のワイヤをGNDピンとVCCピンおよびTピンにはんだ付けします。 Tピンは57600ボーレートの送信機ピンであり、これはデータパケットをマイクロコントローラーに送信しますが、これをHC-06スレーブBTモジュールに直接接続しました 。 HC-06は9600ボーレートに設定されていますが、この問題を修正することを心配しないでください。 3本のワイヤーをにはんだ付けした場合は、独自の充電式電源を組み込むことができます。 500mAh Li-Ionバッテリー、USB充電器回路、5vステップアップ回路、2つの抵抗器(100オームと200オーム)を使用して、チップとBluetoothモジュールに完全な3.4ボルトの電源を確保しました。ヘッドセットに必要な回路。回路が完成したら、Bluetoothモジュールを構成します。
チップについて:
<図>Neurosky ThinkGear AMは、シリアルインターフェースを介してデータをフィルタリング、増幅、送信するように設計されています。詳細はこちら。
回路図/電子機器
以下の手順と写真に従って、独自のワイヤレスEEGヘッドセットを作成してください。
<図> <図> <図> <図> <図> <図> <図>500mAhのリチウムイオン電池、安定した電圧を生成するための5v電圧ステップアップモジュール、そして安定した3.3ボルトに電圧を下げるための100オームと200オームの抵抗が必要です。電源を入れてBluetoothモジュールにデータを送信するために、メスのヘッダーピンをはんだ付けしました。
最も重要な部分は、Bluetoothモジュールの「T」ピンを「RX」に接続することです。 これにより、私たちのプロジェクトが実現します。
Bluetoothモジュールの構成 <図>
HC-06:最初に「HC_06_Bluetooth」という名前のスケッチをロードします 次に、回路図に示すように、BluetoothモジュールをArduinoUNOに接続します。 Artronixチームのウェブサイトでこの回路図を見つけて、役に立ったようです。
void setup(){//ハードウェアを起動しますserial.Serial.begin(9600); //デフォルトのHC-06ボーratedelay(1000); Serial.print( "AT"); delay(1000); Serial.print( "AT + VERSION"); delay(1000); Serial.print( "AT + PIN "); // passworddelay(1000); Serial.print( "AT + BAUD7");を削除します//ボーレートを576000に設定します-例:Necomimi dafaultdelay(1000); Serial.begin(57600); // delay(1000);} void loop(){}
Arduino IDEでシリアルモニターを開き、ArduinoがBTモジュールを構成するまで待ちます。これで、Bluetoothモジュールが57600ボーレートに設定されました 。このハッキングされたBluetooth NecomimiおもちゃはすべてのNeuroskyアプリと互換性があるため、多くのBCI(Brain Computer Interface)アプリを試すことができます。
これらのアプリを使用して、注意や瞑想などの脳波や価値観を制御する方法を学ぶことができます。クールなゲームをたくさん試すことができますが、これらのアプリをお勧めします(PC、iOS、Androidと互換性があります):
http://store.neurosky.com/products/brainwave-visualizer-android
http://store.neurosky.com/products/eeg-analyzer
http://store.neurosky.com/collections/android/products/blink-camera-android
次に、「HC_05_Bluetooth」を使用します 以前と同じ方法でArduinoにロードします。 HC-05の「EN」ピンをArduinoの3v3に接続します。 HC-06モジュールのアドレスをコードに記述する必要があります。私のようなAndroidスマートフォンでBTモジュールのアドレスを確認してください。コード内の「:」(ダブルドット)を「、」コンマに置き換えます。
そして、コードのアドレスを変更する必要があります:
20:15:09:15:17:82 ==> 2015,09,151782 このようにして、HC-05モジュールはアドレスを認識できます。必要ではないので、「:」をいくつか残してください。
// HC-05 configurationvoid setup(){//ハードウェアシリアルを開始します。 Serial.begin(9600); //デフォルトのHC-05ボーレートdelay(1000); Serial.print( "AT"); delay(1000); Serial.print( "AT + VERSION"); delay(1000); Serial.println( "AT + ROLE =1"); // HC-05をマスターモードに設定delay(1000); Serial.println( "AT + LINK =" copy here your adress "); //モジュールは自動的に接続する必要がありますdelay(1000); Serial.print(" AT + UART =57600,1,0 "); //設定576000にボーレートSerial.begin(57600); // delay(1000);} void loop(){}
最後に、2つのモジュールが相互に接続する必要があります。問題がある場合は、このリンクをクリックして詳細をご覧ください。
遠隔操作ロボット
この安価なロボットを作るために、私は 38kHzIRtechnology を使用しました 、それはテレビのリモコンで使用されます。ロボット用にAmazonachassisから購入しました。 IR受信機は古いテレビから回収され、Arduinoもアマゾンから回収されています。パーツへのリンクを追加しました(ハードウェアのセクションを参照してください)。
モータードライバー回路
次のパーツが必要です:
- 2つのネジ留め式端子
- L293D IC
- 3ヘッダーピン
- 9ヘッダーピン(90度)
- 1k抵抗
- 赤色LED
- ワイヤー
- PCBボード
私はいくつかの銅線を使用し、回路図に従ってICのピンをヘッダーピンに接続しました。どのピンがどのヘッダーピンに接続されているかは関係ありません。接続したのは覚えておいてください。 LEDは抵抗器と直列に接続され、5vVCCと並列に接続されています。
シャーシを組み立てる
<図> <図>このステップは非常に簡単で、ドライバーといくつかのクラフトスキルを使用して、5分でフレームを作成しました。これが難しい部分になったら、モータードライバー回路を構築する必要があります。モーターを制御するには2つのモーターを駆動できるL293DICを選択します。回路を構築するための回路図を見てください。
パーツをArduinoに接続します
ジャンパー線を使用して、センサーとモータードライバーをArduinoに接続しました。
Arduinoピン==>モータードライバー
4 ==> 15
5 ==> 10
6 ==> 7
7 ==> 2
VIN ==> 8
5v ==> 1、9、16
GND ==> 4、5、13、12
したがって、L293Dモジュールの回路図を見て、ここで書いたように、そのピンをArduinoUNOに接続します。 5vピン Arduinoのは 1、9、16ピンに接続する必要があります ICのモータードライバー機能を有効にします。次に、最後にネジ端子を使用してモーターに電力を供給します。
<図> <図> <図> <図>
コードを書く…
IRremoteライブラリを使用して、38kHzの赤外線信号を読み取り、デコードして、ロボットを動かすコードを作成しました。 (コードセクションでライブラリをダウンロードします)。
<図>コードに説明を追加しましたが、実際には、メインサーバーからのIR信号をデコードし、ユーザーの希望に応じて、ロボットを前方に移動したり左に曲がったりするよりもモーターを移動します。コードをダウンロードします: "Robot_Code" 。これをArduinoにロードすると、ロボットが完成します。
メインサーバー(Arduino Mega、Leonardo、Photon) <図>
サーバーは、ワイヤレスヘッドセットから着信データパケットを読み取ります。構成済みのBTモジュールを使用して、ヘッドセットとサーバー間の接続を確認します。 Arduino Megaは回路の頭脳であり、Bluetooth、赤外線送信機LED、Webサーバー、マウスコントローラーなどすべてがこのマイクロコントローラーに接続されています。コードは少し複雑ですが、理解するために説明を追加しました。
ケース
<図> <図> <図> <図> <図>シンプルですが見栄えがします。 18x15 cmのプレートを2枚カットし、紙やすりで端を滑らかにしました。いくつかのネジを使用して、それらを相互に接続しました。
<図> <図> <図>リレー回路
次のパーツが必要です:
- 2n2222トランジスタ(3 PCS)
- ゲルマニウムダイオード(3 PCS)
- 330オームの抵抗器(3 PCS)
- 1kオーム抵抗器(3 PCS)
- 5vリレー(3 PCS)
- フックアップワイヤー
- ヘッダーピン
- PCBボード
1000語以上の価値のある画像なので、PCB上の部品をどのように接続するかを書く代わりに、回路図を見てください。「信号」ピンがArduinoから信号を受信すると、リレーがオンになります。トランジスタは信号を増幅して、リレーに十分な電力を供給します。 37-38-39ピンを使用して、各リレーのHIGH-LOWレベルを制御します。
ケースに部品を取り付ける
<図> <図> <図>プレキシガラスケースに部品を取り付けるために、両面白いテープを使用しました。これは、ケースの回路をかなり強力に保持します。
サーバー-回路
このサーバーはソフトウェアベースであるため、回路をそれほど難しくしません。 (概略ダウナーを参照)。マイクロコントローラの電源を入れて、それらを接続するだけです。 IR LEDはピンD3に接続され、リレーは37-38-39に接続されています。 Arduino MegaのD16はPhotonのRXに行き、D18はLeonardoのRXに行きます。
<図> <図> <図>ロボットとの接続
<図>
IR LEDはデジタルピンD3に接続されており、IRremoteライブラリを使用してロボットにコードを送信します。とても簡単です。 IRコードは、ロボットのコードと同じである必要があります。完了したと思われる場合は、カメラでテストできます。写真では赤外線が紫色に見え、カメラが赤外線を検出できます。このトリックは常に機能します。
コード
「Arduino_Mega_Server」を使用します ソフトウェア部分のコード。
<図>コードを書いている間、私は多くの苦しみを味わいました。 3つの異なるマイクロコントローラーをプログラムする必要があるので、それは大きな課題でした。 IRremote、Brain、SofwareSerial、Mouseライブラリを使用しました。 (ソフトウェア部分のダウンロードリンクを参照してください)。しかし、これでコードが完成して機能するので、マイクロコントローラーにアップロードするだけです。 .inoファイルをダウンロードするか、IDEにコードをコピーして貼り付けて使用します。パーティクルフォトンへのコードは、ブラウザIDEを介してアップロードする必要があります。このレジスタをパーティクルビルドに登録します。そして、ラップトップをマイクロコントローラーに接続します。これがほぼ自動的に行われたことに本当に驚きました。デバイスID番号を追加しただけです。
<図> <図> <図>コードをロードする前に、RX / TXピンに何も接続されていないことを確認してください。したがって、BLuetoothモジュールをMegaから切断し、MegaをLeonardoとPhotonから切断します。
マウスコントローラー <図>
Webサーバー
プロジェクトにIoT(Internet of Things)機能を追加したかったので、オンラインデータロガーを作成しました。 パーティクルフォトンを使用します。デバイスで作成したものに応じて、Photonはパーソナルサーバーを作成し、データをクラウドに書き込みます。
これは最初は怖いように思えるかもしれませんが、ストレスがあるかどうかを検出できると想像してください(注意レベルは急速に増減します )または眠るべき場合(瞑想レベルは常に80より高い) 。このウェブサーバーは、より健康的な生活を送るのに役立つ可能性があります。
<図>パーティクルには、「Particle.publish();」を使用してあらゆる種類のデータを公開できるオンラインダッシュボードもあります。構文。ダッシュボードの開発者には、大きな「ありがとう」を言わなければなりません。彼らは私たちのために多くの時間を節約しました。
ブラウザでコードを記述しますか?
Webページにコードを書くのは面白かったですが、通常のIDEと同じように機能しました。コードはワイヤレスでアップロードされました。このマイクロコントローラーは、すべての人のツールボックスで非常に便利なツールになります。
<図> <図>
うまくいけば、ダッシュボードはどういうわけかこのように見えます。注意と瞑想を表示し、ダッシュボードのURLでいつでも確認できます。ダッシュボードの詳細については、ここをクリックしてください。
心の波でロボットだけを制御したい人のためのクイックアップグレード:
プロジェクト全体をビルドするのではなく、マインドウェーブ制御のロボットだけをビルドしたいですか? 初心者でも心配しないでください。 Arduino MiniProとIRLED、そしてもちろんロボットを制御するためのヘッドセットが必要な説明付きのコードを作成しました。私の読者の多くがシンプルで楽しい週末のプロジェクトを作りたいと思っていることを知っているので、ここに説明とコードがあります。
<図>「RobotControlllerHeadset」を使用します ソフトウェアセクションのコード。 IRLEDをMiniPro(またはArduino UNO)のD3ピンに接続し、NeuroSkyチップのTピンを RXピンに接続します Arduinoの。 3.3または5ボルトで電源を入れれば、完了です。したがって、ロボットを構築してから、ヘッドセットで次のコードを使用します。
#include #include #include IRsend irsend; Brain brain(Serial); const int ledPin =3;長い間隔=500; long previousMillis =0; int ledState =LOW; int medValue; void setup(){// LEDピンを設定します。 pinMode(ledPin、OUTPUT); //ハードウェアシリアルを開始します。 Serial.begin(57600);} void loop(){//約1秒に1回のパケットを期待します。 if(brain.update()){Serial.println(brain.readCSV()); //注意は0から100まで実行されます。medValue=brain.readMeditation(); } //信号があることを確認します。 if(brain.readSignalQuality()==0){// LEDに信号を送信します。 if(medValue> 65){irsend.sendNEC(0xFF10EF、32); delay(40); } if(brain.readAttention()> 65){irsend.sendNEC(0xFF18E7、32); delay(40); }}}
IoTジェダイになる(テスト)
ここで説明したことをすべて行った後、残っているのは1つだけです。試してみてください 。心の力を使って、フォースを使って 脳内のニューロンの 小さなロボットを動かし、家を制御し、思考ですべてを制御します...
これで、本物のIoT Jediになります!
<図>このデバイスには多くの機能があり、遊ぶのはとても楽しいです。しかし、前に言ったように、それはおもちゃだけではありません 、生物学と電子工学を特徴として、私たちは毎日障害者と戦う人々が彼らの自然な能力を取り戻すのを助けるかもしれない装置を作りました。
ロボットは簡単に制御でき、リレーも大きな問題ではありません。 マウスを制御するために注意レベルを制御する方法のみを学ぶ必要があります。 写真では、脳波でアプリを終了しようとしています。より多くの練習はより良い経験を保証します。
ご覧いただきありがとうございます!
あなたが私のプロジェクトを気に入ってくれたことを心から願っています。コメントにあなたの意見を書いてください。デバイスについてのビデオを作りたかったのですが、コーディングが大変だったので、短い映画を作る時間がありませんでしたが、すぐにYouTubeチャンネルで公開し、このプロジェクトのプレゼンテーションも更新します。
<図>フォースがいつもあなたと一緒にいてくれますように!
コード
- 粒子フォトンコード
- ロボットコントローラーコード
- HC_05_Bluetooth.ino
- マウスコントローラコード
- Arduino_Mega_Server
- RobotControllerHeadset.ino
パーティクルフォトンコード Arduino
これをブラウザIDEにコピーしてから、ParticlePhotonにアップロードします。ダッシュボードを開いて、結果をリアルタイムで確認します。//これは、「フォースを使用しますか?それとも脳波を使用しますか?」のWebサーバーのコードです。プロジェクト//ユーザーの脳波瞑想と注意レベルに関する統計を作成します//パーティクルの完全に機能するダッシュボードに感謝しますコードは非常に単純ですintatt; int med; int function; void setup(){Serial.begin (9600); } void loop(){//データを公開するSpark.publish( "Attention"、(att)+ "%"); delay(2000); Spark.publish( "瞑想"、(med)+ "%"); delay(2000); Spark.publish( "最後の関数"、(関数)+ ""); delay(2000); if(Serial.available> 0){char c =Serial.read(); } delay(10); switch(c){ケース 'a':att =10;壊す;ケース 'b':att =20;壊す;ケース 'c':att =30;壊す;ケース「d」:att =40;壊す;ケース 'e':att =50;壊す;ケース 'f':att =60;壊す;ケース 'g':att =70;壊す;ケース 'h':att =80;壊す;ケース「i」:att =90;壊す;ケース 'j':att =100;壊す;ケース「k」:med =10;壊す;ケース 'l':med =20;壊す;ケース 'm':med =30;壊す;ケース 'n':med =40;壊す;ケース「o」:med =50;壊す;ケース 'p':med =60;壊す;ケース 'q':med =70;壊す;ケース 'r':med =80;壊す;ケース 's':med =90;壊す;ケース 't':med =100;壊す; case'x ':function ="Home Automation" break;ケース「y」:function ="ロボットコントローラモード" break; case'z ':function ="Mouse Controller" break; }}
ロボットコントローラーコード Arduino
このコードはロボットを制御します。これをArduinoUNOにアップロードします。必要に応じてIRコードを変更できます。//「フォースまたは脳波を使用しますか?」に使用されます。 project#includeint IRpin =3; IRrecv irrecv(IRpin); decode_results results; int motor_pin1 =4; int motor_pin2 =5; int motor_pin3 =6; int motor_pin4 =7; void setup(){irrecv.enableIRIn (); pinMode(motor_pin1、OUTPUT); pinMode(motor_pin2、OUTPUT); pinMode(motor_pin3、OUTPUT); pinMode(motor_pin4、OUTPUT); Serial.begin(9600);} void loop(){if(irrecv.decode(&results)){irrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF18E7)//このコードを取得した場合は先に進みます{digitalWrite(motor_pin1、LOW); digitalWrite(motor_pin2、HIGH); digitalWrite(motor_pin3、LOW); digitalWrite(motor_pin4、HIGH); {Serial.println( "Go Forward!"); }} if(irrecv.decode(&results)){irrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF4AB5)//このコードを取得した場合は逆戻りします{digitalWrite(motor_pin1、HIGH); digitalWrite(motor_pin2、LOW); digitalWrite(motor_pin3、HIGH); digitalWrite(motor_pin4、LOW); {Serial.println( "Go Backward!"); }} if(irrecv.decode(&results)){irrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF10EF)//このコードを取得すると左に曲がります{digitalWrite(motor_pin1、HIGH); digitalWrite(motor_pin2、LOW); digitalWrite(motor_pin3、LOW); digitalWrite(motor_pin4、HIGH); {Serial.println( "左に曲がってください!"); }} if(irrecv.decode(&results)){irrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF5AA5)//このコードを取得すると右に曲がります{digitalWrite(motor_pin1、LOW); digitalWrite(motor_pin2、HIGH); digitalWrite(motor_pin3、HIGH); digitalWrite(motor_pin4、LOW); {Serial.println( "Turn Right!"); }} if(irrecv.decode(&results)){irrecv.resume(); //次の値を受け取ります} if(results.value ==0xFF38C7)//このコードを取得した場合は停止します{digitalWrite(motor_pin1、LOW); digitalWrite(motor_pin2、LOW); digitalWrite(motor_pin3、LOW); digitalWrite(motor_pin4、LOW); {Serial.println( "Stop!"); }}}
HC_05_Bluetooth.ino Arduino
HC-05モジュールを構成します。// HC-05 configurationvoid setup(){//ハードウェアシリアルを開始します。 Serial.begin(9600); //デフォルトのHC-05ボーレートdelay(1000); Serial.print( "AT"); delay(1000); Serial.print( "AT + VERSION"); delay(1000); Serial.println( "AT + ROLE =1"); // HC-05をマスターモードに設定delay(1000); Serial.println( "AT + PAIR =ここにあなたの住所をコピーしてください、9"); //これで、モジュールは自動的にdelay(1000);に接続する必要があります。 Serial.print( "AT + BAUD7"); //ボーレートを576000に設定します-例:Necomimi dafault Serial.begin(57600); // delay(1000);} void loop(){}
マウスコントローラーコード Arduino
これをArduinoLeonardoにアップロードします。 ArduinoMegaからの信号に応じてコンピュータのカーソルを制御します。//フォースを使用するためのImetsTamasによるコード...またはあなたの脳波? project //マウスカーソルをシリアル信号に移動します#includevoid setup(){Serial.begin(9600); //マウス制御を初期化します:Mouse.begin();} void loop(){//シリアル入力を使用してマウスを制御します:if(Serial.available()> 0){char inByte =Serial.read(); switch(inByte){case'u '://マウスを上に移動Mouse.move(0、-8);壊す; case'd '://マウスを下に移動Mouse.move(0、8);壊す; case'l '://マウスを左に移動Mouse.move(-8、0);壊す; case'r '://マウスを右に移動Mouse.move(8、0);壊す; case'c '://マウスの左クリックを実行Mouse.click(MOUSE_LEFT);壊す; }}}
Arduino_Mega_Server Arduino
脳波の分析、すべての制御.../ * 2016年2月2日ImetsTamsによる「AToolfor theMind」プロジェクトのArduinoメガコードこのコードは、脳波センサーからの着信Bluetoothシリアル信号を分析および整理して送信します自由に編集できますが、クレジットを忘れないでください。家族の名前の文字を使用した変数値については、必要に応じて変更できます。IMETS詳細についてはhttp://www.instructables.com/member/を参照してください。 Imetomi /またはhttps://www.hackster.io/Imetomi* /#include//ライブラリを含める#include //ライブラリを含める#include // includeライブラリ#include //ライブラリを含める#include int led =13; int medled =50; //瞑想レベルを示すLEDint attled =51; //注意レベルを示すLEDが点滅=52; char robot; IRsend irsend; // IRはピン3SoftwareSerialマウス(18、19);につながった// RX、TXこれはLeaonardo BoardSoftwareSerial webserver(16、15);に移動します。 //パーティクルフォトンに移動してWebサーバーを作成しますLiquidCrystallcd(12、11、5、4、3、2); //インターフェイスpinsBrainbrain(Serial);の番号でライブラリを初期化します// Brainwavesは、Bluetoothモジュールの助けを借りてハードウェアserialint closeeye =(brain.readLowAlpha());を介して読み取られます。 //点滅する注意を検出する=(brain.readAttention()); //注意を読み取るintbrainsignal =(brain.readSignalQuality()); //信号品質を読み取るintmeditation =(brain.readMeditation()); //瞑想を検出するintalpha =(brain.readHighAlpha()); //閉じた目を検出するにはintlightatt; int lightmed; int flashlength; int prevsignal =0; void setup(){//ここでメイン設定を設定します:mouse.begin(9600); //ボーレートを設定しますwebserver.begin(9600); //ボーレートを設定しますSerial.begin(57600); //ボーレートを設定します(57600はNecomimiのビット/秒レートです)lcd.begin(16、2); // LCD画面を開始しますpinMode(led、OUTPUT); // LEDとリレーのピンモードを設定しますpinMode(attled、OUTPUT); // LEDとリレーのピンモードを設定しますpinMode(medled、OUTPUT); // LEDとリレーのピンモードを設定しますpinMode(blinkled、OUTPUT); // LEDとリレーのピンモードを設定しますpinMode(37、OUTPUT); // LEDとリレーのピンモードを設定しますpinMode(38、OUTPUT); // LEDとリレーのピンモードを設定しますpinMode(39、OUTPUT); // LEDとリレーのピンモードを設定しますlightatt =map(attention、0、100、0、255); // analogWriteの注意レベルをマッピングしますlightmed =map(meditation、0、100、0、255); // analogWriteの注意レベルをマッピングしますLED} void robotmode(){if(brain.update()){if((blinklength> 0)&&(blinklength <2000)){// 2秒間目を閉じた場合ループ(); //ロボットコントローラモードを終了します} if(attention> 70){irsend.sendNEC(0xFF18E7、32); //進むwebserver.println( "g"); delay(40); } if(瞑想> 70){irsend.sendNEC(0xFF10EF、32); // webserver.println( "q");をスピンしますdelay(40); }}} void loop(){if(brain.update()){analogWrite(attled、lightatt); //実際の注意レベルを示すために導かれた注意をアナログで書き込みます//集中しているほど、LEDライトは強くなりますanalogWrite(medled、lightmed); //アナログは実際の注意レベルを示すために導かれた注意を書きます//瞑想レベルが高いほどLEDが点灯しますif((closedeye> 30000)&&(alpha> 30000)){// 2つの値を使用してユーザーの目を閉じているdigitalWrite(blinkled、HIGH); //英語:目を閉じるとLEDが点灯しますblinklength =millis(); //目を閉じている場合はミリ秒をカウントします} else if((closedeye <30000)&&(alpha <30000)){digitalWrite(blinkled、LOW); //英語:目を開けるとLEDがオフになりますblinklength =0; } if((blinklength> 0)&&(blinklength <2000)){// 2秒間目を閉じた場合webserver.println( "a"); delay(40); robotmode(); //ロボットを制御できるようになります} if((blinklength> 2001)&&(blinklength <4000)){//目を閉じて3〜4秒するとwebserver.println( "a"); delay(40);リレー(); //ホームオートメーションシステムを制御できるようになります} if((blinklength> 4001)&&(blinklength <6000)){//目を閉じて4〜6秒するとwebserver.println( "a"); delay(40); mousecontrol(); //マウスを制御できるようになります} Serial.println(brain.readCSV()); //データをシリアルモニターに出力します。必須ではありません。テスト専用です}} void relay(){webserver.println( ""); if(brain.update()){if((blinklength> 0)&&(blinklength <2000)){//目を2秒間閉じた場合loop(); //リレーコントローラモードを終了します} if(attention> 70){//リレー1をオンにしますdigitalWrite(37、HIGH); webserver.println( "g"); prevsignal =1; } if(meditation> 70){//リレー2をオンにするdigitalWrite(37、HIGH); webserver.println( "q"); prevsignal =1; } if(1000> flashlength> 0){//リレー3をオンにするdigitalWrite(37、HIGH); webserver.println( "qj"); prevsignal =1; } if((attention> 70)&&(prevsignal ==1)){digitalWrite(37、LOW); webserver.println( "q"); prevsignal =1; //すでにオンになっているかどうかを確認してから、オフにします} if((meditation> 70)&&(prevsignal ==1)){digitalWrite(37、LOW); webserver.println( "qj"); prevsignal =1; //すでにオンになっているかどうかを確認してから、オフにします} if((1000> flashlength> 0)&&(prevsignal ==1)){digitalWrite(37、LOW); webserver.println( "a"); prevsignal =1; //すでにオンになっているかどうかを確認してから、オフにします}}} void mousecontrol(){//カーソルを完全に制御するには数時間の練習が必要ですwebserver.println( "z"); //データをウェブサーバーに転送if(brain.update()){if(0 <注意<25){mouse.println( 'l'); //左webserver.println( "a"); } if(26 <注意<50){mouse.println( 'r'); //右webserver.println( "c"); } if(51 <注意<75){mouse.println( 'u'); // up webserver.println( "f"); } if(76 <注意<100){mouse.println( 'd'); //ダウンwebserver.println( "h"); } if(瞑想> 70){mouse.println( 'c'); // webserver.println( "t");をクリックします}}}
RobotControllerHeadset.ino Arduino
IRロボットを構築したい人のために。#include#include #include IRsend irsend; Brain brain(Serial); const int ledPin =3;長い間隔=500; long previousMillis =0; int ledState =LOW; int medValue; void setup(){// LEDピンを設定します。 pinMode(ledPin、OUTPUT); //ハードウェアシリアルを開始します。 Serial.begin(57600);} void loop(){//約1秒に1回のパケットを期待します。 if(brain.update()){Serial.println(brain.readCSV()); //注意は0から100まで実行されます。medValue=brain.readMeditation(); } //信号があることを確認します。 if(brain.readSignalQuality()==0){// LEDに信号を送信します。 if(medValue> 65){irsend.sendNEC(0xFF10EF、32); delay(40); } if(brain.readAttention()> 65){irsend.sendNEC(0xFF18E7、32); delay(40); }}}
脳ライブラリ
注意力と瞑想レベルを測定するために使用されます。https://github.com/kitschpatrol/BrainSoftwareSerialライブラリ
複数の通信ピンを確保するために使用されます。https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/libraries/SoftwareSerialIRリモートライブラリ
IR信号のデコードと送信。https://github.com/z3t0/Arduino-IRremote 回路図
この回路図を使用して、メインサーバーを作成します。 DIYIRロボットの回路図 DIY3チャネルリレーモジュールの回路図。使用されているArduinoピン:D37、D38、D39。 モータードライバーの回路図。ピンをArduinoに接続します。 メインサーバーの電子機器の回路図。 ArduinoUNOロボットの回路図 IRロボットの回路図 この回路図を使用して、メインサーバーを作成します。 ヘッドセットの電子機器の回路図 製造プロセス