Open Source Turtle Robot (OSTR) その7(最終回)
図形の描き方
対角五角星の描画を例に説明します。
左図は外角旋回の一筆書きにて描く方法、右図は内角旋回のスイッチバックにて描く方法です。

1)一筆書きによる描画
スタート位置から図形の頂点まで移動し、ペンを下げて5角形の対角を前進で結びます。
頂点に戻ったらペンを上げてトップ位置に移動して停止します。
①図形データの記述方法1 図左側参照 この動作を単純に記述すると次のようになります。
forward(30); // スタート位置から30㎜前進
right(72); // 72度右旋回 72度=90度-頂点の内角36度の1/2
pendown(); // ペンを下げる
forward(60); // 60㎜前進
right(144); // 144度右旋回
forward(60); // 60㎜前進
right(144); // 144度右旋回
forward(60); // 60㎜前進
right(144); // 144度右旋回
forward(60); // 60㎜前進
right(144); // 144度右旋回
forward(60); // 60㎜前進
penup(); // ペンを上げる
right(72); // 72度右旋回
forward(35); // 35㎜前進
done(); // モータ OFF
②図形データの記述方法2 同じ動作を繰り返す場合はfor()文を使うと簡潔になります。
同じ動作を4回繰り返すので for (int x = 0; x < 4; x++)と短く記述できます。
forward(30); // スタート位置から30㎜前進
right(72); // 72度右旋回
pendown(); // ペンを下げる
for (int x = 0; x < 4; x++) { // { }内を4回繰り返し
forward(60); // 60㎜前進
right(144); // 144度右旋回
}
forward(60); // 60㎜前進
penup(); // ペンを上げる
right(72); // 72度右旋回
forward(35); // 35㎜前進
done(); // モータ OFF
2)内角旋回とスイッチバックによる描画
1)と同じ図形を描きますが、内角旋回とスイッチバック(前後進)することにり、描画時間が大幅に短縮できる
特徴があります。
図形データの記述方法3
forward(30); // スタート位置から30㎜前進
right(72); //72 度右旋回
pendown(); // ペンを下げる
forward(60); // 60㎜前進
left(36); // 36度左旋回
backward(60); // 60㎜後進
left(36); // 36度左旋回
forward(60); // 60㎜前進
left(36); // 36度左旋回
backward(60); // 60㎜後進
left(36); // 36度左旋回
forward(60); // 60㎜前進
penup(); // ペンを上げる
right(72); // 72度右旋回
forward(35); // 35㎜前進
done(); // モータ OFF
ファームウェアの対角七角星や他の図形を参考に、面白い図形を考案して下さい。
最後にもう一度動画をご覧下さい。
対角五角星の描画を例に説明します。
左図は外角旋回の一筆書きにて描く方法、右図は内角旋回のスイッチバックにて描く方法です。

