Arduino ジョイスティックとサーボ雲台を有線接続

ジョイスティックで操作するRCサーボ駆動の電動2軸雲台を野外で使えるようにするため、とりあえず有線で接続してみた。外で使うことが目的なので、電源、携帯性、ケーブルなどに配慮して作ってみた。

ジョイスティックで操作する雲台サーボ雲台とそのコントローラおよび電源(モバイルバッテリ)。

ジョイスティックの操作によって雲台を動かすので、コントローラ側は小さめのタッパーで作った。タッパーの内部にARDUINO PRO MINI(クローン)が入っている。
電源はスマホ充電用のモバイルバッテリを使い、USB Aオス-DCプラグをもつ「USB電源ケーブル」を使った。写真のモバイルバッテリを使うと、電圧が+4.7V程度まで落ちてしまうが、なんとか動いてくれた。
コントローラとサーボの接続にはLANケーブルを用いることにした。写真では、細くてしなやかな3mのケーブルをつないでいる。そのため、コントローラ側とサーボ側おのおのに、RJ45コネクタを使った。LANケーブルは、サーボ用の電源とGND、2つのサーボのための制御信号を伝える。

ジョイスティック操作スイッチコントローラとモバイルバッテリ。RCサーボを2つ負荷につないでおり、静止時にも駆動をかけているので、モバイルバッテリの給電が勝手にとまるようなことはなかった。

Arduino PRO MINI クローンを使う

ブレッドボードに載せたままだといろいろと都合が悪いので、工作用のスルーホール基板に必要な部材をハンダ付けしてこしらえたのだけど、先日買ったARDUINO PRO MINIをハンダ付けしてしまうと、今後のプログラミングや工作に支障があるので、”ARDUINO PRO MINI”をうたう安価な製品を通販で購入した。waves A_PROMINI waves A_PROMINI

有名通販サイトで2枚で1280円(送料込)だった。裏面に “The Simple”と書いてあるとおり、なんのアイソもなく、基板も厚くて安上がりに作った印象。通販サイトのページには5V、16MHz動作と書いてあったが、裏面の動作スペック(電圧、周波数)にチェックも入っておらず、ブレッドボードで試すまでは、果たしてブートローダーが入ってるのかな、と不安になった。

一番の問題点は、基板表(実装)面の、シリアル通信用の6つのスルーホールだろう。

Arduino pro mini

これがSparkFunの製品だが、左端にある通信用のスルーホールは上から、
GRN(DTR)、RXI、TXO、VCC、CTS(GND)、BLK(GND)
となっているのに対して今回購入したものは、
GND、GND、VCC、RXI、TXO、DTR
となっていた。SparkFunの製品の裏返しということ。

AE-FT-231Xを介してPCに接続してみたところ、実際にこのようなピン配置になっており、シルクの誤りというわけではなかった。使っていないのだけど、SparkFun社のUSB-シリアルボードを接続するならば、上下裏返しに使う必要があるのだろう。

まあ、Arduino IDEから「マイコンボードに書き込む」でスケッチを転送したところ、SparkFunのモジュールと同じように動いているので中身は同じだろう。

ジョイスティックおよびサーボ制御基板

Arduino PRO MINIと周辺のコネクタ類や抵抗などを、小型の両面スルーホール基板(72x47mm)にハンダ付けした。コネクタ類以外は抵抗だけである。

A_PROMINI_JTK_SERVO2

写真で、基板上側のターミナルブロックがジョイスティックとの接続用で、左側が+5V電源用のDCジャックと、サーボへのケーブルを接続するためのRJ45タイプコネクタになっている。左側の2つは、いずれも秋月電子のDIP化キットを使っているので、基板への固定も簡単。

