fc2ブログ

ESP32 BLEとスマホアプリで遊ぶ! その1

ESP32とスマホアプリ「BLE Universal Pad」を使いPWMを試しました。
2019年5月30日の作品

その1

スマホアプリBLE Universal Padは、Pad上をタッチスライドすることにより、ジョイスティックのような動作をします。
このため、単なるON/OFF操作ではなく、アナログ的にPad中央を0点としてxy方向に0~±100のタッチポイントを
数値として連続して出力します。 これを応用してモータのPWM制御やサーボモータの制御が行えるのため、
ロボットやラジコンカー等のリモコンとして有用です。
動作を解り易くするため、前回も使用のLEDボードにPad上の位置に対応したLEDの輝度変化を表示しました。
   (BLEとはBluetooth Lowpower Energyの略語でOld Bluetoothに比べて省電力通信が行えます)
BLE_Universal_Pad2.jpg

1)LEDボードの準備
LEDボードは以前に使った物ですが、今回はPWM信号により輝度変化を表示します。
BLE_LED_test2.jpg

LEDボード回路図を再掲載します。
BLE_LED_Board_B.gif

2)BLE Universal Padアプリに対応したsketchを作成
このsketchはESP32 BLE Arduinoのスケッチ例「BLE uart」を応用して機能を追加します。
①追加個所:各LEDにGPIOを定義。


#include "BLEDevice.h"
#include "BLEServer.h"
#include "BLEUtils.h"
#include "BLE2902.h"

//以下の赤字行追加
int LED_F = 32; // ↑ button to LED
int LED_B = 33; // ↓ button to LED
int LED_L = 25; // ← button to LED
int LED_R = 26; // → button to LED
int LED_1 = 27; // 1 button to LED
int LED_2 = 14; // 2 button to LED
int LED_3 = 12; // 3 button to LED
int LED_4 = 13; // 4 button to LED

*pCharacteristic;
BLEDescriptor *pDescriptor;
bool deviceConnected = false;
bool deviceNotifying = false;
uint8_t txValue = 0;


②スマホアプリからはx,y,z各軸の値(0~±100)がカンマ区切りのデータとして送られてきます。
これを、sscanf()関数を使って各軸の値をx_dat、y_dat、z_datとして取り出しています。
次に、map()関数を使って0~±100の値を0~±255に変換し、ledcWrite()関数に設定したGPIOから
LEDにPWM信号が与えられ、入力値に応じて輝度を変えます。


class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string rxValue = pCharacteristic->getValue();

//以下の赤字行追加
   String strVal = value.c_str();
data = new char[strVal.length()];
strcpy(data, value.c_str());
sscanf(data, "%d,%d,%d", &x_dat, &y_dat, &z_dat);
Serial.print(x_dat) ; // シリアルモニターにて確認できます。
Serial.print( ',' ) ;
Serial.print(y_dat) ;
Serial.print( ',' ) ;
Serial.println(z_dat) ;
int val_R = map(x_dat, 0, 100, 0, 255);
int val_L = map(x_dat, 0, -100, 0, 255);
int val_F = map(y_dat, 0, 100, 0, 255);
int val_B = map(y_dat, 0, -100, 0, 255);
int val_1 = map(z_dat, 0, 100, 0, 255);
int val_2 = map(z_dat, 0, -100, 0, 255);
Serial.print(val_R) ; // シリアルモニターにて確認できます。
Serial.print( ',' ) ;
Serial.print(val_L) ;
Serial.print( ',' ) ;
Serial.print(val_F ) ;
Serial.print( ',' ) ;
Serial.print(val_B) ;
Serial.print( ',' ) ;
Serial.print(val_1 ) ;
Serial.print( ',' ) ;
Serial.println(val_2) ;

if (val_F > 0) { // Forward LED
ledcWrite(0, val_F);
ledcWrite(1, 0);
} else if (val_B > 0) { // Backward LED
ledcWrite(1, val_B);
ledcWrite(0, 0);
} if (val_R > 0) { // Turnright LED
ledcWrite(3, val_R);
ledcWrite(2, 0);
} else if (val_L > 0) { // Turnleft LED
ledcWrite(2, val_L);
ledcWrite(3, 0);
} else {
ledcWrite(0, 0);
ledcWrite(1, 0);
ledcWrite(2, 0);
ledcWrite(3, 0);
}
if (val_1 > 0) { // 1
ledcWrite(5, val_1);
ledcWrite(4, 0);
} else if (val_2 > 0) { // 2
ledcWrite(4, val_2);
ledcWrite(5, 0);
}
}
};


③setupにledcSetupとledcAttachPinの定義設定します。


