ESP8266ダミー用WiFiモジュール
ESP8266 WiFiモジュールの概要
ESP8266は、インターネット経由でデバイスを制御するための非常に便利で安価なWiFiモジュールです。 Arduinoのようなマイクロコントローラーで動作することも、単独で動作するようにプログラムすることもできます。
モノのインターネット(IoT)が大幅に安価で簡単になりました!
ESP8266には工場でインストールされたファームウェアが付属しており、標準の「ATコマンド」で制御できます。 独自のコードを簡単に作成してアップロードすることもできます。これにより、非常に強力で柔軟になります。
ESP8266は2014年に発売され、急速に人気が高まっています。 ESP8266プロセッサは1つしかありませんが、多くの異なるブレークアウトボードにあります。 これらはすべて、露出するピンやフラッシュメモリのサイズなどの点で異なります。これらのブレイクアウトボードは、長年にわたって急速に進化しており、Webには多くの情報があります。 これは祝福であると同時に呪いでもあります。アドバイスの一部は時代遅れであるか、単に間違っているからです。
その結果、何でもできるようになるまでに3日かかりました! 幸運な人もいますが、私にとっては、何かを機能させるための戦いでした。 時々、私はそれを壊したと思っていましたが、いくらかの忍耐力で常に生き返りました!
私はついに歌と踊りを手に入れました。
見つけたすべての有用な情報を1か所に統合しました。これを説明しやすい方法で共有すると思いました。 これにより、必要なすべての基本機能をすぐに使用できるようになります。
このインストラクターはESP-01ブレイクアウトボードを見ていました。
ただし、この同じアプローチは、ESPの亜種のほとんど(すべてではないにしても)に適用されるはずです。
ステップ1:簡単に言えば、ESP-01

- 802.11 b / g / nプロトコルをサポートします
- ルーターに接続してクライアントとして機能することも、アクセスポイント自体またはその両方になることもできます。
- IPアドレス可能で、Webサーバーにすることができます
- 「標準」バージョンには、入力または出力に使用できる2つのデジタルピンがあります。 例:LEDまたはリレーを駆動します。 これらのピンはPWMにも使用できます。 他のバージョンでは、より多くのピンが露出しています。 たとえば、ESP-12は、さらにピンが必要な場合に適したオプションです。 どちらの方法でも、プログラミングは同じです。
- アナログ入力はESP8266チップ(ADC / TOUT)でも使用できますが、ESP-01では配線されていません。
- Arduinoと組み合わせたり、単独で動作するようにプログラムしたりできます。
- プログラムするためのさまざまなツールと開発環境(IDE)があります。
- そして、もっとたくさんあります…。
このデモでは、ESP8266はWiFi経由でやり取りできるWebページをホストするWebサーバーとして機能します。
このデモを使用すると、独自のホームオートメーションプロジェクトを開始し、Webから制御できます。
ステップ2:必要なもの
まず、それを起動して実行できるかどうかを確認しましょう。
多くのサイトでは、ファームウェアの再フラッシュとさまざまなツールの使用を推奨しています。 あなたはまだそれをする必要はありません。
ファームウェアを独自のコードに置き換えます。 別の説明として:ESP8266ファームウェアをフラッシュするための簡単なガイド更新された工場バージョンに戻す方法を示します。 このデモで行うように、独自のコードでESP8266のみをプログラミングする場合は、工場出荷時のファームウェアは必要ありません。 あなたのコードはファームウェアです。
Arduino IDEをプログラミングツールとして使用しますが、Arduino自体は必要ありません。 ESP8266には必要なすべての機能があります。
注:独自のコードをアップロードすると、ESP8266はATコマンドに応答しなくなります。 コードがファームウェアを置き換えました。 Arduino IDEのコードとESP8266ライブラリを使用すると、より豊富なコマンドセットにアクセスできます。 こちらのドキュメントをご覧ください://www.arduino.cc/en/Reference/WiFi
必要に応じて、ESP8266のファームウェアを復元してATコマンドに戻ることができます。 私の他のインストラクション:ESP8266ファームウェアをフラッシュするための簡単なガイドを参照してください。
注意 :5Vではなく3.3Vモジュールです。 ESP-01は思ったよりも堅牢ですが、特に5V USB-シリアルプログラマーまたはマイクロコントローラーで使用している場合は、適切にセットアップする必要があります。
必要なもの:
- もちろんESP8266(ESP-01バリアントを使用するか、それに応じて配線を調整します)
- ブレッドボード
- FTDI Basicのような3.3V USBからシリアルプログラマー(UART:Universal Asynchronous Receiver / Transmitterとも呼ばれる)。 5Vと3.3Vを切り替えるジャンパーが付いているものもあります。
- ブレッドボードジャンパー線
- 別の3.3V電源。 ESP8266は多くのmA(時には250mAを超える)を噛むことができるため、1つ必要です。 シリアルプログラマまたはArduinoからの3.3V出力では不十分です。 個別の電源がないと、ESPが不安定になり、コードをアップロードしようとして時間を浪費することになります。
- LED、プッシュボタン、330オームの抵抗器、10kオームの抵抗器、電源全体の.1µFコンデンサ(標準プラクティス)。
- 5VでマイクロコントローラーまたはFTDIプログラマーを使用している場合は、ロジックレベルコンバーターを回路に追加します
USBポートが組み込まれたESP8266を使用している場合、この面倒な作業は必要ありません。 Wemos D1 Miniは優れた代替品です。 こちらをご覧ください://www.wemos.cc/product/d1-mini.html
ステップ3:より詳細なコンポーネント




