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

プログラマブル3軸ロボットアームキット:Arduino+Bluetoothでローカル/リモート制御

部品と材料

部品数量備考
Arduino Mega 25601I/Oポート豊富、メイン制御
SainSmart 3軸パレタイズロボットアーム(Arduino UNO/MEGA対応)13自由度モデル
MeArm DIYロボットアームキット14自由度モデル(爪付き)
HC-06 Bluetoothモジュール1Androidアプリと通信
Adafruit RGBバックライトLCD 16x21ステータス表示
Androidデバイス1リモート操作用
ロータリーポテンショメータ 10kΩ4ローカル操作用(各関節対応)
タクトスイッチ 12mm3モード切替、記録、実行等
LED(赤・青・緑・黄)各1状態表示用

使用アプリ・オンラインサービス

プロジェクト概要

産業用ロボットの基本機能を模倣した、プログラマブルな3/4自由度ロボットアームの制御システムです。ローカル(ポテンショメータ)とリモート(Androidアプリ/Bluetooth)の両制御モードを備え、プログラム(ティーチング)と自動再生(ラン)の2モードで動作します。

プログラマブル3軸ロボットアームキット:Arduino+Bluetoothでローカル/リモート制御

仕様・主要機能

項目内容
対応自由度3 DOF(ベース/ショルダー/エルボー)または 4 DOF(+グリッパー)
制御モードLOCAL(ポテンショメータ) / REMOTE(Androidアプリ・Bluetooth)
動作モードPROGRAM(位置記録)/ RUN(記録再生・ABORTで停止)
モード切替プログラム中でもLOCAL⇔REMOTE切替可能
ユーザー通知カラーLED×4、16x2 LCD、ブザー音
リモートアラームAndroidアプリからブザー鳴動可能

Androidアプリ

MIT App Inventor 2で開発。Google Playストアで「MJRoBot Arduino Robot Arm Control」として無料公開。スライダーで各関節角度を直感操作、PROGRAM/RUNボタン、モード切替、アラームボタンを搭載。

ハードウェア構成

ブロック図

プログラマブル3軸ロボットアームキット:Arduino+Bluetoothでローカル/リモート制御

Arduino MEGAを採用した理由はI/Oポート数の余裕確保。UNOでも74HC138デコーダ等でポート拡張すれば可能。

ロボットアームの関節構成

プログラマブル3軸ロボットアームキット:Arduino+Bluetoothでローカル/リモート制御

回路図・配線

プログラマブル3軸ロボットアームキット:Arduino+Bluetoothでローカル/リモート制御

サーボ電源はArduinoとは別系統(外部5-6V、サーボ仕様確認)で供給し、470μFコンデンサでノイズ対策。全GNDを共通接地。サーボ信号線をMEGAのPWMピンへ直結。

サーボ選定の注意:安価なMG995等は品質ばらつき大。本プロジェクトでは付属サーボで動作確認済みだが、デジタルサーボ(300Hz)使用時はServo.hライブラリ修正が必要な場合あり。

ソフトウェア設計

定義ファイル(ArmDefine.h)

各アームタイプごとにサーボ角度の最小/最大/初期値を定義。実機でポテンショメータを動かし、シリアルモニタ/LCDで動作範囲を確認して決定します。


// MeArm 4-DOF
#define minGrip 15  #define minBase 0   #define minShou 60  #define minElbw 60
#define maxGrip 45  #define maxBase 170 #define maxShou 180 #define maxElbw 150
#define midGrip 30  #define midBase 87  #define midShou 138 #define midElbw 100

/* SS 3-DOF
#define minGrip 75  #define minBase 5   #define minShou 5   #define minElbw 0
#define maxGrip 125 #define maxBase 150 #define maxShou 155 #define maxElbw 0
#define midGrip 100 #define midBase 90  #define midShou 90  #define midElbw 0 */

位置記録用配列


int gripPosition[100];
int basePosition[100];
int shouPosition[100];
int elbwPosition[100];
int positionIndex = 0;  // 記録ステップ数(最大100ステップ)

※EEPROM保存機能を追加すれば、電源オフ後もプログラム保持可能。

メインループのロジック


void loop() {
  checkBTcmd();           // Bluetoothコマンド受信・解析
  defineLocalRemote();    // LOCAL/REMOTEモード判定、アラームコマンド処理
  execTaskCmd = digitalRead(execTaskPin);
  if (execTaskCmd == HIGH || command == "runon") {
    RunProgram();         // 記録済みシーケンス再生
  } else {
    recArmPosition();     // 位置ティーチング(記録)
  }
  command = "";
}

主要関数の役割

コード構成(4ファイル)

  1. MJRoBot_Arm_Robot_Task_Prgm.ino:setup/loop、上記主要関数
  2. General_Functions.ino:checkBTcmd()、beep()、debounce()
  3. Arm_Ctrl_and_Display.ino:ポテンショ/スライダー読取、armPosition()、LCD/シリアル表示、アラーム
  4. ArmDefine.h:サーボ角度定義定数

完全ソースコード:GitHubリポジトリ

回路図

GitHub上の回路図(PNG)

まとめ

このチュートリアルは、ホビーレベルのロボットアームを「産業用ロボット風のティーチング・プレイバックシステム」へ昇華させる、体系的かつ実践的なガイドです。Arduino MEGAの豊富なI/Oを活かし、ポテンショメータによる直感的なローカルティーチングと、Bluetooth経由のリモート操作を両立。モード切替・アラーム・音声/視覚フィードバックなど、実用的なヒューマンインターフェースも網羅しています。

コードは機能ごとにファイル分割され、定数定義(ArmDefine.h)で異機種アームへの移植容易性を確保。デバウンス処理、サーボマッピング、状態管理など、組み込み開発の基本プラクティスが随所に見られます。MIT App Inventor 2でノーコードに近い形でAndroidアプリを作れる点も、ハードウェアエンジニアにとって心強いアプローチです。

発展アイデア:EEPROM/SDカードへのプログラム永続化、複数プログラム選択実行、逆運動学ソルバ導入(直交座標指示)、力覚センサ追加、ROS連携など。

製造プロセス

  1. Arduinoと1Sheeldで作る万能Androidリモコン──IR制御で家電を一括操作
  2. Arduino UNOで作るLCDアニメーション&ゲーム入門
  3. Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
  4. IoTで遠隔操作する自作ロボットアーム:Arduino MKR1000とSimulink、ThingSpeak活用
  5. Arduino駆動3Dプリントロボットアームの製作:ステップバイステップガイド
  6. Arduinoベースのヌンチャク操作6自由度ロボットアームキット
  7. ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
  8. スマートなArduino制御ロボットアームの製作:簡単DIYチュートリアル
  9. Python 3からArduino UNOを制御 – シリアル通信でLED点滅デモ
  10. 産業用ロボットアームが製造業を変える:導入メリットと主要メーカー完全ガイド
  11. ロボットマニピュレータ vs ロボットアーム:違い・種類・用途を徹底比較