基板の上の抵抗は、サーボ制御信号を出力するI/Oピンに直列に入れたもの(330Ω)と、330ΩとRJ45との間に入れたプルアップ抵抗(2KΩ)になっている。
直列に330Ωを挟んでおくことで、何かのはずみで制御信号線がGNDに短絡しても、流れる電流は15mA程度に制限されるから、40mAとされている各ピンのソース制限値を超えることはない。
プルアップ抵抗は、サーボまでの距離が長いときにも立上りエッジが出るよう気休めに入れた。このあたりはオシロスコープかロジックアナライザで見てみないと、効果は判然としないのだが。

このArduino PRO MINI(クローン)の特徴は、LEDが明るいことだろう。なんとなく、モジュールやその周辺が赤く写ってしまった。なので、以前の回路で入れたようなLEDの外付けはやめて、モジュールがもつLED(ピン13に接続されている)だけを使うことにした。

A_PROMINI_JTK_SERVO2

ブレッドボードでの試作のときはこんな具合でごちゃごちゃしていたが、基板にハンダ付けするとすっきりする。
A_PROMINI_JTK_SERVO2基板は、3つで108円の小型タッパーに収めてネジ止めした。ジョイスティックはタッパーの蓋にネジ止めしてある。RJ45やDCジャックの部分は、タッパー本体部分をカッターナイフで切り欠いて穴を開けた。

上の写真はタッパーの蓋をあけて、ブレッドボード用のケーブルでもってUSB-シリアル変換用のFT231Xに接続し、プログラムの入れ替えなんかをしているところ。開発時にサーボを接続していないようなときは、電源もFT231Xから供給している。

ジョイスティック

ジョイスティック 裏

タッパーの蓋はポリエチレン製なので、カッターナイフやドライバの先などで適当に穴を開け、ジョイスティックの端子が貫通するようにした。
また、ジョイスティックの基板の4隅にはネジ止め用と思しき穴があるので、それを使ってタッパーの蓋に固定した。ただ、この穴の径が2.5mm未満だったので、M2のネジ/ナットを調達する必要があった。

サーボ(雲台)側

A_PROMINI_JTK_SERVO1半分に割った小さな工作用の基板に、RJ45コネクタとサーボ接続用のピンポストを立て、基板をサーボブラケットの穴にネジ止めした。セロテープを巻いてあるのは、基板裏面の配線面が何かに接触してショートしないよう、薄いアクリルの板を貼ったため。回転用と傾斜用のサーボの接続を間違えないようにするため、基板の上にRとTと適当に書いておいた。

A_PROMINI_JTK_SERVO1サーボのケーブルを短く切ってしまってもいいのだけど、また別の用途にも使うだろうから、適当に結束するだけにした。

実際の操作

例によって操作している動画をyoutubeにあげた。

ジョイスティックの傾け方によってサーボの回転速度は3段階に変化する。また、ジョイスティックを離した時点で回転をやめるようにしてみた。スマホでモニタしながら都合のいい位置までパンしたりティルトするだろうから、ジョイスティックはあくまでも方向と速度を指定するだけの用途にした。

きょうのまとめ

自撮棒にサーボ雲台+AIR A01を載せて動画撮影もやってみようと思っていたものの、AIR A01 + MZD14-42EZでは重すぎる。ユラユラしてしまって安定しない。このカメラとレンズの組合せは245gしかないのに、である。100g台の軽い何か別のモノを載せることにしよう。

自撮棒としては、ベルボンが出しているコールマンブランドの製品を使ってみようとしていた。これにサーボ雲台 + AIR A01を載せると、やはり安定性に欠け水平を出すのが難しい。AIR A01だけを載せてみても、ふだん自撮りをしないせいもあって、なかなか満足いく結果が得られなかった。手元にスマホホルダーをつけて、自撮棒を伸ばして撮影するというスタイルも、かわった構図になって面白いだろうなぁ、とは思うのだけど。どうせなら、水の中まで突っ込めるカメラの方がいいかな。

ジョイスティック+WROOM-02という組み合わせで、ケーブル無しでの構成も既に作っているのだけど、httpでの制御では、たまにサーバーが応答するまでの時間が長くなったり、応答を返さなかったりすることがあって、あまり気持ちよく使えない。もうちょっと要検討といったところ。