ESP-01
ESP-01を//netram.co.za/2720-wifi-serial-transceiver-module-esp8266.htmlから取得しました
ここでさまざまなバージョンを見ることができます://www.esp8266.com/wiki/doku.php?id=esp8266-module-family
ブレッドボード電源
優れた電源は、ESP8266にとって重要な側面のようです。 ブレッドボード電源は、特に混合電圧を扱う場合に非常に便利です。 ここに示すものは3.3Vと5.5Vを供給し、ブレッドボードに直接差し込みます。 私はずっと前に持っていたはずです! ESP8266は、多くのmA(時々300mAを超える)を噛むことができます。 ESPが再起動するか、信頼性が低いと思われる場合は、ESP用に別の電源が必要です(ただし、共通の接地を維持してください)。 また、スパイクを最小限に抑え、電力の小さなリザーバーを提供するために、3.3Vとグランド間にコンデンサを接続します。
//netram.co.za/938-breadboard-power-supply-5v33v.html
USB-シリアルプログラマー
3.3Vをサポートするもの、または3.3V / 5Vジャンパーを持っているものを入手してください。5Vしか持っていない場合は、プログラマーとESP8266の間に双方向ロジックレベルコンバーターを使用する必要があります。 FTDI Basicの背面には3.3V / 5Vジャンパーがあります。
//netram.co.za/2842-ftdi-basic-usb-to-ttl-programmer.html
//netram.co.za/2679-logic-level-converter-bi-directional.html
ロジックレベルコンバーター
双方向5Vおよび3.3V。 これは、5Vシリアルプログラマーを使用している場合にのみ必要です。
ブレッドボードジャンパー
JSTジャンパーは、ピンを使用してモジュールにプラグインしてからブレッドボードに接続するのに便利なので、いくつか用意してください。 この目的のために、いくつかのオスからメスのケーブルを含めます。 ESP-01はブレッドボードに対応していないため、これらが必要になります。
ステップ4:ブレッドボードのレイアウト

