ICS変換基板の使用方法(5) Arduino Nano EveryでKRSサーボを制御
【関連記事】
ICS変換基板の使用方法(4-2) M5StackでID読み書き
ICS変換基板の使用方法(5) Arduino Nano EveryでKRSサーボを制御
ICS変換基板の使用方法(6-1) Arduino MEGAから18個のサーボを制御する
ICS変換基板の使用方法(6-2) 直線補間でサーボを滑らかに動かす
ICS変換基板の使用方法(6-3) Arduino MEGAからKXR-L6の歩行制御
Arduino Nano Everyは、従来のArduino Nanoの進化版です。今回の変更により、シリアル端子がUSBとは別に独立して用意されています。UNOではUSBとシリアル端子が共用でしたのでHardSerialではサーボの情報を取得することができませんでしたが、Everyでは、PCと通信しながらサーボを制御できますので、現在値やIDを取得してPCに表示することができます。この進化は、ロボットで使用する人にとって非常にうれしいポイントです。
今回は、Arduino Nano Everyを利用して、KRSサーボを制御する方法をご紹介します。
※弊社では他社マインボード、及びプログラムに関するお問い合わせついて対応致しかねます。以下の内容は、仕様事例として参考にご一読ください。
■必要な製品
・ICS変換基板 ×1
・KRSサーボ ×1
・ZH接続ケーブルB ×1(サーボ付属)
※KRS-2500/3300の場合
・電源
※下記のどちらかをご用意ください。
サーボに対応する電圧に合わせた電源が必要です。
詳しくは使用するサーボの商品ページをご参照ください。
1)バッテリー+充電器
2)ACアダプター
・HV電源スイッチハーネス、またはLV電源スイッチハーネス
※9~12V電源の場合はHV、6~7.4Vの場合はLVを使用します。
※ICS変換基板のピンヘッダを実装するためにはんだ付けが必要です。
■接続方法
ブレッドボードにICS変換基板とArduino Nano Everyを挿し、下記のように端子同士を接続します。EveryのVINピンはHVの9~12Vでも直接接続できます。
ICS変換基板にサーボを接続します。ケーブルは、片側がサーボ端子のZH接続ケーブルBを使用します。コネクタの爪が電源端子の方に向くように接続してください。
最後にLV電源スイッチハーネスをICS変換基板の電源端子に接続し、スイッチがOFFであることを確認してから電源につないでください。
電源をONにする前に、再度配線を確認し挿し間違い、逆接が無いように十分ご注意ください。
■切り替えスイッチ
ICS変換基板に実装されている「書込」「実行」の切り替えスイッチは、常に「実行」のままにしてください。
■ライブラリ
現在公開しているライブラリをそのまま使用することができます。下記よりライブラリをダウンロードし、付属のマニュアルに従ってインクルードしてください。
サポート記事『ICS Library for Arduino ver.2」
※Arduino Nano Every用に開発環境を整える必要があります。
■サンプルプログラムでサーボを制御
スケッチ例のIcsClass(HardSerial)の『KrsServo1』を開きます。このスケッチ例はArduino UNO用に書かれていますので一部変更が必要です。
UNOでは、シリアル端子がUSBと共用でしたので"Serial"と書いていましたが、Everyでは独立してシリアル端子がありますので"Serial1"と指定します。クラスを作成する箇所にシリアルポートを指定する箇所"&Serial"を"&Serial1"に変更してください。
IcsHardSerialClass krs(&Serial,EN_PIN,BAUDRATE,TIMEOUT);
↓
IcsHardSerialClass krs(&Serial1,EN_PIN,BAUDRATE,TIMEOUT);
他は変更する必要ありません。非常に簡単です。
プログラムを書き込んで電源をONにし、動作確認をしてみてください。ID0のサーボが左右に動けば成功です。
【プログラム全体】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <IcsHardSerialClass.h> const byte EN_PIN = 2; const long BAUDRATE = 115200; const int TIMEOUT = 1000; //通信できてないか確認用にわざと遅めに設定 IcsHardSerialClass krs(&Serial1,EN_PIN,BAUDRATE,TIMEOUT); //インスタンス+ENピン(2番ピン)およびUARTの指定 void setup() { krs.begin(); //サーボモータの通信初期設定 } void loop() { krs.setPos(0,7500); //位置指令 ID:0サーボを7500へ 中央 delay(500); //0.5秒待つ krs.setPos(0,9500); //位置指令 ID:0サーボを9500へ 右 delay(500); //0.5秒待つ krs.setPos(0,7500); //位置指令 ID:0サーボを7500へ 中央 delay(500); //0.5秒待つ krs.setPos(0,5500); //位置指令 ID:0サーボを5500へ 左 delay(500); } |
■Arduino Nano 33 BLE
Evreyに似た Arduino Nano 33 BLE
https://store.arduino.cc/usa/nano-33-ble
はArduinoのライブラリ本体のライブラリ側でUARTのパリティを設定しても無視される不具合があるので、現状は使用できません。
※2020/03現在
Arduino nRF528x Boards(Mbed OS) by Arduino ver 1.1.4
使用したい場合はユーザフォルダのAppDataのどこか(Windouws環境)にArduinoのフォルダがあり、のmbedに該当するフォルダを検索していただくとSerial.cppがあるので
UART::begin(unsigned long baudrate, uint16_t config)の内部を書き換えてみてください。
1 2 3 4 5 6 7 8 9 |
if(config == SERIAL_8E1) { _serial->format(8,mbed::RawSerial::Even,1); } else { _serial->format(); } |
この修正は暫定的なものです。
作業手順が不明の場合は修正されるまでお待ちください。
Arduino Nano 33 IoT
https://store.arduino.cc/usa/nano-33-iot
に関しては未確認です。
こちらが利用できることで、サーボの利用範囲が広がりますので引き続き調査を継続します。
ご期待ください!
KRS-2552R3HV ICSの詳細をみる KRS-3204R2 ICSの詳細をみる KRS-2572R2HV ICSの詳細をみる KRS-2552R2HV ICSの詳細をみる KRS-2542R2HV ICS の詳細をみる KRS-9004HV ICSの詳細をみる KRS-5054HV ICS H.Cの詳細をみる KRS-5053HV ICS H.Cの詳細をみる KRS-5034HV ICSの詳細をみる KRS-5033HV ICSの詳細をみる KRS-5032HV ICSの詳細をみる KRS-6104FHV ICSの詳細をみる KRS-3304R2 ICSの詳細をみる KRS-3302 ICSの詳細をみる ICS変換基板の詳細をみる KSBシールド2の詳細をみる ICS変換基板シールドの詳細をみる KXR用オプションボード搭載セットAの詳細をみる KRS-6003R2HV ICSの詳細をみる KRS-6003RHV ICSの詳細をみる KRS-2572HV ICSの詳細をみる KRS-2552RHV ICSの詳細をみる KRS-2542HV ICSの詳細をみる KRS-4037HV ICSの詳細をみる KRS-4034HV ICSの詳細をみる KRS-4033HV ICSの詳細をみる KRS-4032HV ICSの詳細をみる KRS-4031HV ICSの詳細をみる KRS-3304 ICSの詳細をみる KRS-3301 ICSの詳細をみる KRS-3204 ICSの詳細をみる KXR アドバンスセットA Ver.2の詳細をみる KXR-A5 アーム型 Ver.2の詳細をみる KXR-L4T-R カメ型・ローバー型 Ver.2(アカデミックパック)の詳細をみる KXR用オプションボード搭載セットBの詳細をみる