void setup() {
Serial.begin(115200);

//以下の赤字行追加
ledcSetup(0, 500, 8); // 0ch 500Hz 8bit resolution
ledcSetup(1, 500, 8); // 1ch 500Hz 8bit resolution
ledcSetup(2, 500, 8); // 2ch 500Hz 8bit resolution
ledcSetup(3, 500, 8); // 3ch 500Hz 8bit resolution
ledcSetup(4, 500, 8); // 2ch 500Hz 8bit resolution
ledcSetup(5, 500, 8); // 3ch 500Hz 8bit resolution
ledcAttachPin(LED_F, 0); // 0ch : GPIO 32pin
ledcAttachPin(LED_B, 1); // 1ch : GPIO 33pin
ledcAttachPin(LED_R, 2); // 2ch : GPIO 26pin
ledcAttachPin(LED_L, 3); // 3ch : GPIO 25pin
ledcAttachPin(LED_1, 4); // 4ch : GPIO 27pin
ledcAttachPin(LED_2, 5); // 5ch : GPIO 14pin


ここをクリックすると上記の変更済sketchを開きます。

動画をご覧下さい。


次回、その2へ続きます。



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

スポンサーサイト



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

GONちゃん:バーニングアート

義兄宅の愛犬「GONちゃん」をバーニングペンで描きました。
2015年7月の作品

素材は厚さ3mmのシナベニヤ板 (W230XH220㎜)
150723_GON.jpg
ここをクリックすると拡大します。




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

テーマ : ウッドバーニング
ジャンル : 趣味・実用

プードルのしなちゃん:バーニングアート

友人宅の愛犬「しなちゃん」をバーニングペンで描きました。
2015年6月の作品

素材はシナベニヤ: A4サイズ
市販の額縁に入れてプレゼントしました。
150610_sina_cyan.jpg
ここをクリックすると拡大します。




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

テーマ : ウッドバーニング
ジャンル : 趣味・実用

コサギのバーニングアート

コサギをバーニングペンで描きました。
2004年5月の作品

眉間と足に少しアクリル絵の具で彩色、市販の額縁に入れました。
素材は厚さ3mmのシナベニヤ板(W27cm×H24.5cm )
kosagi1.jpg



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

テーマ : ウッドバーニング
ジャンル : 趣味・実用

カルガモのバーニングアート

カルガモをバーニングペンで描きました。
2004年4月の作品

嘴の先と飾り羽及び水中の足に少しアクリル絵の具で彩色を加えてます。
素材は厚さ3mmのシナベニヤ(W30cm×H24.5cm )
burning_duck.jpg

自作の額縁に収めました。
burnings.jpg



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

テーマ : ウッドバーニング
ジャンル : 趣味・実用

ESP32を2個使ってP2P BLE通信でLEDコントロール その2

ESP32のBLEを使いpeer to peerでLEDをコントロールする。
2019年5月24日の作品

その2 BLE P2PのSWボード送信側

先日、5月19日から21日に連載しました。スマホアプリを使ってESP32をBLEコントロールのスマホに替え、
ESP32を使った専用リモコンに替える方法を紹介します。
ここでは単にLEDをON/OFFさせるテストですが、これが基本動作でありモータ制御などの基となります。
esp32_BLE_SW_TEST1S.jpg

1)SWボード
受信側のLEDボード対称するようにタクトスイッチ配置したSWボードを作りました。
BLE_SW_Board.jpg


SWボード回路図
BLE_SW_BOARD.gif

下はESP32開発ボードをESP32モジュールに置き換え、電池と一緒に木製ケースに入れたBLEリモコンです。
こちらのTJ5ロボットで実際に使ってるので参考にして下さい。
スマホやタブレットを使えない幼児や小さいお子さんでも簡単にロボットなどの操作が出来る利点が有ります。
esp32_BLE_SW_TEST2S.jpg

2)SWボード側のsketch例
ここをクリックするとSWボード側のsketchをご覧いただけます。

動画をご覧下さい。




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

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

ESP32を2個使ってP2P BLE通信でLEDコントロール その1

ESP32のBLEを使いpeer to peerでLEDをコントロールする。
2019年5月24日の作品

その1 BLE P2Pの受信側

先日、5月19日から21日に連載しました。スマホアプリを使ってESP32をBLEコントロールのスマホに替え、
ESP32を使った専用リモコンに替える方法を紹介します。
ここでは単にLEDをON/OFFさせるテストですが、これが基本動作でありモータ制御などの基となります。
esp32_BLE_SW_TEST1S.jpg

1)LEDボード
LEDボードはスマホアプリを使ってESP32をBLEコントロールに使った物をそのまま使いますが、sketchが
P2P用に変わります。
BLE_LED_test2.jpg

LEDボード回路図を再掲載します。
BLE_LED_Board_B.gif

2)LEDボード側のsketch例
ここをクリックするとLEDボード側のsketchをご覧いただけます。

動画をご覧下さい。


次回、その2へ続きます。



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

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

プードルのMOKOちゃん:バーニングアート

知人の愛犬MOKOちゃんをバーニングペンで描きました。
2003年10月の作品

素材は桐板です。(桐板はそうめん箱のリサイクル) A4サイズ
moko1.jpg

同じ桐板の額縁を付けて飼い主に贈りました
moko2.jpg

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


テーマ : ウッドバーニング
ジャンル : 趣味・実用

コチドリ

コチドリのバーニングアート
2005年4月の作品


素材は厚さ3.5mmのシナベニヤ板です。
アイリングに少しアクリル絵の具で彩色してます。(W26.5cm、H19.5cm )
kotidori.jpg

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

テーマ : ウッドバーニング
ジャンル : 趣味・実用

木の置時計

木の置時計
2003年11月の作品

素材は台湾楓(タイワンフー)の伐採材で、
文字盤の文字は1㎜厚のバルサ材を切り抜いて作りました。

