BLE Bot 9000
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 11 |
必要なツールとマシン
> |
| |||
| ||||
|
アプリとオンラインサービス
> |
| |||
| ||||
|
このプロジェクトについて
通知:
更新 Drewからの2016年12月5日:既知の問題をクリックしてください このビルドを完了する前に、右側に移動して確認してください。キットの特定の種類には、既知の問題と欠落している部分があります。私たちは一般的な問題の概要を説明しようとしました。一部はまだ解決中です。修正は、確認された時点で手順に組み込まれます。 #intel で追加のものを私(@ReanimationXP)に報告してください slack.hacksterlive.com のチャンネル 。ありがとうございます!
Arduinoを爆破しないでください
ボットを組み立てて、VINジャンパーをモーターシールドの所定の位置に残したという報告があります。開始する前に、少し時間を取って削除してください。どうして? Arduinoとシールドへの電力供給を参照してください 以下。
イントロ
このプロジェクトでは、Arduino 101に組み込まれているBLEチップを使用して、ラップトップから小型の4x4ロボットを制御する方法を示します。コンピューターにArduino101自体から制御を引き継ぐことで、コンピュータービジョン、自動運転、高度なフィードバックループ(PID)などのプロセッサー集中型の制御方法を組み込む可能性が広がります。
ハードウェア
始めましょう!この子犬には何が付いていますか?使用したロボットプラットフォームは、Sparkfunのマルチシャーシ4x4でした。それはアルミニウムフレームでかなり耐久性があり、追加のセンサーのための多くの取り付けポイントがあります。
手順:
1)キットは簡単な組み立てが必要ですが、時間がかかります。キットに含まれている組み立て手順に従ってください。ただし、次のような違いがあります。
-ロボットシャーシに蓋を取り付ける前に、Arduino 101をスタンドオフ(別のコンポーネントキットの一部)のトッププレート(蓋)に取り付けます。スタンドオフがない場合は、101の底をなんとかして断熱し、蓋に取り付けます。
2)Adafruit Motorシールドv2.3にもある程度の組み立てが必要です。つまり、はんだ付けを意味します。ヘッダーピンをはんだ付けする必要があります。コンポーネントキット(A101のヘッダーなど)にメスのヘッダーが付属している場合は、これらを使用して、通常のオスのヘッダーを破棄します。それ以外の場合は、モーターシールドに含まれているオスの品種を使用してください。両方のタイプをはんだ付けするための詳細な手順は、ここにあります(オス/メスヘッダータイプの適切なセクションまでスクロールダウンしてください):https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/install-headers 。
ヘッダーを所定の位置にはんだ付けするのは少し難しい場合があるため、これまではんだ付けしたことがない場合は、焼き付けを気にしないで練習することをお勧めします。多くのはんだ付けをしている人にあなたを見てもらうのが最も早い学習方法です。各ヘッダーを開始するには、端に1つのピンをはんだ付けし、ヘッダーをしっかりと引っ張って、ボードと同じ高さで完全に真っ直ぐにします。この手法を使用して、すべてのピンをはんだ付けする前に物を揃えることができます。これにより、ヘッダーがほぼ恒久的に所定の位置に固定されます。
Bluetoothロゴの横にある6ピングリッドのメスヘッダーを最後に実行します。 次のようになります: [:::] プラスチック面をArduino101に差し込んで完全に平らにし、はんだ付けされたモーターシールドを上部に取り付け、6ピングリッドのオス側が突き刺さるようにします。モーターシールドを押し下げて101に完全に挿入し、6ピングリッドヘッダーのオス側をはんだ付けします。
3)はんだ付けしたヘッダーを使用して、組み立てたモーターシールドをArduino101の上部に取り付けます。
4)ジャンパー線(オスからオス)を使用して、以下に示すように、モーターをモーターシールドのモーター出力端子ブロックに配線します。マイナスとプラスのリード線の正しいペアが一致していることを確認し、以下の配線図に従ってください。注:黄色のワイヤーは図上で正です 、および赤 実際のモーターで。 緑色の線は図では負です 、黒 実際のモーターで。
5)続行する前に、VINジャンパーが取り付けられていないことを確認してください。ジャンパー線のペアを使用して、 5カウントAA に接続します 下の図に示すように、正(赤)とアース(黒)の向きを考慮して、モーターシールドの電圧入力端子台にロボットキットに含まれているバッテリーパック。
注: 下の写真の2xAAホルダーは正確ではありません 実際の生活では、キットには含まれていません。 5xAAホルダーを使用してください。 ロボットキットに含まれています。一部のキットには、4つのモーターが含まれていません。この場合、ボードの右側と上部の2つのモーターに示されているように、適切なモーターをM1とM2に接続するだけです。
6)2番目のバッテリーパックから外れているリード線にバレルジャックをはんだ付けします。赤いプラスのリード線をバレルジャックの中央(短い方)の接続にはんだ付けしてください。
注 :6x AAバッテリーホルダーとその下のバレルプラグは、アンバサダーキットの最初の出荷には含まれていませんでした。この出荷には、追加のAAホルダーと、場合によっては追加のコンポーネントがまもなく追加されます。ボットの構築を完了し、ソフトウェアの概要にスキップします 今のところ。
7)6x AAバッテリーパックをベルクロのストリップでロボットの背面に取り付けます:
バレルプラグをArduino101に取り付けて、電源を入れます。もう一度、VINジャンパーが取り付けられていないことを確認してください。
これで、ロボットが完全に構築されます。両方のバッテリーバンクのプラグが抜かれていることを確認して、電力を消費しないようにします。
ソフトウェアの概要
ロボット制御システムは、2つの主要なソフトウェアで構成されています。 1つ目は、Arduino 101にロードされているFirmataサーバーのスケッチです。Firmataを使用すると、コンピューターがArduinoのピンにアクセスできるようになり、さらに、モーター自体を制御するモーターシールドと通信できるようになります。 Firmataは双方向通信も可能にするため、将来、センサーをロボットに接続した場合に、センサーデータをコンピューターに送り返すことができます。
2番目のソフトウェアは、コンピューターで実行されるFirmataクライアントです。さまざまな言語に対応するさまざまなFirmataクライアントがありますが、このプロジェクトでは、Johnny-Fiveに組み込まれているFirmataクライアントを使用します。 Johnny-Fiveは、Node.js上に構築されたArduino用のロボット工学およびIoTプラットフォームです。詳細については、http://johnny-five.io/をご覧ください。 Johnny-fiveには、Firmataや、使用しているAdafruitMotorshieldの構成などの多くの便利なライブラリがあります。
Firmataクライアントとサーバーを接続するために、BLEを介してArduino101へのシリアル接続を開くように記述されたnode.jsライブラリを使用しています。https://github.com/monteslu/ble-serial
最後に、キーボードコマンドを読み取るために、keypresssを読み取るためのnode.jsライブラリであるkeypessを使用します。 https://github.com/TooTallNate/keypress
Arduinoスケッチをロード
1)Arduino 101にFirmataサーバーのスケッチをロードするには、最初にArduino IDEをダウンロードしてインストールする必要があります:https://www.arduino.cc/en/Main/Software
2)ベースIDEをインストールしたら、Arduino101ボードをインストールする必要があります。次のチュートリアルでは、ボードのインストールと基本的なプログラミングについて説明します。Arduinoに慣れていない場合は、https://www.arduino.cc/en/Guide/Arduino101から始めることをお勧めします。短いバージョンでは、IDEのBoardsManagerを介して「IntelCurieBoards」パッケージをインストールする必要があります。それが完了すると、Arduino / Genuino101がボードサブメニューに表示されます。
3)USBケーブルを介してArduino101をコンピューターに接続します。
4)Arduino IDEで、[ツール]-> [ボード]に移動し、[Arduino / Genuino101]を選択します。見えない?手順2に戻ります。
5)[ツール]-> [ポート]に移動し、ボードに適したポートが選択されていることを確認します。使用するポートがわからない場合は、Arduinoのプラグを抜いて、リストからどのポートが消えるかを確認してください。
6)AdaFruit Motor Shieldv2パッケージをインストールします。 [スケッチ]-> [ライブラリを含める]-> [ライブラリの管理]に移動し、「AdaFruit MotorShieldv2」を検索します。それを選択し、[インストール]ボタンをクリックします。
6a)ボットをテストする場合は、次の.inoファイルをフラッシュしてモーターをテストします。デフォルトでは、このファイルにより、ボットは進む、戻る、左に曲がる、次に右に曲がるになります。 繰り返し。 https://github.com/ReanimationXP/a101_motortest。
注!車輪が動く準備をしてください!
a101_motortestプログラムをボットにフラッシュすると、スケッチの実行が開始されるとすぐにホイールが動き始めます。ホイールを停止したい場合は、USBケーブルを引く(Arduinoへの電源を切る)か、バッテリーの1つを引くことができます。
7)Arduino IDEで、[ファイル]-> [例]-> [Firmata]-> [StandardFirmataBLE]に移動して、FirmataBLEサーバースケッチをロードします。エディターの左上隅にあるアップロード矢印をクリックして、スケッチをArduino101にアップロードします。
スケッチが正常に読み込まれると、出力の最後のメッセージは「スケッチは5秒で開始します」になります。
Python2.7.13をインストールする
1)bluetooth-hci-socket Node.jsパッケージをインストールしてコンパイルするには、Python2.7.13が必要です。
2)https://www.python.org/downloads/にアクセスします。 Python2.7.13をダウンロードしてインストールします。
Firmataクライアントをロードする
1)FirmataクライアントはNode.jsで実行されます。インストールされていない場合は、次のリンクにアクセスして、インストール手順に従ってください:https://nodejs.org/en/
2)Node.jsがインストールされたら、制御コードを含む新しいフォルダーを作成します。
3)Node.jsコマンドプロンプトを開き、プロジェクトフォルダーに移動します。次の手順でWindowsツールをインストールする場合は、管理者モードでコマンドプロンプトを実行します。
4)Windows 10を使用している場合は、Windowsツールをインストールする必要があります。次のコマンドを使用してこれを行います:
npm install --global --production windows-build-tools
5)次のNPMモジュールをインストールします。
npm install johnny-fivenpm install keypressnpm install ble-serial npm install bluetooth-hci-socket
6)github(https://github.com/martinkronberg/Firmata-BLE-Bot)で制御コードをダウンロードし、control.jsがプロジェクトフォルダーにあることを確認します。必要に応じてリポジトリのクローンを作成できますが、更新の可能性はかなり低いです...
コードを実行する
これで、ロボットの運転を開始する準備が整いました。両方のバッテリーバンクが接続されていることと、プロジェクトフォルダーから実行されていることを確認してください:
node control.js
すべてが機能すると、次のようなメッセージが表示されます。
1476382259569接続された[オブジェクトオブジェクト]
これで、「w」を押すとロボットが前進し、「s」を押すと後進し、「a」と「d」を押すとロボットが左右に回転します。
「互換性のあるUSBBluetooth4.0デバイスが見つかりません」などのメッセージが表示される場合があります。コンピュータがBluetoothをサポートし、Bluetoothが有効になっていることを確認してください。
Windowsのデバイスマネージャをチェックして、PCがBluetoothをサポートしているかどうかを確認できることに注意してください。 「Bluetoothラジオ」というサブツリーを探します。
ブリンクバージョン
NodeとFirmataがうまく機能しない場合は、代わりにBlynk.ccライブラリを使用できます。これは使いやすく、クロスプラットフォームであり、モバイルデバイス用のインターフェイスを備えています。
1. Blynk.ccライブラリをダウンロードして、Arduinoにインストールします。これは、Arduinoライブラリマネージャーを介して実行できます。執筆時点でのバージョン0.4.7。
2.次のスケッチをダウンロードしてArduino101にフラッシュします。
https://github.com/ReanimationXP/a101_blynk_base
3.Blynkアプリをダウンロードします。アプリ内に次のインターフェースを作成します:
既知の問題
不足している部品: 6x AAバッテリーホルダーとそのバレルジャック、タンクキットには2xモーターのみがあり、4xはありません。
タンクキットの電源の問題: Sparkfunタンクキットに欠陥があるようです-それに含まれているバッテリーホルダーは、タンクバンドを駆動するのに十分なほど強力ではありません。解決策は、バンドを取り外すか、5x AAバッテリーホルダーをかなりのmAh(たとえば750mah)の2S(7.4v)リポバッテリーに交換するか、IntelUSBバッテリーバンクの1つで101に電力を供給することです。
>さらに、Sparkfunシャーシに付属のバッテリーホルダーが機能していないように見える場合は、バッテリーが正しく装着されていない可能性があります。押し下げながら引き戻すと、所定の位置にカチッとはまるのを感じるでしょう。
Bluetooth / BLEの問題: BLEサポートには最小要件があります。低エネルギーのBluetoothであるBLEを確実にサポートするには、コンピューターがBluetooth4.0以降とWindows8.1以降をサポートしている必要があります。一部のコンピューターでは、ドライバースタックとハードウェアの違いによっては、まだ問題が発生する可能性があります。ほとんどのスマートフォンはBLEとの互換性が高くなっています。 Blynkプラットフォームを使用して101を制御することを検討しています。これには、BLEサポートが含まれています。詳細は、利用可能になったときにここに掲載されます。
また、Arduino 101のBLE部分は、適切に電力が供給されていないと非常に不安定であると言われています。 Arduino 101に十分な電力を接続していることを確認してください。電圧低下の問題を排除するために、強力な5v USB電源、2アンペア程度をお勧めします。
Arduino 101とのネジの互換性: コンポーネントキットのネジの頭が大きすぎて101に収まりません。修正方法は、ロボットキットの銀色のネジを代わりに交換することです。可能であればその逆も同様です。ベルクロの正方形を使用することもできるので、ボードはしっかりと固定され、断熱されていますが、簡単に取り外すことができます。
ライブラリ: Firmataライブラリを少なくとも2.5.3にアップグレードする必要があります(2.5.3未満のバージョンにはFirmate BLEスケッチは含まれていません)
ワークショップのショートリンク
交流会を開催している間、あなたの生活を楽にするためのいくつかのリソースがあります。最後の2つのリンクでは、Adafruit Motor Shieldv2ライブラリをインストールする必要があります。
- このBLEBot 9000チュートリアル:http://bit.ly/blebot1
- Pete HoffswellのDCモーターテストスクリプト:http://bit.ly/blebot2
- Blynkを使用したBLE電話制御ロボティクス:http://bit.ly/blebot3
コード
タッチスクリーンコントロール
Expressサーバーを使用して、タッチスクリーンからボットを制御します。 (より高度なハックスターの場合)https://github.com/monofuel/blebot9000ロボット制御コード
ロボットを実行するためのコードを含むGithubhttps://github.com/martinkronberg/Firmata-BLE-Bot 回路図
シャーシを組み立てるためのPDF 製造プロセス