fc2ブログ

M5 Stack ATOM Lite を使って倒立振子型ロボットを作る その3

2020年6月25日
私は、後期高齢者の爺さんですが、若い方に科学や工作について興味を抱いて欲しいと願っています。
EVO2_ATOM.jpg

EVO2用ESP32ソースファイルの紹介
先ずは、B-ROBOT EVO2用にESP32のソースファイルを公開されたghmartin77氏への敬意と感謝を申し上げます。
ESP32を使うことにより、原形のB-ROBOT EVO2に比べ回路の簡素化により部品点数が少なくなりました。
GitHub B-ROBOT EVO2 ESP32を開きます。
BRobotEvo2ESP32を開くと1番上のBRobotEvo2ESP32.inoはダミーファイルで、4番目のESP32SelfbalancingBot.cppが
本当のソースファイルなので拡張子をcppからinoに変更します。
次にそれ以外の12個のファイルは、libraryファイルなのでフォルダー名をBrobot等と付けた中にコピーし、Arduinoのlibraryに
インストールします。

M5stack ATOM Liteを使うためのコード変更
ghmartin77氏のGithubでは、ESP32 DevKitを使ってますが、私は小さく作るためにM5stack ATOM Lite(技適証明付き)
を使いました。
そのために使用するGPIOの番号を変更する必要があります。GPIOがバラバラなのは、プリントパターンを優先した結果です。
変更箇所はlibraryのdefines.hなのでテキストエディタ等で次の部分(11行目から)を編集します。
#define PIN_ENABLE_MOTORS 1219
#define PIN_SERVO 1732
#define PIN_MOTOR1_DIR 2726
#define PIN_MOTOR1_STEP 1433
#define PIN_MOTOR2_DIR 2523
#define PIN_MOTOR2_STEP 2625
以上の6行を書き換えたら保存を忘れずに行います。
注意:ESP32では、I2CのGPIOが21pin=SDA22pin=SCLと規定されているので手組で配線される方は忘れずに!
BrobotEvo2_03.jpg


ArduinoIDEでの書き込みについて
ここでは、M5stack ATOMの特別な機能を使わないので"M5Atom.h"を#includeする必要がありません。
ボードの選択は標準のESP32 Dev ModuleでOKです。
注意:Upload Speedは115200に設定します。これより早いと書き込みエラーが出ます。
ATOM_Lite_IDE1.jpg

コントロールソフトについて
B-ROBOT EVO2開発元のJJrobots社がスマホ用アプリ[JJrobots control APP]を無料公開されています。
android用はGooglePlay、iPhone用はApp Storeにてダウンロードして下さい。
APPの使い方は、JJrobots社のホームページにてご覧下さい。
JJrobots社のホームページには、倒立振子2輪ロボットの原理の他、参考になる情報が満載です。
EVO_APP.png

遊び方
完成したら動かせてみましょう!机の上などは落下の危険があるので広い場所で行って下さい。
①本体を寝かせて電源スイッチをON。
②暫くするとアームが小刻みに動いた後静止します。(自動キャリブレーション)
③スマホのWiFi設定をタップすると利用可能なネットワークに「bbot」と表示されていると思います。
④「bbot」をタップしてパスワード[12345678]を入力設定します。
⑤少しすると接続済みになります。
⑥スマホにインストール済のJJrobots control APPを起動します。
⑦APPの右側SERVOボタンを押すとアームが本体を起こして自動的に倒立します。 左側のSERVO2は実装していません。
⑧後は、前後と左右のスライダーを動かす事により、思い通りに動かせます。
 各スライダーは画面から指を離すと中立点で停止します。
⑨PROボタンを押すと動作スピードがアップしますが、普通モードで慣れてからでないと操作が難しいです。
海外ではサーキット・コースを作り、競技会が行われています。何人かで遊ぶと楽しいと思います。

機能を追加して楽しむ
M5stack ATOMを使った場合は、GPIOを全部使って余りが無いので無理ですが、GPIOに余裕があるESP32 DevKitや
ESP32単体に置き換えると、各種センサーを取り付けて障害物を避けながらの自動走行やライントレースを楽しむなど、
工夫次第で色々と発展させることが出来ます。