(W20cm、H18cm)
tokei1.jpg

誠時社の手作り時計用ムーブメントと飾り針を使用しています。
彫刻刀で掘り込みムーブメントを収めてます。

tokei2.jpg


覧頂きまして有難うございます。


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

テーマ : こんなの作りました♪
ジャンル : 趣味・実用

ESP32とスマホをBluetoothLE(BLE)で繋ぐ その3

スマホアプリを使ってESP32をBLEコントロール
2019年5月の作品

その3
4)Adafruit Bluefruit LE Con​​nectの使い方

ESP32にsketchwを書き込んだ後、スマホアプリ「Adafruit Bluefruit LE Con​​nect」を起動すると下記の
初期画面が表示されます。
①ESP32にPCからのUSBケーブルを接続するか、又はUSB電源を供給します。
②初期画面の1番下側にCentral ModeとPeripheral Modeの選択が有りますが、ここではCentral Modeを
使います。他のチェックボックスは下の画像の通りに設定してください。
③アプリのスキャン機能により、UART Serviceが表示されます。ここでCONNNECTボタンを選択します。
Application1.jpg

④この画面では、DEVICE名UART Serviceと電波強度などが表示と機能を選択するModules内の
Controllerを選択します。
Application2.jpg

⑤この画面では、下から2番目のControl Padを選択します。
Application3.jpg

⑥Control Padが開きました。ここでは理解しやすいようにボタンに対応したLEDのON/OFFのみですが、
プログラム次第でロボットや模型自動車のリモコン操作などに応用できます。
興味のある方は、実際にこのスマホアプリを使った例を参考にして下さい。
SP32のBluetooth BLEを使ったリモコン試すの第2章をご覧下さい。
Application4.jpg

5)操作ボタンに対応したコードを見る
上記の操作においてESP32とPCがUSBケーブルで接続され、かつArduinoIDEが開かれてる場合は
シリアルモニターにて操作ボタンに対応したコードが確認できます。
Arduino_IDE_SerialMonitor.gif

動画をご覧下さい。




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


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

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

ESP32とスマホをBluetoothLE(BLE)で繋ぐ その2

スマホアプリを使ってESP32をBLEコントロール
2019年5月の作品

その2

3)LEDテスト用sketchを作る

 ここで使うsketchは、ESP32をArduinoIDEで使うためのlibrary「Arduino core for the ESP32」をインストールすると
AlduinoIDEのsketch例で見れるBLE_uartを応用したものです。
受信コードに対応したLEDを点灯させる単純な機能ですが、これがスマホからBLEを介してESP32をコントロールする
基本となり、ロボットを動かすモータ制御等へ発展させる原点となります。

sketch例のBLE uartにLED点灯機能を追加します。
①各LEDにGPIOを割り当てます。


#include "BLEDevice.h"
#include "BLEServer.h"
#include "BLEUtils.h"
#include "BLE2902.h"

//以下の赤字行追加
int LED_F = 32; // ↑ button to LED
int LED_B = 33; // ↓ button to LED
int LED_L = 25; // ← button to LED
int LED_R = 26; // → button to LED
int LED_1 = 27; // 1 button to LED
int LED_2 = 14; // 2 button to LED
int LED_3 = 12; // 3 button to LED
int LED_4 = 13; // 4 button to LED

*pCharacteristic;
BLEDescriptor *pDescriptor;
bool deviceConnected = false;
bool deviceNotifying = false;
uint8_t txValue = 0;


②rxValueにアプリの各ボタンに対応した受信コードを設定し、そのコードが
選択された時に行うLEDのON/OFFを設定します。


