このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

esp32 --- EDS32 に固有の機能

esp32 モジュールは、ESP32 モジュールに固有の制御を目的とした関数とクラスが含まれています。

関数

esp32.wake_on_touch(wake)

タッチでデバイスをスリープから復帰させるかどうかを設定します。 wake はブール型でなければなりません。

注釈

これはタッチセンサーのサポートのあるボードでのみ利用可能です。

esp32.wake_on_ulp(wake)

超低消費電力コプロセッサーがデバイスをスリープから起床できるようにするかを設定します。 wake 引数はブール値でなければなりません。

注釈

これは ULP コプロセッサーのサポートのあるボードでのみ利用可能です。

esp32.wake_on_ext0(pin, level)

EXT0 がデバイスをスリープから復帰させる方法を設定します。 pin には None あるいは有効な Pin オブジェクトを指定します。 level には esp32.WAKEUP_ALL_LOW または esp32.WAKEUP_ANY_HIGH を指定する必要があります。

注釈

これは ext0 のサポートのあるボードでのみ利用可能です。

esp32.wake_on_ext1(pins, level)

EXT1 がデバイスをスリープから復帰させる方法を設定します。 pin には None あるいは有効な Pin オブジェクトのタプル/リストを指定します。 level には esp32.WAKEUP_ALL_LOW または esp32.WAKEUP_ANY_HIGH を指定する必要があります。

注釈

これは ext1 のサポートのあるボードでのみ利用可能です。

esp32.wake_on_gpio(pins, level)

GPIO がデバイスをスリープ状態から復帰させる方法を設定します。pins には None あるいは有効な Pin オブジェクトのタプル/リストを指定できます。 level には esp32.WAKEUP_ALL_LOWesp32.WAKEUP_ANY_HIGH を指定します。

注釈

一部のボードはディープ スリープからの GPIO による起床をサポートしていません。そのようなボードでは、ここで設定されたピンはライトスリープからの起床にのみ使えます。

esp32.gpio_deep_sleep_hold(enable)

ディープスリープモード中のパッドホールドについて、RTC 以外の GPIO ピンの設定を保持するかどうかを設定します。 enable 引数はブール値でなければなりません。

esp32.raw_temperature()

内部温度センサーの素の値を読み、整数を返します。

esp32.idf_heap_info(capabilities)

ESP-IDF ヒープメモリ領域の情報を返します。MicroPython はヒープメモリ領域の1つを使っており、他は ESP-IDF がネットワークバッファなどのデータ領域として使っています。この情報は特に ESP-IDF とネットワークスタックで利用可能なメモリ量を把握するのに役立ちます。また、アロケーションの失敗により ESP-IDF の操作が失敗した場合の状況を知ることができるかもしれません。

capabilities パラメータは ESP-IDF の MALLOC_CAP_XXX の値に相当しますが、最も有用な2つの値は esp32 モジュールに予め定義されています。 esp32.HEAP_DATA はデータヒープ領域用であり、 esp32.HEAP_EXEC はネイティブコードエミッタで使用される実行可能領域用です。

戻り値は4項目タプルのリストで、4項目タプルのそれぞれが1つのヒープに対応しています。タプルの各項目は、合計バイト数、空きバイト数、最大空きブロック数、時間経過にともなう最小空きブロック数を意味します。

ブート後の例:

>>> import esp32; esp32.idf_heap_info(esp32.HEAP_DATA)
[(240, 0, 0, 0), (7288, 0, 0, 0), (16648, 4, 4, 4), (79912, 35712, 35512, 35108),
 (15072, 15036, 15036, 15036), (113840, 0, 0, 0)]

注釈

esp32.HEAP_DATA 領域中の空き IDF ヒープメモリは、MicroPython のアロケーションが失敗するのを防ぐよう自動的に MicroPython ヒープに追加できるようになっています。ただし、ここで返される情報はそれ以外の Python アロケーション失敗のトラブルシューティングには 役立ちません 。代わりに micropython.mem_info() および gc.mem_free() を使ってください:

