ESP8266の開発環境構築とプロジェクトデモ

ESP8266は、Espressif社が製造する低コストのWi-Fiチップで、完全なTCP/IPプロトコルスタックとマイコン機能を備えています。モバイルデバイス、ウェアラブル機器、IoTアプリケーション向けに設計されており、消費電力が低く、価格も非常にリーズナブルです。

ESP8266には複数の開発環境が利用可能ですが、本記事ではArduino IDEの開発環境構築について説明します。

本記事で使用している開発ボードおよびその他のモジュール、接続ケーブルの購入先は最下部に記載しています。

ここでは、このチップを搭載したNodeMcu開発ボードを使用しています。

使用している開発ボードのUSB-to-TTLチップに応じて、対応するドライバーをダウンロードしてインストールしてください。私の開発ボードにはCH340が使用されています。

Arduino IDEのインストール

Arduino IDEは、Arduino公式が提供するC言語対応の統合開発環境で、主にArduinoシリーズの開発ボード用に設計されています。
簡単な設定を行うことで、既存の開発環境にESP8266開発ボードのサポートを追加できます。Arduinoライブラリや開発フローに慣れているユーザーにとっては、使用上の違いはほとんどありません。

Arduino IDEのダウンロード先:

ESP8266のサポートを追加

Arduino IDEを開き、左上にあるファイルメニューから環境設定(Preferences)を選択し、追加のボードマネージャーURL(Additional Board Manager URLs)を見つけ、以下のリンクを入力します:http://arduino.esp8266.com/stable/package_esp8266com_index.json

次に、ツールボードボードマネージャーと進み、ボードマネージャー画面を開きます:

esp8266を検索してインストールします:

インストールが完了したら、Arduino IDEを再起動します。ツールボードオプションにESP8266のボードが表示されるようになります:

ポートを選択します。まずデバイスマネージャーでポートを確認し、その後Arduino IDEで対応するポートを選択してください。

プロジェクトデモ

シリアルポートにHello Worldを送信

Arduino IDEで新規プロジェクトを作成し、以下のコードを入力します:

void setup() {    // 初期化関数。この関数内のコードは起動時に1回だけ実行されます
  Serial.begin(115200);    // シリアルポートのボーレートを設定
}
/*
https://blog.zeruns.com
*/
void loop() {     // 無限ループ関数。この関数内のコードは繰り返し実行されます
  Serial.println("Hello World"); // シリアルポートにHello Worldを出力
}

入力後、アップロードボタンをクリックして開発ボードにコンパイル・アップロードし、シリアルモニタを開いてボーレートを115200に設定すると、出力されたHello Worldが表示されます。

LED点滅

ESP8266モジュールには内蔵LEDが搭載されており、このLEDはD4ピンに接続されています。

注意:ESP8266には複数の開発ボードがあり、それぞれのGPIOピンが異なります。

void setup() {          // 初期化関数。この関数内のコードは起動時に1回だけ実行されます
  pinMode(D4,OUTPUT);  // GPIOピンD4を出力モードに設定
}

void loop() {             // 無限ループ関数。この関数内のコードは繰り返し実行されます
  digitalWrite(D4,HIGH);  // GPIOピンD4に高電平を出力(HIGHは1で代用可能)
  delay(1000);            // 1000ミリ秒待機
  digitalWrite(D4,LOW);   // GPIOピンD4に低電平を出力(LOWは0で代用可能)
  delay(1000);            // https://blog.zeruns.com
}

DHT11のデータを読み取り表示

この例では、DHT11温湿度センサーを使用して温度と湿度を測定し、結果を0.96インチOLEDディスプレイに表示します。

プロジェクトソースコード:

#include <Arduino.h>
#include <NTPClient.h>
#include <U8g2lib.h>
#include <DHT.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

DHT dht(D3,DHT11, 15);
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ D1, /* data=*/ D2, /* reset=*/ U8X8_PIN_NONE);

void setup(){
  u8g2.begin();
  u8g2.enableUTF8Print();
  dht.begin();
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_unifont_t_chinese2);
  u8g2.setFontDirection(0);
  u8g2.setCursor(0, 15);
  u8g2.print("Humidity:"); 
  u8g2.setCursor(80, 15);
  u8g2.print(h);	// https://blog.zeruns.com
  u8g2.setCursor(120, 15);
  u8g2.print("%");
  u8g2.setCursor(0, 40);
  u8g2.print("Temperature:"); 
  u8g2.setCursor(0, 55); 
  u8g2.print(t);
  u8g2.setCursor(40, 55);
  u8g2.print("C");
  u8g2.sendBuffer(); 
  delay(1000);
}

ソースコードの先頭でインポートしているDHTライブラリとU8g2ライブラリは、Arduino IDEに標準で含まれていないため、まずプロジェクトライブラリを追加ライブラリマネージャーと進み、以下の3つの依存ライブラリを検索・インストールしてください(Adafruit Unified SensorDHT sensor libraryU8g2):

配線接続

NodeMcu DHT11
3V3 VCC
GND GND
D3 DATA
NodeMcu 0.96インチOLED
3V3 VCC
GND GND
D1 SCL
D2 SDA

WiFi接続

ESP8266の最大の特徴は、非常に低コストでWi-Fi機能を実現できることです。

以下にWiFi接続の簡単なサンプルコードを示します:

#include<ESP8266WiFi.h>

const char* ssid = "blog.zeruns.com";		// WiFi名
const char* passwd = "blog.zeruns.com";	// WiFiパスワード

void setup() {
  Serial.begin(115200);		// シリアルポートのボーレートを設定
  WiFi.begin(ssid,passwd);	// WiFiに接続
  while (WiFi.status() != WL_CONNECTED)	// WiFi接続状態を確認
  {
    delay(500);
    Serial.print(".");		// シリアルに.を出力
  }
  Serial.println("");		// 改行
  Serial.println("WiFi connected");
  Serial.println(WiFi.localIP());	// 取得したIPアドレスを出力
  Serial.println("https://blog.zeruns.com");
}

void loop() {

}

購入先

NodeMcu開発ボード(ESP8266):https://s.click.taobao.com/mWfgiTu

DHT11温湿度センサーモジュール:https://s.click.taobao.com/gAduxTu

ドゥンボウ線:https://s.click.taobao.com/yxUfiTu

0.96インチOLEDディスプレイ:https://s.click.taobao.com/6IFfiTu

推奨記事

「いいね!」 2