自作出来ない方のためにキットの販売も有りますが・・・
JJrobots社ではキット販売を行っていますが、使っているWiFiチップが日本国内で使えない技術適合証明が付いていない
ので注意が必要です。

最後にもう一度動画をご覧下さい。


最後までご覧頂き有難うございました。

皆様の参考になれば幸いです。

スポンサーサイト



テーマ : 電子工作
ジャンル : 趣味・実用

M5 Stack ATOM Lite を使って倒立振子型ロボットを作る その2

2020年6月23日
先は動画をご覧下さい。
キビキビ走り回る安定度抜群の倒立振子型2輪ロボットです。前面カバーに幼児が好きなドラえもんのイラストを借用しました。


1)ボディの工作について
私と同じ部品の入手が難しく、切削用のDXFファイルを添付しても役に立たないと思います。
と言うのは、ここで使用したステッピングモータ39㎜はオリジナルマインド社の新古品を利用しましたが、今では入手出来ません。
一般的には国内で入手し易い42㎜(NEMA17)タイプを使うことになります。

その他の工作については5年前の記事になりますが、下記URLのB-ROBOT3号機iの紹介記事を参考にして下さい。
http://kishiwada2.web.fc2.com/CNC/B-Robot3.htm

2)コントロール基板の回路図
今回製作目標の一つ小型化を実現するのに超小型のM5 Stack ATOM Liteを使いました。
ATOM Liteには、ESP32picoが組み込まれています。しかし、GPIOが最大8個しか使えませんが、B-ROBOT EVO2に必要な
要件を最小限ですが満たしています。但し、標準機能以外の拡張性が有りません。
ATOM Liteの3.3V出力電流の容量が僅かなので、別途3.3V500mAの電源を用意しました。
尚、GPIOの出力先がバラバラなのは、プリントパターンを優先した結果です。 IO26と32がPH2.0 4Pコネクターから出力
されていますが、本当はここにIO21と22を出してほしかった。その理由はI2Cラインが便利に使えるからです。
Brobot_EVO2_circuit1.gif

3)CNC切削でプリント基板の作製
簡単な回路なのでユニバーサル基板で作れますが、生基板にCNCでパターンを切削しました。
下の画像は実寸より大きいですが、実際の寸法は55㎜X55㎜の正方形です。但し2個所ジャンパー線が必要です。
基板切削用DXFデータのZIPファイルをダウンロード出来ます。
BrobotEvo2_PCB1.gif


4)組み立て済の基板を参考にして下さい。
ATOM LiteとMPU6050の間隔が狭かったので上記プリントパターでは少し間隔を広げてます。
BrobotEvo2_03.jpg

5)電源について
私は手持ちのデジカメ用7.4Vリチウムイオン電池を使いましたが、純正品が高価なので互換品を使っています。
参考:Canon純正型のNB-10L(ロワ・ジャパン)880円をAMAZONにて購入。
新たに用意される方は、3S(11.1V)タイプのLipo電池を使う方法があります。その場合はDC/DCコンバータが不要です。
NB-10Lの電池ケース加工方法はB-ROBOT3号機の紹介記事を参考にして下さい。

次回はghmartin77氏がESP32用に作成され、Githubに公開されたソースファイルを
M5 Stack ATOM Liteへの変更点などを紹介します。


テーマ : 電子工作
ジャンル : 趣味・実用

M5 Stack ATOM Lite を使って倒立振子型ロボットを作る その1

2020年6月17日
5年前にjjrobots社のB-ROBOTを4台作りましたが、今回B-ROBOTにESP32を使った海外の記事が目に留まり、
5台目を作ってみました。 作っての感想は抜群の安定性で皆さんにお勧め出来る性能です。
参考にした記事ではESP32DevKitを使ってましたが、私は超小型のATOM Liteを使って完成させました。

完成したB-ROBOT Evo2 (前後のカバーを撮影用に外しています)。
BrobotEvo2_01.jpg