class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string rxValue = pCharacteristic->getValue();
if (rxValue.length() > 0) {
Serial.print("Received Value: ");
for (int i = 0; i < rxValue.length(); i++)
Serial.print(rxValue[i]);

//以下の赤字行を追加
if (rxValue == "!B516") { // ↑ button push
digitalWrite(LED_F, HIGH); // LED ON
digitalWrite(LED_B, LOW); // LED OFF
digitalWrite(LED_L, LOW); // LED OFF
digitalWrite(LED_R, LOW); // LED OFF
} else if (rxValue == "!B507") { // ↑ button Release
digitalWrite(LED_F, LOW); // LED OFF
}
else if (rxValue == "!B615") { // ↓ button push
digitalWrite(LED_B, HIGH); // LED ON
digitalWrite(LED_F, LOW); // LED OFF
digitalWrite(LED_R, LOW); // LED OFF
digitalWrite(LED_L, LOW); // LED OFF
} else if (rxValue == "!B606") { // ↓ button Release
digitalWrite(LED_B, LOW); // LED OFF
}
else if (rxValue == "!B714") { // ← button push
digitalWrite(LED_L, HIGH); // LED ON
digitalWrite(LED_F, LOW); // LED OFF
digitalWrite(LED_B, LOW); // LED OFF
digitalWrite(LED_R, LOW); // LED OFF
} else if (rxValue == "!B705") { // ← button Release
digitalWrite(LED_L, LOW); // LED OFF
}
else if (rxValue == "!B813") { // → button push
digitalWrite(LED_R, HIGH); // LED ON
digitalWrite(LED_F, LOW); // LED OFF
digitalWrite(LED_B, LOW); // LED OFF
digitalWrite(LED_L, LOW); // LED OFF
} else if (rxValue == "!B804") { // → button Release
digitalWrite(LED_R, LOW); // LED OFF
}
if (rxValue == "!B11:") { // 1 button push
digitalWrite(LED_1, HIGH); // LED ON
digitalWrite(LED_2, LOW); // LED OFF
digitalWrite(LED_3, LOW); // LED OFF
digitalWrite(LED_4, LOW); // LED OFF
}
else if (rxValue == "!B10;") { // 1 button Release
digitalWrite(LED_1, LOW); // LED OFF
}
if (rxValue == "!B219") { // 2 button push
digitalWrite(LED_2, HIGH); // LED ON
digitalWrite(LED_1, LOW); // LED OFF
digitalWrite(LED_3, LOW); // LED OFF
digitalWrite(LED_4, LOW); // LED OFF
}
else if (rxValue == "!B20:") { // 2 button Release
digitalWrite(LED_2, LOW); // LED OFF
}
if (rxValue == "!B318") { // 3 button push
digitalWrite(LED_3, HIGH); // LED ON
digitalWrite(LED_1, LOW); // LED OFF
digitalWrite(LED_2, LOW); // LED OFF
digitalWrite(LED_4, LOW); // LED OFF
}
else if (rxValue == "!B309") { // 3 button Release
digitalWrite(LED_3, LOW); // LED OFF
}
if (rxValue == "!B417") { // 4 button push
digitalWrite(LED_4, HIGH); // LED ON
digitalWrite(LED_1, LOW); // LED OFF
digitalWrite(LED_2, LOW); // LED OFF
digitalWrite(LED_3, LOW); // LED OFF
}

else if (rxValue == "!B408") { // 4 button Release
digitalWrite(LED_4, LOW); // LED OFF
}
Serial.println();
}
}
};


③setupに各GPIOの入出力と初期値を設定します。


void setup() {
Serial.begin(115200);
//以下の赤字行を追加
pinMode(32, OUTPUT); digitalWrite(32, LOW); // ↑ LED
pinMode(33, OUTPUT); digitalWrite(33, LOW); // ↓ LED
pinMode(25, OUTPUT); digitalWrite(25, LOW); // ← LED
pinMode(26, OUTPUT); digitalWrite(26, LOW); // → LED
pinMode(27, OUTPUT); digitalWrite(27, LOW); // 1 LED
pinMode(14, OUTPUT); digitalWrite(14, LOW); // 2 LED
pinMode(12, OUTPUT); digitalWrite(12, LOW); // 3 LED
pinMode(13, OUTPUT); digitalWrite(13, LOW); // 4 LED


// Create the BLE Device
BLEDevice::init("UART Service"); // Device Name

// Create the BLE Server
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());

// Create the BLE Service
BLEService *pService = pServer->createService(SERVICE_UUID);

// Create a BLE Characteristic
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_TX,
BLECharacteristic::PROPERTY_NOTIFY
);

pDescriptor = new BLE2902();
pCharacteristic->addDescriptor(pDescriptor);

BLECharacteristic *pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID_RX,
BLECharacteristic::PROPERTY_WRITE
);

pCharacteristic->setCallbacks(new MyCallbacks());
pDescriptor->setCallbacks(new MyDisCallbacks());

// Start the service
pService->start();

// Start advertising
pServer->getAdvertising()->start();
Serial.println("Waiting a client connection to notify...");
}


ここをクリックすると上記の変更済sketchを開きます。


次回、その3へ続きます。


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



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

ESP32とスマホをBluetoothLE(BLE)で繋ぐ その1

スマホアプリを使ってESP32をBLEコントロール
2019年5月の作品

その1

スマートフォン・アプリ「Adafruit Bluefruit LE Connect」を使い、ESP32をBLEでコントロールする方法を
紹介します。 動作を解り易くするためにスマホアプリのボタン位置に対称する簡単なLEDボードを作りました。
ここではESP32開発ボードDOIT DEVkit V1を使い、ブレッドボードに片側のピンを差し込み抵抗を介して
LEDボードと接続する簡単な方法を用い ました。 (機器に組み込む場合はESP32モジュール単体を使用)
(BLEとはBluetooth Low Energyの略語でClassic Bluetoothに比べて大幅な省電力通信が行えます)
BLE_LED_test3.jpg

1)LEDテストボードを作る
LEDテストボードの回路図
BLE_LED_Board_B.gif

ブレッドボードにDOIT DEVkit V1とLEDボードを電流制限抵抗を介して接続
BLE_LED_test1.jpg

ユニバーサル基板の端材を使ったLEDボードとLEDの配置
BLE_LED_test2.jpg

2)スマホアプリのインストール

私はAndroidタブレットしか持ってないので、ここではAndroid無料アプリ「Adafruit Bluefruit LE Connect」を
Google Playからダウンロードして利用しました。 
ここをクリックするとGoogle Playのダウンロードページに移動します。

ここではControl Padしか使いませんが、他にも面白い機能が入ったアプリです。

動画をご覧下さい。




次回、その2へ続きます。



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

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

バーニング・アート:タロー君

シナベニヤに友人宅の愛犬タロー君を描きました。
2005年5月の作品

