Bluetooth車にAndroidコントロールを搭載する

前回のセッションでは、いつものように、試験の準備を注意深く行いました(つまり、どうすればよいかわかりませんでした)。幸運な偶然として、大きくて美しいラジコンマシンを形成しました。 約10分間遊んだ後、私はそれをアップグレードしたかった。つまり、3メートルの範囲の不快なジョイスティックの代わりに、bluetoothのコミュニケーターを使用したかった。 そして、より便利で範囲が長くなり、さらなる改善がはっきりと見えます。これは、コミュニケーターを子供の車にねじ込むプロセスについては、この記事で説明します。









コンポーネントを選択



過去に、私の友人と私 、AndroidコミュニケーターからのBluetoothを介したロボットのリモート制御をサポートするLego Mindstorms NXTロボット用の独自のファームウェアを作成しました。 実験のために、ボード上にARM7を搭載したOlimex SAM7デバッグボードを購入しました。このボードは今回は制御コントローラーとして使用できます。



シャシーとして、おもちゃの車のボディを使用します。



Bluetoothモジュールが必要です。 すぐに結果を取得したかったので、そのモジュールは比較的高価であることが判明しましたが、その時点でストアで利用可能な唯一のBTM-112から選択されました。



さらに、ボードからの制御はモーターに直接移動できないため、増幅コントローラーが必要であることが判明しました(これについては後で説明します)。



合計で、当社のコンポーネント:

これで必要なものはすべて揃いました。



Bluetoothを制御ボードに接続します



最初に、コントロールユニットへのコマンドの配信を設定します。 Bluetoothモジュールとコントローラーの接続図は単純です。実際には、いくつかの制御レッグを持つUARTです。つまり、モジュールを統合されたUARTコントローラーに接続するだけです。



ソフトウェアコンポーネントはそれほど複雑ではありません。 接続されると、モジュールは"CONNECT RE:MO:TE:BT:MA:CC xxx \r\n"



という形式の行を書き込み、切断されると"DISCONNECT xxx \r\n"



行を書き込みます。 ドライバーのタスクは、文字のストリームを監視し、接続が現在アクティブな場合、ストリームを制御アプリケーションに転送することです。 その結果、ドライバーはステートマシンになり、状態を切り替えるとは、関数ハンドラーを切り替えることを意味します。



リモコン



約束どおり、リモートコントロールはAndroidコミュニケーターを使用して実行されます。



過去のAndroidアプリケーション(ブルートゥース経由でLego Mindstorms NXTを制御)は、加速度計を使用してコミュニケーターの傾きを追跡し、適切な制御コマンドをNXTに送信しました。 したがって、最も簡単な解決策は、タイプライター制御プロトコルを既存のアプリケーションに追加することでした。 プロトコル自体は非常に原始的です。つまり、固定コマンド長、固定ヘッダー、そしてX軸とY軸に沿った制御です。



そのため、この段階では、モーターはまだ接続されていませんが、ハンカチを「操縦」できます。そのため、動きは内蔵のLEDで示されます(残念ながら、ビデオはありません。現時点では写真を撮っただけです)そして、それは魂を温めます。







制御盤とモーターを接続します



当初は、古いボード(マシン自体に配線されている)のコントロールを使用できると考えていましたが、モーターのコントロールが無線部にしっかりと結合されていたため、純粋な形では使用できないことがわかりました。 チップの出力が低いため、ヘッドコントローラーの足から直接モーターを駆動することもできません。 残念ながら、私はこの分野での経験がありません(結局、私は回路エンジニアではなくプログラマーです)ので、友人の助けを借りなければなりませんでした。 アドバイスに基づいて、L298Nアンプチップ(必要に応じて冗長化されていますが、箱から出してすぐに使用できます)を取り出し、 リファレンス回路を組み立てました。



準備された機械は子供向けであり、その制御は少し不自由だということを思い出させてください。 モーターの取り扱いを始めたとき、その理由の1つを理解しました。 回転機構には、サーボドライブではなく、従来の電気モーターが使用され、3つの状態(オフ、正方向、逆方向)のいずれかになります。 したがって、スムーズなターンを夢見ることはできません。



一般に、機能図は単純で、1つのモーターがエンジンとして使用され、2番目のモーターがステアリングホイールとして使用されます(特定の回転角度でロックされています)。

各モーターを制御するには、対応する制御脚に電圧を印加する必要があります(正または負の電圧またはゼロ)。 電圧は2点(入力制御レッグ)間で測定されます。つまり、次のような制御レッグのペアに電圧を印加する必要があります。

進む 逆に オフ
PIN1 1 0 0 1
PIN2 0 1 0 1
Androidアプリケーションはスムーズな制御を転送するため、モーターの状態が変化して、指定されたしきい値を超えます。

コードは非常に単純であることが判明したため、ここでは説明しませんが、投稿の最後にプロジェクト全体のソースへのリンクがあります。



まとめ



作業機付きローラー:





明らかに、欠点があります。



見どころ



すべてのコードは公開されています。

Olimexボードのファームウェアはこちらです。

Androidアプリケーションコードは、 Androidマーケットでアセンブルされたバージョンです。



All Articles