micropython.mem_info() の出力にある "max new split" 値は、ESP-IDF ヒープの最大の空きブロックに対応し、必要に応じて MicroPython ヒープに自動的に追加できるものです。

gc.mem_free() の結果は、 micropython.mem_info() によって表示される現在の "free" と "max new split" の値の合計です。

esp32.idf_task_info()

ESP-IDF/FreeRTOS タスク(MicroPython のスレッドも含む)に関する情報を返します。このデータは、タスクがどれだけの時間実行されているか、または長時間ブロックされていないかを把握するのに役立ちます。また、割り当てたスタックが十分に足りているか、それとも削減可能かを判断する際にも有用です。

このメソッドを使用するには、ボード設定で CONFIG_FREERTOS_USE_TRACE_FACILITY=y が有効になっている必要があります。さらに CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y および CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y を設定することで、タスクごと実行時間とその合計、実行中のコア ID を取得できるようになるため推奨されます。

戻り値は2項目のタプルで、最初の値は実行時間の合計、2番目はタスクのリストです。各タスクは7項目のタプルで構成され、内容はタスクID、名前、現在の状態、優先度、実行時間、スタックのハイウォーターマーク、実行中のコアIDです。FreeRTOS の該当設定が有効でない場合、実行時間およびコアIDは None になります。

注釈

この関数に基づく、より見やすい出力を得るには Unix の top コマンドに似たリアルタイム概要表示を実装している utop ライブラリ が使えます。

フラッシュのパーティション

このクラスは、デバイスのフラッシュメモリ内のパーティションへのアクセスを提供します。加えて、over-the-air (OTA) 更新を可能にするメソッドもあります。

class esp32.Partition(id, block_size=4096, /)

パーティションを表すオブジェクトを作成します。 id は取得するパーティションのラベルである文字列、または定数 BOOT または RUNNING のいずれかです。 block_size は個々のブロックのバイトサイズを指定します。

classmethod Partition.find(type=TYPE_APP, subtype=0xff, label=None, block_size=4096)

type, subtype, label で指定したパーティションを見つけます。戻り値は Partition オブジェクトのリストです(空の場合もあります)。注記: subtype=0xff 任意のサブタイプにマッチ、 label=None は任意のラベルにマッチします。

block_size は、返されるオブジェクトが使う個々のブロックのバイトサイズを指定します。

Partition.info()

(type, subtype, addr, size, label, encrypted) の6項目のタプルを返します。

Partition.readblocks(block_num, buf)
Partition.readblocks(block_num, buf, offset)
Partition.writeblocks(block_num, buf)
Partition.writeblocks(block_num, buf, offset)
Partition.ioctl(cmd, arg)

これらのメソッドは vfs.AbstractBlockDev によって定義されたシンプルで:ref:extended ブロックプロトコルを実装します。

Partition.set_boot()

パーティションをブートパーティションとして設定します。

注釈

OTA ブートパーティションを変更した後、ハード reset または電源の入れ直しをせずに deepsleep に入らないでください。そうしておけば、ブートローダーが新しいイメージをブートする前に新しいイメージの検証を行います。

Partition.get_next_update()

このパーティションの次の更新パーティションを取得し、新しいパーティションオブジェクトを返します。よく使うのは Partition(Partition.RUNNING).get_next_update() で、これは現在更新中のパーティションの次のパーティションを返します。

classmethod Partition.mark_app_valid_cancel_rollback()

現在のブートが成功したことを示します。次のブート時の自動ロールバックを避けるために、新しいパーティションの最初のブート時に mark_app_valid_cancel_rollback を呼び出す必要があります。これは ESP-IDF の "app rollback" 機能を "CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE" 指定で使っているので、この機能が有効になっていないファームウェアで呼び出すと "OSError(-261)" が発生します。 mark_app_valid_cancel_rollback はブートのたびに呼び出しても問題なく、esptool を使ってロードしたファームウェアをブートする場合は呼び出す必要ありません。

