11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

【Plotclock製作 その②】ようやく時刻を描いてくれるようになったPlotclockくん完成!サーボの調整からRTCモジュール導入までの話。

ようやくですが製作途中の(ほぼ完成です!)私のPlotclockくんがちゃんと時刻を描いてくれるようになりました。
いやぁ〜、ここまで来るの長かったぁ〜!

現在時刻をペンで書いては消すを繰り返すこの「Plotclock」ですが、Arduinoでのサーボ制御の教材として人気があるようで、そして実際組み立て動かしてみると非常に楽しいものです。

前回この「Plotclock」製作に必要なパーツの紹介やサーボのキャリブレーションなどを少しやっていきました。
基本的にはArduinoとサーボが3つあれば回路は組む事ができ、駆動部分のパーツデータは公開されているので3Dプリンターをお持ちなら製作出来ます。

私は3Dプリンターを持っていないため、これらパーツがセットになったキットを入手して製作を開始しました。
Plotclockキットでは製作に必要なパーツが全て揃い便利なんですが、実際にうまく動作させるには初めてだといろいろと調べる事が多くて・・・(その分かなり勉強にはなりましたが!)

これまでPlotclock製作にはいろんな方がチャレンジされているようですね!
私も晴れてその一人となったわけですが、私のようにキットを使うにしろパーツから製作し組み上げる場合にしても初めてだといろいろと迷う場面が出てくるかと思います。

現在私のPlotclockくんは何とかここまで動かす事が出来るようになりました。
完成?って言ってもいいのですが・・・サーボのパラメーター調整などもう少し上手くやればもうちょっと綺麗に描けそうではありますが・・・

これからこのPlotclockを製作される方もいるかと思います。
全く初めてだといろいろ迷われる場面が出てくると思いますが、私事ですがとりあえずここまで動かせる状態になるまでやってきた事を少しまとめておきます。
いろいろと失敗した事の方が多いのですが、今回はそのあたりは省略し最短ルートで動かせるまでの道筋を書いていきたいと思います。

Plotclock制作【サーボキャリブレーションから実際に動かすまで】

前回、Plotclock製作に必要なパーツの紹介や組み立てを行いました。
今回使っているのは、製作に必要なパーツ等が全てセットになったこちらのPlotclockキットを使い製作しています。

Arduinoとサーボで動かす時間を書いて消す時計Plotclockを作る![その① パーツ紹介]

パーツデータやArduinoスケッチ、資料等はGitHubやThingiverseに多数アップされていますのでそちらも参考にしてみて下さい!

参考 PlotclockGitHub 参考 PlotclockThingiverse

今回使っているキットには、付加機能としてリアルタイムクロックモジュール(DS3231RTC)やLCDディスプレイが付属していますが、3Dプリンター等で駆動部分のパーツが作れれば基本的にはArduinoにサーボ3台を繋げただけのシンプルな構成でも作る事ができます。

それではサーボのキャリブレーションからやっていきたいと思います。
まずはArduinoのスケッチ書き込みから順を追って説明していきますね。

ArduinoにPlotclockスケッチを書き込む

Plotclockのオリジナル?となるArduinoスケッチは前回こちらのものを使いました。

参考 PlotclockGitHub

そして実際に動作させる場合、シリアルモニターに『DS1307 read error』が表示され・・・。
いろいろと調べ修正箇所は分かりましたが、今回使っているキットではRTC(リアルタイムクロック)モジュールにDS3231が付属しているのでそちらを使って進めていきます。

MEMO
RTC(リアルタイムクロック)モジュールとは、Arduinoの電源を切ってもこのモジュール内にタイム情報(時刻)が保持されるので毎回時刻の設定をしなくてもよくなるというものです。

実際に動作させるまでいろいろと煮詰まった箇所があったのですが、動いてくれないと面白くないですよね!
RTCモジュールでの動作等、Arduinoで使用するライブラリなど含めはじめてだとほんと大変でした!

ってことで今回こちらではこれから製作される方のために最短ルートで動かせるまでをやっていきたいと思います。
こちらのTwitter投稿も参考にさせて頂きました。
これから製作される方が陥るであろうポイントなど・・・参考になりました。

それではここからが本題です。
Plotclockの設定を進めていきましょう。

まずPlotclockのスケッチを動かすには、【Time】と【RTCライブラリ】が必要となってきます。
進めていくにあたり必要となるこの[DS3231RTC]と[Time]ライブラリがPlotclockスケッチとセットになって配布されているサイトがありました。
Arduinoスケッチ内のサーボのキャリブレーション箇所など解説されているので大変助かりました。

参考 3D Printed Time-Plotting RobotKuongshun Electronic Limited

今回上記サイトのものを使い進めていきたいと思います。
まずは上記サイトにアクセスしArduinoのスケッチとライブラリをダウンロードします。

ダウンロードしたファイルを解凍し開くと[plotclock][DS3231][Time-master]の3つのフォルダがあります。(3Dプリントパーツ用のstlファイルもあります)

