[Diaoyeがプログラミングを学ぶ] MicroPythonマニュアルの組み込みモジュールネットワーク - ネットワーク関数モジュール

ここに画像の説明を挿入します

MicroPython は、組み込みシステムで Python 3 プログラミング言語を実行するために設計されたインタープリターの軽量バージョンです。通常の Python と比較して、MicroPython インタープリターは小さく (わずか約 100 KB)、バイナリの実行可能ファイルにコンパイルされて実行されるため、実行効率が高くなります。軽量のガベージ コレクション メカニズムを使用し、リソースに制約のあるマイクロコントローラーに対応するために Python 標準ライブラリの大部分を削除します。

MicroPython の主な機能は次のとおりです。
1. 構文と関数は標準の Python と互換性があるため、学習と使用が簡単です。Python のコア構文のほとんどがサポートされています。
2. ハードウェアに直接アクセスして制御し、Arduino のように GPIO、I2C、SPI などを制御します。
3.ファイルシステム、ネットワーク、グラフィカルインターフェースおよびその他の機能を提供する強力なモジュールシステム。
4. クロスコンパイルをサポートし、インタプリタよりも 10 ~ 100 倍高速な効率的なネイティブ コードを生成します。
5. コード量が少なくメモリ使用量も少ないため、メモリの少ない MCU や開発ボードでの実行に適しています。
6. オープンソースライセンス、無料で使用できます。シェル対話型環境は、開発とテストに便利です。
7. 内蔵 I/O ドライバーは、ESP8266、ESP32、STM32、micro:bit、コントロール ボード、PyBoard などの多数のマイクロコントローラー プラットフォームをサポートします。活発なコミュニティがあります。

MicroPython のアプリケーション シナリオには次のものが含まれます。
1. 組み込み製品のプロトタイプとユーザー インタラクションを迅速に構築します。
2. 小さなプログラム可能なハードウェア プロジェクトをいくつか作成します。
3. 初心者がPythonやIoTプログラミングを学ぶのに役立つ教育ツールとして。
4. 高度な制御とクラウド接続のためのスマート デバイス ファームウェアを構築します。
5. モノのインターネット、組み込みインテリジェンス、ロボットなどのさまざまなマイクロコントローラー アプリケーション

MicroPython を使用する際の注意事項:
1. メモリとフラッシュのスペースには限りがあります。
2. 解釈と実行の効率は C 言語ほど良くありません。
3. ライブラリ機能の一部が標準版と異なります。
4. プラットフォームに合わせて構文を最適化し、標準の Python との相違点を修正します。
5. メモリ リソースを合理的に使用し、大きなメモリ ブロックを頻繁に割り当てることを避けます。
6. ネイティブ コードを使用して、速度が重要な部分のパフォーマンスを向上させます。
7. 抽象化を適切に使用して、基礎となるハードウェア操作をカプセル化します。

一般に、MicroPython は Python をマイクロコントローラーの分野に導入します。これは、プログラミングの敷居を下げるだけでなく、優れたハードウェア制御機能も提供する重要な革新です。さまざまなタイプのモノのインターネットやインテリジェント ハードウェアの開発に非常に適しています。

ここに画像の説明を挿入します
MicroPython の組み込みモジュール ネットワークは、ネットワーク インターフェイスの構成と制御に使用されるモジュールであり、WiFi、イーサネット、セルラー ネットワークなど、システム上のさまざまな種類のネットワーク インターフェイスにアクセスして制御するために使用できます。その主な特徴は次のとおりです。

1. WLAN、LAN、PPP、LTE などのさまざまなネットワーク インターフェイス関連オブジェクトを作成および操作して、ネットワーク インターフェイスのアクティブ化、接続、切断、クエリなどの操作を実現できます。
2. ソケット モジュールを使用して、TCP、UDP、HTTP、その他のプロトコルなどの設定されたネットワーク インターフェイスを通じてネットワーク通信を実行できます。
3. ssl モジュールを使用して、TLS、HTTPS、その他のプロトコルなどの安全なネットワーク通信を実現できます。
4. usocket モジュールを使用して、生のソケット、パケット ソケット、その他のプロトコルなどの低レベルのネットワーク通信を実装できます。

ネットワーク モジュールのアプリケーション シナリオは次のとおりです。

1. ルーター、サーバー、センサー、カメラなどのさまざまなネットワーク サービスまたはデバイスに接続するために使用されます。
2. Web 開発、API 呼び出し、データ送信、リモート制御など、ネットワーク関連の機能またはアプリケーションを実装するために使用されます。
3. ネットワーク プロトコル、ネットワーク セキュリティ、モノのインターネットなど、ネットワーク関連の知識やスキルを学習または指導するために使用されます。

