- MicroPythonとは何ですか?
- NodeMCUにMicroPythonを使用する理由
- ESP8266(NodeMCU)とは何ですか?
- 使用したハードウェア
- ESP8266用のMicroPythonファームウェアのインストール
- PuTTYを使用したNodeMCUとの通信
- Ampyを使用したPythonベースのLED点滅コードのアップロード
- ESP8266上のMicroPython:DHT22で温度と湿度を取得する
ESP8266のようなWi-Fi対応マイクロコントローラーのプログラミングに興味のある初心者にとって、ESP-IDFプログラミング環境またはArduino IDEを理解することは困難な作業になる可能性があり、CおよびC ++言語の不可解な構文にはコンピューターサイエンスの知識が必要です。これらの言語が初心者にとって必ずしも使いやすいとは限らない理由から、この記事では、MicroPythonを使用してESP8266をセットアップおよび プログラミングする方法を学び、最後に、お気に入りのDHT22温度および湿度センサーから温度および湿度データを取得します。以前、Micro Pythonを使用してESP32をプログラムする方法についてのチュートリアルも作成しましたが、興味があればそれを確認することもできます。
MicroPythonとは何ですか?
MicroPythonは、マイクロコントローラーや組み込みシステムで動作するように設計された、さいの目に切ったPythonのバージョンであると言えます。MicroPythonの構文とコーディングプロセスはPythonに似ています。したがって、Pythonをすでに知っている場合は、MicroPythonを使用してコードを作成する方法をすでに知っています。Pythonファンの方は、この記事を確認してください。
MicroPythonは、Damion jonesが率いるチームによって英国で開発され、Kickstarterを立ち上げました。そこでは、ファームウェアを実行する特定の開発ボードのセットを立ち上げました。これにより、MicroPythonをその上で実行できます。これで、ファームウェアがESP8266で実行できるように移植されました。これについては、この記事で学習します。
NodeMCUにMicroPythonを使用する理由
Pythonは、これまでで最も広く使用されており、プログラミング言語を簡単に習得できるものの1つです。そのため、MicroPythonの導入により、ハードウェアベースのマイクロコントローラーのプログラミングが非常に簡単になりました。これまでマイクロコントローラーをプログラミングしたことがなく、プログラミングの学習を開始したい場合は、MicroPythonが適しています。
MicroPythonはPython標準ライブラリの簡略版を使用しているため、すべての標準ライブラリを利用できるわけではありません。ただし、MicroPythonには、ハードウェアとインターフェイスするためのシンプルで使いやすいモジュールが含まれています。つまり、MicroPythonを使用すると、GPIOレジスタの読み取りと書き込みがはるかに簡単になります。
MicroPythonの最終的な目的は、マイクロコントローラーのプログラミングをできるだけ簡単にすることです。そのため、誰でも使用できます。MicroPythonがライブラリをインポートし、コードを書くのが簡単になると、以下に示すコードはNodeMCUボードのオンボードLEDを点滅させる簡単な例です。この記事の後で、コードについて詳しく説明します。
from machine import Pin from time import sleep LED = Pin(2、Pin.OUT)while True:LED.value(not LED.value())sleep(0.5)
ESP8266(NodeMCU)とは何ですか?
ESP8266は、モノのインターネット(IoT)関連のアプリケーション向けに設計された低コストのWi-Fiモジュールです。
汎用入力および出力ピン(GPIO)が付属しており、SPI、I2C、UARTなどの一般的に使用されるさまざまなプロトコルもサポートしています。しかし、このマイクロコントローラーの最もクールな機能は、Wi-Fiが組み込まれていることです。これにより、2.4GHzWi-Fiに非常に簡単に接続できます。
これで、基本は邪魔にならず、必要なハードウェアと、ESP8266ICにMicroPythonをインストールするプロセスを示す実用的な部分に進むことができます。
使用したハードウェア
使用した材料のリスト
- 1xブレッドボード
- 1 x ESP8266(NodeMCU)
- 1 x DHT22(温度および湿度センサー)
- 1 x 3mm LED(発光ダイオード)
- 1 x1K抵抗
- 5xジャンパー線
ESP8266用のMicroPythonファームウェアのインストール
この記事では、MicroPythonファームウェアをESP8266にインストールする方法が2つあります。両方について説明しますが、最初にダウンロードする必要があります。
ESP8266用のMicroPythonファームウェアのダウンロード:
NodeMCU(ESP8266)ボードをPCに接続する前に、最新バージョンのMicroPythonをダウンロードする必要があります。その後、NodeMCUにファームウェアをインストールできます。これは、Micropythonの公式ダウンロードページから ダウンロードできます。
ESP8266へのMicroPythonファームウェアのインストール:
ファームウェアをESP8266にインストールする前に、USBからシリアルへのコンバーターに適切なドライブがあることを確認する必要があります。ほとんどのNodeMCUボードはCP2102 USBからUARTへのコンバーターICを使用しているため、ダウンロードしてインストールする必要があります。 CP2102 USBからUARTへのコンバーター用のドライバー。ドライブをダウンロードしてインストールしたら、ESP8266のファームウェアを読み書きするために作成されたPythonベースのツールであるesptoolをダウンロードする必要があります。
Pythonを入手する最も簡単な方法は、Microsoftストアを経由することです。そこから、Pythonのコピーをダウンロードしてインストールする必要があります。Pythonがインストールされたら、 pip3 installesptool コマンドを使用して esptoolをインストール できます 。プロセスは次の画像のようになります。
インストールしたら、コマンドターミナルからesptoolにアクセスするかどうかを確認します。
これを行うには、コマンド esptool.py versionを 実行するだけ です。下の画像のようなウィンドウが表示されたら、WindowsPCにesptoolが正常にインストールされています。
また、コマンドウィンドウからesptoolにアクセスできない場合は、完全なインストールパスをWindows環境変数に追加してみてください。
NodeMCUボードに割り当てられたポートの検索:
次に、NodeMCUボードに割り当てられたポートを見つける必要があります。これを行うには、デバイスマネージャーウィンドウに移動し、展開すると、NodeMCUボードに関連付けられているポートを見つけることができるPortsというオプションを探します。私たちには、以下の画像のように見えます。
ESP8266のフラッシュメモリの消去:
これで、関連するCOMポートがわかりました。フラッシュメモリを消去することで、NodeMCUモジュールを準備できます。これを行うには、次のコマンド esptool.py --port COM6erase_flashを使用し ます。 プロセスは次の画像のようになります。
ファームウェアのインストール:
次のコマンドを実行すると、MicroPythonバイナリがNodeMCUボードにインストールされます。このバイナリをインストールすると、Pythonプログラムをアップロードし、ReadEvaluateおよびPrintループと通信できるように なり ます。
esptool.py --port COM6 --baud 460800 write_flash --flash_size = detect 0 esp8266-20200911-v1.13.bin
プロセスは下の画像のようになりますが、
インストールの時点で、バイナリはデスクトップにあったので、デスクトップにCDを持って、コマンドを実行することに注意してください。
これで、ボードと通信していくつかのLEDを点滅させる時間です。
PuTTYを使用したNodeMCUとの通信
ここで、PuTTY、PuTTYを使用して最初のHello Worldプログラムを開始しましょう。接続タイプをシリアルに設定し、次にシリアルライン(この場合はCOM6)を設定し、最後に速度を115200ボーに設定します。 。
すべてが正しく行われると、次の画像のようなウィンドウが表示され、コードを簡単に書き込むことができます。通常、iPythonターミナルのように機能します。また、2行の単純な最初のhello worldプログラムを実行し、printステートメントを入力すると、応答が返されます。
Ampyを使用したPythonベースのLED点滅コードのアップロード
PuTTYターミナルを使用してMicroPythonにアクセスすることは、ESPモジュールと通信するための良い方法ですが、コードをアップロードするもう1つの簡単な方法は、Adafruit Ampyツールを使用して、 ampyをインストールすることです。簡単なpip3 installadafruitを実行できます。 ampy コマンドを実行すると、PCにampyがインストールされます。プロセスは次の画像のようになります。
これを取得した後でも、接続先のシリアルポートに関する情報が必要です。私たちの場合はCOM6です。ここで、MicroPythonを使用してLED点滅コードを記述する必要があります。そのために、公式のmicropythonWebサイトで提供されているガイドを使用しました。
ガイドの助けを借りて、次のコードが作成されます。
from machine import Pin from time import sleep LED = Pin(2、Pin.OUT)while True:LED.value(not LED.value())sleep(0.5)
コードは非常に単純です。まず、マシンからピンライブラリをインポートします。ピンクラス。次に、遅延関数を作成するために使用される時間ライブラリをインポートする必要があります。次に、Pin2(ESP12Eモジュールに接続されているオンボードLED)を出力として設定します。次に、500msの遅延でLEDをオン/オフするwhileループを設定します。
これが、コードをNodeMCUにアップロードする方法です。これを行うには、次の ampy コマンドを実行する必要があります 。
ampy --port COM6 put main.py
プログラムが修正されて実行されると、以下のようにLEDが点滅します。
注:コードのアップロード中に、現在のプロンプトの場所をデスクトップに設定したため、 main.pyファイルの フルパスを指定する必要 はありませんでした。そうでない場合は、メインのフルパスを指定する必要があります。.pyファイル。
次に、DHT22センサーから温度と湿度のデータを取得します。
ESP8266上のMicroPython:DHT22で温度と湿度を取得する
DHT22とNodeMCUのインターフェースの概略図:
このプロジェクトの完全な回路図は以下にあります。私はこの回路を作成するためにフリッツを使用しました。
ご覧のとおり、回路は非常にシンプルで、ジャンパー線を使用してブレッドボード上に簡単に構築できます。NodeMCUのマイクロUSBポートを使用して、回路全体に電力を供給することができます。私のハードウェアのセットアップを以下に示します。
コード:
以前にインストールしたMicroPythonファームウェアにはDHTライブラリが組み込まれているため、MicroPythonを使用してDHT22またはDHT11センサーから温度と湿度のデータを取得するのは非常に簡単です。
1.マシンクラスからDHTライブラリとpinライブラリをインポートすることからコードを開始します。
マシンインポートピンからdhtをインポート
2.次に、センサーを取り付けたピンを参照するDHTオブジェクトを作成します。
センサー= dht.DHT22(Pin(14))
3.最後に、センサー値を測定するには、次の3つのコマンドを使用する必要があります。
sensor.measure()sensor.temperature()sensor.humidity()
最終的なコードについては、それをwhileループに入れて、コードの終わりを示す値を出力します。また、DHT22センサーはデータを読み取る前に2秒かかるため、2秒の遅延を追加する必要があります。
from machine import Pin from time import sleep import dht dht22 = dht.DHT22(Pin(14))while True:try:sleep(2)dht22.measure()temp = dht22.temperature()hum = dht22.humidity()print ( 'Temperature:%3.2f C'%temp)print( 'Humidity:%3.2f %%'%hum)ただし、OSError as e:print( 'DHT22センサーからのデータの読み取りに失敗しました。')
コーディングが完了したら、ampyコマンドを使用してコードをアップロードできます。
ampy --port COM6 put main.py
コードを正常に実行した後、任意のシリアルモニターで温度と湿度の値を監視できます。私はパテを使用しましたが、以下に示すように、COM5で温度と湿度の値を受け取ることができました。
あなたが記事を楽しんで、何か役に立つことを学んだことを願っています。ご不明な点がございましたら、下のコメントセクションに残すか、フォーラム を使用して他の技術的な質問を投稿してください 。