1)一筆書きによる描画
スタート位置から図形の頂点まで移動し、ペンを下げて5角形の対角を前進で結びます。
頂点に戻ったらペンを上げてトップ位置に移動して停止します。
①図形データの記述方法1 図左側参照 この動作を単純に記述すると次のようになります。
forward(30); // スタート位置から30㎜前進
right(72); // 72度右旋回 72度=90度-頂点の内角36度の1/2
pendown(); // ペンを下げる
forward(60); // 60㎜前進
right(144); // 144度右旋回
forward(60); // 60㎜前進
right(144); // 144度右旋回
forward(60); // 60㎜前進
right(144); // 144度右旋回
forward(60); // 60㎜前進
right(144); // 144度右旋回
forward(60); // 60㎜前進
penup(); // ペンを上げる
right(72); // 72度右旋回
forward(35); // 35㎜前進
done(); // モータ OFF
②図形データの記述方法2 同じ動作を繰り返す場合はfor()文を使うと簡潔になります。
同じ動作を4回繰り返すので for (int x = 0; x < 4; x++)と短く記述できます。
forward(30); // スタート位置から30㎜前進
right(72); // 72度右旋回
pendown(); // ペンを下げる
for (int x = 0; x < 4; x++) { // { }内を4回繰り返し
forward(60); // 60㎜前進
right(144); // 144度右旋回
}
forward(60); // 60㎜前進
penup(); // ペンを上げる
right(72); // 72度右旋回
forward(35); // 35㎜前進
done(); // モータ OFF
2)内角旋回とスイッチバックによる描画
1)と同じ図形を描きますが、内角旋回とスイッチバック(前後進)することにり、描画時間が大幅に短縮できる
特徴があります。
図形データの記述方法3
forward(30); // スタート位置から30㎜前進
right(72); //72 度右旋回
pendown(); // ペンを下げる
forward(60); // 60㎜前進
left(36); // 36度左旋回
backward(60); // 60㎜後進
left(36); // 36度左旋回
forward(60); // 60㎜前進
left(36); // 36度左旋回
backward(60); // 60㎜後進
left(36); // 36度左旋回
forward(60); // 60㎜前進
penup(); // ペンを上げる
right(72); // 72度右旋回
forward(35); // 35㎜前進
done(); // モータ OFF
ファームウェアの対角七角星や他の図形を参考に、面白い図形を考案して下さい。
最後にもう一度動画をご覧下さい。
最後までご覧い頂き有難うございました。
皆様の参考になれば幸いです。
![]() 良かったらclickして下さい! | ![]() 良かったらclickしてください! |
スポンサーサイト
Open Source Turtle Robot (OSTR) その6
文字を描く方法
OSTRの本体が完成したら文字を描く手順を1個のFontデータとしてファームウェアに保存します。
先ずは、フォントのデザインから始めます。私は、Excelの罫線を使ってデザインしました。
私がファームウェアに組み込んだオリジナル英数フォント

1)英数フォントのデザイン
①下図のようにExcelのワークシートを縦横1:1の方眼状にセットします。
②一文字の大きさを大文字が縦8マス横4マス、小文字が縦10マス横3マスと統一します。
③ロボットは右向きにスタートすることを原則とし、スタートポイントは赤マークです。
④ストップポイントは1マス空け、次の文字のスタートポイントに右向きに停止(青マーク)することを原則とします。
⑤斜め罫線と横罫線の接続は、必ず罫線の交点で行います。

2)文字を描く手順
ロボットの進め方は一筆書きが効率的で理想ですが、文字によっては不可能なので後進描画も駆使して効率的に行います。
先ず、一筆書きで描くU、少し複雑なA、前後進で描くWについてソースの記述方法を説明します。
①アルファベットのUを描く手順
void fontdat_U() { // U
right(90); // 右に90度旋回
pendown(); // ペンを下げる
forward(fs * 7); // 7マス前進
left(45); // 左に45度旋回
forward(sqrt(2)*fs);
//1マスの対角線の長さをsqrt(2)で求め、fsを掛けた長さを前進、fsの定義がint fs = 3の場合は1fs=3mm
left(45); // 左に45度旋回
forward(fs * 2); // 2マス前進
left(45); // 左に45度旋回
forward(sqrt(2)*fs);
left(45); // 左に45度旋回
forward(fs * 7); // 7マス前進
penup(); // ペンを上げる
right(90); // 右に90度旋回
forward(fs); // 1マス前進
done(); // ステッピングモーター解放:モータードライバーのENABLEをOFF
}
②アルファベットのAを描く手順
void fontdat_A() { // A
forward(fs * 2); // 2マス前進
right(68.2); // 右に68.2度旋回 旋回角度は3)勾配計算式にて求めます。
pendown(); // ペンを下げる
forward(sqrt(pow(2, 2) + pow(5, 2))*fs); //2×5マスの対角線の長さを求めて前進
right(21.8); // 右に21.8度旋回
forward(fs * 3); // 3マス前進
penup(); // ペンを上げる
backward(fs * 2); // 2マス後進
right(90); // 右に90度旋回
pendown(); // ペンを下げる
forward(fs * 4); // 4マス前進
penup(); // ペンを上げる
right(90); // 右に90度旋回
backward(fs * 2); // 2マス後進
pendown(); // ペンを下げる
forward(fs * 3); // 3マス前進
right(21.8); // 右に21.8度旋回
forward(sqrt(pow(2, 2) + pow(5, 2))*fs); //2×5マスの対角線の長さを求めて前進
penup(); // ペンを上げる
right(68.2); // 右に68.2度旋回
forward(fs * 3); // 3マス前進
done(); // ステッピングモーター解放:モータードライバーのENABLEをOFF
}
③アルファベットのWを描く手順 //特長:前進の一筆書きりも旋回角度が狭く書き上りが早い。
void fontdat_W() { // W
left(97.13); // 左に97.13度旋回
pendown(); // ペンを下げる
backward(sqrt(1 + pow(8, 2))*fs); // 1×8マスの対角線の長さを求めて後進
right(16.59); // 右に16.59度旋回
forward(sqrt(1 + pow(6, 2))*fs); // 1×6マスの対角線の長さを求めて前進
left(18.92); // 左に18.92度旋回
backward(sqrt(1 + pow(6, 2))*fs); // 1×6マスの対角線の長さを求めて後進
right(16.59); // 右に16.59度旋回
forward(sqrt(1 + pow(8, 2))*fs); // 1×8マスの対角線の長さを求めて前進
penup(); // ペンを上げる
right(82.80);//-0.07 // 右に16.59度旋回
forward(fs); // 1マス前進
done(); // ステッピングモーター解放:モータードライバーのENABLEをOFF
}
④ここでは、AとUとWの3文字のみを参考に説明しましたが、フォントデザインの目標文字を指でなぞりながら
ファームウェアのvoid fontdat_目標文字 ();を読み取ると動作が理解できると思います。
尚、OSTR本体のキャリブレーションを正確に調整していないと描画した文字がズレてしまいます。
前記の例を参考に貴方のオリジナルを作成して下さい。
3)勾配角度計算式 四捨五入は小数点以第二位としました。
キャラクターデザインを行ったExcelのワークシートに勾配計算式を追加しておけば大変便利です。
計算式は簡単「=DEGREES(ATAN(C4/E4))」これだけです。

