気の向くままに辿るIT/ICT/IoT
webzoit.net
IoT・電子工作

ESP8266/ESP-WROOM-02/ESP32あれこれ

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
ESP8266って?

ESP8266/ESP-WROOM-02/ESP32あれこれ

ESP8266/ESP-WROOM-02/ESP32あれこれ

2018/07/26

 電子工作・IoTを始めてみようと思い立ってから約1年5ヶ月、ESP-01は結構前から、ESP-12Fは買うのこそ比較的早かったものの、ピッチ変換基板を買ってはんだ付け...が、ついこの間、ESP-32開発ボードは極最近、動作確認したばかり。

 いまのところ、ページを起こすほどでもなさ気だが、書き留めておいた方がよいよねということを書いておくページ。

 そこそこまとまれば、それらやここに書いたものを個別ページとして起こすこともあるかも。

easy_installとpip

2018/11/27

 久々にESP32を使おうと思ったら、Arduino IDEにおけるコンパイルで[ImportError: No module named serial]というエラーでハマった。

 エラー表示の他の部分からpyserialのエラーであることがわかり、ちょっと調べてpip3 install pyserialやアップデート、sudo apt install python3-serialなどをインストールしてみるが、一向に解決しない...。

 更に検索してみるとpythonには、pipが置き換えを図り、それ以前からあったeasy_installなるコマンドがあることを知り、sudo easy_install pyserialとしてみたら、なんと先のArduino IDEでのエラーが解消した。

 最後にいじったのは、32bit Debian Stretch上だが、Juliusを使いたくて64bit Debianを追加インストール・常用後、初めてだったから環境が整っていなかったからだった。

ESP8266/ESP32+Arduino IDEでSPIFFSを使う方法

2018/09/04

 ESP8266とSPIFFSについては既に記事中で触れたので本末転倒な気もするが、ESP32とまとめて書いておく。

 ESP8266については、esp8266/arduino-esp8266fs-pluginの通りにesp8266fs.jarを、ESP32については、me-no-dev/arduino-esp32fs-pluginの通りにesp32fs.jarをダウンロード・展開する。

 最終的には、Arduino IDE展開ディレクトリ内のlibrariesディレクトリと同列の[tools]ディレクトリ(なれけば作成)内の、それぞれ、[ESP8266FS]、もしくは、[ESP32FS]以下の[tool]ディレクトリに、これら.jarファイルを配置した恰好となる。

 その後、Arduino IDEを起動(既に起動していた場合は再起動)すると[ツール]メニュー内に[ESP8266 Sketch Data Upload]、[ESP32 Sketch Data Upload]メニューが追加され、表示される。

 ESP32については、スケッチごとにSPIFFS.hをインクルードする必要がある(ESP8266では不要)。

 保存したい任意の各種ファイルは、Arduino IDE用ESP8266/ESP32のスケッチごとのディレクトリ内に[data]ディレクトリを作成の上、そこに置き、先のメニューを選択することでアップロード(上書き・書き換え)できる。

 SPIFFS/SPI Flash File Systemは、モジュール上のフラッシュメモリ内のファイルシステムに対してSPI経由で読み書きできるようになる仕組み(書き込み上限・寿命があるので頻繁な書き換えには不向き)。

Arduino IDE 1.8.6ではDevKit V1に優しくなった

2018/08/26

 前段の理由でArduino IDEにESP8266/ESP32ボード再追加することになったおかげもあって良い発見もあった。

 従前、Arduino IDEでスケッチを書き込む際、ボード上のBOOTボタンを押す必要があったDevKit V1(互換)ボードにおいてArduino IDE 1.8.6では、その必要がなくなっていることに気づいた。

 [追記] 極々稀だと思われるが1度アップに失敗、BOOT押下が必要になることもあった...と思いきや、それ以後、たまに、BOOTボタン押下を要することが...。

 何れにしてもDevKit V1ボードのバグという情報もあったが、ESP-IDFでは、そもそも、その必要はなかったことを確認済みなので、何れにしてもバグというわけではなく、Arduino IDE側の仕様によるものと思われ、今回のバージョンアップで、その点がArduino側で改善されたということなのだろう。

Arduino IDEのバージョンアップに伴うESP8266/ESP32ボード再追加

2018/08/26

 Arduino IDE 1.8.6からユーザー設定がまっさらになってしまった為、ESP8266/ESP32ボードを再追加する羽目になった。