定数

Partition.BOOT
Partition.RUNNING

Partition コンストラクタで取得するパーティションを指定するために使います: BOOT は次のリセット時に起動されるパーティションで、 RUNNING は現在実行中のパーティションです。

Partition.TYPE_APP
Partition.TYPE_DATA

Partition.find でパーティションタイプを指定するために使います: APP はブート可能なファームウェアパーティション(通常は factory, ota_0, ota_1 などのラベルがついています)、 DATA はその他のパーティションです(たとえば nvs, otadata, phy_init, vfs)。

esp32.HEAP_DATA
esp32.HEAP_EXEC

idf_heap_info で使います。

PCNT

このクラスは、ESP32 のパルスカウント機能(pulse counting)へのアクセスを提供します。パルスカウンターユニットは 8 個あり、0 から 7 の id がついています。

一般的なパルスカウント用途向けに、よりシンプルで移植性高く抽象化したものについては machine.Counter クラスと machine.Encoder クラスを参照してください。これらのクラスは PCNT を薄い Python ラッパーとして実装したものです。

class esp32.PCNT(id, *, ...)

指定したユニット id に対応する PCNT インスタンス(シングルトン)を返します。

キーワード引数は、後述の init() メソッドに渡されます。

PCNT.init(*, ...)

(再)初期化を行い、パルスカウンターユニットを設定します。サポートしているキーワード引数は次のとおりです。

  • channel: 後述の説明を参照してください。

  • pin: パルス入力を監視する入力ピン。

  • rising: 立ち上がりエッジでの動作 - PCNT.INCREMENT, PCNT.DECREMENT, PCNT.IGNORE (デフォルト)のいずれか

  • falling: 立ち下がりエッジでの動作(rising 引数と同じ値を取ります)

  • mode_pin: ESP32 のパルスカウンターは、2本目のピンを監視し、そのレベルに応じてカウンターの動作を変更できます - このキーワード引数に任意の入力ピンを設定します

  • mode_low: mode_pin が Low のときの動作を指定します。 PCNT.HOLD (カウント停止)または PCNT.REVERSE (カウント方向反転: PCNT.INCREMENTPCNT.DECREMENT となり、その逆も同様)のどちらか

  • mode_high: mode_pin が high のときの動作を mode_low と同様に指定します。

  • filter: パルス幅フィルターを有効にします。値は 1..1023 (80MHz クロックのティック単位)で指定。

  • min: カウント減少時の最小値を設定します(-32768..-1)。0 を指定すると無効

  • max: カウント増加時の最大値を設定します(1..32767)。0 を指定すると無効

  • threshold0: PCNT.IRQ_THRESHOLD0 イベントのカウンター値を設定します(irq メソッド参照)。

  • threshold1: PCNT.IRQ_THRESHOLD1 イベントのカウンター値を設定します(irq メソッド参照)。

  • value: カウンター値をリセットする場合は 0 を指定します。

ハードウェアの初期化は段階的に行われるため、キーワード引数によっては組み合わせまたは単独で指定して、ユニットを部分的に再設定できます:

  • pin キーワードを(必要に応じて mode_pin と組み合わせて)使うと、バインドするピンだけを変更できます。

  • rising, falling, mode_low, mode_high は単独または組み合わせて、カウントのロジックを変更できます。省略されたキーワードにはデフォルト値(PCNT.IGNORE または PCNT.NORMAL)を適用します。

  • filter はパルス幅フィルターだけを変更できます(0 を指定すると無効化)。

  • min, max, threshold0, threshold1 は、それぞれ個別に上限/下限やイベント値を変更できます。ただし、これらのいずれかを設定するとカウンターはゼロにリセットされます(つまり暗黙的に value=0 が指定されたことになります)。