使い易いプルダウンメニューのリスト式にすると便利です。

OSTRの本体が完成したら文字を描く手順を1個のFontデータとしてファームウェアに保存します。
先ずは、フォントのデザインから始めます。私は、Excelの罫線を使ってデザインしました。
私がファームウェアに組み込んだオリジナル英数フォント

1)英数フォントのデザイン
①下図のようにExcelのワークシートを縦横1:1の方眼状にセットします。
②一文字の大きさを大文字が縦8マス横4マス、小文字が縦10マス横3マスと統一します。
③ロボットは右向きにスタートすることを原則とし、スタートポイントは赤マークです。
④ストップポイントは1マス空け、次の文字のスタートポイントに右向きに停止(青マーク)することを原則とします。
⑤斜め罫線と横罫線の接続は、必ず罫線の交点で行います。

2)文字を描く手順
ロボットの進め方は一筆書きが効率的で理想ですが、文字によっては不可能なので後進描画も駆使して効率的に行います。
先ず、一筆書きで描くU、少し複雑なA、前後進で描くWについてソースの記述方法を説明します。
①アルファベットのUを描く手順
void fontdat_U() { // U
right(90); // 右に90度旋回
pendown(); // ペンを下げる
forward(fs * 7); // 7マス前進
left(45); // 左に45度旋回
forward(sqrt(2)*fs);
//1マスの対角線の長さをsqrt(2)で求め、fsを掛けた長さを前進、fsの定義がint fs = 3の場合は1fs=3mm
left(45); // 左に45度旋回
forward(fs * 2); // 2マス前進
left(45); // 左に45度旋回
forward(sqrt(2)*fs);
left(45); // 左に45度旋回
forward(fs * 7); // 7マス前進
penup(); // ペンを上げる
right(90); // 右に90度旋回
forward(fs); // 1マス前進
done(); // ステッピングモーター解放:モータードライバーのENABLEをOFF
}
②アルファベットのAを描く手順
void fontdat_A() { // A
forward(fs * 2); // 2マス前進
right(68.2); // 右に68.2度旋回 旋回角度は3)勾配計算式にて求めます。
pendown(); // ペンを下げる
forward(sqrt(pow(2, 2) + pow(5, 2))*fs); //2×5マスの対角線の長さを求めて前進
right(21.8); // 右に21.8度旋回
forward(fs * 3); // 3マス前進
penup(); // ペンを上げる
backward(fs * 2); // 2マス後進
right(90); // 右に90度旋回
pendown(); // ペンを下げる
forward(fs * 4); // 4マス前進
penup(); // ペンを上げる
right(90); // 右に90度旋回
backward(fs * 2); // 2マス後進
pendown(); // ペンを下げる
forward(fs * 3); // 3マス前進
right(21.8); // 右に21.8度旋回
forward(sqrt(pow(2, 2) + pow(5, 2))*fs); //2×5マスの対角線の長さを求めて前進
penup(); // ペンを上げる
right(68.2); // 右に68.2度旋回
forward(fs * 3); // 3マス前進
done(); // ステッピングモーター解放:モータードライバーのENABLEをOFF
}
③アルファベットのWを描く手順 //特長:前進の一筆書きりも旋回角度が狭く書き上りが早い。
void fontdat_W() { // W
left(97.13); // 左に97.13度旋回
pendown(); // ペンを下げる
backward(sqrt(1 + pow(8, 2))*fs); // 1×8マスの対角線の長さを求めて後進
right(16.59); // 右に16.59度旋回
forward(sqrt(1 + pow(6, 2))*fs); // 1×6マスの対角線の長さを求めて前進
left(18.92); // 左に18.92度旋回
backward(sqrt(1 + pow(6, 2))*fs); // 1×6マスの対角線の長さを求めて後進
right(16.59); // 右に16.59度旋回
forward(sqrt(1 + pow(8, 2))*fs); // 1×8マスの対角線の長さを求めて前進
penup(); // ペンを上げる
right(82.80);//-0.07 // 右に16.59度旋回
forward(fs); // 1マス前進
done(); // ステッピングモーター解放:モータードライバーのENABLEをOFF
}
④ここでは、AとUとWの3文字のみを参考に説明しましたが、フォントデザインの目標文字を指でなぞりながら
ファームウェアのvoid fontdat_目標文字 ();を読み取ると動作が理解できると思います。
尚、OSTR本体のキャリブレーションを正確に調整していないと描画した文字がズレてしまいます。
前記の例を参考に貴方のオリジナルを作成して下さい。
3)勾配角度計算式 四捨五入は小数点以第二位としました。
キャラクターデザインを行ったExcelのワークシートに勾配計算式を追加しておけば大変便利です。
計算式は簡単「=DEGREES(ATAN(C4/E4))」これだけです。