友人が大事にしてた愛犬が亡くなったので、遊びに来た時に撮ってた写真を基に
バーニングペンで描いてプレゼントしました。 W24×H22 (㎝)
taro.jpg



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

テーマ : お絵描き・ラクガキ
ジャンル : 趣味・実用

皇帝ペンギンの親子

皇帝ペンギンの親子を彫った置物
2015年6月の作品

この作品は「世界でもっとも過酷な子育てをする鳥」皇帝ペンギンをモデルに作りました。
皇帝ペンギンは、雌が卵を産むと雄に抱卵を託します。雄は、卵が孵化するまでの約2ヶ月間、
極寒の過酷な環境の中で絶食状態に置かれます。
大きさ:高さ15センチ、製作時間:約40時間
150621_penguin1.jpg

親子の微笑ましい姿を再現出来ればと思い、カツラ材を削って作りました。
完全に彩色すると木の温かみが無くなるので部分彩色をしてます。
150621_penguin2.jpg

仕上げには、何時ものように亜麻仁油を使いました。カツラは木目が綺麗ですが、
色が濃いので皇帝ペンギンの白さが出せませんでした。
150621_penguin3.jpg

今度作る時は、白い木肌のシナ材を使う予定です。 下は、彩色前の状態です。
150621_penguin4.jpg



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

テーマ : 木工
ジャンル : 趣味・実用

ナベヅルのバーニン・グアート

バーニングペンで描いたナベヅルのペア
2006年2月の作品

私は工作以外の趣味として「野鳥観察」と「野鳥撮影」を行っています。
2005年11月に大阪府岸和田市の久米田池にナベヅルが5羽やって来ました。
この時にデジスコで撮影した画像を基に、若いペアの「愛のディスプレイ」をバーニングペン(電熱ペン)を
使ってシナベニヤに描いたものです。(画像をクリックで拡大します)
バーニング・アートは焦げ色の濃淡により、立体感を表す技法です。
nabeduru.jpg



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

テーマ : お絵描き・ラクガキ
ジャンル : 趣味・実用

木工彫刻:おにくま(獅子噛)

地車(だんじり)の大屋根小屋根の唐破風を飾る「おにくま」の彫刻
2011年5月の作品

幅30センチ、高さ14センチ、厚さ6センチの楠一枚板から彫り出しました。
motomati1.jpg

モデルは泉大津市濱八町元町のおにくまで、お世話になった方へのプレゼントに彫りました。
motomati3.jpg

一番難しかったのは目玉の彩色で何度もやり直してやっと光が出ました。
motomati4.jpg



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

テーマ : 木工
ジャンル : 趣味・実用

超小型無限軌道車の紹介 その5

手のひらに載る超音波自律走行超小型無限軌道車
2015年7月の作品

MS_Robot0.jpg

その5(最終回)Arduino sketch(Sauce)例

この超小型無限軌道車は約4年前に作った作品ですが、赤外線リモコンでの手動操作がし難いなどの
問題があったので、少しスケッチを手直ししてみました。
超小型無限軌道車のスケッチ・ページを開きます。


あとがき
この作品を再現するには、サーボモーターの改造が一番のネックだと思います。タミヤなどの規制部品を
使って作ることをお勧めします。Arduinoのスケッチなどは応用できると思いますので活用してください。

最後にもう一度動画を掲載します。




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

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

超小型無限軌道車の紹介 その4

手のひらに載る超音波自律走行超小型無限軌道車
2015年7月の作品

MS_Robot0.jpg

4)使用する赤外線リモコンについて

テレビやビデオデッキ用の赤外線リモコンを使うことも可能ですが、数百円で下記のような小型の
赤外線リモコンが通販で入手出来ます。このキットには赤外線受信用モジュールが付属していて
Amazonにて購入が可能です。
IR_remote_control.jpg

赤外線リモコンのメーカーや機種によって送信CODEが異なります。そこで、下記のsketchを
ArduinoIDEにコピーしてマイコンへ書き込み、赤外線リモコンのCODEを調べます。
押されたボタンに対応した受信CODEがシリアルモニターに表示されるので、そのを記録します。
このsketchでは、赤外線受信モジュールの入力ピンを6番としてますが適当に変更が可能です。
テストには赤外線リモコン送信機、Arduino uno等、赤外線受信モジュール、ブレッドボードなどが
必要です。

CODE解析sketch
#include "IRremote.h" // use the library
int receiver = 6; // IR receiver to Arduino digital pin 6
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
void setup()
{
Serial.begin(9600); // for serial monitor output
irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
irrecv.resume(); // receive the next value
} // Your loop can do other things while waiting for an IR command
}

先に紹介しました赤外線リモコン送信機の受信CODE
因みに今回使用する7個のボタンのCODEは次の通りでした。
↑(前進)=FF629D、←(左旋回)=FF22DD、↓(後退)=FFA857、→(右旋回)=FFC23D
OK(停止)=FF02FD、*(自律走行)=FF42BD、#(手動走行)=FF52AD

SHARP AQUOSのテレビ用リモコンの場合は次の通りでした。
↑(前進)=F148EA81、←(左旋回)=F148EB80、↓(後退)=F1480481、→(右旋回)=F1481B8F
決定(停止)=F1484A8B、青色ボタン(自律走行)=F1480148、赤色ボタン(手動走行)=F1488140