各パルスカウンターユニットは 0 と 1 の2つのチャンネルをサポートしており、それぞれが異なるピンを監視し、異なるカウントロジックを持たせることができますが、同じカウンター値を更新します。第2チャンネルを設定するには channel=1 とし、 pin, rising, falling, mode_pin, mode_low, mode_high の各キーワード引数を指定します。

この第2チャンネルを利用すると、1 つのカウンターユニットで 4X 直交デコード(quadrature decoding)を構成できます。

pin_a = Pin(2, Pin.INPUT, pull=Pin.PULL_UP)
pin_b = Pin(3, Pin.INPUT, pull=Pin.PULL_UP)
rotary = PCNT(0, min=-32000, max=32000)
rotary.init(channel=0, pin=pin_a, falling=PCNT.INCREMENT, rising=PCNT.DECREMENT, mode_pin=pin_b, mode_low=PCNT.REVERSE)
rotary.init(channel=1, pin=pin_b, falling=PCNT.DECREMENT, rising=PCNT.INCREMENT, mode_pin=pin_a, mode_low=PCNT.REVERSE)
rotary.start()
PCNT.value([value])

このメソッドを引数なしで呼び出すと、現在のカウンター値を返します。

オプション引数 value0 を指定すると、カウンターがリセットされます(ただし、リセット前の値が返されます)。読取りとリセットはアトミック(不可分操作)ではないため、パルスが取りこぼされる可能性があります。0 以外の値を指定するとエラーが発生します。

PCNT.irq(handler=None, trigger=PCNT.IRQ_ZERO)

ESP32 のパルスカウンターは、次のカウンターイベントに対する割込みをサポートしています。

  • PCNT.IRQ_ZERO: カウンターがゼロにリセットされた

  • PCNT.IRQ_MIN: カウンターが最小値に達した

  • PCNT.IRQ_MAX: カウンターが最大値に達した

  • PCNT.IRQ_THRESHOLD0: カウンターが threshold0 の値に達した

  • PCNT.IRQ_THRESHOLD1: カウンターが threshold1 の値に到達した

trigger には、監視したいイベントをビット和演算子 | で組み合わせたビットマスクを指定します。 handler 関数は、発生元となった PCNT インスタンスを単一の引数として受け取ります。

このメソッドはコールバックオブジェクトを返します。コールバックオブジェクトを使うと、その PCNT ユニットで保留中のイベントのビットマスクにアクセスできます。

def pcnt_irq(pcnt):
    flags = pcnt.irq().flags()
    if flags & PCNT.IRQ_ZERO:
       # reset
    if flags & PCNT.IRQ_MAX:
       # overflow...
    ... etc

pcnt.irq(handler=pcnt_irq, trigger=PCNT.IRQ_ZERO | PCNT.IRQ_MAX | ...)

注記: irq.flags() を呼び出すとフラグはクリアされるため、ハンドラの呼出しごとに一度だけ実行してください。

ハンドラは MicroPython のスケジューラを介して呼び出されるため、割込み発生後しばらくしてから実行されます。もしハンドラが呼び出される前に別の割り込みが発生した場合、それらのイベントはまとめられ、1 回の呼び出しとして処理されます。このとき、ビットマスクには発生したすべてのイベントが示されます。

ハンドラ実行と現在のカウンター値取得との間で競合状態(race condition)が起きるのを避けるため、 value() メソッドは現在のカウンター値を返す前に、保留中のイベントを強制的に実行します(必要に応じて値をリセットします)。

各ユニットにつき設定できるハンドラは1つだけです。 handler に None を設定すると、そのユニットのイベント割り込みが無効化されます。

注釈

ESP32 のパルスカウンターは、最小値または最大値に到達するとゼロにリセットされます。したがって、これらのイベントが発生した場合にも IRQ_ZERO イベントが同時にトリガーされます。

一般的なパルスカウント用途向けに、よりシンプルに抽象化したものについては machine.Counter クラスと machine.Encoder クラスを参照してください。