ブレッドボードを見ると、FTDIプログラマーは上部が赤いボードで、下部がESP8266-01です。 FTDIプログラマーに接続する必要があるのは、ESPのアース線とRXからTXおよびTXからRXの3本のワイヤーのみです。 左側にはブレッドボード電源があります(通常はブレッドボードに接続されます)。
NB:ESPへの電源の品質は、最も重要な要素の1つです。 スパイクを最小限に抑えるために、3.3Vとグランドの間に小さなコンデンサ(.1uF)があります。 ESPのプログラミングに問題がある場合は、電源である可能性があります。 3.3Vとグランドの間にもう1つの大きなコンデンサを追加すると役立ちます。 例:10uF。
ステップ5:ESP-01のピン配置

上のESP8266ピン配置の図は、ネット全体に見られます。 私はそれがニール「ESP8266に関するコルバンの本」から生じたのではないかと思います。 これは素晴らしいリソースであり、// leanpub.com/ESP8266_ESP32からPDFとしてダウンロードできます。 これは400ページの長さで、2016年11月に更新されました。ESP8266の本格的な開発に興味がある場合は、この本を入手してください。 無料ですが、できれば寄付をしてください。
ブレッドボードの配線に関する注意:
- わかりやすくするために、ワイヤはESP-01の前面に接続されています。 それらを後ろから同じピンに取り付けます。 ESP-01はブレッドボードに対応しておらず、JSTコネクタのオス-メスジャンパは接続に便利です。
- プログラミングのためにGPIO 0をLowに保持する必要があります。 FTDIを取り外し、独自の電源でESP8266を操作する場合は、これを削除する必要があります。
- CH_PDは常にハイに保持する必要があります。
- RESETピンは10kオームの抵抗でハイに保たれ、チップを再起動するRESETボタンによって接地されます。 コードをアップロードする前、およびGPIO 0を接続または切断するたびにRESETを押します。リセットボタンを使用すると、多くの手間が省けます。
回路の電源を入れると、ESP-01の赤いLEDが点灯し、青いLEDが短時間点滅します。 後でコードをESPにアップロードすると、プロセス中に青いLEDが連続して点滅します。 他のLEDの組み合わせは、問題があることを示唆しています。
注意 :シリアルプログラマを削除してESPを単独で実行する場合は、必ずGPIO 0をアースから外し、RESETボタンを押してください。そうしないと、ESPが正常に動作しない可能性があります。
ステップ6:回路図

ステップ7:シリアルプログラマの代わりにArduinoを使用する
USB to Serialプログラマの代わりにArduinoを使用することもできます。
注意すべき点がいくつかあります。
- 5V Arduinoでは、デジタル出力は5Vになり、これによりESP2866がフライされる可能性があります。 したがって、3.3V ArduinoまたはLogic Converterチップを使用してください
- Arduinoの3.3V VoutはESP8266を駆動するには不十分であり、信頼性の低い結果が得られる可能性があります。 できれば、別の3.3V電源を使用してください。
- 推奨されるプラクティスとして、予測できない結果を避けるために、他のデバイスを接続する前に、常に空白のスケッチをArduinoにアップロードしてください。 空白のスケッチには、空のsetup()およびloop()関数があります。
- Arduino Unoを使用している場合、ハードウェアTX&RXペアは1つしかありません。 ESP8266とシリアルモニターの両方と同時に通信するには、SoftwareSerialインクルードファイルも使用する必要があります。 以前はボーレートに制限がありましたが、理論的には最大115200のボーレートをサポートできます。Mega2560には、より多くのハードウェアTXおよびRXピンがあるため、これがより良い方法です。
- 最後に、重要なこと :ArduinoのTXピンとRXピンをよく見てください。 それらの横に矢印があることに気づくでしょう。 TXピンには矢印があります。 これはTX INです! これが本当に意味することは、TXピンが実際にはRXピンであることです! 同様に、RXピンは実際にはTXピンです! そのため、Arduinoを別のデバイスでシリアルアダプターとして使用する場合、RXをRXに、TXをTXに接続する必要があります。 私は数時間の痛みの後、このニュアンスを発見しました! なんでこんなにラベル付けしたの?
私が質問している間、 なぜ ESP-01が非常に少数の有用なピン配列が露出されて作成されたのかは私を困惑させます! それはまだ素晴らしい出発点ですが、もっと何かが必要な場合は、ESP-12をお勧めします。
物事を本当に簡単にするために、次のようなUSBを内蔵したESP-12を試してください。
//www.wemos.cc/product/d1-mini.html
ステップ8:Arduino IDEを使用したプログラミング
ESP8266をプログラムするためのさまざまなツールがありますが、Arduino IDE(統合開発環境)はほとんどの人にとってはるかに簡単です。
Arduino IDEを使用してESP8266をプログラムするには、最新バージョンがまだない場合は最新バージョンをダウンロードしてから、ESP8266サポートをインストールする必要があります。 Arduinoプログラミング環境のみを使用しており、Arduinoハードウェア自体は必要ありません。
Arduino IDEをダウンロードするには、http://www.arduino.cc/en/Main/Softwareにアクセスしてください。
Arduino IDEを起動し、ボードマネージャーを選択…
ステップ9:ESP2866ボードマネージャーのセットアップ