http://arduino.esp8266.com/versions/2.4.2/package_esp8266com_index.json
https://dl.espressif.com/dl/package_esp32_index.json

 前回は、ESP8266をArduino IDEの環境設定から、ESP32をgitから展開したが、今回は、これら2つのURL(ESP8266の方は、httpである点に注意)をArduino IDEの[ファイル] => [環境設定]の[追加のボードマネージャのURL:]欄にカンマ区切りで指定、Arduino IDEの[ツール] => [ボード]から[ボードマネージャ]から選択、インストールすることにした。

 以下は、リンク先と全く同じだが、本来こっちの話なので、そのまま書いておく。

 ESP32の方は、以前追加したディレクトリをそのままにしておくと[...xtensa-esp32-elf]が既に存在する旨、表示されたりするが、警告であって別にインストールに支障はない模様(一度、削除、再インストールしてみたが、今度は警告は出なかった)。

 これでESP8266/ESP32何れかのボードを選ぶとスケッチ例にも対象標準スケッチが表示されるようになることは確認済み。

 念の為、ESP32の方は、以前追加した内の[...xtensa-esp32-elf]をのみ削除(ゴミ箱送りに)しても、削除せず、そのままにしておいてもArduino IDE 1.8.6からサンプルスケッチGetChipIDやStartCounterをアップロードでき、DevKit V1互換ボードで機能することも確認済み。

ESP8266でエアコン自動制御

2018/08/15

 以前、ArduinoでエアコンON動作自動制御を思いつきで構想してみたものの、Arduinoより、ESP8266の方が...と思い直し、ここにきて構想を練り直してみたのだが、結果、構想に留めおくことにした。

 というのは、検証もでき、温度センサによるエアコン(冷房・暖房・除湿)の自動ONの他、無線LAN経由でのブラウザからの遠隔操作、家人が長期不在など自動制御不要の際に電源OFFすべく、人が直接スイッチ付きコンセントをON/OFF、併せてサーボモータで無線LAN経由でブラウザからのスイッチ付きコンセントのON/OFF(少なくとも100Vエアコンでかつ集中スイッチ付き2口コンセントならエアコンだけでなくESP回路の電源も簡単に連動できる)など、機能的には、一通り、実現できること、Arduinoよりも無線搭載でArduino感覚で使えるマイコンがあるESP8266の方が適していることもわかったのだが...

 よくよく考えてみると、特に夏は、窓やカーテンの開閉も併せて自動化・連動でもしない限り、運用上、イマイチとの判断から。

 ちなみに仮に窓やカーテンの開閉を自動化し、連動させることができるにしても手動でも開閉できないと不便極まりないし、安全性の観点からもよろしくない為、そうした配慮も必要だろうと考えると自作にしても市販品を買うにしてもコスト面含め、今のところ、そこまでする必要性はないと思うに至った。

ESP32とESPNow

2018/07/26

 日本の技適済みESP32については、ちょっと前に買ったESP32 DevKitC V4系でありつつ、ボードがDOIT製DevKit風のESP32開発ボードと今日届いたDOIT DevKit V1互換機と2つのESP32開発ボードを持っている。

 これらでESP32同士の通信用サンプルスケッチ[ESPNow]の[Master]/[Slave](わかりやすさ優先の便宜的な区分であり、ESPNOWに存在するコンセプトではないとのこと)を試してみたところ、後者をMaster、前者をSlaveとした際には、正常に機能した。

Found -2 devices
Slave Not Found, trying again.
E (xxxxx) wifi: esp_wifi_scan_start yyy wifi not start

 ところが、これらを逆(前者をMaster、後者をSlave)にするとProblems with ESP NOW connectionと全く同じ症状でMaster(前者V4系ボード)側のシリアルモニタ上では、こんな表示が繰り返される...。

 [espnow "slave not found"]でググっても5件しかヒットせず、プログラム内のエラー出力(Serial.print)以外となるとリンク先の1件しかない為、超レアケースっぽい...と思ったら、"Found -2 devices"でぐぐったら4200件あり、[No Slave Found]らしい...以前のメッセージはこれだったのか?

 実際には、最初に当該事象に直面し、Master/Slaveにするボードを逆にしてみたら、正常に機能した次第。

 blink、hello world、scan、GetChipID、bt_discovery...など、いくつか試してみたが、いまのところ、他のプログラムでは何ら問題はない、リンク先では、プログラム中の%cに着目しているものの、(前者の)ボードに起因するのか...?

 あ、パソコン再起動して、再度試してみたら、ボードが逆でも[Slave Not Found, trying again.]になった...。

 そこで先の検索結果の内、ESPNow example can't work on latest commit #1425の回答後段に[you need to add WiFi.disconnect(); in the first line into the void InitESPNow() { then it will work.]とあり、Master/Slave共にInitESPNow()関数の最初の行にWiFi.disconnect();を追記してみたら、Master/Slaveにするボードに関わらず、ENボタンでリセットをかけるまでもなく、常時、正常に機能するようになった。

