yana_lab

ESP32

最終更新:

Bot(ページ名リンク)

- view
だれでも歓迎! 編集

ESP32


Arduinoと同じ開発環境でプログラミングできるマイコンですが,Wifi,Bluetoothが利用できます.金額はほとんど同じくらいです.コンパクトですので,ロボットの開発にも最適です.

1.初期設定

初期設定は例えば以下のサイトが参考になると思います.
https://www.mgo-tec.com/arduino-core-esp32-install

2.アナログ入力

センサからのアナログ信号を入力する場合(ライントレースロボットのフォトセンサなど)は,以下のように書くことでアナログ信号を取り込むことができます.
void setup() {
  Serial.begin(115200);
 }
 
void loop() {
  int v1 = analogRead(34);
  int v2 = analogRead(35);
  int v3 = analogRead(2);
  int v4 = analogRead(A0); //SuNのこと
  int v5 = analogRead(A3); //SuPのこと
 
  Serial.print(v1);
  Serial.print(" ,");
  Serial.print(v2);
  Serial.print(",");
  Serial.print(v3);
  Serial.print(" ,");
  Serial.print(v4);
  Serial.print(" ,");
  Serial.println(v5);
  delay(1000);
 }
 
上記のスケッチは2,35,34(Flashスイッチのそばの3つ),SuN,SuP(Resetのそば2つ)5個につないだセンサの値を取り込んでいます.
そのほかのピンについては例えば以下のサイトが参考になります.
http://rikoubou.hatenablog.com/entry/2017/06/29/135819

使用非推奨ピン: IO6,7,8,9,10,11ピンはSPI Flashに接続されているため通常のGPIOピンとしては使用非推奨。

2.モータの制御(アナログ出力)

モータの制御する場合,特にPWMを使用する場合は,Arduinoとは書き方がすこし違います.
同じようにPWMを使ってサーボモータを制御することもできます.
//モータのピン設定
const int motor_1a = 25;
const int motor_1b = 26; 
const int motor_2a = 12;
const int motor_2b = 14;
 
//PWMの設定
const int PWM_Hz = 5000; //PWM周波数
const int PWM_level = 8; //PWMの段階(8ならMAX255,10なら1023)
 
void setup() {//初期設定
  //モータのピンを出力モードにする
  pinMode(motor_1a, OUTPUT);
  pinMode(motor_1b, OUTPUT);
  pinMode(motor_2a, OUTPUT);
  pinMode(motor_2b, OUTPUT);
  //pinMode(mode_pin, OUTPUT);
 
  //モータのPWMのチャンネル、周波数の設定
  ledcSetup(0, PWM_Hz, PWM_level);
  ledcSetup(1, PWM_Hz, PWM_level);
  ledcSetup(2, PWM_Hz, PWM_level);
  ledcSetup(3, PWM_Hz, PWM_level);
 
  //モータのピンとチャンネルの設定
  ledcAttachPin(motor_1a, 0);
  ledcAttachPin(motor_1b, 1);
  ledcAttachPin(motor_2a, 2);
  ledcAttachPin(motor_2b, 3);
 
  //digitalWrite(mode_pin, HIGH);
 }
 
void loop() {//メインルーチン
  ledcWrite(0, 255);
  ledcWrite(1, 0);
  ledcWrite(2, 255);
  ledcWrite(3, 0);
  delay(1000);
 
  ledcWrite(0, 0);
  ledcWrite(1, 255);
  ledcWrite(2, 0);
  ledcWrite(3, 255);
  delay(1000);
 
 }
 
上記の例は,DRV8835 Dual Motor Driver Carrier( https://www.pololu.com/product/2135/ ) を使っています.
配線は上記サイトか,例えばhttp://blog.hisurga.com/entry/2017/02/06/230518 が参考になります.

3.Bluetoothシリアル通信

PCやスマートフォンとBluetoothでシリアル通信をすることができます. 例えば,以下のサイトが参考になります.
http://web.is.tokushima-u.ac.jp/wp/archives/646
https://blog.rogiken.org/blog/2018/04/11/esp32%E3%81%A7bluetoothserial%E9%80%9A%E4%BF%A1%E3%82%92%E3%81%97%E3%82%88%E3%81%86%EF%BC%81/

スマートフォンで値を確認するアプリには以下の様なものがあります。
https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor&hl=ja

これらを使えば,無線でロボットの測定値を確認しながら実験したりできます.

他にもジョイスティック(http://akizukidenshi.com/catalog/g/gM-06807/ )を使ったBluetoothコントトーラを作ることもできます.
(ESP32とラズベリーパイの接続はまだ未検証ですが・・・)
BluetoothSerial SerialBT;
 
void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32test"); //Bluetooth device name
 }
 
void loop() {
  int v_up = analogRead(A3);
  int v_rl = analogRead(A0);
  SerialBT.print(v_up);
  SerialBT.println(",");
  SerialBT.println(v_rl);
  delay(100);
 }
 

4.wifiコントロール・ラジコン

ラズベリーパイのようにwifiコントロール・ラジコンを作ることもできます.例えば,以下のサイトが参考になります.
https://terutakke.com/diary/wifi-remote-controle-car-with-omniwheel-and-esp32/
http://mukujii.sakura.ne.jp/esp1.html

スマートフォン側のコントローラを作るには,HTML, CSSなどの知識が必要になります.

また,上のサイトの例だと,スマートフォンとESP32が同一ネットワークにないと動かすことができませんでした.
だた,APモードを使えば,EPS32と直接接続することができますので,ネットワークの問題を心配しなくても大丈夫になります!
例えば,以下のサイトがおすすめです.
http://mukujii.sakura.ne.jp/esp2.html

タグ:

ESP32
+ タグ編集
  • タグ:
  • ESP32
ウィキ募集バナー