Arduino IDEを起動し、Tools / Boardの下のBoards Managerを選択します。
ステップ10:ESP2866ボードマネージャーをインストールする

esp8266を見つけて選択し、[インストール]をクリックします。
ステップ11:Arduino設定のセットアップ

ファイル/設定に移動します
ステップ12:ボードマネージャーのURL

[Additional Boards Manager URLs]フィールドに、ESP8266パッケージのURLを入力します:
//arduino.esp8266.com/stable/package_esp8266com_index.json
ステップ13:IDEでのESP8266セットアップ

「Generic ESP8266 Module」を選択し、Boards Managerに戻ります
ステップ14:ESP8266オプション

ESP-01オプションをセットアップします。 PCに応じて適切なCOMポートを選択します。
ステップ15:ESP8266と話す

ESP8266に元のファームウェアがまだある場合は、シリアルモニターで話してみてください。
- Arduino Serial Monitorを開きます。
- 通常は115200ですが、ESPのファームウェアに応じて9600までの適切なボーレートを選択します。
- 「NLとCRの両方」も選択します。 すなわち、各「送信」の後の改行と復帰文字。
- ATと入力してEnterキーを押します。 ESPはOKで戻ってくるはずです。 リセットボタンを押さない場合、またはUSBケーブルを抜き、もう一度起動してみてください。 また、正しいCOMポートが選択されていることを確認してください。 また、ESPに「標準」ファームウェアがない場合、ATコマンドセットを理解できない可能性があります。 これは、必ずしもこの問題の後でArduinoコードでこれを上書きするため、必ずしも問題ではありません。
- AT + GMRと入力します。 これにより、ESPのファームウェアのバージョン番号が返されます。 別の説明可能なところで、「工場」ファームウェアの最新バージョンを復元する方法を示します(必要な場合)。
ステップ16:ESP8266 Arduinoコード
コードファイル(ESP8266_LED_Control.zip)をダウンロードし、解凍してArduino IDEで開きます。
ルーターの設定を自分のものに変更します。 すなわち、SSIDおよびPASSWORDフィールドを変更します。
ブレッドボードが正しくセットアップされていることを確認し、USBケーブルをシリアルプログラマーに接続します。
注意:コード内のGPIOピンをアドレス指定するときは、GPIO番号を使用する必要があります。 例:GPIO 2の場合は2であり、異なる物理ピン番号ではありません。
添付ファイル
ESP8266_LED_Control.zipダウンロード
ステップ17:ESP8266へのコードのアップロード


