[貂蝉がプログラミングを学ぶ] MicroPython マニュアル WiPy ADC (アナログ - デジタル変換)

ここに画像の説明を挿入します
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 デバイスへの導入に最適です。

ここに画像の説明を挿入します
MicroPython の WiPy ADC (アナログ デジタル変換) は、アナログ信号をデジタル信号に変換するために使用されるテクノロジです。

主な特徴:

アナログ信号変換: WiPy ADC は、アナログ信号をデジタル信号に変換することにより、アナログ量の正確なサンプリングと定量化を実現します。アナログ信号は、電圧、電流、温度などの物理量を連続的に変化させることができます。
解像度: WiPy ADC は通常、アナログ信号を離散デジタル値にどれだけ正確に変換できるかを表す特定の解像度を持っています。一般的な解像度は 8 ビット、10 ビット、または 12 ビットで、解像度が高いほど、アナログ信号をより正確にサンプリングして量子化できます。
サンプリング レート: WiPy ADC のサンプリング レートは、アナログ信号を 1 秒あたり何回サンプリングして変換できるかを表します。高いサンプリング レートは、急速に変化するアナログ信号をキャプチャできるため、信号の高度な動的な変化を必要とするアプリケーションに適しています。
マルチチャネルのサポート: WiPy ADC は通常、複数の独立した ADC チャネルをサポートし、複数のアナログ信号を同時にサンプリングできます。これにより、WiPy は複数の信号を収集および処理する際に非常に柔軟になります。

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

センサー データの収集: WiPy ADC を使用して、温度センサー、光センサー、圧力センサーなどのさまざまなセンサーから出力されたアナログ信号を収集できます。アナログ信号をデジタル信号に変換することで、データ処理や解析が容易に行えます。
バッテリー電圧監視: WiPy ADC を使用してバッテリー電圧を監視し、バッテリー電力を検出および監視できます。バッテリー電圧をデジタル信号に変換することで、バッテリーの充電状態をリアルタイムで知ることができます。
オーディオ収集: WiPy ADC は、録音、オーディオ分析などのオーディオ信号の収集と処理に使用できます。アナログオーディオ信号をデジタル信号に変換することで、その後のオーディオ処理やアプリケーションを実行できます。
制御システムのフィードバック: WiPy ADC を使用して、位置センサー、速度センサーなどの制御システムのセンサー信号を読み取り、システム ステータスに関するリアルタイムのフィードバックを実現できます。センサーが出力するアナログ信号をデジタル信号に変換することで、制御アルゴリズムの計算や制御の決定を行うことができます。

予防:

基準電圧: アナログ信号を変換する場合、WiPy ADC は通常、アナログ量の範囲を決定するために基準電圧を必要とします。基準電圧を使用する場合は、アナログ信号の量子化精度と範囲を確保するために、基準電圧を正しく設定する必要があります。
信号干渉: アナログ信号のサンプリング プロセスは電磁干渉やノイズの影響を受ける可能性があり、その結果、サンプリング結果が不正確になることがあります。高精度のサンプリングが必要なアプリケーションでは、干渉やノイズの影響を軽減するためにフィルタリングやシールドが必要になる場合があります。
サンプリング レートと帯域幅: WiPy ADC のサンプリング レートと帯域幅の間には相関関係があります。WiPy ADC を選択する場合、信号サンプリング要件が確実に満たされるように、アプリケーション要件に従ってサンプリング レートと帯域幅を合理的に選択する必要があります。

要約すると、MicroPython の WiPy ADC は、アナログ信号をデジタル信号に変換するために使用されるテクノロジーです。アナログ信号変換機能、解像度、サンプリングレートが特徴です。WiPy ADC のアプリケーション シナリオには、センサー データ収集、バッテリー電圧監視、音声収集、制御システム フィードバックが含まれます。WiPy ADC を使用する場合は、基準電圧の設定、信号干渉の処理、サンプリング レートと帯域幅の適切な選択に注意する必要があります。

ここに画像の説明を挿入します
ケース 1: MicroPython を使用して ADC 値を読み取る

from machine import Pin
import time

# 初始化引脚2为ADC输入模式
adc = Pin(2, Pin.IN)

while True:
    # 读取ADC值
    adc_value = adc.read()
    print("ADC Value: {0}".format(adc_value))
    time.sleep(1)  # 延时1秒

ケース 2: MicroPython を使用して LED ライトの点灯を制御する

from machine import Pin, PWM
import time

# 初始化引脚12为PWM输出模式
led = PWM(Pin(12), duty=50)