ESP-01/ESP-12Fで通信

2018/07/26

 先日、ESP-01単体とピッチ変換基板にはんだ付けしたESP-12F間(ESP8266同士)の通信テストとして同じ方がアップしている2組のみで完結するAccesspoint - Station Communication Between Two ESP8266 MCUsと別途WiFi環境を要するWiFi Communication Between Two ESP8266 Based MCU Through the Home Routerのプロジェクトを試させて頂いた。

 何れも最初は、うまく機能したのだが、その後は、シリアルモニタ上で文字化けが発生...機能しているのか、否か判断できない状態になった。

 何をどうすればよいのか、今の自身にはわからない。

 Mosquitto(MQTT broker)を使う手もあるが、これをインストールしたラズパイやパソコンを別途要するので、ESPだけで完結できないかと思っている。

 というか、電力消費量を抑えて電池駆動...を考えれば、BLE(Bluetooth Low Energy)でGATT Server/GATT Clientなどを使うのが妥当なんだろうね。

ESP8266/ESP32の入力電圧

2018/07/26

 ESP8266の操作電圧は、概ね3.0〜3.6V、定格3.3V。

 ESP-WROOM-02/ESP-WROOM-32の操作電圧は、2.7〜3.6V、定格3.3V。

 よって何れのチップやボードもArduinoなどの5V版と通信する場合には、5V側からの通信については、降圧が必要。

 というか、V5なるGPIOピンがあるESP-32開発ボードがあるんだが、これって5V?

 => もう1つのボードはVINとなっているし、入力用端子で5Vに降圧?しているらしいので5V強の単3電池x4をV5とGNDにつないでみたらESP32の電源が入ったため、外部電源入力用のようだ。

ESP32 DevKitC/DevKit V1のバグ?

2018/07/26

 ESP32の開発ボードEspressif製ESP32 DevKitCやDOIT製DevKit V1、これら互換機においては、Arduino IDEからスケッチを書き込む際、開発ボード上の[BOOT]ボタンを押したまま、[RST/EN]ボタンを押す、または、[BOOT]ボタンだけを押す必要があるとのこと。([2018/08/26] Arduino IDE 1.8.6ではその必要がなくなった。)

 手持ちのV1互換機では、ESP-IDFにおけるmake flashやCLIにおけるesptool(.py/.exe)では、その必要はなかったが、中には、これも先のボタン押下が必要という情報もあるので、もし、書き込めない場合には、試してみる価値はあるだろう。

ESP8266/ESP32開発ボードにはいろいろある

2018/07/26

 ESP8266の開発ボードについては、ESP-12Fなどが載ったNodeMCU、WeMos D1などが、ESP-WROOM-02については、ESPduino、ESP-WROOM-32については、Espressif社製ESP32 DevKitC、DOIT製ESP32 DevKit等々の他、やNodeMCU ESP32Sなどもある模様。

 共に動作確認済みだが、自身2台めとなるESP32開発ボードが届いて気づいてみれば、これら2つだけでもGPIOピン数など結構異なる部分があって驚いた。

 詳細は別としてESP32開発ボードにたくさん種類があるのは知っていたが、これらの互換機に至っては、Espressif製DevKitCとDOIT製DevKitの間の子みたいなものなどArduinoボードと違ってある程度の統一感もないようで、その分、種類も多いっぽい...。

ESP8266/ESP-WROOM-02/ESP-WROOM-32のピッチ

2018/07/26

 転載ついでにESP8266/ESP-WROOM-02/ESP-WROOM-32のピンホールのピッチは、ブレッドボードやユニバーサル基板などの2.54mmとは異なったり、ピンレイアウト上、使えなかったりする。

 よってこれらと共に使うには、空中配線するか、2.54mmのピッチ変換基板(ブレイクアウトボード)付き、または、これを別途用意してハンダ付け、もしくは、これらチップ搭載の上、USBポートなど一通り備えた開発ボードが必要となる。

 尚、ESP-01/ESP-WROOM-02/ESP-WROOM-32に専用のピッチ変換基板、ESP-07/ESP-08/ESP-12に兼用ピッチ変換基板をよく見かける、また、ESP-12やESP-WROOM-32には、各種開発ボードがある。