使い易いプルダウンメニューのリスト式にすると便利です。

次回は、図形の作成方法を説明します。
皆様の参考になれば幸いです。
Open Source Turtle Robot (OSTR) その5
OSTR Paradise Model
OSTR Paradise Model ファームウェアの説明
先に紹介しましたキャリブレーション用ファームウェアにおいてOSTRの校正が終われば、WiFi機能を追加して
スマートフォンから操作が出来るようにします。前回のその4と併せてご覧下さい。
1)WiFi機能の追加
#include "WiFi.h"
#include "WiFiUDP.h"
WiFiUDP UDP;
char recbuff[8];
IPAddress myIP(192, 168, 4, 1);
IPAddress HOSTIP (192, 168, 4, 2);
const char *ssid = "OSTR"; //任意の名前を付けます。
const char *password = "12345678"; //任意のパスワードを設定します。
void setup() { //setupに次の3行を追加します。
WiFi.softAP(ssid, password); // setting SSID and Password
WiFi.config(myIP, WiFi.gatewayIP(), WiFi.subnetMask()); // setting IP Address
UDP.begin(8000); // setting UDP port,port number is the same setting as the controller and the side.
}
void loop() { //これでスマートフォンのAPPをセットすればWIFI UDPにて接続できます。
if (UDP.parsePacket() > 0) {
UDP.read(recbuff, 8);
UDP.flush();
}
WiFi_receive();
}
2)スマートフォンにWiFi TCP/UDP Controller APPのインストール

Google Playから無料のAPPをインストールしてください。以前から使わせて頂き、重宝している優れものです。
残念ですがiPhone用が無いようです。
下の画像はOSTR用に設定した操作画面です。

