Arduino上のWLAN-ESP8266-01をArduinoに接続し、スマートフォンでNodeMCU Amicaをリモートで制御します
Arduinoは、最も有名な開発者ボードの1つです。 残念ながら、標準モデルにはWi-Fiチップがインストールされていません。 この実践的なヒントでは、ESP8266-01 WLANモジュールをArduinoに接続する方法と、スマートフォンでNodeMCU Amicaをリモートで制御する方法を示します。
スマートフォンでNodeMCU Amicaを制御する
NodeMCU Amicaには、さまざまなピンのほか、ESP8266 Wi-FiチップとmicroUSBソケットが組み込まれています。 したがって、デバイスをスタンドアロンデバイスとして使用する方が理にかなっています。 「クラシック」ESP8266ボードをArduinoに接続する方法については、この記事の後半で説明します。
- ESPチップをプログラムできるようにするには、まずSilicon LabsからすべてのCP210erチップ用のドライバーをダウンロードしてインストールする必要があります。 幸いなことに、これは比較的迅速に行われます。
- 次に、Arduino IDEを開き、[設定]に移動します。 URL "//arduino.esp8266.com/stable/package_esp8266com_index.json"(引用符なし)を追加のボード管理者URLに追加します。 次にボード管理者を起動し、「ESP8266」と入力してパッケージをインストールします。
- また、ライブラリマネージャーに移動し、「Blynk」と入力して最新バージョンをインストールします。 これで、必要なすべてのコンポーネントがインストールされました。
- スマートフォンでNodeMCUを制御するには、Blynkアプリが必要です。 まだ行っていない場合は、ここで新しいアカウントを作成するか、既存のアカウントでログインします。 次に、新しいプロジェクトを作成し、ボードとしてNodeMCUを選択します。
- Arduino IDEのサンプルコードを使用すると、NodeMCUにBlynkのコード(→「Boards_WiFi」)も見つかります。 ここにプロジェクトのBlynkトークンを入力するだけで、自動的にメールで送信されます。 SSIDとパスワードも入力します。
- ボードにコードをロードするには、もちろん「ツール」タブからコードを選択する必要があります。 この場合、「NodeMCU 1.0(ESP12Eモジュール)」、周波数80 MHz、メモリサイズ「4M(3M SPIFFS)」、およびボーレート115200を選択する必要がありました。 ただし、情報はモデルによって異なる場合があることに注意してください。
- その後、コードをボードにロードし、Blynkアプリで制御できます。 ここでは、さまざまなウィジェットを簡単に作成し、たとえばボタンでLEDを制御できます。
Arduino-ESP8266-01でWiFiをArduinoに接続する
次に、ArduinoでESP8266-01モジュールを接続して使用します。
- ゴールデンアンテナで下を向くようにボードを回すと、左上にVCCピンがあります。もちろん、これをHIGHに設定する必要があります。 右側にはRSTピンがあり、通常は使用する必要はありません。 その隣のCH_PDピンも、再びHIGHに設定する必要があります。 当然、右上には信号を出力するTXDピンがあり、左下には信号を受信するRXDピンがあります。 また、GPIO0とGPIO2、および右下にあるクラシックグランドピンもあります。
- Arduinoでモジュールを使用できるようにするには、SoftwareSerialを使用するのが理にかなっています。HardwareSerialは主にArduinoとPC間の通信に使用されるためです。 ただし、この場合、モジュールはボーレートとして115200を使用します。つまり、SoftwareSerialを介したESPとArduino間の通信は不可能です。
- ボーレートを変更するには、多くのユーザーは、異なるボーレートを提供する新しいファームウェアをフラッシュするだけです。 ただし、コマンドを使用してボーレートを変更することもできるため、これは必ずしも必要ではありません。 このコマンドは「AT + UART_DEF」です。 「AT + IPR」または「AT + CIOBAUD」などの他のコマンドもインターネット上で見つけることができますが、特に「AT + IPR」もモジュールをクラッシュさせる可能性があるため、これはお勧めできません。
- コマンドをモジュールに送信するには、USBアダプターを使用してPCに接続することをお勧めします。USBアダプターは通常無料で提供されるか、インターネットで約1ユーロで入手できます。 USBアダプターをお持ちでない場合は、オンラインで注文することを強くお勧めします(オンラインで注文することを強くお勧めします)。または、ユニバーサルFTDIアダプターを使用します。 または、後で説明する別のバリアントがあります。
- アダプタを使用してモジュールをPCに接続している場合、コマンド「AT + UART_DEF = 9600, 8, 1, 0, 0」をボーレート115200およびCR + LFで送信できます。 その後、モジュールを再接続し、ボーレート9600でコマンドを送信できます。
- 次に、Arduinoをプログラムする必要があります。 コードは比較的単純です。 最初に»String s = "";«コマンドで空の文字列を定義し、SoftwareSerial(»#include«)をインポートして、新しいSoftwareSerialオブジェクト(»SoftwareSerial Serial_ESP(2、3);«)を作成します。 セットアップ方法では、ESP(»Serial_ESP.begin(9600);«)への接続とPC(»Serial.begin(9600);«)への接続が開始されます。 ESPが信号を送信すると、これが文字列に追加され、文字列がシリアルモニターに出力されます(»while(Serial_ESP.available()> 0){s + =(char)Serial_ESP.read();} if(s != ""){Serial.println(s); s = "";}«)。 逆に、シリアルモニター、つまりPCから送信された信号もESPに渡されます( "while(Serial.available()> 0){Serial_ESP.write(Serial.read());}")。 ただし、ESPは数値を返送するため、全体をcharに変換することが非常に重要です。 記事の最後にある画像ギャラリーでコードを再度見つけることもできます。
- Arduinoにコードをロードしたら、ESPを接続する必要があります。 注意! ESPは5Vではなく3.3ボルトを使用します。 5Vはこれを完全に破壊します。 ただし、Arduinoは5Vロジックで動作するため、それに応じて電圧を調整する必要があります。
- 理論的には、抵抗付きの分圧器を使用できますが、実際には全体が非常に不正確であり、簡単に妨害される可能性があります。 したがって、ArduinoとESPの間でロジックレベルコンバーターを切り替える必要があります。
- Arduinoの5VピンをHVに接続します。つまり、コンバーターの高電圧ピンと、コンバーターのLVピンをESPのVCCピンに接続します。 また、LVピンをESPのCH_PDピンに並列に接続して、チップもオンに切り替えます。 また、十分な電流を得るために、Arduinoの3.3VピンをコンバーターのLVピンに接続する必要があります。したがって、ESPのVCCおよびCH_PDに接続する必要があります。 次に、SoftwareSerialのTXピン(Arduinoの場合はピン3)をHV 1、2、3、または4に接続し、反対側のLVピンをESPのRXDピンに接続します。 ArduinoのRXピンについてもこの手順を繰り返します。
- 最後に、アースを接続する必要があります。 これを行うには、ArduinoのグラウンドをコンバーターのHV側のグラウンドに接続します。 次に、LV側のアースをESPのアースに接続します。 最後に、HVグラウンドとLVグラウンドを接続する必要があります。
- Arduino経由でPCのATコマンドをESPに簡単に送信できるようになりました。 ArduinoをWi-Fiに簡単に接続し、Webサーバーを作成できます。 ESPに送信されるArduinoコードに(セットアップ方法で)それぞれのATコマンドを追加するだけです。これは「AT命令セット」にもあります。
- USBアダプターの準備ができていない場合は、ArduinoのTXピンとRXピン、つまり0と1を使用して、同じ回路を使用してHardwareSerial経由でボーレートを変更するコマンドを送信することもできます。 ただし、それに応じてコードのボーレートを調整することを忘れないでください。
次の実用的なヒントでは、Javaプログラミング言語の概要を説明します。