工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Littlearm 2C:3DプリントされたArduinoロボットアームを構築する

コンポーネントと消耗品

>
Arduino Nano R3
× 1
サーボ(Tower Pro MG996R)
MG90Sサーボ
× 4
メペッドボード
× 1

必要なツールとマシン

>
3Dプリンター(汎用)

このプロジェクトについて

LittleArm 2Cは、STEMクラスがより多くのロボット工学カリキュラムを実装できるように、子供が簡単に使用できるキットになるように設計されています。子供が使いやすいように、より頑丈になり、組み立てがはるかに簡単になりました。

すべてのパーツは簡単に3D印刷でき、腕を滑らかでシンプルに保つように設計されています。デザイン全体のネジは15本未満です。

アームを制御するには、Windowsアプリケーション(元々はPythonコードで記述されています)を使用するか、Bluetoothを介して作成したAndroidアプリを使用します。

LittleArm 2Cを組み立てるための完全な手順は、ここにあります。

3Dプリントファイルはこちらからダウンロードできます。

コード

  • LittleArm 2CArduinoスケッチ
LittleArm 2C Arduino Sketch C / C ++
 // LittleArm 2C arduino code // LittleArm 2C3Dプリントロボットアームのシリアル制御を可能にします// Slant Concepts#include  // arduino library#include  //標準cによって作成されましたlibrary#define PI 3.141Servo baseServo;サーボshoulderServo;サーボelbowServo;サーボgripperServo; // +++++++++++++++グローバル変数++++++++++++++++++++++++++++++ +++ structjointAngle {//構造体は、変数をグループintベースに編成する方法です。 intショルダー; int elbow;}; structjointAngledesiredAngle; //サーボシントdesiredGripの望ましい角度; // GripperintgriperPosの望ましい位置; // gripperintコマンドの現在の位置; //関節角度のセットintdesiredDelay; //サーボがステップ間で行う遅延// intready =0; //プロセスを通知するために使用されるマーカーが完了しました// +++++++++++++++関数宣言+++++++++++++++++++ ++++++++ intservoParallelControl(int thePos、Servo theServo); //これはサーボを制御するための関数です// ++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++ void setup()//セットアップは操作のためにArduinoボードを準備しました{Serial.begin(9600); // USB通信(シリアルポート)をオンにして、毎秒9600ビットで通信するbaseServo.attach(5); //ピン5のサーボをサーボオブジェクトshoulderServo.attach(4);に接続します。 //ピン4のサーボをサーボオブジェクトに接続しますelbowServo.attach(3); //ピン3のサーボをサーボオブジェクトgripperServo.attach(2);に接続します。 //ピン2のサーボをサーボオブジェクトSerial.setTimeout(50);に接続します。 // 50ミリセンコンドの後、コンピュータとの通信を停止しても応答がありません。 arduinoがシリアルを長時間読み取らないようにしますSerial.println( "started"); //コンピュータに「開始済み」で出力baseServo.write(90); //サーボの初期位置shoulderServo.write(100); elbowServo.write(110); // ready =0;} //プライマリarduinoループ。これは、すべてのプライマリプログラムを配置する必要がある場所です。voidloop(){if(Serial.available()){//データがUSBポートを介してarduinoに送られる場合... // ready =1; // Readyは1に設定され、コマンドが実行されていることを示します//コマンドはコンピュータから「#、#、#、#、#、\ n」の形式で送信されます//以下のコードはそのコマンドを「解析」します//ベース角度、ショルダー角度、エルボー角度、グリップ角度、およびサーボの遅延にそれぞれ対応する整数に変換します。 desiredAngle.base =Serial.parseInt(); desiredAngle.shoulder =Serial.parseInt(); desiredAngle.elbow =Serial.parseInt(); desiredGrip =Serial.parseInt(); desiredDelay =Serial.parseInt(); if(Serial.read()=='\ n'){//最後のバイトが '\ n'の場合、読み取りを停止してコマンドを実行します '\ n'は 'done'を表しますSerial.flush(); //バッファに蓄積されている他のすべてのコマンドをクリアしますSerial.print( 'd'); //コマンドの完了を送信します "d"は "実行中"を表します}} //これらの値は、ジョイントがまだその位置に到達したかどうかのステータスです//プログラムの一部の内部で宣言された変数(次のような) 、は「ローカル変数」と呼ばれますint status1 =0; //ベースステータスintstatus2 =0; //ショルダーステータスintstatus3 =0; //エルボーステータスintstatus4 =0; //グリッパーステータスintdone =0; //この値は、すべての関節がこれらの位置に到達したことを示しますwhile(done ==0){//すべての関節がこれらの位置に到達するまでループします&&ready ==1 //サーボを目的の位置に移動します//このブロックのコードは「関数」を使用して、より凝縮されたものにします。 status1 =servoParallelControl(desiredAngle.base、baseServo、desiredDelay); status2 =servoParallelControl(desiredAngle.shoulder、shoulderServo、desiredDelay); status3 =servoParallelControl(desiredAngle.elbow、elbowServo、desiredDelay); status4 =servoParallelControl(desiredGrip、gripperServo、desiredDelay); //すべての関節がその位置に到達したかどうかを確認しますif(status1 ==1&status2 ==1&status3 ==1&status4 ==1){done =1; // done =1の場合、ループは停止します}} // whileの終わり} // +++++++++++++++++++++++++++++ +関数の定義++++++++++++++++++++++++++++++++++++++++++ intservoParallelControl(int thePos 、Servo theServo、int theSpeed){//関数形式:outputType FunctionName(inputType localInputName)//この関数は、サーボを目的の位置に向かって特定のステップ数だけ移動し、その位置に近いか、またはその位置に戻ったかどうかを返します。 thePos-目的の位置// thServo-移動するサーボのアドレスピン// theSpeed-サーボのステップ間の遅延intstartPos =theServo.read(); //使用しているサーボの現在の位置を読み取ります。 int newPos =startPos; // newPosは、サーボが移動するときにサーボの位置を保持します//コマンドに対して位置がどこにあるかを定義します//現在の位置が目的の位置よりも小さい場合は、位置を上に移動しますif(startPos <(thePos-5)){ newPos =newPos + 1; theServo.write(newPos); delay(theSpeed); 0を返します。 //サーボがその位置に到達していないことをプライマリプログラムに通知します} //現在の位置が目的の位置よりも大きい場合はサーボを下に移動しますelseif(newPos>(thePos + 5)){newPos =newPos-1; theServo.write(newPos); delay(theSpeed); 0を返します。 } //サーボが目的の範囲内で+ -5の場合、サーボが目的の位置に到達したことをメインプログラムに通知します。 else {1を返す; }} //サーボ並列制御を終了

回路図

Littlearmが設計されたMepedBoardを使用する場合、接続は4つだけです。

製造プロセス

  1. Bluetoothで制御されるRaspberryPi Robot
  2. ArduinoとRaspberryPiを使用してインターネット制御のビデオストリーミングロボットを構築する
  3. HaddingtonDynamicsのオープンソース3Dプリントロボットアーム
  4. デュアルアームスカラロボット
  5. MeArmロボットアーム-あなたのロボット-V1.0
  6. ラインフォロワーロボット
  7. Arduino3Dプリントロボットアーム
  8. Nunchuk制御ロボットアーム(Arduino付き)
  9. 音声制御ロボット
  10. イーサネットを介して制御されるロボットアーム
  11. Arduino制御ピアノロボット:PiBot