fc2ブログ

M5 Stamp Pico Mateを使ってみました。 その2

スマホアプリを使い、M5 Stamp PicoでDCモータを動かす。

1)コントロール用スマホアプリについて
今回使ったandroid用無料アプリはBluetooth Serial ControllerでPlayストアにてダウンロードできます。
このシリーズには以前に紹介のお絵描きロボット(OSTR)に使ったWiFi TCP/UDP Controllerと使い方は同じで、
ボタンの配置や機能設定を自由にカスタマイズ出来るのが特徴です。
BT_Controller1.jpg

2)Bluetoothアプリを使ってDCモータを動かすテスト例
ここでは、M5 Stamp PicoにモータードライバーMX1508(一個200円)を介してDCギヤードモータFM90(一個250円)を
アンドロイドスマホのBluetoothアプリを使って動かします。
M5Stamp0.jpg

テスト回路の配線図
M5Stamp_BT_6A.gif

3)プログラミング
M5 Stamp Pico Mateには、出荷時にファームウェアUIFLOWがインストールされていて、UIFlowグラフィカルプログラミング
の他、Arduino、MicroPython、ESP32-IDFにてプログラミングが可能です。
ここでは、Arduino IDEを使ってDCモータを動かす簡単な例を記します。

モータを動かす他にPico本体に搭載のRGBカラーLEDの色が操作毎に変化するようにしています。
プログラムをコピーしてArduino IDEに張り付けます。マイコンボードへの書き込み設定は、ボードをESP32 Pico Kit又は
M5 Stack Atomを選びますが、Pico系は書き込み速度が速いとエラーが出る場合が有ります。
その場合はUpload Speedを下げて書き込みます。

#include "M5Atom.h"
//M5Stamp_Pico用が未だリリースされてないので同じPico系のM5Atomライブラリーを用いています。
#include "BluetoothSerial.h"
BluetoothSerial M5Stamp_BT;

int rxValue;
int M_IN1 = 26;
int M_IN2 = 18;
int M_IN3 = 19;
int M_IN4 = 25;
//extern const unsigned char AtomImageData[375 + 2];
uint8_t DisBuff[2 + 5 * 5 * 3]; //RGB collar LED

void setup() {
Serial.begin(115200);
M5.begin(true, false, true);
delay(10);
setBuff(0xff, 0x00, 0x00); //初期赤色
M5.dis.displaybuff(DisBuff);
M5Stamp_BT.begin("M5Stamp_BT"); //名称変更可能
Serial.println("Bluetooth Control");
pinMode(M_IN1, OUTPUT); digitalWrite(M_IN1, LOW);
pinMode(M_IN2, OUTPUT); digitalWrite(M_IN2, LOW);
pinMode(M_IN3, OUTPUT); digitalWrite(M_IN3, LOW);
pinMode(M_IN4, OUTPUT); digitalWrite(M_IN4, LOW);
}

void Forward() { //前進
digitalWrite(M_IN1, HIGH);
digitalWrite(M_IN2, LOW);
digitalWrite(M_IN3, LOW);
digitalWrite(M_IN4, HIGH);
}

void Backward() { //後進
digitalWrite(M_IN1, LOW);
digitalWrite(M_IN2, HIGH);
digitalWrite(M_IN3, HIGH);
digitalWrite(M_IN4, LOW);
}

void Turnleft() { //左旋回
digitalWrite(M_IN1, HIGH);
digitalWrite(M_IN2, LOW);
digitalWrite(M_IN3, HIGH);
digitalWrite(M_IN4, LOW);
}

void Turnright() { //右旋回
digitalWrite(M_IN1, LOW);
digitalWrite(M_IN2, HIGH);
digitalWrite(M_IN3, LOW);
digitalWrite(M_IN4, HIGH);

}

void Stop() { //停止
digitalWrite(M_IN1, LOW);
digitalWrite(M_IN2, LOW);
digitalWrite(M_IN3, LOW);
digitalWrite(M_IN4, LOW);
}

void setBuff(uint8_t Rdata, uint8_t Gdata, uint8_t Bdata) //RGB collar LED
{
DisBuff[0] = 0x05;
DisBuff[1] = 0x05;
for (int i = 0; i < 25; i++)
{
DisBuff[2 + i * 3 + 0] = Rdata;
DisBuff[2 + i * 3 + 1] = Gdata;
DisBuff[2 + i * 3 + 2] = Bdata;
}
}

void loop() {
if (M5Stamp_BT.available()) {
rxValue = M5Stamp_BT.read();
//Serial.print("Received:"); Serial.println(rxValue);
switch (rxValue) {
case 'F': //Forward
Forward();
setBuff(0x40, 0x40, 0x40); //白色
break;
case 'B': //Backward
Backward();
setBuff(0x40, 0x00, 0x00); //赤色
break;
case 'L': //Turnleft
Turnleft();
setBuff(0x00, 0x00, 0x40); //青色
break;
case 'R': //Turnleft
Turnright();
setBuff(0x40, 0x00, 0x40); //紫色
break;
case 'S': //Stop
Stop();
setBuff(0x00, 0x40, 0x00); //緑色
break;
default:
break;
}
M5.dis.displaybuff(DisBuff);
}
delay(20);
M5.update();
}



動画をご覧下さい。




皆さまの参考になれば幸いです。
by Paradise
スポンサーサイト



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

コメントの投稿

非公開コメント

プロフィール

CNC_Paradise

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

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