3)WiFi TCP/UDP Controllerの設定手順
①操作画面右上のPREFERENCEをタップすると設定画面が開きます。上から順に説明します。
②CONTROLLERはA-Eの5つの操作画面が選べます。
③TARGETの設定:IP or Domain NameにWiFi機能の追加で記したIPアドレス192.168.4.1を入力します。
④Portの設定:同じくUDP begin(8000に合わせて8000を入力します。
⑤TCP/UDPの設定:UDPのラジオボックスを選択します。
⑥BUTTONの設定: NAME:button1から25までの使用するボタンに名前を設定します。
ここでは、button1、button3、button5、button7、button9は使わないのでdefのままとします。
それ以外のボタンに上記操作画面を参考に記入して下さい。但し、文字は1行しか入力できません。
行を増やすとボタンの体裁が崩れてしまうので注意して下さい。また、小文字を入力しても大文字が表示されます。
⑦Commandの設定:操作画面左側の十字ボタンの設定です。ボタンをタップした時に出るコマンドキャラクターを
button2 = F、button4 = L、button6 = R、button8 = Bと記入します。
⑧STOP COMMANDを設定:button名はdefのままにしてbutton2 、button4 、button6、button8のみチェックボックスを
ONにします。これでボタンから指を離した時に停止します。これを忘れると指を離しても動作を続けるので注意して下さい。
⑨button10から25のボタン設定:これらのボタンは、図形や定型文描画の他にFontSizeの切り替えとペンの上下操作を
割り当てています。4)のファームウェアに合わせてコマンドキャラクターを設定します。
⑩Visibilityの設定:ボタンを表示/非表示用のチェックボックスです。十字ボタンの1,3,5,7,8を非表示とします。
⑪Repeatableの設定:intervalsは変更せずにVisibilityと同じ設定にします。
⑫OPTIONの設定:LANDSCAPEのラジオボックスを選択します。
⑬Button Sizeの設定:次は一番下から3行目に飛んでボタンのサイズを変更します。
button 1-9を120に変更、button 10-25を90に変更しましたが、使用するスマホの画面に合わせます。
以上でWiFi TCP/UDP Controller APPの設定は終了です。
4)ファームウェアとFont dataを公開します。
先ずは、下記の「OSTR_Paradise_Model」ファームウェアをご覧下さい。
スマートフォンアプリのボタン操作に一致した受信信号をSwich caseにより選択します。
OSTRの前進/後進/左右旋回の他、図形や文字を描きます。また、ペンの上下やフォントサイズの切り替えも行います。
私の現用ファームウェアです。未だ、改良の余地が有りますが参考に添付しました。
OSTR Paradise Modelのファームウェアを別画面で開きます。
Font Dataは、大文字小文字のアルファベットと数字だけですが、組み合わせて文字列を表示できます。
フォントデータが、長いので別ファイルとしましたがファームウェアの下部に張り付けて使います。
Font Dataを別画面で表示します。
5)OSTRにファームウェアのインストール手順
ここでは、Arduino IDEやESP32のボード設定が完了していることを前提に説明しています。
①コントロール基板のUSBシリアル端子にUSBシリアル・モジュールとUSBケーブルを接続します。
②OSTRの電源を入れてから書き込みスイッチをONにします。
③次にリセットボタンを押すと書き込み準備が完了します。
④次にArduino IDEのツールを開き、ボードマネージャーからESP32 Dev Moduleを選択します。
⑤シリアル・ポート番号が表示されたら、チェックを入れます。
⑥次にツールバーのチェックマークをクリックするとコンパイルが始まります。
⑦コンパイルが完了したら、右隣りの⇒をクリックすると書き込みが始まり、暫くすると終了します。
⑧書き込みが終了後、必ず書き込みスイッチをOFFにします。
6)スマートフォンアプリとOSTRのWiFi接続手順
①OSTRの電源を入れ、スマートフォンの設定ボタンをタップしてWiFiを開きます。
②3)の設定が済んでいる場合、利用可能なネットワークリストにOSTRが入っています。これをタップすると接続が完了します。
③次にスマートフォンアプリWiFi TCP/UDP Controllerを開くと操作が可能となります。
④試しに左側の十字ボタンをタップしてOSTRの操作を試します。十字ボタンは押している間同じ動作を続けます。
⑤次に右側16個のボタンから図形又は定型文の何れかを選んで実際に描画させます。
一度選択すると、そのプロセスが終了するまで他のボタンを押しても無効です。
⑥ファームウェアの図形やフォントと定型文は、次回の作り方を参考に各自自由に作成して登録して下さい。
最後にもう一度動画をご覧下さい。
次回は、描画用フォントデータの作成方法を説明します。
皆様の参考になれば幸いです。
Open Source Turtle Robot (OSTR) その4
ハードウェアが完成したらキャリブレーションを行います。