次回はその5 Arduino sketch(Sauce)例です。


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

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

超小型無限軌道車の紹介 その3

手のひらに載る超音波自律走行超小型無限軌道車
2015年7月の作品

MS_Robot0.jpg
3)マイコン基板の製作と取り付け
基板の回路図
私は、形や大きさを自由にデザイン出来るユニーバーサル基板にマイコンATMega382Pを使いましたが、
超小型Arduino nano互換機が通販で数百円で入手できる時代なのでこれを使う方法があります。
US1_sensor_servo_robot.gif

先に完成したフレームにサーボ―モーターやマイコン基板を組み込みます。
MS_Robot2.jpg

ユニバーサル基板に組み立てたマイコンATMega382P
MS_Robot3.jpg

マイコン基板の取り付け
MS_Robot4.jpg

完成した超小型無限軌道車
MS_Robot5.jpg

その4 赤外線リモコンへ続きます。


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

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

超小型無限軌道車の紹介 その2

手のひらに載る超音波自律走行超小型無限軌道車
2015年7月の作品
MS_Robot0.jpg

2)フレームとローラーの製作

H型フレームの加工図
厚さ5㎜のアクリル板をCNC加工して作りました。真ん中のフレームは2枚重ねです。
Frame1.gif

ローラー内輪加工図
5㎜厚アクリル板をCNCで切削します。
外径34㎜、センター内径6.1㎜、小さい穴径4個は内径2.2㎜、大きい穴4個は内径6㎜(内輪合計4個)
Wheel1.gif

ローラー外輪加工図
2㎜厚アクリル板(ここでは黄緑色を使用)をCNCで切削します。
外径38㎜、センター内径6.1㎜、小さい穴径は2.2㎜、大きい穴4個は6㎜(外輪合計8個)
注意:内輪と外輪はアクリル用接着剤を使って接着しますが接着前にセンターがずれない様に
センター穴に基板用丸スペーサーを挿入し、大きい穴4箇所にM6のボルト・ナットで借り固定します。
Wheel2.gif

フレームとローラーの組み込み立て図
フレームのローラー取り付け穴は2.5mmの下穴にM3タップを切ってます。
全てのローラーはフリーホイールとなります。真鍮スペーサーと外輪内径の隙間で軽く回転することを
確認してください。
Wheel3.gif

フレームとローラーとモーターの配置図
駆動輪にサーボモーターの動力を伝えるために、サーボモータ付属のサーボホーンを使いました。
一文字タイプの左右5穴の真ん中の穴を2㎜のドリルで広げ、M2×15のボルトナットで固定します。
この2㎜のボルト先端が、ローラーの小さい穴2.2㎜の対角に入ります。(画像右下参照)
Frame2b.gif

製作は画像を参考に現物合わせで行って下さい。
モーターを固定するため、アクリル板にインシュロックタイと両面テープを使ってモーターを留めてます。
クローラー用Oリングは1AP-65 線径5.7㎜リング内径64.6㎜を使用。
下:完成したフレーム
MS_Robot1.jpg

その3 マイコン基板の製作と組み込みへ続きます。


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

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

超小型無限軌道車の紹介 その1

手のひらに載る超音波自律走行超小型無限軌道車
2015年7月の作品

マイクロサーボモーターSG90を連続回転に改造し、駆動用モーターに使った超小型の無限軌道車を作りました。
超音波センサーHC-SR04をSG90を使って左右に首振りして障害物を感知、避けながら進みます。
MS_Robot0.jpg

先ずは、動画をご覧ください。


1)マイクロサーボSG90の改造
マイクロサーボモーターSG90を連続回転にするための簡単な改造が必要です。
改造は自己責任でお願いします。初めての方は写真を撮りながら進めて下さい。
①先ず、銘板と検査シールを剥がし、サーボモーター本体裏側の4本のネジを外すと本体が三つに分かれます。
②上部カバーを外すと4個のプラスティックギアが見えますが、ギアの位置を覚えておきます。
 良く似たギアがありますが、ポテンションメーターのシャフトとカウンターシャフトは太さが異なり、
ギアのピッチも異なるので間違うことは無いと思います。
 ファイナルギア(サーボホーンの付くギア)は、ポテンションメーターのシャフト上部に固定されていますが、
ギアを強く回すと簡単に外れます。
③ファイナルギア下側付いてるストッパー用突起をニッパー等で切り取り、バリも取り除き綺麗に仕上げます。

ストッパー用突起の切り取り
SG90_1.jpg

④ポテンションメーターのシャフトとファイナルギアが軽く回るようにギアの内径を少し広げます。
 1.4mm径のドリルが有れば簡単に広げられるが、ポテンションメーターのシャフト先端部をヤスリとペーパーで
少し細くする方法もあります。
 何れの場合もファイナルギアを固定するためにシャフト先端に付けられた傷を修正する必要が有ります。
