[Diao Ye がプログラミングを学ぶ] MicroPython マニュアル WiPy ピンと GPIO

ここに画像の説明を挿入します
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 をマイクロコントローラーの分野に導入します。これは、プログラミングの敷居を下げるだけでなく、優れたハードウェア制御機能も提供する重要な革新です。さまざまなタイプのモノのインターネットやインテリジェント ハードウェアの開発に非常に適しています。
ここに画像の説明を挿入します
WiPy は、モノのインターネット (IoT) デバイスの開発と展開を簡素化するように設計された完全なハードウェアおよびソフトウェア ソリューションを提供する、MicroPython ベースのワイヤレス マイクロコントローラー モジュールです。

1. マイコンモジュール:WiPy は、プロセッサ、メモリ、無線通信モジュールなどの必要なコンポーネントを統合したマイコンモジュールです。MicroPython などの高レベルのプログラミング言語を実行でき、インターネットやその他のデバイスに接続できる、コンパクトで低電力のハードウェア プラットフォームを提供するように設計されています。
2. MicroPython: MicroPython は、Python プログラミング言語の合理化されたバージョンで、組み込みシステムおよびマイクロコントローラー設計用に特別に開発されました。Python 言語のコア機能と構文を提供するため、開発者はハードウェア制御や IoT アプリケーション開発に使い慣れた Python 構文を使用できます。WiPy は MicroPython の動作環境として、MicroPython コードを直接解釈して実行できます。
3. モノのインターネット (IoT): モノのインターネットとは、さまざまな物理デバイス (センサー、アクチュエーター、組み込みシステムなど) をインターネット経由で接続し、インテリジェンスと相互接続を実現するネットワークを指します。ワイヤレス マイクロコントローラー モジュールとして、WiPy はワイヤレス通信機能を備えており、モノのインターネットの他のデバイスやクラウド プラットフォームに接続して、リモート制御やデータ交換を実現できます。
4. 無線通信モジュール: WiPy には、Wi-Fi、Bluetooth、LoRa などの一般的な無線通信モジュールが 1 つ以上内蔵されています。これらの無線通信モジュールにより、WiPy は無線ネットワークを通じて他のデバイスと通信し、データ送信、リモート制御、クラウド接続、その他の機能を実現できます。開発者は、特定のニーズに基づいて適切な無線通信モジュールを選択できます。
5. 開発と展開: WiPy は一連の便利な開発ツールと開発環境を提供し、開発者がアプリケーションを迅速に開発、デバッグ、テストできるようにします。WiPy を開発したら、実際の IoT デバイスに直接展開して、他のデバイスと通信し対話することができます。WiPy はコンパクトな設計と低消費電力により、組み込みシステムや IoT デバイスへの導入に最適です。

ここに画像の説明を挿入します
WiPy の GPIO ピン機能の主な機能、アプリケーション シナリオ、注意事項は次のとおりです。

主な特徴:

柔軟性: WiPy の GPIO ピンは、さまざまなアプリケーションのニーズを満たすために入力モードまたは出力モードとして構成できます。
割り込みサポート: WiPy の GPIO ピンは外部割り込みをサポートしており、特定のイベントが発生するとプロセッサーを即座にウェイクアップできるため、システムの応答速度が向上します。
低消費電力: WiPy の GPIO ピンには低消費電力機能があり、エネルギーを節約するために必要がない場合はスリープ モードにすることができます。

アプリケーションシナリオ:

センサー インターフェイス: WiPy の GPIO ピンを使用して、温度センサー、湿度センサー、光センサーなどのさまざまなセンサーを接続し、環境データを取得できます。
アクチュエーター制御: WiPy の GPIO ピンを使用して、LED ライト、モーター、リレーなどのアクチュエーターを制御し、ステータスを切り替えたり調整したりできます。
ユーザー操作: WiPy の GPIO ピンを使用して、ボタンやスイッチなどの外部入力デバイスを接続し、ユーザー入力操作を検出できます。

予防:

電圧の互換性: WiPy の GPIO ピンを使用する場合、電圧の競合や損傷を避けるために、外部デバイスと WiPy の電圧の互換性を確認する必要があります。
入力状態の安定性: WiPy の GPIO ピンを入力モードに設定する場合、誤った判断や誤ったデータを避けるために、外部デバイスの状態の安定性と耐干渉能力に注意を払う必要があります。
出力電流制限: WiPy の GPIO ピンを出力モードに設定する場合、過負荷や損傷を避けるために、接続されたデバイスの電流要件が WiPy の許容範囲内であることを確認する必要があります。
要約すると、WiPy の GPIO ピンは、センサー、アクチュエーター、ユーザー インタラクション デバイスの接続に使用できる柔軟な入出力機能を提供します。使用する場合は、システムの正常な動作と機器の安全性を確保するために、電圧の互換性、入力状態の安定性、出力電流制限に注意する必要があります。

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

WiPy は、Wi-Fi ネットワーク経由でプログラムおよびデバッグできる MicroPython ベースのマイクロコントローラーです。以下は、ピンと GPIO の使用を含む、いくつかの実用的なアプリケーションのリファレンス コード例です。

ケース 1: WiPy と LED ライトによる点滅機能の実装

from machine import Pin  
import time  
  
# 设置WiPy的引脚和模式  
pin_led = Pin(2, Pin.OUT) # LED灯控制引脚  
  
# 循环闪烁LED灯  
while True:  
    pin_led.value(1) # 打开LED灯  
    time.sleep(1) # 等待1秒钟  
    pin_led.value(0) # 关闭LED灯  
    time.sleep(1) # 等待1秒钟

