ESP 8266の使用

11057 ワード

📝 開始前...
皆さんこんにちは今日はESP 8266でWiFiでコントロールしましょう

ライブラリのインストール


Aveno ESP8266
ESP 8266モジュールを使用するには、リポジトリをインストールする必要があります.
アドゥエノIDEから파일 > 환경설정に入ります.
別のボードマネージャのURLに次のアドレスを入力し、「OK」ボタンをクリックします.
http://arduino.esp8266.com/stable/package_esp8266com_index.json 툴>보드>보드매니저でESP 8266を検索し、ESP8266をインストールします.

インストール後、無人機IDEを再実行します.툴>보드>NodeMCU 1.0(ESP-12E Module)を選択し、ポートを有効にします.

Blinkの例


無人機IDEを実行したら、파일 > 예제 > ESP8266 > Blinkをクリックします.
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // LED ON
  delay(1000);
  digitalWrite(LED_BUILTIN, HIGH);  // LED OFF
  delay(2000);
}
内蔵LEDがオン、オフ、気まぐれであることを確認したら、LED制御を正式に開始します.

LEDコントロール


以下、ESP 8266の基本LED制御例を示す.
#include <ESP8266WiFi.h>
 
#define PIN_LED D1
 
const char* ssid = "와이파이 아이디";
const char* password = "와이파이 비밀번호";
 
WiFiServer server(80);
 
void setup() {
  pinMode(PIN_LED, OUTPUT);
  digitalWrite(PIN_LED, LOW);
  
  Serial.begin(115200);
  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connecting to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  server.begin();
  Serial.println("Server started");
}
 
void loop() {
  WiFiClient client = server.available();
  if(!client) return;
  
  Serial.println("새로운 클라이언트");
  client.setTimeout(5000);
  
  String request = client.readStringUntil('\r');
  Serial.println("request: ");
  Serial.println(request);
 
  if(request.indexOf("/ledoff") != -1) {
    digitalWrite(PIN_LED, LOW);
  }
  else if(request.indexOf("/ledon") != -1) {
    digitalWrite(PIN_LED, HIGH);
  }
  else {
    Serial.println("invalid request");
    digitalWrite(PIN_LED, digitalRead(PIN_LED));
  }
 
  while(client.available()) {
    client.read();
  }
 
  client.print("HTTP/1.1 200 OK");
  client.print("Content-Type: text/html\r\n\r\n");
  client.print("<!DOCTYPE HTML>");
  client.print("<html>");
  client.print("<head>"); 
  client.print("<meta&nbsp;charset=\"UTF-8\">");
  client.print("<title>LED CONTROL</title>");
  client.print("</head>");
  client.print("<body>");
  client.print("<h2>HANIUM LED Control Page</h2>");
  client.print("<a href='/ledon'>LED ON</a>");
  client.print("<br>");
  client.print("<a href='/ledoff'>LED OFF</a>");
  client.print("<br>");
  client.print("LED Status : ");
  client.print((digitalRead(PIN_LED)) ? "ON" : "OFF");
  client.print("</body>");
  client.print("</html>");
 
  Serial.println("클라이언트 연결 해제");
}
와이파이 이름와이파이 비밀번호は、それぞれのネットワーク環境に応じて修正されるべきである.
アップロードしてオートミールモニターに入ると、ホームページのリンクがポップアップします.
リンクを使用して、次の画面を表示します.

WebページでLEDのボタンをオン/オフにできます(?)現在のLEDの状態です.

ホームページでLED ONを押すとLEDが開きます.

ホームページでLED OFFを押してLEDを消します.

取得温度


前述のLED制御例では、LEDを赤外線センサに変換した.
赤外線センサモジュールを使用するためのライブラリも含まれています.
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614(); 

const char* ssid = "와이파이 이름";
const char* password = "와이파이 비밀번호";
 
WiFiServer server(80);
 
void setup() {
  
  Serial.begin(115200);
  mlx.begin(); 
  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connecting to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  server.begin();
  Serial.println("Server started");
}
 
void loop() {
  WiFiClient client = server.available();
  if(!client) return;
  
  Serial.println("새로운 클라이언트");
  client.setTimeout(5000);
  
  String request = client.readStringUntil('\r');
  Serial.println("request: ");
  Serial.println(request);
 
  client.print("HTTP/1.1 200 OK");
  client.print("Content-Type: text/html\r\n\r\n");
  client.print("<!DOCTYPE HTML>");
  client.print("<html>");
  client.print("<head>"); 
  client.print("<meta charset=\"UTF-8\" http-equiv=\"refresh\" content=\"1\">");
  client.print("<title>LED CONTROL</title>");
  client.print("</head>");
  client.print("<body>");
  client.print("<h2>HANIUM Read Object TempC</h2>");
  Serial.print("Object : ") ;
  Serial.println(mlx.readObjectTempC());
  client.print("Object: ");
  client.println(mlx.readObjectTempC());
  delay(500);
  client.print("</body>");
  client.print("</html>");
 
  Serial.println("클라이언트 연결 해제");
}

手を出さないときは、室内温度26.29度を測定します.

手を手に置くと、体温は36.65度です.
終わりに...
ESP 8266を用いてウェブページを作成し,ユーザの現在の温度をウェブページ上で確認した.
次のレッスンでは、ユーザーの現在の経度と緯度を受信し、国/地域に変換してWebページに表示します.