2019年8月20日火曜日

ロボット用マイコンにESP32はいかが?


1.ESP32入荷

Aliexpressはとても便利なのですが、納期の遅さだけがいただけません。だいたい2~3週間で到着しますので、面白いデバイスを見つけて注文してもすぐには使えません。また、追加でもう一つ欲しいとなったときもまた3週間待ちです。
待ってる間に他の事に興味が移ったりもしますので、なにか面白そうなものを見つけるととりあえず注文! というような運用になってます。

前ふりが長くなりましたが、とりあえず注文して積んであったのがESP32とESP8266。
良くわからずに注文したのですが、ポイント次の通り。

①Arduino IDEで開発出来るマイコンボード
②Arduinoに使われているATMega系のマイコンより処理が早い
③Wi-fiとBluetoothに接続可能なので、無線でロボットをコントロールできるらしい

届いてから2週間ほど放置でしたが、ようやく開発環境を整えるところまでの目処がついたのでまとめてみます。

ESP系のボードとArduinoのスペック比較をするとこんな感じ。
これだけ見ると圧倒的にESPが良いのですが、Arduinoは開発環境や先人の開発例が多くあるので初心者がとっつきやすいと言う大きなメリットがあります。

 
ESP8266
ESP32
Arduino 
Pro 2560
Arduino
Pro Micro
CPU
Tensilica LX106
Tensilica Xtensa
Dual-Core LX6
ATmega2560
ATmega32U4
動作周波数
80/160MH
160/240MH
16MHz
16MHz
RAM
36KB
520KB
8KB
2.5KB
Flash
最大16MB
最大64MB
256KB
32KB
WiFi
802.11n 最大65 Mbps
802.11g 
最大54 Mbps
802.11n 最大150 Mbps
802.11g 
最大54 Mbps
無し
無し
BlueTooth
無し
有り
無し
無し
GPIO
最大17
最大32
最大54
最大16
I2C
最大1
最大2
最大1
最大1
PWM
最大4
最大8
最大15
最大5
UART
最大2
最大3
最大3
最大1
※ArduinoはUNOでは無くて私が好むPro 2560とPro Micro

2.ESP32、ESP8266とは

今回はろくにスペックも調べずに買ったのですが、ESP32、ESP8266はどちらもWi-Fiが使えるマイコンです。
改めて調べてみるとESP32はESP8266の進化版で、Bluetoothも使えたり諸々の機能が少しずつ向上していると言う事で、とりあえず手元のESP8266はもう少しお休み頂いて、当面はESP32のみ触ってみます。

ちなみにESP32を調べてると、ESP-WROOM-32とかESP32 DEVKITとかいろんな名前が出てきますが、このシリーズに使われているSoCの名前がESP32でその中に、LX6っていうCPUが入ってるみたいですね。このESP32いい感じで動かすためのフラッシュメモリやらなんやらを基板に並べたパッケージの名前がESP32-WROOM-32で、DEVKITやなんやかんやつくのは開発ボードの名前ってことらしいです。
今回購入したボードはESP32 DEVKIT V1 30PINタイプでした。


こんなイメージ:DEVKIT V1⊃ESP32-WROOM-32⊃ESP32⊃LX6

開発ボードにもたくさんのバージョンがあってややこしいのですが、いつもお世話になっているこちらのサイトに詳しく記載されています。(DEKOのアヤシいお部屋

3.ESP32の開発環境を整える前に

ESP32にはもともとファームが入ってるらしいです。
ArduinoなりMicroPythonなりのファーム入れる前に試してみるのと、吸い出して保存しておく方が良さそうです。(私は知らずに消してしまいました)
自分では動作確認できてないですがこちらのサイトで紹介されてます。

4.Arduino IDEでの環境作成

Arduino出身の電子工作初心者としてはとてもありがたい事に、ESP32はArduino IDEで開発可能です。
Arduino IDEをインストール済みであれば、新たなボードのライブラリを追加します。

  1. Arduino IDEを開き、[ファイル]→[環境設定]→「追加のボードマネージャのURL:」の入力ボックスの右のアイコンを押して、次のアドレスを追記します。https://dl.espressif.com/dl/package_esp32_index.json
  2. [OK]ボタンで環境設定を抜けて、[ツール]→[ボード:(現在選択しているボード名)]→[ボードマネージャ]→[esp32 by Espressif Systems]→[インストール]→[閉じる]
  3. [ツール]→[ボード:(現在選択しているボード名)]→[ボードマネージャ]→[ESP32 Dev Module]

だいたいこのサイトを参考にしました。これでArduino IDEからESP32が開発可能となりました。
でもね、ESP32ではArduinoのライブラリの多くが使えないらしいです(servo.hとか・・・)マイコンが違うので当然なのかもしれませんが。。。

5.MicroPythonでの環境作成

ESP32用のライブラリもいろいろ出ている様なのですが、ESP32開発するならMicroPythonが良いらしいとのうわさを聞いたので、MicroPythonの環境も整えてみました。

手順は次の通り。
  1. まずはこのサイトのFlash Download Tools (ESP8266 & ESP32)をダウンロード
  2. 次にこちらのサイトからFirmware for ESP32 boardsをダウンロードします。複数のバージョンがアップされていますので、最新の一つ手前の安定板をダウンロードします。私はesp32-20190529-v1.11.binをダウンロードしました。
  3. 1でダウンロードしたflash_download_tools_v3.6.6を解凍し、flash_download_tools_v3.6.6.exeを実行します。
  4. [ESP32 DownloadTool]を選択し、5~7に従ってDownload(ESP32にファームをDownloadする)条件を入力します。
  5. [...]を選択して、2でダウンロードしたファームを選択
  6. [...]@の右に[0x1000]と入力
  7. CrystalFreq:40M、SPI SPEED:40MHz、SPI MODE:DIO、FLASH SIZE:32Mbit、COM:接続しているポート、BAUD:115200
  8. 今入っているファームを削除するため、[ERASE]を押す。※DEVKIT V1の場合、自動書き込み出来ないので、SYNCと表示されたらボードのBOOTボタンを長押しする。
  9. 新しいファームを入力するため、[START]を押す。※DEVKIT V1の場合、自動書き込み出来ないので、SYNCと表示されたらボードのBOOTボタンを長押しする。
おもにこちらのサイトを参考にしました。

6.うまくファームが入らない場合

・通信速度は115200bpsにしましょう
・CrystalFreqは24Mの方がよいのかも。私はどちらでもいけます。
・DEVKIT V1は、ファームを書きこもうとし始めたらボード上のBOOTボタンを長押し。
 書き込みが始まったら離してOK

7.まとめ

とりあえず開発始めるまでのまとめです。
いまからPythonの勉強を始めます。

0 件のコメント:

コメントを投稿

ESP32でスマホとシリアル通信 その2 BluetoothでLチカ

1.BluetoothでLチカ制御 前回、Bluetoothでの双方向通信に成功しましたので、ついでに少しスケッチを修正してスマホからESP32のLチカを制御した様子が以下の動画です。 撮影が悪くて画面が良く見えませんが、"1"を送信...