Wifiコントロール、カメラ、銃、ブラックジャックなどを備えたrobotankを構築します。

画像



みなさんこんにちは。 私は今でも自分の成果を世界と共有したいと思っています。 アチーブメントとは、ゲームパッドからWiFiを介して操縦し、リアルタイムビデオをリモートコントロールに送信し、リモートコントロールとリモートコントロールに音声を送信するタンクであり、レーザー照準器を備えた銃で、誰かを撃つことができます。



この投稿は、私以外の人にとって興味深いかどうかを理解するための最初のテストです。 その中で、一般的な構造、使用されている技術、デバイスについて説明します。



UPD:ビデオを追加しました。





まず、注目を集めるための小さなビデオ。 音は戦車の柱から聞こえます。





それがすべて始まった方法



むかしむかし、私はキャタピラーシャーシにロボットを作り、それをリモートで操縦するのに夢を見ました。 主な問題は、直接追跡されるシャーシの欠如でした。 最終的には、分解用のラジコンタンクを購入することを既に決めましたが、幸運なことに、ゴミの中の店には、焼けた電子機器を備えた米国M26のSnow Leopard(Pershing)タンクがありましたが、完全に機能する機械部品です。 まさに必要なものでした。



画像



シャーシを追求して、コレクターモーター用の2つの電圧レギュレーター、2つのサーボを備えたカメラ用の三脚、ハードウェアサポートmjpegを備えたWebカメラ、および外部WiFiカードTP-LINK TL-WN7200NDを購入しました。 少し後に、ポータブルスピーカー、USB Soundbar Creative SoundBlaster Play、シンプルなマイク、およびいくつかのUSBハブがデバイスのリストに追加され、これらすべてがRaspberry Piになったコントロールモジュールに接続されました。 戦車の塔は解体されました。操縦するのは非常に不便でした。標準的な機構はすべて、フィードバックのない従来のエンジンで構築されていたからです。



すぐに、製造工程ではなく、タンクの準備がほぼ整ったときに写真を撮ったことを予約してください。



電源と配線



画像



最大のLi-Poバッテリーをバッテリーコンパートメントに詰めて、そこに入れました。 彼女は、通常のモデルカーで使用されている堅実なケースで3300 mAhの2缶バッテリーであることが判明しました。 私ははんだ付けが面倒だったので、2.54ピッチの標準ブレッドボードがスイッチング全体に使用されました。 その後、トップカバーに2つ目が現れ、それらをつなぐ列車が現れました。 2つのエンジンのそれぞれに、ボーナスの形で約5.6ボルトの安定化電源を提供する独自の電圧レギュレーターがありました。 RaspberryとWiFiカードは1つのコントローラーから給電され、2番目のコントローラーからの電力はサーボと周辺機器を備えたUSBハブに供給されました。



動かせよ



どういうわけかそれを手に入れる必要がありました。 ラズベリーは偶然選ばれませんでした。 第一に、通常の本格的なlinuxを配置できるようにします。第二に、サーボドライブとストロークコントローラー用のパルス信号を生成できるGPIOレッグが多数あります。 このような信号は、 ServoBlasterユーティリティを使用して生成できます。 開始後、ファイル/ dev / servoblasterを作成します。このファイルには、0 = 150のようなものを書き込むことができます。0はチャネル番号、150は数十マイクロ秒のパルス長、つまり150は1.5ミリ秒です(ほとんどのサーボには値の範囲があります) 700-2300ミリ秒)。

そのため、レギュレーターを7および11 GPIOピンに接続し、servoblasterコマンドを実行します。



# servod --min=70 --max=230 --p1pins=7,11
      
      





ここで、/ dev / servoblasterに0 = 230および1 = 230の行を書き込むと、タンクは前に飛び出します。



カメラを接続する



前後に乗ることはクールでしたが、少なくとも隣の部屋で、理想的にはインターネット経由でやりたいと思ったので、リアルタイムでビデオをセットアップする必要がありました。 インターネット上で、単純なtinycamdプロジェクトが見つかりました 。 このプロジェクトは、httpによって制御されるサービスであり、スクリーンショットを撮り、カメラの設定を変更できます。 それほど多くはありませんが、これ以上良いものは見つかりませんでしたので、Cを思い出して、作者が実装していないもの、つまりHTTP経由でMJPEGストリームをブロードキャストする必要がありました(ちなみに、変更されたソースを世界と共有する方法は?) JPEGはカメラ自体から来ることが重要です。これにはRaspberryプロセッサでは不十分です。 その結果、私はsshを介してタンクに接続し、ブラウザを介してビデオストリームを開き、家中を転がして、チャンネルが沈むまで幸せでした。 最初はフリーズしたフレームを見て、それから加速モードで動けなくなったものをすべて取得するのは非常に面白かったです。 TCPを介したリアルタイムビデオのストリーミングは悪です。