今回使った全パーツ
ステッピングモータの下側が片面生基板をCNCでパターンカットしたPCBでサイズは約55X55㎜角に纏めました。
モータドライバA4988が2個並ぶ左下が24x24㎜角のATOM Liteで、その横がMPU-6050 3軸ジャイロセンサーです。
バッテリーはキャノンのデジカメに使われている7.4Vリチウムイオン電池を流用しています。
ボディやホイールは何時ものように3㎜と5㎜のアクリル板をCNC加工して作りました。
BrobotEvo2_02.jpg

次回から製作についての詳細やソフトウエアーのお話を順次掲載します。


テーマ : 電子工作
ジャンル : 趣味・実用

Theo Jansen Mechanism series No.9 その8

2020年6月10日
スマホのリモコンアプリとM5 Stack ATOM Liteを使ってTJ9をPWM制御します。

1)スマートフォン用アプリについて
スマホのリモコンアプリはその6で紹介しましたMovicMaker Controller Arduino Bluetooth RCを使います。
アプリはGoogle Playにてダウンロードして下さい。また、使い方はその6を参照して下さい。

2)M5 Stack ATOMを使う準備
①Arduino IDEのインストール
ここでは、Arduino環境でソースファイル(スケッチ)を作成します。このため、PCにArduino IDEの準備が出来ている
事を前提とします。
M5 Stack ATOMにはESP32 Picoが使われているのでESP32 libraryを前もってインストールする必要があります。
ここをクリックするとGitHub Arduino ESP32 Libraryを開きます。

②Arduino IDEにM5 Atom Libraryをインストールします。
次の画像のようにArduino IDEのスケッチ⇒ライブラリをインストール⇒ライブラリを管理の順番にクリックすると
下画像のライブラリマネージャが開きます。
Arduino_Library1.jpg

③下画像のようにM5Atomと入力してインストールを行います。
M5Atom_Library1.jpg

④ここでは、ATOM Lite内蔵のRGB LEDを使用します。
そのために、必要なFastLED Libraryを下画像の手順で予めインストールしておきます。
FastLED_Install.jpg

⑤ボードはESP32 Pico Kitを選択します。
また、ATOM Liteは、Upload Speedを115200に下げないと書き込みエラーが出てしまいます。
ソースファイル(スケッチ)の書き込み前に必ず設定を変更しておきます。
余談ですがUpload Speedを115200下げれば、ボードをESP32 Dev Moduleを選んでも書き込みが出来ています。
ESP32_Pico_Kit.jpg

3)ソースファイル(Arduino sketch)の説明
先ずは次のソースファイルをご覧下さい。
内容は、その6の2)コントローラーにスマートフォン使った方法の②Bluetoothアプリに対応したTJ9 ESP32用を
M5 ATOM Liteに変更した関係でGPIO番号が異なるのこと、モータ制御をPWMに変更したことが主な違いです。
クリックしてソースファイルを開く TJ9_ATOM_BT_PWM.html

先ずは使用するlibraryをincludeします。
#include "M5Atom.h"//M5Atom Libraryを使います。
#include "BluetoothSerial.h"//BluetoothSerial Libraryを使います。
BluetoothSerial TJ9_ATOM_BT; //BluetoothSerialに名前を付けます。

今回は、駆動モータをPWM制御します。
駆動モータは性能にバラツキがあり、左右に回転差が出て直進せずに左右何方かへカーブすることが有ります。
モータドライバーをON/OFFのデジタル信号で制御する場合は左右の回転差を補えませんが、PWM制御を使うと
回転差の補正が出来ます。
M5 Stack ATOMはESO32-Picoを使っている関係上、Arduinoと同じアナログ入力を使ってのPWMが使えません。
そこで代わりにESP32のLEDC()関数を使いPWM制御を行います。
LECD関数()
①ledcSetup(0, 500, 8)は、( チャネル番号、周波数(Hz)、dutyビット長)PWMの仕様を定義しています。
②ledcAttachPin(M_IN1, 0)は、(ピン番号又はその変数、 チャネル番号)を定義しています。
③ledcWrite(0,255)は、(チャネル番号, duty-は8bitなので0~255の値)

