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 다운로드 링크:
- Arduino 공식 사이트: https://www.arduino.cc/en/Main/Software
- 텐센트 위윈: http://go.zeruns.com/E
- 바이두 클라우드: http://go.zeruns.com/F 암호: h6cy
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
추천 글
- 높은 성능 대비 저렴한 VPS/클라우드 서버 추천: https://blog.zeruns.com/archives/383.html
- 내부 네트워크 터널링 서버 구축 (웹 패널 포함): 搭建内网穿透服务器,带Web面板 - Zeruns's Blog
- Arduino로 DHT11, DHT22, SHTC3 온습도 데이터 읽기: Arduino读取DHT11,DHT22,SHTC3温湿度数据 - Zeruns's Blog
- 개인 블로그 구축 방법: https://blog.zeruns.com/archives/218.html
- 학생 할인 혜택 전체: 学生优惠权益大全 - Zeruns's Blog