ここにはArduino unoを使ったトライアル型OSTRのハードウエア及びファームウェアについて詳しく解説されています。
このページのステップ2:ファームウェアをフラッシュするの下段にてTIRL_Arduino_TEST.zipがダウンロードできます。
私は、このファームウェアを参考に動作方法を調べ、手持ちの部品に合わせてファームウェアを書き換えました。
基幹部品の相違点
使用ライブラリーについて
A4988モータードライバーを使うために既存のライブラリーを色々テストした結果、A4988ライブラリー内の
BasicStepperDriver.h、MultiDriver.h、SyncDriver.hをincludeしてcontroller.rotate()を使うことにしました。
このライブラリーには、ステップ数を制御する関数が無いのでcontroller.rotate() 回転角度関数をステップ数に
変換することにより解決しました。
StepperDriverのダウンロードはこちらから
ハードウエアのキャリブレーション用ファームウエア (WiFi 機能を省略しています)
例としてwheel_dia = 70.0; wheel_base = 90.0;として説明してますが、実際の寸法を測定して入力した後、
キャリブレーションを実行して1辺が100㎜の正四角形になるように微調整を行います。
CCW(反時計回り)の場合
wheel_diaパラメータの調整
正方形の一辺の長さが100㎜より長い場合は、wheel_diaの値を増やし、短い場合は値を減らします。
wheel_baseパラメータの調整
旋回角度が90度より狭い場合は、wheel_baseの値を減らし、90度より広い場合は値を増やします。
キャリブレーション用ファームウェアを用意しました。
OSTR_Paradise_Model_Calibration.html

ESP32を使ったOSTR用ファームウェアの説明
先ずは、Arduinoを使ったOSTRのトライアルページを参考にして下さい。ここをクリックします。ここにはArduino unoを使ったトライアル型OSTRのハードウエア及びファームウェアについて詳しく解説されています。
このページのステップ2:ファームウェアをフラッシュするの下段にてTIRL_Arduino_TEST.zipがダウンロードできます。
私は、このファームウェアを参考に動作方法を調べ、手持ちの部品に合わせてファームウェアを書き換えました。
基幹部品の相違点
部品名 | オリジナルモデル | パラダイスモデル |
ステッピングモータ | 1/16 or 1/64 減速機付きモータ | 1回転200ステップ直接駆動 |
モータードライバー | UNL2803 トランジスターアレイ | A4988 1/16 マイクロステップ |
マイコン | Arduino uno | ESP32 WiFi/Bluetooth |
使用ライブラリーについて
A4988モータードライバーを使うために既存のライブラリーを色々テストした結果、A4988ライブラリー内の
BasicStepperDriver.h、MultiDriver.h、SyncDriver.hをincludeしてcontroller.rotate()を使うことにしました。
このライブラリーには、ステップ数を制御する関数が無いのでcontroller.rotate() 回転角度関数をステップ数に
変換することにより解決しました。
StepperDriverのダウンロードはこちらから
ハードウエアのキャリブレーション用ファームウエア (WiFi 機能を省略しています)
例としてwheel_dia = 70.0; wheel_base = 90.0;として説明してますが、実際の寸法を測定して入力した後、
キャリブレーションを実行して1辺が100㎜の正四角形になるように微調整を行います。
CCW(反時計回り)の場合
wheel_diaパラメータの調整
正方形の一辺の長さが100㎜より長い場合は、wheel_diaの値を増やし、短い場合は値を減らします。
wheel_baseパラメータの調整
旋回角度が90度より狭い場合は、wheel_baseの値を減らし、90度より広い場合は値を増やします。
キャリブレーション用ファームウェアを用意しました。
OSTR_Paradise_Model_Calibration.html
次回は、WiFi UDPを使ったファームウエアとスマホAPPの使い方を説明します。
Open Source Turtle Robot (OSTR) その3
コントロール回路の説明
先ずは、instructablesに紹介されたDrawing Robot for Arduinoを参考にご覧下さい。
OSTRのオリジナルでは、減速機付きユニポーラ型ステッピングモータをUNL2803トランジスターアレイにて駆動しています。
私は、手持ちの部品を活かす事とギアモータのバックラッシュが気になり、1回転200ステップのステッピングモータを使い、
A4988モータドライバーにてマイクロステップを1/16に選択、1回転3200ステップの直接駆動としました。
また、マイコンにESP32を使い、WiFi経由でスマートフォンのフリーアプリからリモート操作ができるようにしました。
回路図
ESP32チップは、専用基板を介さずにユニバーサル基板に裏向きに張り付けて使いました。ESP32にはI/O端子が沢山
ありますが、使ってる端子は僅かです。残りのI/O端子は工夫次第で追加機能に生かせます。
制御電源は、ROHM社の基板用DC/DCコンバータにて3.3Vに降圧、ESP32、A4988、サーボモータに供給しました。
また、ソースファイルの書き換え用にUSBシリアル変換モジュール用端子や書き込みスイッチを設けています。