ネットワークモジュールに関する注意事項は次のとおりです。

1. ネットワーク モジュールは、特定のボード上のネットワーク ハードウェアとリソースに依存します。MicroPython ボードが異なれば、利用可能な機能やパラメータの範囲が異なる場合があります。サポートされる機能と使用方法を確認するには、特定のドキュメントを確認する必要があります。
2. ネットワーク モジュールは、ネットワーク インターフェイスへの直接的かつ無制限のアクセスと制御を提供しますが、不適切に使用すると、デバイスの故障、ロックアップ、クラッシュが発生し、極端な場合にはハードウェアが損傷する可能性があります。慎重に使用し、関連する仕様とガイドラインに従ってください。
3. ネットワーク モジュールによって使用されるコールバック関数は、割り込みコンテキスト 123 で実行されます。システムのパフォーマンスと安定性に影響を与えるのを避けるために、複雑な操作や時間のかかる操作の実行を避けるために、コールバック関数はできるだけ短く高速である必要があります。

以下に、MicroPython の組み込みモジュール ネットワークの実際のアプリケーション例をいくつか示します。

ケース 1: WLAN オブジェクトを使用して WiFi ネットワークに接続する

# 导入network模块
import network

# 创建一个WLAN对象,类型为STA_IF(站点接口)
wlan = network.WLAN(network.STA_IF)

# 激活WLAN对象
wlan.active(True)

# 连接到指定的SSID和密码
wlan.connect('your-ssid', 'your-key')

# 等待连接成功
while not wlan.isconnected():
    pass

# 打印当前网络配置信息
print(wlan.ifconfig())

ケース 2: LAN オブジェクトを使用してイーサネット ネットワークに接続する

# 导入network模块
import network

# 创建一个LAN对象,并指定PHY类型为LAN8720(一种以太网收发器)
lan = network.LAN(mdc=machine.Pin(23), mdio=machine.Pin(18), phy_type=network.PHY_LAN8720, phy_addr=0)

# 激活LAN对象
lan.active(True)

# 等待连接成功
while not lan.isconnected():
    pass

# 打印当前网络配置信息
print(lan.ifconfig())

ケース 3: LTE オブジェクトを使用してセルラー ネットワークに接続する

# 导入network模块
import network

# 创建一个LTE对象
lte = network.LTE()

# 初始化LTE对象,并设置APN(接入点名称)
lte.init(carrier='standard', apn='your-apn')

# 连接到蜂窝网络
lte.attach()

# 等待连接成功
while not lte.isattached():
    pass

# 建立数据会话
lte.connect()

# 等待会话成功
while not lte.isconnected():
    pass

# 打印当前网络配置信息
print(lte.ifconfig())

ケース 4: Wi-Fi ネットワークに接続する:

import network

# 连接到Wi-Fi网络
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect("SSID", "password")

# 等待连接成功
while not wifi.isconnected():
    pass

# 打印网络信息
print("Connected to Wi-Fi")
print("IP address:", wifi.ifconfig()[0])

この例では、ネットワーク モジュールの WLAN クラスを使用して Wi-Fi ネットワークに接続します。まず、WLAN オブジェクト Wi-Fi を作成し、active(True) メソッドを通じて Wi-Fi 接続をアクティブにします。次に、connect() メソッドを使用して、Wi-Fi ネットワークの SSID とパスワードを渡してネットワークに接続します。次に、ループを使用して、isconnected() メソッドが True を返すまで Wi-Fi 接続が成功するのを待ちます。最後に、接続が成功した後、IP アドレスを含むネットワーク情報を出力します。

ケース 5: WebSocket サーバーを作成して実行します。

import network
import usocket as socket
import ujson as json

# 创建WebSocket服务器
websocket = network.WLAN(network.AP_IF)
websocket.active(True)
websocket.config(essid="WebSocket Server", password="password")

# 创建套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("0.0.0.0", 80))
server_socket.listen(1)

# 等待客户端连接
print("Waiting for client connection...")
client_socket, client_address = server_socket.accept()
print("Client connected:", client_address)

# 接收和发送数据
while True:
    data = client_socket.recv(1024)
    if not data:
        break

    # 处理接收到的数据
    received_data = json.loads(data)
    print("Received data:", received_data)

    # 发送响应数据
    response_data = {
    
    "message": "Hello, client!"}
    response = json.dumps(response_data)
    client_socket.send(response)

# 关闭套接字
client_socket.close()
server_socket.close()

