【入門】ESP8266 (ESP-WROOM-02) で単にLチカしても詰まらないのでナイトライダーしてみた【初心者向け】


ハードウェア界隈やIoT界隈での「Hello World!」をLチカと言うそうです。
多分、LEDチカチカの略です。

最近、ESP8266にはまってしまい、色々作っています。
この記事は初期の頃に単にLチカしても詰まらないし、GPIOも一杯あるし使ってみたいなということで、ナイトライダーしてみた記録です。
※GPIO・・・プログラムで出力入力が切り替えられる端子の事。こんなに簡単 ⇒ pinMode(ピン番号, OUTPUT)

私は一ヶ月前までIoTとかラズパイとかArduinoとか、やってみたいけど難しそう。。。ソフトは分かるけど、ハードは良くわからん。。。と思っていた人なので、同じように思っていて踏み出せない方に、なんだこれなら簡単そうとか思っていただけると幸いです。

パーツ

ESP8266はNodeMcu Lua ESP8266 CH340という開発ボードを使っています。
中国から届くのに時間がかかりますが、¥480と激安です。
ピンヘッダも取り付け済みなので、ハンダ付け不要です。

回路図 っぽいもの

  • GPIOがプログラムでON/OFFや強弱できる3.3Vの+側になります。
  • GNDが-側です。
  • LEDには極性があります。接続の向きに注意
  • LEDにGPIOを直結するとLEDが壊れます(LEDの仕様にもよる)
  • LEDの前に抵抗や定電流ダイオードを入れてください
  • 抵抗値は本来、計算式で求めますが、とりあえず点灯するだけなら1KΩとかでOK
  • いきなりはんだ付けとかすると大変なのでブレッドボードジャンパ線で組むのをオススメ
  • 「HiLetgo NEW NodeMcu Lua ESP8266 CH340」は、ボード幅が広めなので、↑のリンクの片側6列あるブレッドボードが使いやすいです

開発環境

以下を参考に整備しました。
ArduinoのIDE(統合開発環境)をインストールする
https://okuzawats.com/install-arduino-ide-20150202/

IDEダウンロード
https://www.arduino.cc/en/Main/Donate

ESP-WROOM-02開発ボードをArduino IDEで開発する方法
http://trac.switch-science.com/wiki/esp_dev_arduino_ide
(※これを見つけるのにちょっと苦労)

ソース

Blink3.ino

int led[] = {16, 5, 4, 0, 14};
int ledSize = sizeof(led) / sizeof(led[0]);

int pos     = 0;
int before1 = 0;
int before2 = 0;
int before3 = 0;
int before4 = 0;

int acc = 1;

void setup() {
  for (int n=0 ; n < ledSize ; n++ ) {
    pinMode(led[n], OUTPUT);  // 指定のピンを出力に設定
  }
}

void loop() {
    analogWrite(led[before4],   0);
    analogWrite(led[before3],  10);
    analogWrite(led[before2],  30);
    analogWrite(led[before1], 100);
    analogWrite(led[pos],     255);

    before4 = before3;
    before3 = before2;
    before2 = before1;
    before1 = pos;
    pos += acc;

    if (pos==0 || pos==ledSize-1) { acc = -acc; }

    delay(200);
}

  • analogWriteで出力を0~255の間で制御できます。
  • 単にON/OFFするなら、digitalWriteを使います。
    • digitalWrite(btn, HIGH);
    • digitalWrite(btn, LOW);