ESP8266-01とArduino Pro Mini 3.3Vを接続してみた (その1)

WiFiのモジュール ESP8266-01と、Arduino Pro Mini 3.3V, 8MHzを接続して、ネットワーク経由で色々な遊びを始めてみることにしました。

【ESP8266-01モジュール】  (参考にさせて頂いたページ

ESP8266モジュールの中では最も小さくて端子数の少ないESP-01タイプで実験をしてみます。モジュール仕様はこのページを参考にしました。 これによると、なかなか強力なスペックです。

  • このモジュール単体でホストコントローラーとして動作可能
  • 2本のGPIOピンを直接センサー等に接続することも可能
  • I/Oは 3.6V耐圧なので、5V回路とは直接接続不可能。
  • 電源電圧は 3.3V
  • 初期ボーレートは 115200 baudに設定されている
  • TCP/IPプロトコル・スタックを内蔵
  • 802.11b/g/n対応
  • 通常動作時の消費電流は 70mA程度
  • ピーク時の消費電流は 300mA程度
  • パワーダウン時の消費電流は、 10uA以下
  • 802.11b時のRF出力は +19.5dBm
  • WPA, WPA2対応

このモジュールに搭載されているICは、ESP8266EX(WiFiコントローラー)と、Berg MicroのSerial EEPROM:25Q80ASSIG)の2つ。

Wed Sep 21 21-25-02

このICがモジュールの肝となるデバイスですね。(仕様書はこちら

Wed Sep 21 21-22-57

このBerg MicroのICは型名から見ると、

  • 3.0V Serial Flash with 4KB uniform-sector, dual and quad I/O
  • 8Mbit (1024kx8)

という事がわかります。(メーカーは違いますが仕様書はこちら)。 このEEPROMに8266用のFirmwareが保存されているという事ですね。

ESP8266の消費電流がピークで 300mAも必要というなので、Arduino Pro Miniに搭載されている3.3V レギュレーター(Pro Miniの回路図上に最大150mAという記載があります) や、FTDIに搭載されているレギュレーターでは足りません。

まずは、実験なので手元にある、プロトボード用の電源モジュールを使って電源を供給することにします。

DSC09701

【まずは、シリアル通信の確認から】

まずは、Arduino Pro Miniは接続せず、FTDI (3.3V)を使って、ESP8266とのシリアル通信を確立させ、ATコマンドが動作するかどうかの確認からはじめます。本当は、RESETも、CH-PDも独立でPULL-UPしておく方が良いと思いますが、プロトボードの接続を楽にするために、サボりました。

Picture of ESP8266-01 Pins

ESP8226_01_BootOptions.jpg

ESP-01のモジュールのGPIOピン二本の設定を変えることにより、通常ブートモード(内部のEEPROMからの起動)と、EEPROMへの書き込みモードの切り替えができます。まずは、普通に立ち上げる確認なので、GPIO-0は、Hにしておきます。(ネットの情報だと、GPIO-2はオープンのままにしてある例もありますが、とりあえず、GPIO-0と直接繋いでおきます)

CH-PDのピンは、8266をパワーダウンモードに切り替えるための信号なので、通常動作モードのときには、Hにしておかないといけません。

RESETピンの扱いがちょっと自信ないです。ESP8266-01モジュールの回路図をネット上で探しましたが、現時点、それらしき物は見つかっておらず、この基板内で ESP8266デバイスのリセットピンが、どのように処理されているのか分からないためです。単純に端子に出てきているだけかもしれません。

【接続図】

image

FTDIとの接続は、シリアル通信の向きを間違えなければ大丈夫でしょう。もちろん、FTDIの電圧セレクターは、3.3Vにしておきます(間違えると ESP8266が死ぬのでは・・と思われます・・)

DSC09703

【TeraTermで接続】

まずは、定番のターミナルソフト、TeraTermで接続してみます。TeraTermを起動し、以下の設定をします。

  • FTDIの接続されているUSBに割り当てられたシリアルポート番号を指定
  • 115200baud, 8bit, non-parity, 1-stop bit, flow制御=none
  • 送信の改行コードは”CR+LF”
  • 文字コードは UTF-8 (不要かも)

電源アダプターからの電源を供給し、USBも接続してみると、文字化けした画面の後に、”Ready”という表示が出るときがあったり、こんな画面が出て止まってしまう時があったり・・・(追記:後で調べてみたら、この表示は 76.8kbpsで出力されているものらしい・・・でも何故、表示されるんだろう・・?)

image

やっぱり、ESP8266へのリセットが正しくかかっていないと思われ、とりあえず強制的に、ESP8266モジュールのRESETピンをGNDに落として見ると、ぐちゃぐちゃに文字化けした表示の後に、必ず、”Ready”が表示されるようになりました。

image

ここで、”AT”と叩いてみると、めでたしめでたし、”OK”表示が出ました。

image

試しに、GPIO-2の接続を外してオープンにしても、同様に動作したので、当面GPIO-2はオープンのままにしておくことにします。

それにしても、なぜ、リセット後の文字が激しく化けるのか?スッキリしなかったので、色々試してみましたが、全然だめ。ネットで色々探してみたら、「リセット後の通信は76.8kbpsで行われる」という記述がありました。手元に76.8kbpsのターミナルソフトが無いので、事実かどうか調べることは出来ませんが、まぁ、readyの所からは、115200baudで正常に通信できるので、今の時点ではこれでOKとしておきます。(なぜ76.8kbpsになっているのか、理由は全く分かりません)

【ArduinoのIDEからシリアルモニタで接続】

やはり、リセット直後の文字化けは起こりますが、CR/LFにした上で、”AT” + Enterを送信すれば、ちゃんと下記のように “OK”が返ってきました。めでたしめでたし。

image

とりあえず、これで、ESP8266-01とのシリアル通信が出来ることは確認できました。

試しに、ATコマンドを幾つか確認し、我が家のWIFIアクセスポイントにも接続してみましたが、問題なく一発で接続されました。このATコマンドの詳細は次回に・・・。

image

【次に続く】

シェアする

  • このエントリーをはてなブックマークに追加

フォローする