RMT

ESP32 に固有の RMT (リモートコントロール)モジュールは、もともと赤外線リモートコントロール信号を送受信するために設計されました。ただし、柔軟な設計と非常に正確な(12.5ns程度の)パルス生成により、他の多くのタイプのデジタル信号の転送/受信にも使用できます:

import esp32
from machine import Pin

r = esp32.RMT(pin=Pin(18), resolution_hz=10000000)
r  # RMT(pin=18, source_freq=80000000, resolution_hz=10000000, idle_level=0)

# 高出力にキャリア周波数を適用する場合
r = esp32.RMT(pin=Pin(18), resolution_hz=10000000, tx_carrier=(38000, 50, 1))

# チャンネルの分解能は 100ns (1/(source_freq/clock_div))
r.write_pulses((1, 20, 2, 40), 0)  # Send 0 for 100ns, 1 for 2000ns, 0 for 200ns, 1 for 4000ns

RMTモジュールへの入力は 80MHz クロックです(将来的に入力クロックを設定できるようになる可能性もありますが、現時点では固定です)。 resolution_hz は RMT チャンネルの分解能を決定します。 write_pulses で指定した数値については、分解能を乗算してパルスが決まります。

したがって、上記の例で分解能は (1/10MHz) = 100ns です。開始レベルは 0 であり、各数値でレベルが切り替わるので、ビットストリームは 0101 で各ビットについて [100ns, 2000ns, 100ns, 4000ns] の持続時間を有します。

詳細については ESP-IDF RMT documentation. を参照してください。

警告

現在の MicroPython RMT 実装にはいくつかの機能がありませんが、最も顕著なのは受信パルスです。RMT は ベータ機能 と見なすべきであり、インターフェースは将来変更する可能性があります。

class esp32.RMT(channel, *, pin=None, resolution_hz=10000000, clock_div=None, idle_level=False, num_symbols=48 | 64, tx_carrier=None)

このクラスは8つのの RMT チャンネルの1つへのアクセスを提供します。 channel はオプションであり、後方互換性のためのダミー引数です。 pin は必須でであり、その RMT チャンネルに結び付けられるピンを設定します。 resolution_hz はサンプルの分解能/単位を定義します。例として 1,000,000 を指定すると、単位はマイクロ秒になります。パルス幅は最大で RMT.PULSE_MAX までの値を取れるため、転送する信号に応じて適切な分解能を選ぶ必要があります。 clock_div (非推奨)は resolution_hz と同等ですが、ソースクロック(80MHz)を RMT チャンネルに分周して分解能を設定する方式です。 clock_divresolution_hz はどちらか一方のみ指定できます(両方同時には不可)。 num_symbols はこのチャンネルに割り当てる RMT バッファのサイズを指定します(チップにより最小 48 または 64)。このバッファはチップ内の小さなシンボルプール(192~512 の範囲、チップによる)から分配され、すべてのチャンネルで共有されます。このバッファは送信できるパルストレインの長さ自体を制限しませんが、バッファが大きいほど CPU 負荷が減り、グリッチやパルス幅の不正確さが発生しにくくなります。 idle_level は送信が行われていないときに出力がどのレベルになるかを指定します。真偽値へ変換可能な任意の値を指定でき、 True は高電圧、 False は低電圧を表します。

伝送キャリア機能を有効にするには、 tx_carrier 引数に3項目の整数値のタプルを指定します。3項目はそれぞれキャリア周波数、デューティ比(0 から 100 で指定)、キャリアを適用する出力レベル(idle_level と同様のブール値)を意味します

classmethod RMT.source_freq()

ソースクロック周波数を返します。現在のところソースクロックは設定できないため、常に 80MHz が返されます。

RMT.clock_div()

クロック分周器を返します。チャネルの分解能は 1 / (source_freq / clock_div) であることに注意してください。(このメソッドは非推奨です。 分解能 が resolution_hz として指定された場合、この値は正確でない可能性があります。)