旋回方法の選択を追加
スマートフォン・アプリMOVICのA/Bボタンを利用して旋回方法を切り替える機能をs追加しました。
Aボタン=起動時に初期設定:左右のモータを逆方向に回転させてその場で方向を変えます。(超信地旋回)
Bボタン=前進/後進しながら旋回方向側モータの回転を下げて円弧を描いて旋回します。(円弧旋回)

ATOM LiteのRGB LED表示器を状態表示に使用
ATOM Liteの押しボタン中央にRGB LEDが付いています。折角の標準装備なので、進行方向の状態をカラーで
表示させました。
注意:このRGB LEDを使うには、2)M5 Stack ATOMを使う準備の④で説明しましたFastLED Libraryがインストール
されていないとエラーが出ます。
前進:白色、後進:赤色、左旋回:青色、右旋回:マゼンタ、停止:緑色に夫々設定してます。
補足ですが、TJ9には先に点滅式の方向指示器を付けてあるので同様の表示器が二重となりました。
点滅式の方向指示器を省略すれば、4個のGPIOが他の用途(自動歩行用センサー等)に回せます。


皆様の参考になれば幸いです。

テーマ : 電子工作
ジャンル : 趣味・実用

Theo Jansen Mechanism series No.9 その7

2020年6月6日
制御部にコンパクトなM5 Stack ATOM Liteを使った方法
M5 Stack ATOM LiteはM5シリーズの中でも24×24㎜の正方形で一番コンパクトなモデルで価格も手ごろです。
TJ9の製作に当たり、当初からATOM Liteを使う予定でしたが、コロナ禍の国際物流の混乱によって入荷が遅れ
5月末にやっと届いたのでESP32からATOM Liteに置き換えました。ATOM LiteにはESP32-PICOが使われて
いるのでソースファイル等には大きな変更無く使えます。

M5 Stack ATOM Liteの概要
M5_AtomLite.jpg

TJ9 Control Board
左側がESP32を搭載したモデル、右側がM5stack ATOM Liteを搭載したモデルです。
TJ9_Control Board1

制御部回路の説明
単体のESP32と違いUSBシリアルなど最小限必要な機能がオールインワンされているのでモータドライバー基板を
接続すれば出来上がりと言った具合です。但し、電源入力が5VのみなのでUSBケーブルを接続時以外は外部から
5Vを供給する必要があります。私は安価な昇圧タイプDC/DCコンバータを使い3.7Vから5Vを得ています。
注意:IO26とIO32はピンソケットではなく、PH2.0-4Pソケットなので別途入手が必要でした。
TJ9_ATOM_Circuit1.gif

TJ9にコントロール基板をセットした様子
ATOM Liteを使うとESP32単体の場合に比べて周辺がスッキリと仕上がりました。
ユニバーサル基板にATOM Liteの取り付けは、ユニバーサル基板に4ピンと5ピンのピンヘッダーを取り付けて
上から差し込むだけです。ユニバーサル基板ランド側でモータードライバー基板と配線しています。
尚、DC/DCコンバータは基板取り付け台の裏側に取り付けています。
TJ9_Atom2.jpg

M5 Stack ATOM Liteに置き換えて出来上がった"TJ9_ATOM"です。
ATOM Liteには押しボタン部にRGBカラーLEDが付いています。折角付いてるのだからと方向指示に連動して
LEDの色が変わるようにしました。前進:白色、後進:赤色、左旋回:青色、右旋回:マゼンタ、停止:緑色としました。
USBソケットはマイクロCタイプです。A型のアクリル板を加工した白いアームはTJ9の持ち上げ用の取っ手です。
TJ9_Atom1.jpg

動画をご覧ください。



次回はスマホのリモコンアプリとPWMを使ったソースファイルを紹介します。

皆様の参考になれば幸いです。

テーマ : 電子工作
ジャンル : 趣味・実用

Theo Jansen Mechanism series No.9 その6