使用している場合は、同じポートですべてのシリアルポートモニターを閉じていることを確認してください。 例:CoolTermなどのツール。 ESPのロード後にIPアドレスを確認する必要があるため、Arduino Serial Monitorを再度開きます。
注意 :コードをアップロードするには、GPIO 0を接地する必要があります。 ブラウザでコードを実行している間、そのままにしておくことができます。 各ロードの前にRESETボタンを押してください。 アップロードに失敗した場合は、設定を確認し、USBケーブルを取り外してから再接続してください。 Ctrl&Uを数回試してください。 他のすべてが失敗した場合は、PCを再起動してください。 時々、COMポートが少しめちゃくちゃになります。
コードが正常にアップロードされると、ESPの青いLEDが点滅します。 アップロードの進行状況は上の画像のようになります。
注意 :シリアルプログラマを削除してESPを単独で実行する場合は、必ずGPIO 0をアースから外し、RESETボタンを押してください。そうしないと、ESPが正常に動作しない可能性があります。
ESP8266のアップロードが不規則に動作している場合は、電源を改善してください。
ステップ18:それが何をしているのか見てみましょう

Arduino Serial Monitorに切り替えると、ESPのIPアドレスが表示されます。 ルーターにログインして、そこに接続されているものを確認することもできます。 デバイスは、接続されたIPのリストにESP_1A6C4Aのような名前で表示されます。
ルーターにいる間は、常にESPのIPアドレスを予約し、ポートフォワーディングを設定して、オフィスのようなネットワーク外からESPに接続できるようにすることができます。
上記のようなものが表示されるはずです。 ブラウザでそのIPアドレスを使用します。
ステップ19:試してみましょう

いくつかのリンクをクリックすると、LEDが点滅するのを見ることができます。
また、PWMを実行してLEDを暗くできることもわかります。
ESP8266は、デジタルピンの割り込みも処理でき、アナログ入力も備えています。 ただし、アナログ入力ピンはESP-01には露出していません。
Internet Explorerは正常に動作しますが、何らかの理由でFireFoxはESPで非常に遅いようです。 これは、HTTPヘッダーのセットアップに関係している可能性があります。
注:独自のコードをアップロードすると、ESP8266はATコマンドに応答しなくなります。 コードがファームウェアを置き換えました。 Arduino IDEのコードとESP8266ライブラリを使用すると、より豊富なコマンドセットにアクセスできます。 こちらのドキュメントをご覧ください://www.arduino.cc/en/Reference/WiFi。
必要に応じて、ESP8266のファームウェアを復元してATコマンドに戻ることができます。 私の他のインストラクション:ESP8266ファームウェアをフラッシュするための簡単なガイドを参照してください。
ステップ20:ESPリソース
2016年11月に更新された「ESP8266に関するコルバンの本」は、真剣な愛好家向けです。
470ページ以上の長さで、驚くほど多くの詳細があります。 無料で入手できますが、可能であれば寄付をしてください。
//leanpub.com/ESP8266_ESP32
彼は現在、ESP32を分離し、新しい本を出版しています。
//leanpub.com/kolban-ESP32
ESP32
「ESP8266と同様に、ESP32はWiFi互換マイクロコントローラーであり、さらにBluetooth低エネルギー(つまり、BLE、BT4.0、Bluetooth Smart)、および30近くのI / Oピンのサポートを追加します。」
参照://www.sparkfun.com/products/13907
ESPサイト
//www.esp8266.com/wiki/doku.php?id=esp8266-module-family
//www.esp8266.com/
//iotbytes.wordpress.com/esp8266-pinouts/
//espressif.com/en/products/hardware/esp8266ex/resources
ATコマンド
//www.itead.cc/wiki/ESP8266_Serial_WIFI_Module#AT_Commands
//espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf
Arduinoボードマネージャー
//randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/
//github.com/esp8266/Arduino
ファームウェアのフラッシュに関する注意:
工場のファームウェアをESP8266にフラッシュする方法を示す、説明可能なマニュアルを公開しました。
参照://www.instructables.com/id/The-Simple-Guide-to-Flashing-Your-ESP8266-Firmware/