アップグレード、改善など



次に、 pygameライブラリを使用してゲームパッドからイベントを受信し、UDP経由でビデオストリームを送信するようにtinycamdを完成させ、サーボから三脚にカメラを設置して見回すことができるように、Pythonでサーバーおよびクライアントパーツを記述する長いプロセスがありました。 その後、戦車は視線を越えてオフィスの周りを最初に旅行しました。 そしてその瞬間、私はビデオを見るだけでなく、たとえば同僚にドアを開けたりエレベータに電話したりするように双方向の音声チャンネルを持ちたいと思うようになりました。





サウンドを再生するために、安価なポケットUSBスピーカーが使用されました。これは、スーパーで株式用に購入されました。 彼女はUSBサウンドシステム経由でシンプルなマイクに接続されていました。 pyalsaaudioライブラリーは、サウンドを扱うのに役立ちました 。 サーバーとクライアントを完成させた後、戦車を解剖する過程で話したり聞いたりすることが可能になりました。





次の機能はヘッドライトでした。 ある時点で、カメラの感度が簡単に見逃される可能性があることが明らかになり、暗闇に落ちて離れない可能性がありました。 最初のアイデアは赤外線照明でした。 一連の赤外線LEDが組み立てられましたが、実践が示すように、それらには意味がありません。 非常に貧弱で少し輝きます。 また、既製の赤外線スポットライトは12Vの電力を必要とし(最大で8Vのバンクが2つしかありません)、多くの電流を消費し、大型で高価です。 その結果、可視範囲に入ることが決定され、2つの強力な白色SMD LEDとレンズが購入されました。 職場の同僚は、ヘッドライトに電力を供給するために、電流制御のドライバーを作成しました。これは、ラズベリーのGPIOレッグにユニットを供給することにより、電界効果トランジスターによってオンになります。 これからは、暗い部屋はもはや障害になりません。



バッテリー、より正確には、その充電レベル



すべての段階で、バッテリーを殺さずにどれだけ乗ることができるかは不明のままでした(Li-Poは1缶あたり3.3vより低く放電することはできません)。 Raspberryの脚のGPIOの助けを借りて電圧を測定する方法を見つけられなかったので、Arduino Nanoをメーターとして使用し、将来のためにI2CアダプターでLCDスクリーンをすぐに接続しました。 バッテリーは、Arduinoのアナログレッグにハーフディバイダーを介して接続され、その後は読み取り値を較正するためだけに残ります。 Arduinoは従来、COMポートを介してメインモジュールと通信します。COMポートには、RaspberryにもGPIOフィートがあります。



なんと銃のない戦車



戦車の最後の詳細の1つは銃でした。 銃は、スペアパーツの形でラジコンモデルの店で購入されました。 確かに、それは戦車の別のモデル用でしたが、その本質はこれから変わりませんでした。 ガンは空気圧式で、ピストンスプリングを作動させるエンジンと、発射時に閉じる接点があります。 私はこれまで、トップカバーに取り付けられたボディキット全体を壊さないようにガンを水平に回すことを拒否し、垂直の場合は強力なサーボを使用しました。 操縦しやすくするために、カメラの回転と同期して銃を回転させました。 それは、私たちが(垂直に)見る場所で、そこに射撃することです。 銃身を狙うために、ポインターからレーザーLEDが取り付けられました。 バッテリーを無駄にせず、必要のない場所でレーザーを照射しないように、銃のスイッチを切る必要がありました。 ショットプロセスも完全に単純ではありません。 モーターの電源をオンにして、接点が閉じるのを待ってから、モーターをオフにする必要があります。 その結果、サーボとレーザーのショットとパワーの制御がArduinoにかかっており、サーボの信号はRaspberryによって生成されました。 銃のエンジンでは、別の電源線を導いて、PWMを使用して徐々に電源を入れる必要がありました。そうしないと、電源ノイズが届き、Arduinoが再起動します。 シェル、つまりボールの供給には、底に穴のあるTicTac糖衣錠ボックスが使用されました。



おそらく初めてです。 この記事が気に入ったら、次の投稿でゆっくりと詳細を書いていきます。 最後にいくつかの写真と新鮮なビデオ。 確かに、品質はあまりよくなかったので、事前に麻酔に謝罪します。 githubリンク



画像画像画像














All Articles