「モーター」タグアーカイブ

Raspberry Pi Zero W 単体でラジコンカー自作

前回Raspberry Pi Zero Wでサーボモータを制御してみてラズパイでなにかしらを制御するのはシンドいなぁという感想を得たのですが。。。デジタル信号制御なら問題ないだろということで、I2C入力のモータドライバでラジコン作りました。

Raspberry Pi Zero W と Blynk で サーボモータ制御

ここではスマホアプリ Blynk とラズパイでI2C入力のモータドライバを介してモータをコントロールします。

構成

部品

I2Cモータードライバ・モジュール DRV8830

I2C入力によって、モータ供給電圧(スピード)と供給電圧方向(回転方向)を制御します。円形ロボットシャーシキットの左右のモータを制御するため2個のモジュールを使用しました。

I2Cアドレス設定

2個のモジュールを制御する必要がありますので、それぞれ異なるI2Cアドレスを設定します。

本モジュールは基板上のジャンパA1, A0のステートによって以下の表のようにアドレスを指定することができます。

表のアドレスxは読み込み時には1、書き込み時は0をしてします。ここでは書き込みのみ使用します。左モータ用モジュールのジャンパを両方GND (アドレス:0x60)、右モータ用モジュールのジャンパを両方Open (アドレス:0x64)としました。

書き込みI2Cデータ

アドレス0x00に8bitの情報を書き込むことでモータを制御します。
各ビットの設定は以下の通り

 

blynk設定

ここではblynk の2個のジョイスティックのx軸を使用して左右のモータを制御します。

新規プロジェクトを作成します。ハードウェアはラズパイ zeroがまだないのでとりあえずRaspberry Pi 3Bを選択。Conection TypeにはWiFiを指定します。
AUTH TOKENはコードコンパイル時に使用しますのでメール送信してメモしておきます。

ウィジェットとしてジョイスティックを2個配置します。

2個のジョイスティックの設定はそれぞれのx軸をヴァーチャルピンV0, V1に出力させ、値は-63~63としました。

プログラム

サーボ制御同様にC++を採用しました。

Blynkライブラリインストール

ラズパイにBlynkライブラリをインストールします。
詳細は https://github.com/blynkkk/blynk-library/tree/master/linux 通りでターミナルを起動して

$ git clone https://github.com/blynkkk/blynk-library.git

でOK

ラズパイI2C有効化

Raspberry Piの設定を開きインターフェースのタグでI2Cの有効を選択しRebootします。

C++プログラミング

Blynkライブラリがインストールされるとホームにblynk-library/linuxフォルダが生成されます。linuxフォルダをコピーするなどして、その中のmain.cppを以下のように書き換えます。

BlynkのV0, V1で値を受けてモータの回転方向とスピードを制御しています。

wiringPiのI2Cライブラリを使用しています。

コンパイル

main.cppのあるフォルダに移動して以下を実行。

$ make clean all target=raspberry 

Blynk実行

つづいて以下を実行

$ sudo ./blynk --token=Blynkアプリで取得したAuthToken 

上図のようにReadyで準備OK!
 

動作

 

#ラズパイ 単体でラジコン #blynk

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

いい感じ!デジタル通信による制御であればラズパイでも問題なく色々できそうです♪

ESP32 と Blynk と 円形ロボットシャーシキット と

かわいい円形ロボットシャーシキットをAdafruitで購入したので、ESP32載っけて Blynk でWiFiラジコンつくりました♪

構成

部品

円形ロボットシャーシキット

Adafruitで輸入購入しました。本体価格 $19.95、送料は一番グレードの低いトラッキングのないコースで$25.40の合計 $45.35でした。17/6/26購入で17/7/7着でした。

 

ミニローバーキット #adafruit

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

組み立ても簡単でした!

国内購入ですとモータ別売りだけど、スイッチサイエンスでも購入できます。

blynk設定

ここではスマホアプリのblynkでBLE32とWiFi通信でし車を動かします。

新規プロジェクトを作成します。ハードウェアはESP32 Dev Boardを選択。Conection TypeにはWiFiを指定します。
AUTH TOKENはArduinoコード生成時に使用しますのでメール送信しメモします。

ウィジェットとしてジョイスティックを配置します。

ジョイスティックの設定はヴァーチャルピンV0に2軸の数値を出力します。x, yの値はそれぞれ最小-255 最大255としました。モータを制御して車を動かします。

Arduinoプログラム

ESP32をArduinor IDEでプログラミングを行います。Arduino IDEでの開発用ソースがインストール方法と共に以下にアップされています。参照ください。
 https://github.com/espressif/arduino-esp32

BlynkのArduino用 最新ライブラリは以下にあります。
 https://github.com/blynkkk/blynk-library

[スケッチの例] -> [Blynk] -> [Boards_WiFi]-> [ESP32_WiFi] を参考にコード生成しました。

ESP32はanalogWriteが使用できない!