ケース 2: WiPy とボタンを通じて LED ライトを制御する

from machine import Pin  
import time  
  
# 设置WiPy的引脚和模式  
pin_led = Pin(2, Pin.OUT) # LED灯控制引脚  
pin_button = Pin(5, Pin.IN) # 按钮控制引脚  
  
# 循环检测按钮状态并控制LED灯  
while True:  
    # 检测按钮状态  
    button_state = pin_button.value()  
    if button_state == 1: # 如果按钮未按下,就关闭LED灯  
        pin_led.value(0)  
        print("LED灯已关闭")  
    else: # 如果按钮已按下,就打开LED灯  
        pin_led.value(1)  
        print("LED灯已打开")  
    time.sleep(0.1) # 等待0.1秒钟后再次检测按钮状态

ケース 3: WiPy と GPIO を介して外部デバイスを制御する

import machine  
import utime  
  
# 设置WiPy的GPIO引脚和模式  
gpio_pin = machine.Pin(15, machine.Pin.OUT) # GPIO控制引脚  
  
# 循环控制外部设备(这里以GPIO输出高低电平为例)  
while True:  
    # 输出高电平  
    gpio_pin.value(1)  
    utime.sleep(1) # 等待1秒钟  
    # 输出低电平  
    gpio_pin.value(0)  
    utime.sleep(1) # 等待1秒钟

ケース 4: MicroPython を使用して LED ライトのオン/オフを制御する

from machine import Pin
import time

# 初始化引脚2为输出模式
led = Pin(2, Pin.OUT)

while True:
    led.value(1)  # 点亮LED
    time.sleep(1)  # 延时1秒
    led.value(0)  # 熄灭LED
    time.sleep(1)  # 延时1秒

ケース 5: MicroPython を使用して温度センサーと湿度センサーからデータを読み取る

from machine import I2C, Pin
import time

# 初始化I2C接口和DHT11传感器
i2c = I2C(scl=Pin(5), sda=Pin(4))
sensor = DHT11(i2c)

while True:
    # 读取温度和湿度数据
    temperature, humidity = sensor.read()
    print("Temperature: {0:.1f} C, Humidity: {1:.1f} %".format(temperature, humidity))
    time.sleep(5)  # 每5秒读取一次数据

ケース 6: MicroPython を使用してステアリング ギアの回転を制御する

from machine import Servo
import time

# 初始化舵机对象
servo = Servo(Pin(12), min_pulse=500, max_pulse=2500)

while True:
    # 设置舵机角度
    servo.write(0)  # 舵机转到0度
    time.sleep(2)  # 延时2秒
    servo.write(90)  # 舵机转到90度
    time.sleep(2)  # 延时2秒
    servo.write(180)  # 舵机转到180度
    time.sleep(2)  # 延时2秒

ケース 7: LED ライトの制御:

import machine
import time

# 初始化LED引脚
led_pin = machine.Pin('P2', machine.Pin.OUT)

# 控制LED灯闪烁
while True:
    led_pin.on()
    time.sleep(1)
    led_pin.off()
    time.sleep(1)

上記のコードでは、WiPy ユニバーサル ボードがピンを介して LED ライトのオン/オフ ステータスを制御します。ピンを出力モードに設定し、on() 関数と off() 関数を使用してピンの High レベルと Low レベルを制御することにより、LED のオンとオフの状態が制御されます。

ケース 8: [読み取り] ボタンのステータス:

import machine

# 初始化按钮引脚
button_pin = machine.Pin('P0', machine.Pin.IN, machine.Pin.PULL_UP)

while True:
    # 读取按钮状态
    button_state = button_pin.value()
    if button_state == 0:
        print("按钮被按下")
    else:
        print("按钮未被按下")

上記のコードでは、WiPy ユニバーサル ボードはピンを介してボタンのステータスを読み取ります。ピンを入力モードに設定し、value() 関数を使用してピンのレベル状態を読み取ることにより、ボタンが押された状態を取得します。

ケース 9: 外部割り込みを使用してボタンの押下を検出する:

import machine

# 初始化按钮引脚
button_pin = machine.Pin('P0', machine.Pin.IN, machine.Pin.PULL_UP)

# 定义外部中断回调函数
def button_interrupt(pin):
    print("按钮被按下")

# 配置外部中断引脚
button_pin.irq(trigger=machine.Pin.IRQ_FALLING, handler=button_interrupt)

# 进入休眠模式
machine.deepsleep()

上記のコードでは、WiPy ユニバーサル ボードは外部割り込みピンを通じてボタン押下イベントを検出します。ボタン ピンが立ち下がりエッジを検出すると、事前定義された外部割り込みコールバック関数 button_interrupt() がトリガーされ、対応するタスクが実行されます。上記のコードは単なる例であり、実際のアプリケーションの特定のニーズに応じて適切に変更および調整する必要があります。また、必要に応じて適切なエラーおよび例外処理を行い、ピンの機能と電気的特性が正しく設定されていることを確認してください。

上記の事例はアイデアを拡張するためのものであり、誤りや適用不可能な点が含まれる可能性があることに注意してください。ハードウェア プラットフォーム、使用シナリオ、MicroPython のバージョンが異なると、使用方法も異なる場合があります。実際のプログラミングでは、ハードウェア構成や特定のニーズに応じて調整し、実際のテストを複数回実施する必要があります。ハードウェアが正しく接続されていることを確認し、使用されるセンサーとデバイスの仕様と特性を理解することが重要です。

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

おすすめ

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