最近私の中で話題沸騰中のESP8266モジュールでようやくLチカができました。
以前はArduinoとESP8266モジュールで連携してWi-Fi接続する形でしたが、今回はそのモジュール単体でなんでもしちゃいます。
今回はその方法を紹介したいと思います。
スポンサーリンク
用意するもの
- ESP8266モジュール x1
- USBシリアル変換器 x1
- Arduino IDE for ESP8266 v1.6.1
ハードウェアとしてはESP8266モジュール本体と書き込み用のUSBシリアル変換器のみです。
今回、ESP8266モジュールはESP-12を使います。
ESP8266はだいぶ流通してきたみたいでAmazonなんかでも買えるみたいです。
ちょっと高いですけどね。
私はAliexpressで1つあたり300円くらいで買いました。
IDEは下記のURLからダウンロードできます。
現在は専用のIDEを使わず、標準のArduino IDEのボードマネージャーからインストールするようになっています。
ESP8266モジュールをブレッドボードで使えるようにする
ESP8266モジュールはブレッドボードでは使いにくいです。
ESP-12は2mmピッチですのでそのままではユニバーサル基板でさえ入りません。
ブレークアウト基板はAdafruitでも発売されているのでそれを買うか、自分で作るかです。
基板にESP8266もくっついていますが10ドルくらいします。
私はもちろん・・・自作します。

Arduino IDEでプログラムを書き込む
設定等
書き込み回路は下図のようになります。

GPIO0が肝のようでこの端子をGNDに落とすと書き込みモードに入るようです。
Arduino IDEの設定は次のようにします。
ボードはGeneric ESP8266 boardを選択します。

なんか一覧に色々ありますけど・・・
Lチカプログラム
とりあえず、ArduinoのLチカスケッチを書き込んでみます。
void setup() {
pinMode(0, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH);
delay(500);
digitalWrite(0, LOW);
delay(500);
}
0はESP8266のGPIO0ピンになります。
その他は普通のArduinoのスケッチと何ら変わりません。
実際に書き込む
書き込みは次のようにします。
- GPIO0をGNDに落とす
- Arduino IDEの書き込みボタンをクリック
- 書き込みが終わったらGPIO0をGNDから離す
こんな感じです(適当)
スポンサーリンク
書き込みがうまくいかない時は、書き込む直前にESP8266に電源を入れるようにしたらいいと思います。
書き込みがうまくいっても動かない時は、GPIO0がGNDに落ちている時にRESET端子をGNDに落としてみたらいいかもしれません。
書き込みできたらGPIO0にLEDを接続して確認します。
とりあえずこれでLチカはできるはずです。
Wi-Fi接続プログラム
次にESP8266モジュールの醍醐味であるWi-Fi接続のプログラムを書き込んで試してみます。
/*
* Simple HTTP get webclient test
*/
#include <ESP8266WiFi.h>
const char* ssid = "yourssid";
const char* password = "yourpassword";
const char* host = "www.adafruit.com";
void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
int value = 0;
void loop() {
delay(5000);
++value;
Serial.print("connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
// We now create a URI for the request
String url = "/testwifi/index.html";
Serial.print("Requesting URL: ");
Serial.println(url);
// This will send the request to the server
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(10);
// Read all the lines of the reply from server and print them to Serial
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
}
上記のスケッチはSSIDやパスワードが設定されていないので
const char* ssid = "yourssid"; const char* password = "yourpassword";
この部分は適宜変更して下さい。
Wi-Fiで接続できると、シリアルモニタにはこんな感じにずらーっと文字が出てきます。

Wi-Fiと同時にシリアル通信もできちゃいました。
ESP8266はArduino IDEの他にもプログラムが出来る方法があるようですが、そちらはIDEなどがなく難しかったです・・・
気になった方はNodeMCUやLuaLoaderやesptoolなどで検索してみてはいかがでしょうか。
これだけで色々出来るのは本当にすごいですね。
スポンサーリンク



Pingback: ESP12単体でwifi connection | junkhack
参考にさせていただきました! 自分もESP8266が熱いです。面白いチップですね。今気がついたんですが、このフラッシュメモリ、512KBもあるんですね。また遊びにきますね〜
初めまして
直前電源入れたり、
espを自由に操っておられ
素晴らしい
私は本の通りにしても、
旨く行かなくて、色々当たって
すでに8266が三つ目でまだ動かず
まだ勉強たりません
ひたすら頑張るしかないかもしれませんが、
何かアドバイスを頂けるとありがたいです
アキラ様
ESP8266の問題で一番多いは電源周りです。
大容量の電解コンデンサ(1000uF程度)を近くに接続したり、
それでもだめなら高速過渡応答に優れたレギュレータを使うなど工夫が必要です。
もしかしたら既に対策されているかもしれませんが、一度ご検討ください。