RaspberryPiを使用したジェスチャー制御ロボット
ボタンですべてを制御するのにうんざりしたことがありますか?怠惰なソファに座って、簡単な手の動きで何かを制御することを考えましたか?はいの場合、あなたは正しいサイトにいます。このチュートリアルでは、手の動きを使用するだけで、2つのDCモーターで駆動されるロボットを制御します。フラックスセンサー、加速度計、その他の重力ベースのセンサーなど、手の動きを検出するためのさまざまな種類のセンサーがあります。したがって、無線伝送には、4ビットデータを伝送するRF434モジュールを使用します。 4ビットデータは、16の異なる組み合わせ、つまり0000から1111を送信できることを意味します。さらにこのチュートリアルでは、エンコーダとデコーダを使用して、エアインターフェイスでの干渉を回避します。モータードライバーは、デコーダーデータを使用しないようにモーターを駆動します。
ラズベリーパイを使用したジェスチャー制御ロボット
送信機側でRaspberrypiを使用して、センサーデータを分析し、データの組み合わせをモータードライバーに送信して、それに応じてモーターを駆動し、ロボットがホバリングできるようにします。ロボットの12Vバッテリーを使用して、デコーダーモジュール、レシーバーモジュール、およびモーターに電力を供給します。送信機側では、センサーと送信機エンコーダモジュールはラズベリーパイ自体から電力を供給されます。
コンポーネント
コンポーネント | 仕様 | 数量 |
---|---|---|
1 | ||
1 | ||
ADXL345またはMPU6050 | 1 | |
RFモジュール | RFTxおよびRx434 | 1 |
Rpi用の5VミニUSBアダプター ロボット用の12Vバッテリー | 1 | |
HT12E(モジュールを優先) | 1 | |
HT12D(モジュールを優先) | 1 | |
L293D(モジュールを優先) | 1 |
Raspberry Piを使用したジェスチャー制御ロボット–ブロック図
トランスミッターエンド
Raspberry Piを使用したジェスチャー制御ロボット–送信機エンド
送信機側には、加速度計、ラズベリーパイ、エンコーダモジュール、RF送信機があります。ジェスチャデータは加速度計からラズベリーパイに流れ、そこでロボットの動きを決定するために処理され、動きのデータはGPIOピンを介してエンコーダモジュールに転送されます。エンコーダモジュールはデータをエンコードし、RF送信機を使用してエアインターフェイスに送信します。
Raspberry Piを使用したジェスチャー制御ロボット–レシーバーエンド
Raspberry Piを使用したジェスチャー制御ロボット–レシーバーエンド
受信機側からのRF受信機は、エアインターフェイスからデータを取得し、デコーダーモジュールに渡します。デコーダーモジュールは、受信したデータをデコードし、モータードライバーL293Dに提供します。モータードライバーから、ジェスチャーデータに従ってモーターが駆動されます。
加速度計
加速は、速度の変化、または速度を時間で割ったものの測定値です。たとえば、車が静止状態から10秒で0から60 Km / hrに移動する場合、車は6Km / hrで加速しています。それで、それは私の手のジェスチャーと何の関係があるのでしょうか?
加速度計は、加速力を測定するために使用される電気機械装置です。このような力は、連続的な重力のように静的である場合もあれば、多くのモバイルデバイスの場合のように、動きや振動を感知するために動的である場合もあります。重力による静的加速度の量を測定することにより、地球に対してデバイスが傾いている角度を知ることができます。動的加速度の量を感知することで、デバイスの動きを分析できます。
一部の加速度計は圧電効果を使用します。それらには、電圧が発生する原因となる加速力によって応力がかかる微細な結晶構造が含まれています。これを行う別の方法は、静電容量の変化を検知することです。 2つの微細構造が隣り合っている場合、それらの間には一定の静電容量があります。加速力が構造の1つを動かすと、静電容量が変化します。静電容量から電圧に変換する回路をいくつか追加すると、加速度計が得られます。
加速度計は、アナログ電圧の形式で加速度を出力する低電力デバイスであり、一部の加速度計はデジタル形式で出力します。 ADXL 335のようなアナログ加速度計は、動きの軸に基づいて3つのアナログ出力X、Y、Zを提供します。 ADCを使用して、これらのアナログ電圧をデジタル電圧に変換できます。 ADXL345などのデジタル加速度計は、SPIまたはI2Cプロトコルを介して通信します。これはノイズが少なく、最も信頼性があります
加速度計とジャイロスコープの両方を備えた別のセンサーMPU6050があります。加速度計の代わりに使用することもできます。 ADXL345とMPU6050のアドレスは、I2Cモードでラズベリーパイと接続しているときに異なります。ADXL0x53とMPUの場合は0x68です。このチュートリアルでは、ADXL345とMPU6050の両方の使用方法を説明します。
インターフェース加速度計
次に、加速度計ADXL345とMPU6050をラズベリーパイに接続し、センサーの読み取り値を確認します。ここではPythonコードを使用するため、ラズベリーパイには最新のオペレーティングシステムとPythonがインストールされていると思います。
ADXL345 / MPU6050をラズベリーパイに接続しましょう。ここでは、I2Cプロトコルを使用してデバイス間で通信します。 I2Cプロトコルでは、データはSDA(シリアルデータ)とSCL(シリアルクロック)のクロックを介して転送されます。非同期半二重通信プロトコルです。マスターはプロセス全体を制御し、スレーブはマスターコマンドに従って応答します。データレートは、スレーブの有効周波数によって決まります。ここでは、マスターとスレーブの間に3V、Gnd、SCL、SDAの4つの接続しかありません。
ADXL345デジタル加速度計
GPIOピン配置図から、RpiのSDAピンとSCLピンを確認し、それぞれADXL345 / MPU6050SDAピンとSCLピンに接続できます。 RPi自体を使用してセンサーに電力を供給します。これで接続が完了しました。
ラズベリーパイ3GPIOヘッダー
センサーをテストする前に、rpiにI2cプロトコル用のpython-smbusをインストールし、RPiでI2Cプロトコルを有効にします。
smbusのインストール:
sudo apt-get install python-smbus i2c-tools
RPiでI2Cを有効にする:
sudo raspi-config
インターフェースオプションに移動し、I2cプロトコルを有効にします。
次に、これらのコマンドでi2c仕様行を含めます。
sudo nano / etc / modules
これらの行を追加します
i2c-bcm2708
i2c-dev
古いrpiを使用している場合は、次のコマンドを使用してバックリストからi2cを削除します
sudo nano /etc/modprobe.d/raspi-blacklist.conf
コメントアウト(#)ブラックリストi2c-bcm2708
sudo再起動
このコマンドを使用して、接続をテストします。これにより、piに接続されているセンサーのアドレスが表示されます。
sudo i2c detect -y 1
Adxlは0x53にあり、Mpuは0x68または0x69にあります
次に、GithubからPythonでpi用のADXL345用に事前に作成されたライブラリをダウンロードし、センサー出力をテストします。これらのコマンドを使用します。
git clone https://github.com/pimoroni/adxl345-python
cd adxl345-python
sudo python example.py
Example.pyは、以下に示すようにX、Y、Zの値を出力するプログラムです。
このプログラムを変更するか、プロジェクトに使用できます。
MPU6050の場合、pimoroniプログラムは機能しないため、githubとは異なるPythonモジュールを使用します。
これらのコマンドを使用する。
git clone https://github.com/Tijndagamer/mpu6050.git
cd mpu6050
python setup.py install
センサーの接続とアドレスオープンターミナルを確認するには、以下のコマンドを入力します。以下に示すように、0x68または0x69のセンサーアドレスが表示されます。
センサーデータをテストするには、Pythonエディターに移動し、これらのコマンドを1つだけ入力して、センサー出力を確認します。
mpu6050からインポートmpu6050
mympu =mpu6050(0x69)
Data =mympu.get_accel_data()
さらに一歩進んで、右、左、前、後ろの動きの4つの異なる位置のしきい値を決定し、それを書き留めることができます。キャリブレーションは、前進に必要な位置にセンサーを保持し、5つの同様の値を書き留めてしきい値に四捨五入するなど、さまざまな位置でセンサー値に基づいて実行できます。これにより、センサーが四捨五入された値を超えた場合、プログラムの条件ステートメントを有効にすることができます。同様に、左、右、戻る、停止など、他のすべての動きに合わせて調整します。
詳細情報を読む…。
RaspberryPiを使用したジェスチャー制御ロボット
現在のプロジェクト/投稿は次を使用して見つけることもできます:
- ラズベリーパイを使用したジェスチャーコントローラー
製造プロセス
- LabVIEWを使用したRaspberryPiの温度プロファイル
- ラズベリーパイ制御アクアポニックス
- Raspberry Piのマルチチャネルプロフェッショナルデータロガー–パート1
- PythonとRaspberryPiの温度センサー
- RaspberryPiを使用した天気のリモートモニタリング
- Node-REDを使用してBlynkへのSensorTag
- RaspberryPiを使用したモーションセンサー
- ラズベリーパイとブリッジシールドを使用したロボット
- ラズベリーパイCDボックスロボット
- Bluetoothで制御されるRaspberryPi Robot
- ArduinoとRaspberryPiを使用してインターネット制御のビデオストリーミングロボットを構築する