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() {    // 초기화 함수, 이 함수 내의 코드는 시작 시 한 번만 실행됩니다
  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() {          // 초기화 함수, 이 함수 내의 코드는 시작 시 한 번만 실행됩니다
  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("습도:"); 
  u8g2.setCursor(80, 15);
  u8g2.print(h);	// https://blog.zeruns.com
  u8g2.setCursor(120, 15);
  u8g2.print("%");
  u8g2.setCursor(0, 40);
  u8g2.print("온도:"); 
  u8g2.setCursor(0, 55); 
  u8g2.print(t);
  u8g2.setCursor(40, 55);
  u8g2.print("C");
  u8g2.sendBuffer(); 
  delay(1000);
}

소스 코드의 첫 번째 줄에서 불러온 DHT 라이브러리와 U8g2 라이브러리는 Arduino IDE에 내장되어 있지 않으므로, 먼저 프로젝트라이브러리 추가라이브러리 관리자를 클릭하여 다음 세 가지 종속 라이브러리를 검색하여 설치해야 합니다(Adafruit Unified Sensor, DHT sensor library, U8g2):

회로 연결

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 연결됨");
  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개의 좋아요