この例では、ネットワーク モジュールの WLAN クラスを使用して WebSocket サーバーを作成します。まず、WLAN オブジェクト WebSocket を作成し、active(True) メソッドを通じて AP モードをアクティブにします。次に、config() メソッドを使用してサーバーの ESSID とパスワードを設定します。次に、ソケットを作成し、それを IP アドレスとポート番号にバインドします。listen() メソッドを使用して、クライアント接続のリスニングを開始します。ループ内で、クライアントが接続してクライアントのアドレスを出力するのを待ちます。次に、クライアントから送信されたデータを受信し、それを JSON 形式に解析します。次に、受信したデータを処理し、クライアントに送り返す応答データを構築します。ループはクライアントが切断されるまで継続します。最後にソケットを閉じます。

ケース 6: HTTP GET リクエストを送信し、応答を受信します。

import network
import usocket as socket

# 创建套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 建立连接
client_socket.connect(("example.com", 80))

# 发送HTTP GET请求
request = "GET /api/data HTTP/1.0\r\nHost: example.com\r\n\r\n"
client_socket.send(request.encode())

# 接收响应
response = client_socket.recv(1024)
print("Received response:\n", response.decode())

# 关闭套接字
client_socket.close()

この例では、network モジュールと usocket モジュールを使用してソケットを作成し、connect() メソッドを通じてリモート サーバーに接続します。HTTP プロトコルを使用して GET リクエストを送信し、サーバーから応答を受け取ります。最後に、受信した応答内容を出力し、ソケットを閉じます。

ケース 7: Wi-Fi ネットワークに接続する別の例

import network

# 连接到 Wi-Fi 网络
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect("SSID", "password")

# 等待连接成功
while not wifi.isconnected():
    pass

# 打印 IP 地址
print("IP 地址:", wifi.ifconfig()[0])

この例では、ネットワーク モジュールをインポートし、それを使用して Wi-Fi 接続を初期化します。network.WLAN クラスを通じて STA (ステーション) インターフェイスを作成し、active(True) メソッドを使用してインターフェイスを有効にします。次に、connect() メソッドを使用して、SSID とパスワードを渡して Wi-Fi ネットワークに接続します。次に、ループを使用して接続が成功するまで待機し (isconnected() が True を返す)、最後に取得した IP アドレスを出力します。この例では、ネットワーク モジュールを使用して Wi-Fi ネットワークに接続する方法を示します。

ケース 8: HTTP サーバーを作成して実行する

import network
import usocket as socket

# 创建 Wi-Fi AP
ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid="MicroPython-AP")

# 创建 Socket 服务器
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("0.0.0.0", 80))
server_socket.listen(1)

# 接受连接并发送响应
while True:
    client_socket, client_address = server_socket.accept()
    client_socket.send("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nHello, World!")
    client_socket.close()

この例では、ネットワーク モジュールと usocket モジュールをインポートし、それらを使用して Wi-Fi アクセス ポイント (AP) とソケット サーバーを作成しました。まず、network.WLAN クラスを通じて AP インターフェイスを作成し、active(True) メソッドを使用してインターフェイスを有効にします。次に、socket.socket() 関数を使用して TCP ソケット サーバーを作成し、それを IP アドレスとポート番号にバインドします。次に、listen() メソッドを使用して接続の待機を開始します。無限ループでは、クライアント接続を受け入れ、単純な HTTP 応答を送信し、接続を閉じます。この例では、ネットワーク モジュールと usocket モジュールを使用して単純な HTTP サーバーを作成および実行する方法を示します。

ケース 9: ネットワーク通信に UDP を使用する

import network
import usocket as socket

# 创建 UDP Socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(("0.0.0.0", 8888))

# 接收数据并发送响应
while True:
    data, address = udp_socket.recvfrom(1024)
    print("接收到的数据:", data.decode())
    
    response = "Hello, Client!"
    udp_socket.sendto(response.encode(), address)

この例では、ネットワーク モジュールと usocket モジュールをインポートし、それらを使用して UDP ソケットを作成しました。socket.socket() 関数を使用して UDP ソケットを作成し、bind() メソッドを使用して IP アドレスとポート番号にバインドします。次に、無限ループでクライアントからデータを受信し、受信したデータを印刷します。次に、単純な応答メッセージを生成し、sendto() メソッドを使用してその応答をクライアントに送り返します。この例では、基本的な UDP ネットワーク通信にネットワーク モジュールと usocket モジュールを使用する方法を示します。

これらの例は、MicroPython のネットワーク モジュールの実際的な使用法を示しています。ネットワーク モジュールは、Wi-Fi ネットワークへの接続、ネットワーク サーバーの作成、ネットワーク通信の実行など、ネットワーク関連の機能を提供します。ネットワークモジュールを利用すると、MicroPythonでさまざまなネットワーク機能を実装できます。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_41659040/article/details/132775607