ESP32
Arduinoと同じ開発環境でプログラミングできるマイコンですが,Wifi,Bluetoothが利用できます.金額はほとんど同じくらいです.コンパクトですので,ロボットの開発にも最適です.
1.初期設定
初期設定は例えば以下のサイトが参考になると思います.
https://www.mgo-tec.com/arduino-core-esp32-install
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
そのほかのピンについては例えば以下のサイトが参考になります.
http://rikoubou.hatenablog.com/entry/2017/06/29/135819
使用非推奨ピン: IO6,7,8,9,10,11ピンはSPI Flashに接続されているため通常のGPIOピンとしては使用非推奨。
2.モータの制御(アナログ出力)
モータの制御する場合,特にPWMを使用する場合は,Arduinoとは書き方がすこし違います.
同じようにPWMを使ってサーボモータを制御することもできます.
同じように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 が参考になります.
配線は上記サイトか,例えば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/
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
https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor&hl=ja
これらを使えば,無線でロボットの測定値を確認しながら実験したりできます.
他にもジョイスティック(http://akizukidenshi.com/catalog/g/gM-06807/ )を使ったBluetoothコントトーラを作ることもできます.
(ESP32とラズベリーパイの接続はまだ未検証ですが・・・)
(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
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
だた,APモードを使えば,EPS32と直接接続することができますので,ネットワークの問題を心配しなくても大丈夫になります!
例えば,以下のサイトがおすすめです.
http://mukujii.sakura.ne.jp/esp2.html
その他参考サイト
http://homemadegarbage.0t0.jp/esp32_minirobot01
https://ht-deko.com/arduino/esp-wroom-32.html
http://homemadegarbage.0t0.jp/esp32_minirobot01
https://ht-deko.com/arduino/esp-wroom-32.html