⑤今度はマイコン等の信号源からサーボ角度が中央90°の停止信号を入力し、モーターの回転が停止する
位置にポテンションメーターの角度を合わせます。
この作業を正確に行わないと停止時にどちらかの方向へ少し回転するので注意が必要です。
 ポテンションメーターの位置が決まれば、瞬間接着剤などでポテンションメーターが動かないように固定します。
 (この作業はモーターに信号を入力後2分程経過し、モーターが安定してから行います。電源投入後は不安定です)
 この調整が面倒な方は、ポテンションメーターを5KΩのを半固定VRに置き換えて外付けにすると、外から微妙な
調整が簡単に出来ます。
⑥次に上部のギアを元通りに組み付け、(グリスの塗布を忘れずに)上下のカバーを4本のネジで締めれば完成です。

元通りに組み付けます
SG90_2.jpg

その2 フレームとローラーの製作へ続きます。


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

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

木工彫刻2

アジアアロワナのフィッシュカービング
2004年7月の作品

ビワマスと同様に楠の一木を彫刻して作りました。
幅:約50センチメートル、着色はバーニングペンで焦げ色のみです。
arowana1.jpg

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

テーマ : 木工
ジャンル : 趣味・実用

木工彫刻1

ビワマスのフィッシュカービング
2003年8月の作品

幅約50センチ(琵琶湖博物館の資料を基に製作)
楠の一木を彫刻(張り付けではありません)して、バーニング・ペン(電熱ペン)焦げ色のみの彩色、ニス仕上げ。
biwamasu1.jpg

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

テーマ : 木工
ジャンル : 趣味・実用

ESP WROOM32の実装方法

私のESP WROOM32の実装方法
WROOM32はWROOM02に比べピン数が多いので用途に合わせてた実装が必要です。

1)お勧めの市販ピッチ変換ボード
小さな面積のピッチ変換基板の市販品を探したらスイッチサイエンスのコンパクトサイズを
購入して試してみました。 スイッチサイエンスの商品紹介ページへ
価格は税込み280円と少し高めですが送料150円は年金生活者には嬉しいです。

実際にこの基板を使ったTJ5ロボット用コントロール基板
DIP以外の下側16個のピンは上向きに取り付け、必要に応じてジャンパー線で取り出す方法です。
BLE_TJ5_PCB.jpg

2)WROOM02と置き換える方法
これまでに使っていたWROOM02のピッチ変換基板にピンアサインの異なるWROOM32に置き換えれば、
元の回路を変更することなくWROOM32を使えるのが利点です。

実際にWROOM02用ピッチ変換基板にWROOM32を載せたMidget2のコントロール基板
ピンアサインが異なるので少しジャンパー線を引き回す必要が有ります。
Midget2_ESP32_1.jpg

3)WROOM32モジュールを直接単体で使う方法
私はもの作りをする場合、既成概念にこだわらない主義なので実装スペースを小さくするためには直接
モジュールの端子にジャンパー線を接続する方法を多用しています。

実際に設置スペースが限られた場所に単体で使った例
WROOM32の場合、モジュールの端子に負荷が掛かると端子が剥離する事があるため、この例ではユニバーサル
基板を小さくカットして両面テープで貼り付け、中継板を置いて対策してます。
また、1度セットするとソースの書き換えが大変なので書き込み用の端子も完備しました。
BLE_Controller2N1.jpg

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

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

ESP WROOM02の実装方法

我流実装規格の勧め
私は2015年からESP WROOM02を使って倒立振子型ロボットやテオヤンセンメカニズムロボットの
WiFiリモコンに応用してきました。
実装面積を少なくするためにピッチ変換基板は独自規格(18ピンX20ピン(900mil))を基本としています。

当時作ったNodeMCU基板
NodeMCUはSauceの書き込み時にモード設定やリセットを自動で行うのでとても重宝しました。
外側のソケットラインはテスト用端子でモジュールの入出力ピンと並列に接続しています。
このため、ブレッドボードを使わなくてもテストが出来ます。
NodeMCU-4.jpg

NodeMCU基板の回路図
NodeMCU-1.gif

使い勝手の良い900mil(米軍規格)幅のDIP18pin
ピッチ変換基板:このサイズは、市販の普通サイズブレッドボードに差し込んでも両側に1ライン残るので回路テストに
ピッタリです。但し、パッケージとピンの間隔が狭いので少し半田付けが難しいと思います。
左側がユニバーサル基板を18X20ピンにカットして手配線した物、右側は片面生基板をCNC加工した物です。
NodeMCU-3.jpg

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

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

チョウゲンボウのモビールの紹介

実物大のチョウゲンボウをバードカービング風に彫刻たモビール
2017年8月の作品

下側の紐を引くとホバーリングします。
tyougenbou1.jpg

上面の様子、材料はクスノキで羽色の濃淡はバーニングペン(電熱ペン)で彩色してます。
tyougenbou3.jpg

裏面の様子、脚とアイリングのみ絵具で彩色しました。
tyougenbou4.jpg



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

テーマ : こんなの作りました♪
ジャンル : 趣味・実用

幼児玩具:くまさんの鉄棒

くまさんがてつぼうをする玩具の紹介
2015年5月の作品

ハンドルを回すと体操選手をイメージしたくまさんが鉄棒をします。
170512_kumasan1.jpg

簡単な動作ですから1歳児くらいから遊べます。
170512_kumasan2.jpg

動画をご覧ください。


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

テーマ : こんなの作りました♪
ジャンル : 趣味・実用

Tumbling Down Toyの紹介