モータドライバの各入力にアナログ電圧(PWM出力)を印加することでモータのスピードを制御するのですが、なんとESP32はanalogWriteが使えなかった。。。

かわりにledcWriteというのが使えるようです。
[スケッチの例] -> [ESP32] -> [examples]-> [AnalogOut] -> [LEDCSoftwareFade]
によると、

  • ledcSetup(channel, freq, resolution_bits)
    channel ;0~15の16個の出力を指定できる
    freq:PWMの周波数
    resolution_bits:出力電圧(デューティー比)の分解能(1~16bit) 8bitなら分解能256
  • ledcAttachPin(pin, channel)
    pin:マイコンピンの指定
    channel:ledcSetupで設定したチャンネル指定
  • ledcWrite(fchannel, duty)
    channel:ledcSetupで設定したチャンネル指定
    duty:ledcSetupで設定した分解能でデューティー比を指定

でアナログ電圧(PWM)出力できます。周波数が指定できるのは非常に便利ですねぇ(^o^)

動作

 

#esp32 と #blynk でらじこ

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

 

#blynk で #ラジコン

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

この車かわいい 😮 。BB-8つくれそう。。。

circuito.ioでブレッドボーディング

circuito.ioというサービスを使用して風船膨らまし機を作りました!

circuito.ioは使用するマイコンと部品を選ぶと自動的に配線図とテストプログラムを生成してくれるwebサービスです。

手順

  • こちらから”Let’s Go!”をクリック

  • 使用する部品を配置
    今回はマイクで音を検知してポンプで風船を膨らませたいので
    inputにエレクトレットマイクをoutputにポンプモータを選択(ドラッグ&ドロップ)
    マイコンはデフォルトのままArduino UNO
  • “Generate”をクリック

  • 準備ができたら”Open my Circuit”をクリック
    ここのURLは控えておきましょう。あとで修正できたりします。
  • “Go to Wire”をクリックすると生成された配線図が現れます。
    モータの駆動用のパワーMOSや抵抗も自動で配置・配線され初心者でも簡単に動くモノがつくれます。
  • 配線図の通りに部品を接続します。
    “NEXT STEP”をクリックすると部品の配置や配線の仕方を1ステップずつ見ることができます。
  • “Code”をクリックすると生成されたプログラムのダウンロードページが開きます。
    “Download Firmware.zip”をクリックして解凍しArduino IDEで開いてマイコンに書き込みます。
生成されたプログラムはシリアルモニタで1を入力すると10秒間マイクによる音量測定が開始、2を入力すると10秒間2秒おきにモータがON/OFFするというものでした。

部品

プログラム修正

生成されたテストプログラムを修正して以下のようにスッキリさせました。
マイクにある一定以上の音が入力されるとポンプがON!

動作

ポンプに風船を装着し、マイクをやぶれた風船の中に入れて吹くと。。。。
 

Inflate with a broken balloon #daughter #circuitoio

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

 

Inflate with a broken balloon ???? #son #circuitoio

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

Arduino Day Prank Contest

circuito.ioが主催するイタズラ電子工作コンテストに応募して審査員賞頂きました!(^o^)v

賞金は$30分のSparkfunギフトカード!さて何買おうかな?(*´ω`*)

Blynk で BLE 制御ラジコン!

BlynkがBLE対応(まだベータ版)したので、今回はBLE制御ラジコンしてみました♪ 

構成

BLE搭載マイコンAdafruit Feather 32u4 Bluefruit LEとモータドライバDRV8835を使用して、スマホアプリBlynkで2個のモータの回転をコントロールします。

部品

Blynk Arduino用ライブラリ

最新ライブラリは以下にあります。
 https://github.com/blynkkk/blynk-library

今回はAdafruit Feather 32u4 Bluefruit LEを使うので
[スケッチの例] -> [Blynk] -> [Boards_BLE]-> [Adafruit_Feather_32u4_BLE]を参考にコード生成しました。 

Blynk設定

新規プロジェクトを作成します。ハードウェアではAdafruit製品がまだないのでとりあえずArduino UNOを選択。
AUTH TOKENはArduinoコード生成時に使用しますので控えときます(もしくはメール送信します)。

ウィジェットとしてBLEとジョイスティックを配置します。

ジョイスティックの設定はヴァーチャルピンV0に2軸の数値を出力します。
x, yの値はそれぞれ最小-255 最大255としました。

Arduino IDE

[スケッチの例] -> [Blynk] -> [Boards_BLE]-> [Adafruit_Feather_32u4_BLE]を参考にコード生成しました。

これでBlynkのジョイスティックの2値を受けて2個のモータをコントロールし、前後左右に移動させることができます!

Blynk BLE接続

BlynkプロジェクトのBLEウェジットをクリックして設定します。

“Connect BLE device”をクリックして “Adafruit Bluefruit LE”が表示されたらOKをクリックして接続する。

動作

将来的にはこれにカメラ搭載して画像をヘッドマウントディスプレイ(スマホ)に飛ばしたいんです 🙄