esp --- ESP8266 と ESP32 に関連する関数

esp モジュールは、ESP8266 と ESP32 の両方のモジュールに関連する固有の機能を提供します。一部の機能はこれらのポートのどちらか一方でしか使えません。

関数

esp.sleep_type([sleep_type])

注記: ESP8266 のみ

スリープのタイプを取得/設定します。

sleep_type にパラメータが与えた場合、スリープのタイプをその値にを設定します。この関数がパラメータなしで呼び出された場合は、現在のスリープのタイプを返します。

指定可能なスリープのタイプは定数として定義されています:

  • SLEEP_NONE -- すべての機能が有効
  • SLEEP_MODEM -- モデムのスリープ、WiFi モデム回線をシャットダウン
  • SLEEP_LIGHT -- 軽量スリープ、WiFi モデム回路をシャットダウンし、プロセッサを定期的に停止

可能であれば、システムは自動的に設定されたスリープモードに入ります。

esp.deepsleep(time=0)

注記: ESP8266 のみ - ESP32 では machine.deepsleep() を使用

ディープスリープに入ります。

RTC クロック回路を除いてモジュール全体がパワーダウンします。RTC クロック回路は、ピン16がリセットピンに接続されている場合、指定時間後にモジュールを再起動するのに使えます。それ以外の場合、モジュールは手動でリセットされるまでスリープします。

esp.flash_id()

注記: ESP8266 のみ

フラッシュメモリのデバイスIDを取得します。

esp.flash_size()

フラッシュメモリの合計サイズを取得します。

esp.flash_user_start()

ユーザフラッシュスペースが始まるメモリオフセットを取得します。

esp.flash_read(byte_offset, length_or_buffer)
esp.flash_write(byte_offset, bytes)
esp.flash_erase(sector_no)
esp.set_native_code_location(start, length)

注記: ESP8266 のみ

ネイティブコードがコンパイルされた後に実行のために配置される場所を設定します。@micropython.native, @micropython.viper, @micropython.asm_xtensa デコレータが関数に適用されると、ネイティブコードが生成されます。ESP8266は iRAM または(メモリマップされている)フラッシュの下位 1MB のいずれかからコードを実行する必要があり、この関数はその位置を制御します。

startlength がどちらも None であった場合、ネイティブコード位置は iRAM1 領域の最後にあるメモリの未使用部分に設定されます。この未使用部分のサイズはファームウェアによって異なり、通常は非常に小さく(約500バイト)、非常に小さな関数を格納するのに使います。この iRAM1 領域を使用する利点は書き込んでもメモリの寿命が縮まないことです。

startlength のどちらも None でない場合はどrちらも整数でなければならず、 start はネイティブコードを格納するフラッシュの先頭からのバイトオフセットを指定する必要があります。 length はネイティブコードを格納するために最初から何バイトのフラッシュを使用できるかを指定します。 startlength は、セクタサイズの倍数(4096バイト)にしてください。フラッシュする前にフラッシュは自動的に消去されるので、他(たとえばファームウェアやファイルシステム)では使用されないフラッシュの領域を使うようにしてください。

フラッシュを使用してネイティブコードを格納する場合、 start+length は1MB以下でなければなりません。繰り返し消去(および書き込み)を行うとフラッシュは寿命を縮めていくので、この機能は控えめに使ってください。特に、ネイティブコードは起動ごとに再コンパイルしてフラッシュに書き換える必要があります(スリープ解除からの起動の場合も含みます)。

上記のどちらの場合も、iRAM1 またはフラッシュを使って指定領域に空きがなくなった後、関数にネイティブデコレータを使うとその関数のコンパイル中に MemoryError 例外が発生します。