RMT.wait_done(*, timeout=0)

チャネルがアイドル状態であれば True を返します。RMT.write_pulses で開始したパルスのシーケンスが転送中の状態にあれば False を返します。 timeout キーワード引数を指定した場合、伝送が完了するまでの間、最大で指定のミリ秒だけブロックします。タイムアウトに -1 を指定すると、送信が完了するまでブロックします(ループが有効な場合は永久にブロックします)。

RMT.loop(enable_loop)

チャネルのループを設定します。 enable_loop はブール型で、 True にすると、 RMT.write_pulses次の 呼び出しでループを有効にします。ループシーケンスの転送中に False で呼び出された場合は転送を停止します。(このメソッドは RMT.loop_count により非推奨となりました。)

RMT.loop_count(n)

チャンネルのループ動作を設定します。 n は整数です。この設定は次回の RMT.write_pulses 呼び出しに影響します。ループを無効にするには 0 、無限ループにするには -1 、指定した回数だけループさせるには 正の整数 を設定します。 n が変更された場合、現在の転送は停止します。

注記: 有限回数のループは、すべての ESP32 系デバイスでサポートされているわけではありません。

RMT.active([boolean])

パラメータなしで呼び出した場合、転送が進行中であれば True を返します。

パラメータに False を指定すると、進行中の転送を停止します。これは無限ループの転送を停止するのに便利です。現在実行中のループは最後まで送られ、その後に転送が停止します。オブジェクトは無効化されず、新しい転送が開始されれば再び RMT チャンネルは有効になります。

パラメータに True を指定しても転送は再開されません。新しい転送は必ず write_pulses() で開始する必要があります。

RMT.deinit()

すべての RMT リソースを解放し、オブジェクトを無効化します。その後のメソッド呼び出しはすべて OSError を発生させます。これは、オブジェクトがガーベジコレクトされるのを待たずに RMT リソースを解放するのに便利です。

RMT.write_pulses(duration, data=True)

シーケンスの転送 を開始します。これを指定するには、次の3つの方法があります:

モード1: duration は、パルス幅のリストまたはタプルです。オプションの data 引数は初期出力レベルを指定します。出力レベルは各期間の後に切り替わります。

モード2: duration は正の整数であり、 data は出力レベルのリストまたはタプルです。 duration には毎回固定のパルス幅を指定します。

モード3: durationdata は同じ長さのリストまたはタプルであり、個々のパルス幅とそれぞれの出力レベルを指定します。

パルス幅は整数単位で指定するチャネルの分解能(上記のとおり)であり、1から PULSE_MAX の間の値となります。出力レベルはブール型に変換できる任意の値であり、 True が高電圧、 False が低電圧を意味します。

以前のシーケンスの送信が進行中の場合、このメソッドは以前の伝送が完了するまで新しいシーケンスを開始をブロックします。

ループが RMT.loop で有効になっている場合、シーケンスが無期限に繰り返されます。このメソッドをさらに呼び出すと、現在のループ反復が終了するまでブロックして、新しいパルスシーケンスのループをすぐに開始します。126 パルスより長いループシーケンスは、ハードウェアでサポートされていません。

static RMT.bitstream_rmt([value])

machine.bitstream の実装における RMT の利用方法を設定します。

valueTrue の場合、可能であれば bitstream は RMT を使用しようとします。valueFalse の場合、bitstream はビットバンギング方式を使用し続けます。

パラメータを指定しない場合、現在の設定状態を返します。デフォルト値は True です。

static RMT.bitstream_channel([value])

この関数は非推奨であり、今後は `RMT.bitstream_rmt()` を使うようにしてください。

引数なしで呼び出した場合、 machine.bitstream 機能に対して RMT が有効であれば 1 を、さもなければ None を返します。

非負整数を引数として渡すことは RMT.bitstream_rmt(True) を呼び出すことと同等です。

注釈