ESP8266/ESP-WROOM-02/ESP-WROOM-32の種類

2018/07/26

 転載ついでにESP8266/ESP-WROOM-02/ESP-WROOM-32は、Espressif社が開発。

 この内、ESP8266には、AI-Thinker社製造のESP-01、ESP-02、ESP-03、ESP-04、ESP-05、ESP-06、ESP-07、ESP-08、ESP-09、ESP-10、ESP-11、ESP-12、ESP-13、ESP-14がある。

 また、ESP-01には、ESP-01/ESP-01S、ESP-12には、ESP-12/ESP-12E/ESP-12Fなどがある。

 ESP-WROOM-02/ESP-WROOM-32については、製造もEspressif社。

 他にも多々種類があるようだが、把握しきれていない。

 尚、日本国内での販売については、例えばAmazon Japanを見ると次第にESP-01、ESP-12、ESP-WROOM-32あたりに絞られている感があるが、Aliexpressなどでは、今尚、いろんなバージョンが販売されている。

 ただし、日本の技適の話になると現時点で通っているのは、ESP-WROOM-02/ESP-WROOM-32のみ。

ESP8266/ESP-WROOM-32の機能概要

2018/07/26

 転載ついでにESP8266、ESP-WROOM-02、ESP-WROOM-32は、WiFiモジュールである一方で例えばWiFiと無縁なプログラムを書くことすらでき、Arduinoボードのように使うこともできる。

 ESP-WROOM-32に至っては、WiFiのみならず、Bluetooth、BLE/Bluetooth Low Energy機能もあり、温度センサ、ホールセンサ、タッチセンサなどもワンボードに収まりつつ、メモリも増量、GPIOピンも多かったりと多機能、高性能だが、国内でも単体で数百円、開発ボードも1500円程度で買えるという驚きのコスパ。

ESP8266/ESP-WROOM-32にスケッチを無線アップロード

2018/07/26

 Arduino IDEにおいてArduinoOTA(On The Air)を使うとESP8266やESP-WROOM-02、ESP-32などで無線でスケッチをアップロードすることが可能となる。

 ただし、ESP8266用Arduino Coreライブラリを導入、サンプルスケッチBasicOTAを書き込むのに加え、アップロードしたいスケッチごとにOTA用のプログラムを数行書き込んでおく必要がある。

ESP8266/ESP-WROOM-32の開発環境

2018/07/26

 転載ついでにESP8266に限らず、ESP-32もArduino IDEで開発可、他にesptool/esptool.py/esptool.exe、PlatformIOやESP-IDF(make)などによるCLI、Cloud & Desktop IDEにあるようにPlatformIOプラグインを導入できるAtomやVSCode/Visual Studio、NetBeans、Eclipse等々のようなGUIエディタ・IDEなどでも開発可。

ESP8266にはArduino IDEからスケッチを書き込むことも可

2017/07/10[2018/07/26 Arduinoあれこれより転載]

 WifiモジュールESP8266は、ICチップとGPIO(General-purpose input/output・汎用入出力)ピンもあってArduino IDEから任意のスケッチを書き込むことができる。

 用途にもよるが、ESP8266だけで事足り、Arduinoボードを使う必要がないこともある。

 ただ、WifiモジュールESP8266には、多くの種類があってジャンパワイヤで接続できるものもあれば、変換基板がないとブレッドボードなどで気軽に試すことができないもの、技適の有るものや無いもの、リセットボタンがついているもの、ないものなどもあるが、リセットボタンがないものの内、USB-TTLシリアルコンバータモジュールを使う場合、これにRTSピンがないものは、スケッチを書き込むにも、ひと工夫必要らしいことがわかった。

 そのひと工夫とは、2つのスイッチ付きの簡易回路を作ること。

 FTDIモジュールのDTR、CTS、RTSなどの端子が存在すれば、RTSにRST、DTRにGPIO0を接続すれば、このひと工夫をする必要がないとの情報もあるが、未確認。

[2018/06/30]

 今更ながら...、ESP-01のGPIO0/RSTと手持ちのFTDI232系のシリアルUSB変換モジュールのDTR/RTSのピンホールを接続すれば、自動アップロード可能であることを確認...。

 ちなみにESP8266に限ったことではないが、通電した状態でVCCとGNDの接続を間違えたりすると壊れる可能性が高いので接続を確認してから通電した方がよい。(自身は、たぶん、これが原因で買って間もないESP8266を1個壊した。)

関連リンク

ウェブ造ホーム前へ次へ