Raspberry Piは非常に人気があります。 このサイトにはすでに、それに基づいたさまざまなプロジェクトの作成に関する多くの記事があります。 それが販売可能になり次第、私もすぐに買いたいと思いました。 モデルB(256Mb以上のメモリ)とその付属品を購入しました。 そして、もちろん、それに基づいて何かを構築したかったのです。 GPIOで作業し、それをコントローラーとして使用したいという要望がありました。 そのとき、車輪の上に制御された機械を作るというアイデアが生まれました。
鉄部分
ebayで最初にしたことは、将来のモデル用のシャーシを見つけることでした。 個別のエンジンがホイール内の各ホイールに取り付けられています。 デザインは33ドルで、分解した形で郵送されました。 当然、制作は中国製なので、部品を溝に合わせるためにファイルを操作する必要がありました。
一部のコンポーネントはdx.comで購入しました。 このサイトは非常に便利で安価であることが判明し、その上にあるさまざまな作品の良い選択が嬉しく驚き、ウクライナへの無料配達が便利になりました。 そこには、2700mAhの容量を持つ12個のバッテリーとそれらのためのいくつかの充電器が注文されました。
エンジンのコントローラーとして、L298Nチップに基づくマザーボードが購入されました。
このようなボードの1つを使用すると、異なる移動方向で2つの電気モーターを制御できます。 私はそのようなボードを1枚使用して、左右2つのエンジンをペアで接続することにしました。 回転方向に応じて、すべてのエンジンをオンにすると、マシンは前方または後方に移動します。 左に曲がる-右に2つだけエンジンがオンになり、右に曲がると-左に2つだけエンジンがオンになります。
このコントローラーを介してモーターに電力が供給されます。 それぞれ1.2ボルトの6個のバッテリーを使用しました。
次に、Raspberry Piの自己電源供給の問題が解決されました。 この目的のために、6個の同様のバッテリーパックも使用されました。 LM2596チップに基づくDC-DCコンバーターを介してボードに電源を接続しました。
ボードをネットワークに接続するために、Edimax EW-7811UN Wi-Fiアダプターが使用されました。 elinux.org/RPi_VerifiedPeripheralsで互換性のある機器として推奨されており 、市販されており、サイズが小さく、構成が簡単です。
ソフトウェア部
そして、ソフトウェア部分に移ります。 プロジェクトで使用されるすべてのコードはCで作成されました。
エンジン管理のプロセスでは、コントローラに直接接続されているGPIO0-GPIO3コネクタが使用されます。 コントローラーへの次の信号順序が使用されます。
エンジン | 方向 | GPIO 0-IN1 | GPIO 1-IN2 | GPIO 2-IN3 | GPIO 3-IN4 |
---|---|---|---|---|---|
左 | 進む | 1 | 0 | ||
戻る | 0 | 1 | |||
止まる | 0 | 0 | |||
そうだね | 進む | 1 | 0 | ||
戻る | 0 | 1 | |||
止まる | 0 | 0 |
チートシートを使用してGPIO出力を示すことは非常に便利でした。 このページ-www.doctormonk.com/2013/02/raspberry-pi-and-breadboard-raspberry.htmlから検索して印刷できます。
GPIOを使用するには、非常に便利なwiringPiライブラリが使用されます。 システムとAPIへのインストール方法に関する情報は、ここで見つけることができます-projects.drogon.net/raspberry-pi/wiringpi 。 ライブラリには、プログラミングせずに初期化してGPIO出力に信号を送信できるユーティリティも含まれています。
GPIO出力を供給するコードは次のようになります。
... pinMode(0, OUTPUT); digitalWrite(0, 1); ...
この場合、信号はGPIO 0に出力されます。
次に、マシンの初期テストが実行されました。
次のステップは、クライアントからの接続を受け入れ、エンジン制御コマンドを受信して実行するサーバーを作成することでした。 プロトコルは非常に簡単です。
「前方」-前方、「後方」-後方、「停止」-停止、「左」および「右」-左または右のエンジンを無効にし(方向に応じて)、「終了」-クライアントとの接続を閉じます。
そして最後にクライアントについて。 リモートコンソール、コンピューターキーボードからタイプライターを操作すると、面白くないことがわかりました。 タブレットから制御することにしました。NFSUndercoverゲームのアイデアをスパイしました。
クライアントは、ネイティブSDKを使用してPlaybookで作成されました。 公式Webサイトには、プラットフォームを理解するのに十分な例とドキュメントがあります。 SDKは、EclipseベースのQNX Momentics IDEとともにインストールされます。 私にとって最も難しかったのは、OpenGL ESを使用してユーザーインターフェイスを作成することでした。これまでグラフィックスを扱ったことはなかったからです。 コントロールの画像がインターネットで見つかりました。 インターフェースは非常にシンプルです-プログラムを起動し、Raspberry PiのIPアドレスを入力し、サーバー(スクリーンショットの右上にあるスイッチ)に接続して、走り去りました。
画面の中央には、前方への切り替え、停止、後方への切り替えがあります。 タブレットを特定の角度で左または右に傾けると、それぞれ左または右に回転するコマンドが送信されます。
そして、実際には、動作中のマシンを示すビデオ。
すぐにシャーシの不足が明らかになりました-床のグリップがあまりよくなく、コーナリング時に車輪が時々滑った。 そして、個々の軸を厳密に固定したデザインは、すぐにはあまり好きではありませんでした。 シャーシをもっと深刻なものに変更したかった。
ちなみに、猫はRaspberry Piに基づいたプロジェクトにも興味があります。