20220年6月2日
TJ9本体とコントローラーのソースコードを記します。
今回はESP32のBLE(Bluetooth Low Energy)をリモコンの媒体としてTJ9本体と専用コントローラーに使います。
また、Bluetooth Classicを使いスマートフォンの無料アプリからTJ9を操作する2種類の方法を用意しました。
各ソースファイルはArduino IDEにコピーしてお使い下さい。

1)BLEを使った方法
①TJ9側ソースファイル
今回製作のトは、Bluetoothを使ってTJ9を操作する基本をお伝えする事にあり、TJ9を前後と左右の旋回のみ
操作に限定していますが、各種センサーを用いて自動歩行などの機能を追加発展させることが可能です。
ソースファイルを開きます。:TJ9_CrossKey_RX.html
Arduino IDEにESP32libraryをインストールすると自動的に添付されるスケッチ例のnotifyを応用したものです。
補足説明:
#define SERVICE_UUID "********-****-****-*****-************"
#define CHARACTERISTIC_UUID "********-****-****-*****-************"
#define DEVICE_NAME "esp32_BLE"
ここで大事なのは、https://www.uuidgenerator.net/version4からUUIDコードを2組ダウンロードしてソースファイルの
SERVICE_UUID とCHARACTERISTIC_UUID"********-****-****-*****-************"に置き換えて下さい。 
また、UUIDとDEVIC_NAMEはコントローラー側と同じ必要が有ります。
ここでは、モータドライバーの回転方向の切り替えと進行方向を示すLEDの表示切替程度ですが、LEDの点滅には
unsigned long previousMillis = 0; unsigned long interval = 200;を使って200mS毎のON/OFFを行っています。
その他特に難しい事は行っていません。

②コントローラー側ソースファイル
今回も幼児にも扱い易いクロスキーの専用コントローラーを作ってみました。
専用コントローラーを作るのが面倒な方は次項のスマートフォンを使った方法を選んで下さい。
ソースファイルを開きます。:TJ9_CrossKey_TXa.html

2)コントローラーにスマートフォン使った方法
①アプリの選択と設定
BLE用リモコンアプリがBluetooth Classicに比べて極端に少なく、使い易いアプリが見つかりませんでした。
そこで仕方なく、沢山あるBluetooth用リモコンアプリの中から次のアプリを選びました。

私が選んだMovicMaker Controller Arduino Bluetooth RCはAndroid用のスペイン語アプリですが、とても使い易くて
TJ9を操作するのにピッタリです。Google Playにて無料ダウンロード出来ます。 
残念ですが、iPhoneを持ってないのでiPhone用アプリが存在するのか不明です。
MovicMaker1.jpg

インストールが完了したら画面左上の3本線をタップすると下画像のConfig画面に切替わります。
MovicMaker2.jpg

画像と同じようにF,B,L,R,Sの順番になっていればOKです。違っていれば修正します。修正後は画面を一番下に
下げてGuarderにて保存します。AとB及びヘッドライチやホーンなどの操作も可能ですが、今回は使用しません。
MovicMaker3.jpg

Bluetoothのペアリングは画面右上のBluetoothマークをタップすれば、スキャン機能によって近くのBluetooth電波を
キャッチしてリストアップします。そのリストからTJ9_ESP32_BTを選択します。
起動後、PRESIONE ESTA ZONEをタッチ及びスワイプすれば、前後と左右旋回が行えます。タッチを離せば停止します。

②Bluetoothアプリに対応したTJ9用ソースファイル
BLEをBluetooth Classicに変更しただけで基本的な動作が同じです。
ソースファイルを開きます。:TJ9_BT_ESP32_RX.html


次回は、超コンパクトなM5 Stack ATOM Liteを使った方法を紹介します。
24X24㎜、厚さ10㎜の超小型 ATOM Lite に置き換えました。
TJ9_Atom2.jpg


皆様の参考になれば幸いです。

テーマ : 電子工作
ジャンル : 趣味・実用

プロフィール

CNC_Paradise

Author:CNC_Paradise
木工・彫刻・機械工作・電子工作が
大好きで自作のCNCを使って工作を
楽しんでます。

最新記事
最新コメント
月別アーカイブ
カテゴリ
何でも工作室
検索フォーム
RSSリンクの表示
リンク
QRコード
QR