ESP-WROOM-02でMicroPythonを使い開発(モジュール編)

〔ESP32-WROOM-32E〕 〔マイコンのトップに戻る〕
[準備編]   [GPIO編] [通信編] [ファイル編] [OLED編] [WiFi編] [メール編] [並行処理編] [色々編]


ESP8266で"import"できそうなモジュール一覧を貼り付けて置こう。
このページは、
MicroPython ドキュメンテーションより一部抜粋して作成しています。
MicroPythonの用語集はこちらです。

インポートできるモジュール一覧
"DS18x20"ん1-wire?、SSD1306ってOLED?私にデバイスを買えってかぁ。
なんだぁ"example...."、"webrepl"WEBでREPLかぁ、何だかネタが尽きないなぁ...


upip】--- マイクロ pip
 ”micropython-lib”に登録されているモジュールをダウンロードしてESP8266にインストールできます。
 "/lib"の下にインストールされる様なので、"/lib"ディレクトリを作成して置く必要が有ります。
 ippei8jpさんのページ”micropython on ESP32 でモジュールをインストールする”も見ておきましょう
 "upip_utarfile"は、tarファイルのインストールの様だが?

replでupipの操作例
"upip"の操作の前にWi-Hiに接続しないとダメですよ。
接続方法は[WiFi編]のクライアントの章を見ましょう。

upysh】--- マイクロ pysh
 マイクロパイシェルでファイル操作ができる様です。[ファイル編]参照ください。
 マイクロパイソンフォーラムに"Tree"表示でファイル一覧を表示する"upysh"の拡張版が有りました。
 [from upysh import *]

デバイス固有の機能関連

inisetup】---
 電源ON立ち上げ時の初期化処理と思えます。 わからん!

port_diag】---
フラッシュメモリのtools/codeformat.py.で再フォーマットします。
の様な感じだろうか?? わからん! まあ、触らぬ神に祟りなし (( ;゚Д゚))

esp】--- ESP8266とESP32に関連する関数
 このモジュールは、ESP8266 と ESP32 の両方のモジュールに関連する固有の機能を提供します。
 "esp.deepsleep" 関数は[色々編]を参照してください。

flashbdev】--- ファイルシステムの利用
 内蔵フラッシュは、起動時に flashbdev モジュールで作成されるブロックデバイスオブジェクトとして
 公開されます。このオブジェクトはデフォルトでグローバル変数として追加されているので、
 通常は単純に bdev としてアクセスできます。これは拡張インターフェースを実装しています。

micropython】--- MicroPython 内部のアクセスと制御
 コンパイル時(実行時)の最適化や現在使っているメモリに関する情報等を行う。
    from micropython import const

    _TIMEOUT = const(100)
    _STATE = const(1 >> 4)
    CONST_Y = const(2 * CONST_X + 1)

  宣言されているモジュールの外部からグローバル変数としてアクセス可能です。
  一方、定数名がアンダースコアで始まっていれば不可視となり、グローバル変数として利用でくなくなり、
  実行中のメモリを消費しません。

  現在使っているメモリに関する情報を表示する場合
  >>> import micropython
  >>> micropython.mem_info()
  stack: 2112 out of 8192
  GC: total: 37952, used: 2864, free: 35088
   No. of 1-blocks: 41, 2-blocks: 13, max blk sz: 18, max free sz: 2169
  >>>
machine】--- ハードウェア関連の関数
 特定のボード上のハードウェアに関連する固有の関数を含んでいます。
 システム上のハードウェアブロック(CPU/タイマー/バス等)への直接的なアクセスと制御を実現します。
 誤って使用すると、誤動作、ロックアップ、ボードのクラッシュ、及び極端な場合にはハードウェアの
 損傷を招く可能性があります。

help(machine)
"freq"/"deepsleep"/"RTC"/"Timer"関連は[色々編]
"time_pulse_us"/"Pin"/"Signal"/"PWM"/"ADC"関連は[GPIO編]
"UART"/"I2C"/"SPI"関連は[通信編]を見ましょう。

onewire】--- 1-wire デバイスの制御
 1-ware バスは、GNDラインと電源+信号ラインの2本で通信を行うシリアルバスです。
 これもセンサー手に入れたら[通信編]で書くつもりは有りますがぁ...

一般関数

builtins】--- 組込みの関数と例外
 importしなくても初めから組み込まれている関数(len()/pow()等)と例外(OSError等)処理ですが、
 これらは"builtins"モジュール経由でも利用できます。

uio】--- 入出力ストリーム
 さまざまなタイプのI/Oを扱うためのPythonの主要な機能を提供します。
 I/O には、テキスト I/O、バイナリ I/O、および生の I/Oの 3 つの主要な種類があります。
 このモジュールには stream(ファイルの様な)オブジェクトの追加のデータ型とヘルパー関数が
 含まれています。

