2019年8月19日月曜日

ESP-WROOM-02のATモードでWiFI接続

ESP8266の"ATモード"でWiFiに接続してみます。

残念ながらNodeMCU DevKitは技適が通っていないため使用出来ません。
で、技適マーク付きのWi-Fiモジュール ESP-WROOM-02 DIP化キットを引っ張り出してきました。
AE-ESP-WROOM-02は、NodeMCU DevKitと異なり、そのままでは動作しないので、以下のパーツを使って配線する必要があります。
赤ワクで囲んだ箇所は、低損失三端子レギュレータ 3.3V1A TA48033Sで、コンデンサを含む構成となっています。ここでは、FT-232RQ USBシリアル変換モジュールから5V電源を取得するため必須ですが、別途3.3V電源があれば必要ありません。

以上を配線していきます。まずは、電源周り。
USBシリアル変換モジュールから引き込んだ5V電源は、レギュレータを経由してブレッドボードの電源全てが3.3Vとなっています。

残りのパーツを使って信号線を配線。
2つのタクトスイッチは、RESETとFLASHとして取り付けています。
用途によっては必須という訳ではありません。

配線は以上で完了。
購入直後のWROOM-02であれば、このままATモードでアクセス可能ですが、"ESP-WROOM-02でLチカ""ESP-WROOM-02でLCD表示"でArduinoとして使用していた過去もあるので、そのままではATモードでの起動が出来ません。

って事で、初期化するべくfirmwareを書き込みます。
必要となるのは、
  • Flash Download Tools
  • ESP8266_NONOS_SDK-X.X.X
の2つ。 どちらも、Espressif Systems社のHPでダウンロード出来ます。 ついでに、ESP8266 Non-OS AT Instruction Set.pdfもダウンロードしておくと便利。 NON-OS SDKは、2018年8月24日にリリースされた機能拡張が主なESP8266 NONOS SDK V3.0.0が最新で、次いで前バージョンのBug Fixが主となる2018年6月8日リリースのESP8266 NONOS SDK V2.2.1となり、それ以前は2017年~2016年のバージョンとなるので、V3.0.0V2.2.1を対象に検討。 WROOM-02は、External SPI Flashが4Mbyte(32Mbit)と2Mbyte(16Mbit)の二つのバージョンが存在するので、Firmwareインストール時には以下の2つから選択&設定する必要があります。 16 Mbit Flash, Map: 1024 KB + 1024 KB Espressif Flashダウンロードツールを使用して、フラッシュサイズを選択します:16 Mbit-C1
BIN Address Description
blank.bin 0x1FB000 RF_CALパラメーター領域を初期化します。
esp_init_data_default.bin 0x1FC000 デフォルトのRFパラメータ値を保存し、少なくとも1回はフラッシュにダウンロードする必要があります。
RF_CALパラメーター領域が初期化されている場合、このビンもダウンロードする必要があります。
blank.bin 0xFE000 Flashユーザーパラメータ領域を初期化します。
blank.bin 0x1FE000 フラッシュシステムパラメータエリアを初期化します。
boot.bin 0x00000 /bin/atにあります。
user1.2048.new.5.bin 0x01000 /bin/at/1024+1024にあります。
32 Mbit Flash, Map: 1024 KB + 1024 KB Espressif Flashダウンロードツールを使用して、フラッシュサイズを選択します:32 Mbit-C1
BIN Address Description
blank.bin 0x3FB000 RF_CALパラメーター領域を初期化します。
esp_init_data_default.bin 0x3FC000 デフォルトのRFパラメータ値を保存し、少なくとも1回はフラッシュにダウンロードする必要があります。
RF_CALパラメーター領域が初期化されている場合、このビンもダウンロードする必要があります。
blank.bin 0xFE000 Flashユーザーパラメータ領域を初期化します。
blank.bin 0x3FE000 フラッシュシステムパラメータエリアを初期化します。
boot.bin 0x00000 /bin/atにあります。
user1.2048.new.5.bin 0x01000 /bin/at/1024+1024にあります。
現時点でわかっているのは、ESP8266 NONOS SDK V3.0.0では、"32 Mbit Flash, Map: 1024 KB + 1024 KB"の指定ではインストール出来るものの起動しないので、V3.0.0を使用したい場合は"16 Mbit Flash, Map: 1024 KB + 1024 KB"をインストールする必要があります。 ESP8266 NONOS SDK V2.2.1は、問題なく動作しますし、おおよそバグもとれているバージョンとも言えるので、こちらを使用する事にしました。 Firmwareのインストールが完了したら、シリアル通信で起動を確認します。 Tera Termを使用する場合は、改行コードを送受信共に"CR+LF"を指定。 シリアルポートのスピードは、"76800"を指定して起動させると以下のような表示。
SDK ver: 2.2.1(6ab97e9) compiled @ Jun  7 2018 13:59:14

phy ver: 1136_0, pp ver: 10.2



∪jъ g 1砌"&瘍 5# &
V2.2.1がインストールされているのは確認出来ましたが、以降が文字化けして読めませんね。。

シリアルポートのスピードを、"115200"に変更して再起動。
すると、さらに文字化けした画面が表示されますが、よーく文字を見てみると"ready"のワードが見つかると思います。
"AT+GMR"とタイプしてエンター。
AT+GMR

AT version:1.6.2.0(Apr 13 2018 11:10:59)

SDK version:2.2.1(6ab97e9)

compile time:Jun  7 2018 19:34:29

Bin version(Wroom 02):1.6.2

OK
バージョン情報が表示されます。

