IoTを使用してロボットアームをリモート制御する
コンポーネントと消耗品
> ![]() |
| × | 1 |
必要なツールとマシン
> ![]() |
|
アプリとオンラインサービス
> ![]() |
| |||
![]() |
|
このプロジェクトについて
はじめに
私が本当に試したかったのは、ロボットアームを完全にゼロから設計することでした。利用できるオープンソースの設計はたくさんありますが、何もないところから設計、構築、プログラミングできれば嬉しいと思いました(実際にそうだったのです)。
設計段階とプログラミング段階の両方についてお話します。ただし、サーボ角度を制御するだけではないので、プログラミング側に焦点を当てます。
実行中の最終プロジェクトのビデオへのリンクは次のとおりです-https://www.mathworks.com/videos/how-to-control-a-robotic-arm-from-a-remote-location-using-iot-1538564659095。 html。
Simulinkを使用して、ロボットアームを制御するMCUであるArduinoMKR1000をプログラムしました。次に、MATLAB分析を備えたオープンIoTプラットフォームであるThingSpeakを介して、事実上どこからでもロボットアームを制御する機能を追加しました。
必要なハードウェア
- 15” x 20” 1/8インチ合板
- Arduino MKR1000
- 5xGS9025MGサーボ
- 2.1mmブレッドボード対応のDCバレルジャック
- 6 VDCバレルジャック電源
- ジャンパー線
- 3x2n2222aトランジスタ
- 10xM2ナット
- 10x M2 x10ネジ
- 40xM3ナット
- 40x M3 x25ネジ
使用するソフトウェア
- MATLAB
- Simulink
- Arduinoハードウェア用のMATLABサポートパッケージ
- Arduinoハードウェア用のSimulinkサポートパッケージ
- ThingSpeakのMATLABサポートパッケージ
デザイン
部品のコストを低く抑えたかったので、ホビーサーボ、特にGS-9025MGモデル用に設計しました。これは、最終的な重量とサイズが制限されていることを意味しました。これは、マイクロサーボが大きなトルクを発揮できず、その結果、重いレバーアームを持ち上げることができないためです。
1/4インチの合板でプロトタイピングしてみましたが、サーボには重すぎることがわかりました。アームの長さを短くし、1/8インチの合板を使用したところ、サーボ制御の問題が修正されました。 Fusion 360を使用してデザインを作成し、デザインを.dxfファイルとしてダウンロードし、それをレーザーカットしました。
また、バッテリーパックから引き出される電流が非常に高く、非常に速く排出されるため、壁のコンセントから連続的なDC電圧を供給することが必要であることがわかりました。
モーターの制御に関しては、Arduino MKR1000には4つのPWMピンがありますが、5つのサーボを制御するには5つ必要でした。私は創造性を発揮し、1つのPWMピンを使用して2つのサーボを制御し、デジタルピンを使用して2つのサーボを切り替えて一度に1つずつ制御しました。
これを説明する回路は次のとおりです。
<図>
Arduinoへのサーボの配線は次のとおりです:
<図>
プログラミング
プログラミングには2つの部分がありました。それは、組み立ててサーボを特定の場所にコマンドするプロトタイピングフェーズと、ThingSpeakを使用してサーボに場所をコマンドできる正確な制御フェーズです。
プロトタイピング <図>

スライダーと定数ブロックを使用して、Arduinoのサーボに特定の角度に移動するように命令することができました。このモデルを使用して、コマンドされた角度と実際のアームの角度の間のバイアス、および各サーボの許容角度の範囲を調べました。
ギアが付いているブロックは、サーブを0〜180の特定の角度に命令するためのPWM書き込みブロックです。
2D平面運動の腕に逆運動学を使用して、腕をXY座標に移動するために必要な角度を解きました。このリンクは運動学をかなりよく説明していることがわかりました:https://appliedgo.net/roboticarm/
正確な制御 <図>

これは他のものより複雑に見えますが、ロジックは同じです。出力ブロックは、ギア付きのサーボ書き込みブロックのままです。入力ブロックはスライダー/定数ブロック入力ではなくなりましたが、ThingSpeakチャネルから読み取られています。 ThingSpeakの使用については後で詳しく説明します。入力はアームのX位置とY位置であり、loc2angles MATLAB関数ブロックを使用してアームのコマンド角度に変換されます。モデルの上部にあるangles2locブロックは、サーボを確認するためにシステムを監視する方法にすぎません。順運動学を使用して正しい入力位置に変換された角度。このプロジェクトで使用したSimulinkの優れたツールの1つは、外部モードです。 。これにより、Arduino自体で実行されているシステムを監視することができました。
灰色の雲が付いているブロックは、ArduinoのSimulinkサポートパッケージに組み込まれているThingSpeak読み取りブロックです。チャネルID、取得したいデータフィールド番号、API読み取りキーを入力すると、そのチャネルとフィールドからデータが出力されます。心配しないでください。これらの用語のいずれかに慣れていない場合は、すぐに詳しく説明します。
ThingSpeakの使用:チャネルの作成と使用
1. https://thingspeak.com/
にアクセスします2.右上隅にある[サインイン]をクリックし、無料のMathWorksアカウントを使用してログインします。
3.ダッシュボードページで[新しいチャネル]をクリックします
4.以下のようにデータを入力します。表示されるデータは、入力する必要があるすべてです。
<図>
5.下部にある[チャンネルを保存]をクリックします
6.これでThingSpeakチャネルが作成されました
7. MATLABコマンドウィンドウまたはMATLABモバイルアプリを使用して、次のようなコマンドを入力できます:thingSpeakWrite(chID、[0.6963.94 -12 0 0]、 'WriteKey'、APIKEY、 'Fields'、[1 2 3 4 5]);
これにより、ThingSpeakチャネルの指定されたフィールドに新しいデータが書き込まれます。関数呼び出しの2番目の引数の値を変更して、対応するフィールドの値を変更できます。値を変更すると、チャネルデータは次のようになります。
<図>
モデルの実行
ThingSpeakチャネルの設定が完了したら、Arduinoで外部モードでモデルを実行するか、ハードウェアにデプロイすることができます。 Simulinkモデルで、上部のメニューパネルの小さな歯車をクリックして[モデル構成パラメーター]に移動し、[ハードウェアの実装]を選択して、[ハードウェアボード]がArduino MKR1000であることを確認します。同じタブで、WiFiプロパティをクリックし、WiFi資格情報を入力してネットワークにアクセスします。
緑の実行ボタンをクリックしてモデルを外部モードで実行するか、青の展開ボタンをクリックしてモデルをハードウェアに展開します。
<図>
モデルが実行されたら、電話のMATLABまたはMATLAB mobileからThingSpeakチャネルのフィールドに新しいデータを書き込んで、ロボットアームがどのように動くかを確認できます。
コード
https://www.mathworks.com/matlabcentral/fileexchange/68880-controlling-a-robotic-arm-from-anywhere-using-iot
製造プロセス
- Arduino、1Sheeld、Androidを使用したユニバーサルリモコン
- Arduinoでコインアクセプターを制御する
- Arduinoコントロールセンター
- IoTを使用した心拍数モニター
- IOT-ESP8266、Arduino、超音波センサーを使用したスマートジャー
- Arduino3Dプリントロボットアーム
- FirmataとXboxOneControllerを使用してArduinoRoverを制御する
- Arduino加湿器制御
- Nunchuk制御ロボットアーム(Arduino付き)
- Arduinoを使用したシンプルでスマートなロボットアーム
- AlexaとArduinoIoTCloudを使用したテレビのフルコントロール