gc】--- ガベージコレクションの制御
 オプションのガベージ コレクタへのインターフェイスを提供します。
 ガベージコレクションとは、コンピュータプログラムの実行環境等が備える機能の一つで、
 実行中のプログラムが占有していたメモリ領域のうち不要になった物を自動的に解放し、
 空き領域として再利用できる様にするもの。
 import gc
 gc.collect()
 この記述を頻繁に行うとメモリの空きが増えます。

uerrno】--- システムエラーコード
 このモジュールは OSError 例外のシンボリックエラーコードへのアクセスを提供します。

usys】--- システム固有関数
 インタープリタによって使用又は管理されている変数や、インタプリタと強く対話する関数への
 アクセスを提供します。常に利用可能です。

ヘルプ(usys)
パスが"path -- ['', '/lib', '/']"となっている事は、
"/lib"の下もモジュールを検索に行くと言う事ですね。
(因みに、検索は"/"から"/lib"の順に探すようです)
完成したライブラリは"/lib"に入れよう〜っとぉ。
バイトオーダーは、リトルインデアンだな! <(`^´)>
あれ?、コードの終了時に実行する関数を登録できると言う"usys.atexit()"がないなぁ。

uos】--- 基本的な「オペレーティングシステム」サービス
 オペレーティング システムに依存する機能を使用する移植可能な方法を提供します。
 ファイルシステムのアクセス、マウント、ターミナルのリダイレクトと複製、
 uname と urandom の為の関数があります。

TeraTermでREPL操作1


utime】--- 時間関連の関数
 時間に関連する様々な関数(現在の日時の取得、時間隔の測定、遅延の機能)を提供します。
 全ての関数が全てのプラットフォームで使用できるわけではありません。
 組込み機器へのポートは、2000年1月1日 00:00:00 UTC のエポックを使います。

ヘルプ(time)

utimeq】---

math】--- 数学関数
 モジュールは浮動小数点数を扱うための基本的な数学関数を提供します。

mathのhelp一覧
"math"で利用できる関数はこんだけぇ。

ure】--- 簡素な正規表現
 このモジュールは正規表現マッチング操作を実装します。

ureのhelp一覧
正規表現で利用できる関数はこんだけぇ。

メタ文字や特殊シーケンスのことはここを参考にしましょう。
note.nkmk.meさんのページのここは詳しいです。

urandom】--- 乱数生成器
 n 個のランダムバイトを持つ bytes 型オブジェクトを返します。
 可能な限り、ハードウェア乱数生成器によって乱数を生成します。
  urandom.getrandbits(N)
   N は 1 〜 32 のビット数を指定し、そのビット間のランダム数値を返します。
   "urandom.getrandbits(4)"なら 0-15 の何れかが返って来ます。
  urandom.seed(N)
   乱数ジェネレータを既知の整数で初期化します。
   これにより、特定の開始状態から再現的に決定的なランダム性が与えられます。

asyncio】--- 非同期 I/O スケジューラ
 asyncio は async/await 構文を使い 並行処理の コードを書くためのライブラリです。
 "uasyncio/__init__"、"uasyncio/core"、"uasyncio/event"、"uasyncio/funcs"、"uasyncio/lock"、
 "uasyncio/stream"
 asyncioモジュールの話は、[並行処理編]を参照してください。

btree】--- 単純な BTree データベース
 このモジュールは、外部記憶装置(ディスクファイル、又はランダムアクセスストリーム)を使用して
 単純な キー/値 (Key-Value)データベースを実装します。
 btreeモジュールの話は、[色々編]の”データベース”の項を参照してください。

uselect】--- 一連のストリームのイベント待機
 このモジュールは、複数の ストリーム[stream](操作の準備ができている select ストリーム)の
 イベントを効率的に待機する機能を提供します。

ucollections】--- コンテナのデータ型
 このモジュールは、様々なオブジェクトを保持/蓄積する高度なコレクションとコンテナのデータ型を
 実装します。
 ucollections.dequeモジュールの話は、[色々編]の”FIFOバッファ”の項を参照してください。

uctypes】--- 構造化手法でのバイナリデータアクセス
 このモジュールは MicroPython 用の「外部データインターフェース」を実装しています。
 基本的な考え方は、C言語でできる事とほぼ同じくデータ構造のレイアウトを定義し、
 よく知られたドット構文を使ってサブフィールドにアクセスできる様にする事です。

ustruct】--- 基本データ型のパックとアンパック
 このモジュールは、Python の値と Pythonバイトオブジェクトとして表される
 C 構造体の間の変換を実行します。これは、ファイルやネットワーク接続から、
 他のソース間で格納されているバイナリ データを処理する時に使用できます。

ustructの操作1
"h"=short "l"=long なのでぇ、"short short long"でぇ、2+2+4=8バイト
更にリトルエンディアンで格納されていますね。
"ustruct"の書式文字列はここを参照しましょう。
ustructの操作2
アンパックした結果のフィールドは、変数に割り当てる事が出来ます。
"4658"=0x1236でリトルエンディアンだから"\x32\x12"、"264"=0x0108で"\x08\x01"ですね。


uarray】--- 数値データの配列
 このモジュールは、文字、整数、浮動小数点数等の基本値の配列をコンパクトに表現できる
 オブジェクトタイプを定義します。
 配列はシーケンス型であり、リストとよく似ていますが、配列に格納されているオブジェクトの型が
 制約される点が異なります。

ujson】--- JSON のエンコードとデコード
 このモジュールでは、Python オブジェクトと JSON データの間の変換ができます。
 ujsonモジュールの話は、[色々編]の”jsonファイル読書き”の項を参照してください。

ubinascii】--- バイナリ/ASCII 変換
 バイナリデータと ASCII 形式のさまざまなエンコーディングとの間の変換(両方向)を実装します。
 base64形式のデコード/エンコードも出来る様です。

ucryptolib】--- 暗号化アルゴリズム
 秘匿用として多くの暗号利用モード(ECB/CBC/CTR)の暗号化/復号化を行います。

uhashlib】--- ハッシュ化アルゴリズム
 このモジュールはバイナリデータハッシュ化アルゴリズムを実装しています。
 利用可能なアルゴリズム(SHA256/SHA1/MD5)が何であるかはボードによって異なります。
 ESP256はSHA256とSHA1のアルゴリズムが実装されているようです。

uheapq】--- ヒープキューアルゴリズム
 このモジュールは、優先度キュー アルゴリズムとも呼ばれるヒープ キュー アルゴリズムの実装を
 提供します。

uzlib】--- zlib 展開
 このモジュールは、データ圧縮が必要なアプリケーションの場合等に、
 この関数は DEFLATE アルゴリズム(ZIPやgzip)の zlib ライブラリを使用して圧縮と解凍を行う事が
 できますが、圧縮はまだ実装されていません。

ネットワーク関連

lwip】--- lwIP (lightweight IP)
 組み込みシステム向けに設計されたオープンソースの軽量なTCP/IPのプロトコルスタックです。

network】--- ネットワーク設定
 このモジュールはネットワークドライバとルーティングの設定を提供します。

usocket】--- ソケットモジュール
 このモジュールは BSD ソケットインタフェースへのアクセスを提供します。

urequests】--- ネットワーク要求モジュール
 HEAD/GET/POST/PUT/PATCH/DELETEのネットワーク要求を送信します。
 "urllib/urequest"?

umqtt/simple】--- MQTT クライアント
umqtt/robust】---
 umqtt は、マイクロ Python 用の単純な MQTT クライアントです。

ussl】--- SSL/TLS モジュール
 このモジュールは、SSL 接続による暗号化とクライアント側とサーバー側のネットワークソケットの
 ピア認証機能へのアクセスを提供します。

ntptime】--- NTPサーバからの時刻取得
 このモジュールは、wifi への接続が必要です、ntp で時刻同期する事ができます。
 ntptimeの話は、[色々編]を参照してください。

webrepl/webrepl_setup】--- WiFi 経由のREPLプロンプト
 WebREPLを使うと、Web ブラウザから WiFi 経由で Python プロンプトを使えます。
 WebREPLの話は、[WiFi編]を参照してください。
 "uwebsocket"/"websocket_helper"はWebREPLで使用される物らしい。

アプリケーション関連

ssd1306/framebuf】--- OLEDのSSD1306用のライブラリ
 SSD1306ライブラリは最初からESP8266のMicroPythonに構築されていました。
 SSD1306ライブラリの話は、[OLED編]を参照してください。

neopixel】--- NeoPixel の制御
 NeoPixel は WS2812 LEDとも呼ばれ、シリアルに接続され、個別にアドレス可能で、赤、緑、青の
 コンポーネントを 0-255 の間で設定できるフルカラーLEDです。

apa102】--- APA102 LEDの制御
 DotStar LEDとして知られているAPA102 LEDは、一般的に文字列の形成で、個別にアドレス可能な
 フルカラーのRGB LEDです。

ds18x20】--- DS18B20 温度センサ
 DS18B20は、1-wire で制御する温度センサーです。
 色々ある様ですね。

dht】--- 温度と湿度
 DHT (Digital Humidity & Temperature)センサは、周囲の空気を測定する静電容量式湿度センサと
 サーミスタを備えた低コストのデジタルセンサです。
 DHT11 (青)と DHT22(AM2302) (白)センサーは同じ 1-wire インターフェースを提供します
 DHT22を使った"dht"モジュールの話は、[通信編]を参照してください。




[準備編へ] [ページ上へ] [GPIO編へ]


【きむ茶工房ガレージハウス】
Copyright (C) 2006-2021 Shigehiro Kimura All Rights Reserved.