while True:
    # 设置占空比为75%
    led.duty(75)
    time.sleep(1)  # 延时1秒
    # 设置占空比为25%
    led.duty(25)
    time.sleep(1)  # 延时1秒

ケース 3: MicroPython を使用してモーターの速度を制御する

from machine import Pin, PWM
import time

# 初始化引脚14为PWM输出模式
motor = PWM(Pin(14), duty=50)

while True:
    # 设置占空比为75%
    motor.duty(75)
    time.sleep(1)  # 延时1秒
    # 设置占空比为25%
    motor.duty(25)
    time.sleep(1)  # 延时1秒

ケース 4: WiPy ADC を使用したアナログ入力の読み取り

import machine  
  
# 设置WiPy的ADC通道和引脚  
adc = machine.ADC(machine.Pin(3)) # ADC通道0,使用引脚3  
  
# 读取模拟输入  
while True:  
    adc_value = adc.read() # 读取ADC通道0的模拟输入值  
    print("ADC值为:", adc_value) # 打印读取的模拟输入值

ケース 5: WiPy ADC を使用した温度センサー出力の読み取り

import machine  
  
# 设置WiPy的ADC通道和引脚  
adc = machine.ADC(machine.Pin(3)) # ADC通道0,使用引脚3  
  
# 读取温度传感器输出  
while True:  
    adc_value = adc.read() # 读取ADC通道0的模拟输入值  
    temperature = (adc_value * 3.3) / 4096 * 120 - 50 # 将ADC值转换为温度值(以摄氏度为例)  
    print("温度为:", temperature) # 打印温度值

ケース 6: WiPy ADC を使用した光センサー出力の読み取り

import machine  
  
# 设置WiPy的ADC通道和引脚  
adc = machine.ADC(machine.Pin(3)) # ADC通道0,使用引脚3  
  
# 读取光敏传感器输出  
while True:  
    adc_value = adc.read() # 读取ADC通道0的模拟输入值  
    light_level = adc_value * 4096 / 3.3 # 将ADC值转换为光线强度值  
    print("光线强度为:", light_level) # 打印光线强度值

ケース 7: 光センサー データの読み取り:

from machine import ADC

# 初始化ADC引脚
adc_pin = ADC(0)

# 读取光线传感器数据
light_value = adc_pin.read()

# 打印光线传感器数值
print("光线传感器数值:", light_value)

上記のコードでは、MicroPython の ADC モジュールを使用して ADC ピンが初期化されます (ここでは ADC0 ピンが使用されます)。次に、read() メソッドを通じて光センサーのアナログ信号を読み取り、変数 light_value に保存します。最後に、光センサーの値を出力します。

ケース 8: バッテリー電圧を監視する:

from machine import ADC

# 初始化ADC引脚
adc_pin = ADC(0)

# 设置参考电压
adc_pin.vref(1100)

# 读取电池电压
battery_voltage = adc_pin.read() * 2  # 假设使用1:1分压电路

# 打印电池电压
print("电池电压:", battery_voltage, "mV")

上記のコードでは、MicroPython の ADC モジュールを使用して ADC ピンが初期化されます (ここでは ADC0 ピンが使用されます)。次に、vref() メソッドを使用して基準電圧を 1100mV に設定します (1:1 分圧回路が使用されていると仮定します)。次に、read() メソッドを通じてバッテリー電圧のアナログ信号を読み取り、それを 2 倍して実際の電圧値を取得します (1:1 分圧回路が使用されていると仮定します)。最後に、バッテリー電圧を出力します。

ケース 9: 温度の収集:

from machine import ADC

# 初始化ADC引脚
adc_pin = ADC(0)

# 读取温度传感器数据
temp_value = adc_pin.read()

# 转换为摄氏度
temperature = (temp_value - 500) / 10

# 打印温度值
print("温度:", temperature, "°C")

上記のコードでは、MicroPython の ADC モジュールを使用して ADC ピンが初期化されます (ここでは ADC0 ピンが使用されます)。次に、read() メソッドを通じて温度センサーのアナログ信号を読み取り、変数 temp_value に保存します。次に、アナログ信号は単純な線形変換式を通じて摂氏温度値に変換されます (センサーの出力範囲が 0 ~ 1000 であると仮定すると、対応する温度範囲は 0 ~ 100°C です)。最後に、温度値を出力します。上記のコードは一例であり、実際のアプリケーションでは、特定のセンサーや回路接続に基づいて適切な修正や調整が必要になります。また、ADC ピンを正しく設定し、基準電圧を設定し、アナログ信号を読み取り、適切に変換するようにしてください。

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

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

おすすめ

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