アクリル板とABSパイプで作るTumbling Down Toy
2017年12月の作品

 アクリル板をCNC加工して小さなでんぐり返りをしながらスロープを下るおもちゃを作りました。
材料は夏に特価で買ったアクリル板の端材と透明のABSパイプに6ミリ径のスチールボールです。
簡単な構造ですが、スチールボールがゆっくりと移動し、重心を移しながら回転する様子が観れます。
小さいので机の隅に置いて楽しめます。
TDT_2S.jpg

先ずは動画をご覧ください。


回転部
TDT_1S.jpg

概略図:回転部フランジ部
Tumbling1.gif

回転部組み立て図
ABSパイプの両端は2㎜厚のアクリル板Φ7をパイプに挿入。ABSとアクリルの接着には瞬間接着剤を使用。
Tumbling2.gif

スロープ(画像をクリックすると大きいサイズを表示します)
スロープは厚さ3㎜のアクリル板で同じ物2本作り、16ミリ間隔に設置します。(ビス穴は2.5㎜下穴にM3タップ)
slope15.gif

スロープ・ベース(画像をクリックすると大きいサイズを表示します)
スロープ・ベースも厚さ3㎜のアクリル板を使用。スロープの間隔が16㎜なるように内径3㎜のABSパイプ長さ22㎜を
脚の間にスペーサーとして入れ、30㎜M3の長ビスで固定します。(片側脚のビス穴は2.5㎜下穴にM3タップ仕上げ)
図のサイズで傾斜がOKと思いますが、傾斜角度を急にすると回転し過ぎてボールの動きが見えなくなります。
ベースは90mmX150mm厚さ10mmのヒノキ板にネジ止めしました。
slopeBase.gif

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

テーマ : こんなの作りました♪
ジャンル : 趣味・実用

簡易オシロスコープを作る

九州工業大学情報工学部が公開の
Arduinoを使った簡易オシロスコープの紹介

2015年1月の作品

自作マイコン基板とPCに表示したオシロスコープの画面
scope1.jpg

 工房にはブラウン管式のオシロスコープを持っていますが、最近Arduinoを使った試作を自宅の
PCデスクで行う事が多く、PCで表示が出来る簡易型のオシロスコープが必要となりました。   
 Webで検索したところ、九州工業大学情報工学部が公開のArduinoにCRを追加するだけで、手頃に
PCをオシロスコープとして使えるページがヒットしました。
 早速、手持ちArduinoに部品を追加してテストしたところ、いとも簡単に再現出来ました。
この簡易オシロスコープは私が使うには充分な機能がありとても満足しています。

このオシロスコープに興味のある方は下記のkyutech Arduino scope 掲載ページをご覧ください。
kyutech Arduino scope 掲載ページを開きます。 


専用基板を作る
 現在ならArduino NANO等、シリアルインターフェースが載った小型のマイコンボードが
安価に入手出来るのですが、この時はマイコン基板を小さく作ろうとCNCで生基板を加工、
ATMega328PとFT232RLを組み込んで自作しました。
scope2.gif

その当時、CNC加工のために描いたマイコン基板の拡大パターン図です。
scope1.gif

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

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

コウノトリのモビール

コウノトリをイメージしたモビールの紹介
2013年8月の作品

先ずは、動画をご覧ください。


図1(胴体)10mm厚のヒノキ板に型紙を貼り、輪郭を糸のこで切り抜きます。(胴体の寸法:約29㎝)
kounotori1.gif

図2(翼と尾羽)3mm厚のシナベニヤに型紙を貼り、輪郭を糸のこで切り抜きます。(翼を広げた翼長:約52cm)
kounotori2.gif

切り抜いたシナベニヤに鉛筆で下書きをし、翼や脚と目を彩色します。
動画でご覧頂いたように翼と胴体の結合は直径6ミリのネオジウム磁石を胴体に埋め込み
翼に3ミリの鍋頭鉄ネジをはめ込み、胴体の磁石に吸い付かせています。
尚、直径6ミリのネオジウム磁石は100均のダイソーで8個入りを購入しました。
私は糸のこではなくCNCフライス盤で切り抜きました。画像をクリックすると拡大します。
2013_kounotori_Mobile1b.jpg

完成したコウノトリのモバイル
2013_kounotori_Mobile2.jpg

2019.05.02  by Paradise

テーマ : こんなの作りました♪
ジャンル : 趣味・実用

Walking Elephantsの紹介

カツラ材をCNC加工してWalking Elephantsを作りました。
2019年1月の作品

このぞうさんは、凧糸の先に取り付けた木の重しを動力としてテーブルの上を歩きます。そして重しが床に着くと止まる
簡単な仕組みですが、ぞうさん本体の重量や足(シュー)の角度と重しのバランスが難しく上手く歩く迄に試行錯誤の
連続となりましが、とても楽しく製作出来ました。
Zousan02.jpg

設計図
Zousan00.gif

出来上がった部品
Zousan01.jpg

組み上がったぞうさん
Zousan03.jpg

先に作ったロボット型も同じようにテーブルの上を歩きます。
Zousan05.jpg

動画をご覧ください。


2019.05.01  by Paradise

テーマ : 木工
ジャンル : 趣味・実用

プロフィール

CNC_Paradise

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

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