[plotclock]フォルダ内にはArduinoスケッチが入っています。
そしてそのスケッチで使用するライブラリが[DS3231][Time-master]となります。
必要なライブラリを検索してインクルードさせる作業ははじめてだとどれを使っていいのか?なんて結構面倒でした。
Arduinoスケッチとライブラリがセットになっているので分かりやすいかと思います。

この使用する2つのライブラリをまずはArduinoにインクルードしていきます。

Arduinoの【環境設定】画面からライブラリ用のフォルダの場所を確認。
デフォルト設定だと下図のようにスケッチブックの保存場所は、[Documents]⇒[Arduino]フォルダとなっています。
この[Arduino]フォルダ内に[libraries]というフォルダがあり、これがライブラリ格納用のフォルダとなります。

ライブラリ格納用のフォルダの位置が確認できたら、先程ダウンロードした2つのライブラリ[DS3231][Time-master]をフォルダごとこの[libraries]フォルダ内に移します。
これでArduinoでこのライブラリが使用出来るようになります。

あとは[plotclock]フォルダ内のファイル(plotclock.ino)を開きます。
上記ライブラリがインクルードされこのような表示になります。

これをArduino内に書き込み進めていきます。

左右サーボのキャリブレーション

上記スケッチのArduinoへの書き込みが完了らたら、左右サーボのみが動き出します。(初期状態ではキャリブレーションモードでの動作となっています)

下図のように左右の腕が90°横と上を向くようにアームを取り付けます。

動作させ少しズレるようならスケッチ内のパラメーターを変更し微調整していきます。

左右サーボの水平方向の微調整はこちらのパラメーターの数値を変更して調整します。(まっすぐ横を向くように調整)

また垂直方向(上方向)のパラメーターはこちらとなります。(まっすぐ上を向くように調整)

上手く左右のアームが水平と垂直を繰り返すようになるまで調整します。
こんな感じで動くようになれば問題ないかと思います。

ここからキャリブレーションモードを解除してもう1つのリフトサーボも含めて微調整していきます。

キャリブレーションモードの解除はこちら。
30行目の#define CALIBRATIONをコメントアウト(頭に//を付ける)します。(いろんな箇所を変更しているので行数は多少前後しているかもしれません!)

この状態で起動すれば通常の動作モードとなります。
実際にペンを持たせてさらに動きを調整していきます。

リフトサーボはペンからボードまでの距離に応じ調整していきますが・・・結構この調整が大変でした!
このリフトサーボのパラメーターはこちらの数値を変更して微調整して下さい。

このPlotclockの動作はほぼこの調整と言ってもいいくらい、かなりシビアな微調整が必要となってきます。
私も何度も繰り返し調整し、ようやくここまで動くようになりました。

リフトサーボの動く速度変更などその他のパラメーターもありますが、今回はキャリブレーション部分に限定したいと思います。

リアルタイムクロック(RTC)モジュールの取り付け

電源投入のたびに時刻設定をするのは少々面倒なのでリアルタイムクロックモジュール(DS3231RTC)を取り付けます。
このモジュールは今回使用しているPlotclockキットに付属していましたが、DS1307RTCでも問題ないかと思います。

PlotclockキットにはArduinoの拡張用モジュールが付属していたので接続は簡単です。
それぞれ対応したピンに挿すだけです。(VCC・GND・SDA・SCL)

Arduino UNO R3 拡張ボード V5.0
HiLetgo

このArduino拡張ボードがあればサーボも含め配線はシンプルにまとまります。

パーツから自作されている方はArduinoに直付けでも問題ないですが、サーボの配線や5V・GNDラインが結構大変となります・・・!

あとはスケッチ内のこの部分で時刻を設定。
初回のみ下記部分のコメント(//)を外して動作させるとRTCモジュール内にタイム情報が書き込まれ以降は保持されます。(時刻情報が書き込まれたら//を付けてコメント文に戻して下さい。)

一応シリアルモニターから時刻情報を確認。
電源を切り再度投入時、時刻が保持されていたら問題ありません。

MEMO
繋いだPCから時刻を読み取る方法も考えましたが、コード変更が結構大変そうなので今回は断念!

最後に!

以上、こんな感じでPlotclock製作をやってきました。
いろいろと失敗等ありましたが、これから製作をお考えの方のためになるべく最短ルートで出来る方法をご紹介しました。

今回Plotclockキットを使いましたが、3Dプリンターをお持ちならパーツデータは多数ネット上に上がっているのでArduinoとサーボがあれば製作は可能です。

あとはコードを修正し動きを変えてみたり、パーツの形状を変えたりと・・・いろいろとアレンジが出来そうです。

今回使用したPlotclockキットには、液晶画面(LCDモジュール)も付属していました。(現在時刻をここに表示させるのかな?)
特に必要ないような気がしますが・・・まだ上手く表示出来ていないので今回は省略させてもらいます。

実際に製作してみるとその大半はサーボの調整(パラメーターの調整)が肝になるかと思います。
何とかここまで動かす事ができ、もうその達成感で大満足しちゃってますが・・・

Arduinoを扱う初歩の教材として非常に学べる事が多かったです。
いろいろ四苦八苦してようやく動作するようになりましたが、物作りは楽しくその達成感もまた最高ですね!

コメントを残す