ATコマンドについて、もう少し理解を深めたいところですが長くなるので割愛。
以下のコマンドを使ってWiFiの設定を行います。

Wi-Fiモードの設定
コマンド テストコマンド:
AT+CWMODE=?
クエリコマンド:
AT+CWMODE?
ESP8266の現在のWi-Fiモードを照会
設定コマンド:
AT+CWMODE=<mode>
ESP8266の現在のWi-Fiモードを設定
応答 +CWMODE=<mode> OK +CWMODE=<mode> OK OK
パラメータ <mode>:
‣ 1: Station mode
‣ 2: SoftAP mode
‣ 3: SoftAP+Station mode
注意 設定の変更は、フラッシュのシステムパラメータエリアに保存されます。
AT+CWMODE=3
アクセスポイント(AP)に接続
コマンド クエリコマンド:
AT+CWJAP?
ESP8266が接続されているAPを照会
設定コマンド:
AT+CWMODE=<ssid>, <pwd>, [<bssid>]
[,<pci_en>]
ESP8266の現在のWi-Fiモードを設定
応答 +CWJAP:<ssid>,<bssid>,<channel>,<rssi>
OK
OK
or
+CWJAP:<error code>
FAIL
パラメータ <ssid>:ターゲットAPのSSIDを示すパラメータ
  • <ssid>: ターゲットAPのSSID、最大:32byte
  • <pwd>: パスワード、最大:64バイトASCII
  • [<bssid>]: オプションのパラメーター、ターゲットAPのMACアドレス。複数のAPが同じSSIDを持つ場合に使用されます。
  • [<pci_en>]: オプションパラメータ、WEPまたはOPEN APへの接続を無効にし、PCI認証に使用できます。
  • <error code>: (参考まで) ‣ 1: 接続タイムアウト ‣ 2: 間違ったパスワード ‣ 3: ターゲットAPが見つかりません ‣ 4: 接続に失敗しました
このコマンドでは、ステーションモードを有効にする必要があります。SSIDまたはパスワードに、 ” や \ などの特殊文字が含まれている場合、エスケープ文字構文が必要です。
注意 設定の変更は、フラッシュのシステムパラメータエリアに保存されます。
AT+CWJAP="abc","0123456789"
たとえば、ターゲットAPのSSIDが"ab\,c"であり、パスワードが"0123456789"\"の場合、コマンドは次のようになります。
AT+CWJAP="ab\\\,c","0123456789\"\\"
複数のAPのSSIDが「abc」と同じ場合、ターゲットAPはBSSIDで見つけることができます。
AT+CWJAP="abc","0123456789","ca:d7:19:d8:a6:44"
ローカルIPアドレスを取得
コマンド AT+CIFSR
応答 +CIFSR:APIP,<SoftAP IP address>
+CIFSR:APMAC,<SoftAP MAC address>
+CIFSR:STAIP,<Station IP address>
+CIFSR:STAMAC,<Station MAC address>
OK
パラメータ <IP address>:
ESP8266 SoftAPのIPアドレス;
ESP8266ステーションのIPアドレス。
<MAC address>:
ESP8266 SoftAPのMACアドレス;
ESP8266ステーションのMACアドレス。
注意 ESP8266ステーションがAPに接続されている場合のみ、ステーションIPを照会できます。
実際に設定して見ます。
まずは、Station modeに設定。
AT+CWMODE=1



OK
アクセスポイントへの接続設定。
AT+CWJAP="SSID","PASSWORD"

WIFI CONNECTED

WIFI GOT IP



OK
最後に接続を確認。
AT+CIFSR

+CIFSR:STAIP,"XXX.XXX.XXX.XXX"

+CIFSR:STAMAC,"XX:XX:XX:XX:XX:XX"



OK
IPアドレスが確認できれば、一旦の終了となります。
本当なら、MicroPythonでWiFiアクセスしたいところですが、技適を通過したデバイスでもFirmwareを書き換えるとNGな可能性もあるとの事でATモードでのアクセスに留めておきます。

最後に、UARTのボーレートを変更方法。
設定コマンド
コマンド AT+UART=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
戻り値 OK
パラメータ
  • <baudrate>: UARTボーレート
  • <databits>: データビット
    1. 5-bit data
    2. 6-bit data
    3. 7-bit data
    4. 8-bit data
  • <stopbits>: ストップビット
    1. 1-bit stop bit
    2. 1.5-bit stop bit
    3. 2-bit stop bit
  • <parity>: パリティビット
    1. None
    2. Odd
    3. Even
  • <flow control>: フロー制御
    1. フロー制御を無効にする
    2. RTSを有効にする
    3. CTSを有効にする
    4. RTSとCTS療法を有効にする
注釈
  1. 構成の変更はフラッシュのユーザーパラメーター領域に保存され、チップの電源を再びオンにしても有効です。
  2. フロー制御を使用する際に、必要となるハードウェアのサポート:
    • MTCKはUART0 CTS
    • MTDOはUART0 RTS
  3. サポートされるボーレートの範囲: 110~115200*40.
AT+UART=115200, 8, 1, 0, 3
  • ボーレート : 115200bps
  • データビット : 8-bit data
  • ストップビット : 1-bit stop bit
  • パリティビット : None
  • フロー制御 : RTSとCTS療法を有効にする
現時点のUARTの設定をクエリコマンドで確認。
AT+UART?

+UART:015273,8,1,0,1

OK
ボーレートを9600bps、フロー制御を無効に変更してみます。
AT+UART_DEF=9600,8,1,0,0



OK
通信速度は遅くなりますが、こちらの方が戻り値が安定します。

0 件のコメント:

コメントを投稿