BambuStudioでSTLファイルを開いて、印刷
まず、以下のように接続してください
サーボ1 Gnd - 0
VCC - 1
Signal - 2
サーボ2 Gnd - 3
VCC - 4
Signal - 5
サーボ3 Gnd - 6
VCC - 7
Signal - 8
サーボ4 Gnd - 9
VCC - 10
Signal - 11
obnizサーボモータ制御002<br />
<style>
button {
width: 50px;
}
</style>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous" ></script>
obniz ID:<input type="text" id="oid" style="width: 100px;">
<button onClick="init();">開始</button><br />
状態:<span id="sts"></span>
<hr />
グリッパー:<br />
<button onClick="moveServo(4, -10);">-10</button>
<button onClick="moveServo(4, -6);">-6</button>
<span id="servo4">90</span>
<button onClick="moveServo(4, 6);">+6</button>
<button onClick="moveServo(4, 10);">+10</button><br />
上腕:<br />
<button onClick="moveServo(3, -5);">-5</button>
<button onClick="moveServo(3, -2);">-2</button>
<span id="servo3">90</span>
<button onClick="moveServo(3, 2);">+2</button>
<button onClick="moveServo(3, 5);">+5</button><br />
下腕:<br />
<button onClick="moveServo(2, -5);">-5</button>
<button onClick="moveServo(2, -2);">-2</button>
<span id="servo2">90</span>
<button onClick="moveServo(2, 2);">+2</button>
<button onClick="moveServo(2, 5);">+5</button><br />
回転:<br />
<button onClick="moveServo(1, 6);">+6</button>
<button onClick="moveServo(1, 4);">+4</button>
<span id="servo1">90</span>
<button onClick="moveServo(1, -4);">-4</button>
<button onClick="moveServo(1, -6);">-6</button><br />
<script>
var obniz;
var sv = [];
function init() {
$("#sts").html("開始");
obniz = new Obniz($("#oid").val());
obniz.onconnect = async function () {
$("#sts").html("接続しました");
sv[1] = obniz.wired("ServoMotor", {gnd:0, vcc: 1, signal: 2});
sv[2] = obniz.wired("ServoMotor", {gnd:3, vcc: 4, signal: 5});
sv[3] = obniz.wired("ServoMotor", {gnd:6, vcc: 7, signal: 8});
sv[4] = obniz.wired("ServoMotor", {gnd:9, vcc:10, signal:11});
setTimeout(function() {
obniz.display.clear();
obniz.display.print("接続しました");
}, 5000);
}
}
async function moveServo(ind, diff) {
let a = parseInt($("#servo"+ind).html());
a += diff;
$("#servo"+ind).html(a);
await sv[ind].angle(a);
obniz.display.clear();
obniz.display.print(ind+","+a+"°");
}
</script>
改良点アイデア
1)ネジ、ナットをM1.6からM2へ変更(M2の方が入手しやすい)
STLファイルをblenderでインポートして、穴の部分に円柱を通して、ブーリアンで差を取って、その円柱を非表示にする
2)回転部分の改良(安定させる、ボールベアリングをどうやって入れるのか)
・ベアリング用のボールを購入して、溝を作って、そこに入れて滑らかに動くようにする?
・小さい車輪のようなものを4つ程度作って回転するように底面と回転台に間に入れる?
3)グリッパー部分の改良(もう1段階シンプルにする)
・片方の爪を直接サーボモータにつけて、もう1つをギアでつけるシンプル構造
4)機械むき出し感、シルクアイアンブラック・シルクシルバーを視覚的に使う
・現在はサーボモータを見られないように覆ってあるが、それを見せるようにさらにシンプルな構造に改良して、簡単に取り付けができるようにする。
5)サーボモータ制御をM5AtomS3+ATOMIC Motionベース(STM32F030)で行い、ジョイスティックをPS3のBluetoothで行う
・まずは、obnizで動きを作るが、ちゃんと動くようになったら、Motionベースにサーボモータをつないで、M5AtomS3で動かす。
・Google ChromeからWeb Bluetoothで動くようにする
・PS3のBluetoothGameコントローラーでも動かせるようにする
・M5AtomS3+M5Stack用8chサーボドライバユニットを使って可変抵抗によってリーダーアームを作ってコントロールする
・Arduino Nanoに2つのジョイスティックをつけて、ESP-Nowによって接続しコントロールする
Nanoに2つのジョイスティックが付けられて制御できるのか調査が必要。
・いずれにせよ、安価で確実なコントローラを作成か購入して準備
この台の下にバッテリーとコントローラを保持できるケース兼台を作る
台も含めて簡単にターゲットの安価ケースに収まるようにする。ケースの保護の隙間も埋められるようにする
寸法、位置は保持しながら、フレームを残し、2つの部品を簡単に連結できるようにする
線の導く場所にも注意する