コントロール基板
主にA4988が2個とESP32を小さなユニバーサル基板に組み込んだ簡単な回路です。
左右のモータドライバーA4988は、電流制限用ポテンションメータにて夫々約200mAに設定しています。

バッテリーボード
先にも述べましたが、デジタルカメラCanon EOS-7Dの使い古したリチウムイオン電池を流用しました。
バッテリー保護カバーに電極を取り付け、バッテリーの取り外しがワンタッチで行えるようにしています。

モーター電源用DC/DCコンバータ
MT3608使用の昇圧型DC/DCコンバータをバッテリーボードの裏側に取り付けています。

新しい動画をご覧下さい。
次回から、ソースファイルとスマホのAPPについて説明します。
皆様の参考になれば幸いです。
先ずは、instructablesに紹介されたDrawing Robot for Arduinoを参考にご覧下さい。
OSTRのオリジナルでは、減速機付きユニポーラ型ステッピングモータをUNL2803トランジスターアレイにて駆動しています。
私は、手持ちの部品を活かす事とギアモータのバックラッシュが気になり、1回転200ステップのステッピングモータを使い、
A4988モータドライバーにてマイクロステップを1/16に選択、1回転3200ステップの直接駆動としました。
また、マイコンにESP32を使い、WiFi経由でスマートフォンのフリーアプリからリモート操作ができるようにしました。
回路図
ESP32チップは、専用基板を介さずにユニバーサル基板に裏向きに張り付けて使いました。ESP32にはI/O端子が沢山
ありますが、使ってる端子は僅かです。残りのI/O端子は工夫次第で追加機能に生かせます。
制御電源は、ROHM社の基板用DC/DCコンバータにて3.3Vに降圧、ESP32、A4988、サーボモータに供給しました。
また、ソースファイルの書き換え用にUSBシリアル変換モジュール用端子や書き込みスイッチを設けています。

コントロール基板
主にA4988が2個とESP32を小さなユニバーサル基板に組み込んだ簡単な回路です。
左右のモータドライバーA4988は、電流制限用ポテンションメータにて夫々約200mAに設定しています。

バッテリーボード
先にも述べましたが、デジタルカメラCanon EOS-7Dの使い古したリチウムイオン電池を流用しました。
バッテリー保護カバーに電極を取り付け、バッテリーの取り外しがワンタッチで行えるようにしています。

モーター電源用DC/DCコンバータ
MT3608使用の昇圧型DC/DCコンバータをバッテリーボードの裏側に取り付けています。

新しい動画をご覧下さい。
次回から、ソースファイルとスマホのAPPについて説明します。
皆様の参考になれば幸いです。