以前の MicroPython では、bitstream 用に特定の RMT チャンネル番号を割り当てるために本関数を使う必要がありましたが、現在ではチャンネル番号は動的に割り当てられるようになりました。

定数

RMT.PULSE_MAX

パルス幅に設定できる最大整数値。

超低消費電力コプロセッサー

このクラスは、ESP32、ESP32-S2、ESP32-S3 チップの超低消費電力(ULP: Ultra-Low-Power)コプロセッサへのアクセスを提供します。

警告

このクラスでは、ESP32-S2 および ESP32-S3 チップに搭載されている RISCV ULP コプロセッサにアクセスできません。

class esp32.ULP

このクラスは超低消費電力コプロセッサーへのアクセスを提供します。

ULP.set_wakeup_period(period_index, period_us)

起床期間を設定します。

ULP.load_binary(load_addr, program_binary)

与えた load_addrprogram_binary を ULP にロードします。

ULP.run(entry_point)

与えた entry_point で ULP を起動します。

定数

esp32.WAKEUP_ALL_LOW
esp32.WAKEUP_ANY_HIGH

ピンの起床レベル。

不揮発ストレージ

このクラスは ESP-IDF が管理する不揮発ストレージ(NVS - Non-Volatile storage)へのアクセスを提供します。NVS は名前空間に区分けされ、角それぞれの名前空間が型付けされたキー/値のペアを持ちます。キーは文字列であり、値は整数型、文字列、バイナリデータブロブなど様々ですは、ドライバーは現在のところサポートしているのは、32ビット符号付き整数とバイナリデータのみです。

警告

NVS への変更は、commit メソッドを呼び出してフラッシュメモリにコミットする必要があります。commit の呼び出しに失敗すると、次のリセット時に変更が失われます。

class esp32.NVS(namespace)

名前空間へのアクセスを提供するオブジェクトを作成します(存在しない場合は自動的に作成されます)。

NVS.set_i32(key, value)

指定のキーに32ビットの符号付き整数値を設定します。 commit の呼出しを忘れないでください!

NVS.get_i32(key)

指定のキーとペアになっている符号付き整数値を返します。キーが存在しないか、値の型が異なる場合、OSError が発生します

NVS.set_blob(key, value)

指定のキーのバイナリデータ値を設定します。渡す値は、bytes、bytearray、str などで、バッファプロトコルをサポートしている必要があります。(esp-idf はバイナリデータと文字列を区別することに注意してください。このメソッドは、文字列が値として渡された場合でも常にバイナリデータとして書き出します。) commit の呼出しを忘れないでください!

NVS.get_blob(key, buffer)

指定のキーとペアになっているバイナリデータをバッファに読み込みます。バッファは、バイト配列である必要があります。戻り値は読み込んだ実際の長さです。キーが存在しない場合、値の型が異なる場合、バッファ長が足りない場合は OSError が発生します。

NVS.erase_key(key)

キーと値のペアを消去します。

NVS.commit()

set_xxx メソッドによって行われた変更をフラッシュメモリにコミットします。

低ドロップアウト電圧レギュレータ(LD0)

このクラスでは、ESP32P4 チップ上の低ドロップアウト電圧レギュレータ(Low Dropout Voltage Regulator: LDO)にアクセスできます。

詳細については Espressif社の ESP-IDF LDO ドキュメンテーション を参照してください。

class esp32.LDO(channel, voltage_mv, adjustable=False)

channel に指定した LDO チャンネルの低ドロップアウト電圧レギュレータへのアクセスを提供するオブジェクトを作成します。

指定できる引数:

  • voltage_mv: LDO チャンネルに設定する電圧値(ミリボルト単位)

  • adjustable: (オプション): LDO チャネルが調整可能かどうか、 adjust_voltage で電圧が更新可能かどうかを指定します

LDO.adjust_voltage(voltage_mv)

LDO チャンネルの電圧を調整します。

LDO.release()

LDO チャンネルを開放します。