2024年6月1日土曜日

ドローン製作① ESP8266 2N2222ドライバ

フレーム・プロペラ・0615 モーター (JJRC H36 Eachine E010適用)を使って、初めてのドローン挑戦です。最初に、ESP8266から2N2222トランジスターによるモーター回転制御をテストしました。 

アマゾン




ESP-WROOM-02ピッチ変換済みモジュール《フル版》
ブランド: スイッチサイエンス(Switch Science)技適製品









参考
●Arduino Nanoをフライトコントローラーとしてのせる【https://deviceplus.jp/hi-tech/diy-arduino-drone/
●WROOM-02とパソコンをつなげてみる【https://bmicom.dmsk.com/wroom-02/circuit-diagram
●sucher(ズーハー)【https://sucher.net/esp-wroom-02/



ESP-WROOM-02 仕様
(スイッチサイエンス資料)
電源電圧 3.0-3.6V
消費電流 平均 80mA(※別資料:通常80mAで最大360mA)
フラッシュ 2MB
対応WiFiプロトコル 802.11b/g/n (2.4GHz)
18mm×20mm×3mm
Wi-Fi mode station/softAP/SoftAP+station
セキュリティ WPA/WPA2
暗号化 WEP/TKIP/AES

回路図




















モーター回転

0615モーター
■CWモーター(時計回転)
赤⊕ 青⊖
M1 M3
■CCWモーター(反時計回転)
白⊕ 黒⊖
M2 M4







三端子レギュレーター
低損失三端子レギュレーターNJU7223DL1(3.3V500mA)によりドローン用LIPO バッテリー3.7V(250mA)を 3.3Vに落としてESP8266に供給します。
ドロップアウト電圧:0.4V












安定化電源3.7Vを三端子レギュレーターに入力
モーター無回転
RemoteXY WIFI接続
安定化電源電流 0.07A
三端子レギュレーターアウト電圧 3.31V











安定化電源3.7Vを三端子レギュレーターに入力
モーター最大回転
RemoteXY WIFI接続
安定化電源電源 1.48A
三端子レギュレーターアウト電圧 3.03V
















LIPOバッテリーによる浮上テスト
ドローン用LIPOバッテリー3.7V(250mA)を使って、RemoteXY操作により浮上確認できました。















RemoteXYアプリ
●同ブログ関連記事:【RemoteXY使い方
【Properties】【Configuration】設定変更
[Connection]WiFi access point
[Board]ESP8266 based board
[Module]WiFi on chip
【Apply】実行
【Slider】をスマホ画面に貼付け、大きさ・色等を変更
コントロール配置は5個以内)
【Get source code】実行
コードをArduino IDE エディタ画面に貼付てスケッチを行う。

























プログラム書込み
パソコン Arduino IDE からFT232RL USBシリアル変換を接続してESP-WROOM-02にプログラム書込みを行います。
■FT232RL
ショートピン➨3.3V側
■ESP8266
IO0➨GNDにショート(書込み)








Arduino IDE


















プログラム
//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// you can enable debug logging to Serial at 115200
//#define REMOTEXY__DEBUGLOG  

// RemoteXY select connection mode and include library 
#define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT
#include <ESP8266WiFi.h>

#include <RemoteXY.h>

// RemoteXY connection settings 
#define REMOTEXY_WIFI_SSID "RemoteXY"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =   // 42 bytes
  { 255,4,0,0,0,35,0,16,124,1,4,128,4,13,54,12,190,8,4,128,
  4,30,54,12,190,8,4,128,4,46,54,12,190,8,4,128,4,64,54,12,
  190,8 };
  
// this structure defines all the variables and events of your control interface 
struct {

    // input variables
  int8_t slider_1; // =0..100 slider position 
  int8_t slider_2; // =0..100 slider position 
  int8_t slider_3; // =0..100 slider position 
  int8_t slider_4; // =0..100 slider position 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

#define M1 12
#define M2 13
#define M3 14
#define M4 15

#define PWN_FREQ 1000 // PWM frequency: 1000Hz(1kHz)
#define PWN_RANGE 100 // PWN range: 100

void setup() 
{
  RemoteXY_Init (); 
  pinMode(M1,OUTPUT);
  pinMode(M2,OUTPUT); 
  pinMode(M3,OUTPUT);
  pinMode(M4,OUTPUT);
  
  analogWriteFreq(PWN_FREQ);
  analogWriteRange(PWN_RANGE);
}

void loop() 
  RemoteXY_Handler ();
  delay(100);
  int S1 = RemoteXY.slider_1; 
  int S2 = RemoteXY.slider_2; 
  int S3 = RemoteXY.slider_3; 
  int S4 = RemoteXY.slider_4; 
  analogWrite(M1, S1);
  analogWrite(M2, S2);
  analogWrite(M3, S3);
  analogWrite(M4, S4);
  
}


0 件のコメント:

コメントを投稿

Raspberry Pi Donkey Car スマートカー

  2020年に製作したDonkey Car スマートカー について記事にしました。 Donkey CarはRaspberry Pi のカメラからコースを ディープラーニングさせ自動走行を行います。(動画は白線上を自動走行)   動画