- ESP8266은 무엇입니까?
- WiFi 이론의 기초 :
- ESP8266을 사용한 프로그래밍 유형 :
- ESP8266 모듈을 프로그래밍 할 하드웨어 :
- 필요한 재료 :
- 회로 설명 :
- ESP8266 프로그래밍을위한 빌딩 보드 :
최근 사물 인터넷과 홈 오토메이션은 과장된 주제였습니다. 월드 와이드 웹과 통신 할 수 있고 세계 어느 곳에서나 액세스 할 수있는 무언가를 우리가 직접 구축하는 것이 정말 멋지죠?
하지만 기다려!!! 복잡하게 들리나요 ???….
저도 그렇게했기 때문에 인터넷과 상호 작용할 수있는 것을 만드는 데 엄청난 시간과 기술이 필요할 것이라고 생각했습니다. 아니요, Espressif Systems 의 ESP8266 이라는 환상적인 모듈 덕분에 저는 완전히 틀 렸습니다. 이제이 모듈을 사용하여 IoT 프로젝트의 문을 쉽게 열 수 있습니다. 이 저비용, 작은 크기의 모듈은 우리가 올바른 단계를 따르면 놀라운 일을 할 수 있으며 정말 간단하고 사용하기 쉽습니다.
이 자습서는 이 ESP8266-01 모듈 을 소개 하고 시작 하는 데 도움 이되는 것을 목표로 합니다. 아마도 이미 모듈을 가져 와서 사용하는 동안 멈췄을 수 있습니다. 그렇다면 여러분은 혼자가 아닙니다. 많은 사람들이이 모듈에 대한 적절한 지침이나 문서가 없기 때문에 모듈을 시작하는 것이 매우 어렵다고 생각합니다. 이것이이 튜토리얼을 만드는 이유입니다. 여기의 지침을 따르시면 ESP8266-01 모듈을 즉시 가동하고 실행할 수 있습니다. 여기서는 FTDI USB-TTL 직렬 어댑터 모듈 을 사용하여 ESP8266을 프로그래밍합니다. 튜토리얼 끝에 있는 자세한 비디오 를 확인하십시오.
주제를 시작하기 전에 ESP8266-01 모듈에 대한 몇 가지 기본 사항을 살펴 보겠습니다.
ESP8266은 무엇입니까?
대부분의 사람들은 ESP8266을 WIFI 모듈로 부르지 만 실제로는 마이크로 컨트롤러입니다. ESP8266은 상하이에 본사를 둔 Espressif Systems에서 개발 한 마이크로 컨트롤러의 이름입니다. 이 마이크로 컨트롤러는 WIFI 관련 활동을 수행 할 수있는 기능이 있으므로 WIFI 모듈로 널리 사용됩니다.
ESP8266-01부터 ESP8266-12까지 다양한 유형의 ESP8266 모듈을 사용할 수 있습니다. 이 튜토리얼에서 사용하는 것은 가장 저렴하고 쉽게 구할 수있는 ESP8266-01입니다. 그러나 모든 ESP 모듈에는 한 가지 유형의 ESP 프로세서 만 있으며 차이점은 사용되는 브레이크 아웃 바드 유형뿐입니다. ESP8266-01의 브레이크 아웃 보드에는 GPIO 핀이 2 개만있는 반면 다른 보드에서는 더 높습니다.
모듈의 전체 사양은 아래 표에 나와 있습니다.
전압 |
3.3V |
현재 소비 |
10uA-170mA |
깜박이는 동안 최대 전류 소비 |
800mA |
플래시 메모리 |
16MB (512K 일반) |
프로세서 |
Tensilica L106 32 비트 |
프로세서 속도 |
80 ~ 160MHz |
램 |
32K + 80K |
GPIO |
17 (그러나 대부분은 다중화 됨) |
아날로그-디지털 변환기 |
1 (10 비트) |
최대 TCP 연결 |
5 |
사양에 대해 놀라게 할 수있는 몇 가지 사항은 ESP8266 모듈이 ADC 변환기와 함께 제공되며 장치를 플래시하는 동안 0.8A의 매우 높은 전류를 소비한다는 것입니다.
또한 다양한 ESP8266 기반의 흥미로운 IoT 프로젝트를 확인하십시오.
WiFi 이론의 기초:
전송 제어 프로토콜 (TCP), 인터넷 프로토콜 (IP), 사용자 데이터 그램 프로토콜 (UDP), 액세스 포인트 (AP), 스테이션 (Sta), 서비스 세트 식별자 (SSID), 애플리케이션 프로그래밍 인터페이스 (API), 웹 서버…..
위의 모든 용어가 이해가됩니까?
경우 예. 그런 다음 BINGO는이 부분을 건너 뛰고 다음 섹션으로 이동할 수 있습니다.
그렇지 않다면. 그렇다면 여러분은 제가이 모든 것을 처음 접했을 때했던 것처럼 대부분의 용어를 깜빡이는 많은 전기 학생들 중 한 명일 것입니다. 그러니이 모든 용어를 빠르게 살펴 보겠습니다. 그래야만 IOT의 세계에 들어갈 수 있기 때문입니다.
전송 제어 프로토콜 (TCP):
우리 대부분은 이것이 무엇을 의미하는지 알 것입니다. 예, 인터넷이 작동하는 데 기반한 일련의 규칙입니다. ESP8266에는 WIFI 연결을 설정할 수있는 기능이 있습니다. 높은 수준의 Wi-Fi는 무선 링크를 통해 TCP / IP 연결에 참여하는 기능입니다. ESP가 TCP / IP 프로토콜 또는 UDP 프로토콜에서 작동하도록 만들 수 있습니다.
사용자 데이터 그램 프로토콜 (UDP):
UDP는 또 다른 유형의 인터넷 프로토콜입니다. 이러한 유형의 통신은 TCP보다 빠르지 만 정확도는 떨어집니다. 그 이유는 TCP가 통신 중에 승인을 사용하지만 UDP는 그렇지 않기 때문입니다. TCP는 높은 신뢰성이 요구되는 네트워크에서 주로 사용됩니다. UDP는 안정성보다 속도가 높은 곳에서 사용됩니다. 예를 들어 UDP는 화상 회의에 사용됩니다. 일부 픽셀이 전송되지 않더라도 비디오 품질에는 그다지 영향을 미치지 않지만 속도는 매우 중요하기 때문입니다.
대부분의 ESP8266 프로젝트와 코드는 TCP / IP를 중심으로 작동하며 UDP는 거의 신경 쓰지 않습니다.
액세스 포인트 (AP) 및 스테이션 (STA):
ESP 모듈 작업을 시작하면이 두 용어를 자주 접하게됩니다. 귀하와 귀하의 친구가 귀하의 스마트 폰에서 인터넷 서핑을하고 싶지만 활성 인터넷 연결이 없기 때문에 귀하는 귀하의 핫스팟을 켜기로 결정하고 귀하의 친구가 여기에 연결한다고 가정 해 보겠습니다. 여기서 인터넷 연결을 소싱하는 전화기는 액세스 포인트 (AP)이고 인터넷을 사용하는 친구의 전화기는 스테이션 (STA)입니다.
ESP8266 모듈은 AP 모드, STA 모드 또는 STA 및 AP 모드 (결합)의 세 가지 모드에서 사용할 수 있습니다.
서비스 세트 식별자 (SSID):
이것은 매우 간단한 용어입니다. 거의 모든 사람들이 WIFI를 사용했습니다. Wi-Fi 네트워크의 이름을 SSID라고합니다. 스테이션에 연결할 여러 액세스 포인트가있는 경우 스테이션은 연결해야하는 액세스 포인트를 알아야합니다. 따라서 각 액세스 포인트 (AP)에는 SSID라는 ID가 부여됩니다.
API (응용 프로그래밍 인터페이스):
간단히 말해서 API는 요청을 받아 처리하고 원하는 결과를 시스템에 반환하는 메신저입니다. 우리가 인터넷에서하는 대부분의 활동 (예: 항공편 예약, 온라인 구매 등)은 API를 사용합니다. 모든 웹 사이트는 가입, 결제 등과 같은 작업의 일부가 귀하를 위해 수행되는 API에 연결합니다. 그곳에.
ESP8266은 API를 사용하여 인터넷 세계와 통신합니다. 예를 들어 시간, 기후 또는 API 형태로 요청해야하는 모든 것을 해당 웹 사이트에 알고 자하는 경우. 해당 웹 사이트는 요청을 받고 원하는 결과를 ESP 모듈에 다시 제공합니다.
웹 서버:
웹 서버는 웹 사이트의 내용을 표시하는 역할을합니다. 특정 웹 사이트의 모든 콘텐츠가 웹 서버에로드됩니다. 웹 서버 역할 만하는 전용 컴퓨터가 있습니다. 또한 웹 서버로 작동하도록 ESP8266을 프로그래밍하고 전 세계 어디에서나 연결할 수 있습니다.
좋아요, 시작하기에 충분합니다. 이제 하드웨어에 대해 알아 보겠습니다.
ESP8266을 사용한 프로그래밍 유형:
ESP8266 모듈을 사용하는 방법에는 두 가지가 있습니다. 이 튜토리얼은 두 가지 모두를 시작하는 데 도움이됩니다. 한 가지 방법은 AT 명령을 사용하는 것입니다. 다른 방법은 Arduino IDE를 사용하는 것 입니다. 그것이 의미하는 바를 이해합시다.
공장에서 출하 된 모든 ESP8266 모듈에는 기본 펌웨어 (SDK + API)가로드됩니다. 이 펌웨어는 AT 명령을 통해 ESP8266 모듈을 프로그래밍하는 데 도움이됩니다.
다른 방법은 Arduino IDE (보드가 필요하지 않음) 및 해당 라이브러리를 사용하여 ESP8266 모듈을 직접 프로그래밍하는 것입니다. 모든 프로젝트는 두 가지 방법으로 수행 할 수 있습니다. 그러나 ESP8266 프로그래밍을 위해 Arduino IDE를 사용하기 시작하면 기본 SDK가 손상되었을 수 있으므로 AT 명령을 사용하지 못할 수 있습니다. 이 경우 기본 설정으로 ESP를 플래시해야합니다. 다른 튜토리얼에서 다룰 것입니다.
ESP8266 모듈을 프로그래밍 할 하드웨어:
ESP8266은 8 단자 모듈입니다. 동일한 핀이 아래에 나와 있습니다.
안타깝게도이 모듈은 브레드 보드 친화적이지 않으므로 브레드 보드에 직접 마운트 할 수 없습니다. 또한 Arduino와 달리 USB to Serial 드라이버가 내장되어 있지 않습니다. 따라서 "FTDI USB to TTL 직렬 어댑터 모듈"을 사용하여 통신해야합니다. FTDI 보드가 3.3V에서도 작동 할 수 있는지 확인하십시오. 이 튜토리얼에서 사용하는 것은 아래와 같습니다.
이제 우리가 알고 있듯이 3.3V로 ESP8266에 전원을 공급해야합니다. 그러나 전류 소비는 0.8A이므로 FTDI 브레이크 아웃 보드에서 전원을 공급하면 예상대로 작동하지 않을 수 있습니다. 따라서 우리는 자체 전력 회로를 구축해야합니다. 여기에서는 전원 공급을 위해 LM317을 사용했습니다. 완전한 하드웨어를 만들기위한 세부 사항은 이후 섹션에 제공됩니다.
필요한 재료:
- 성능 보드
- ESP8266-01
- FTDI 브레이크 아웃 보드
- LM317
- 0.1uf 커패시터
- 10uf 커패시터
- 배럴 잭
- Bergstik 남성과 여성
- 누름 단추
- 전선 연결
- 보드에 전원을 공급하는 12V 어댑터.
회로 설명:
보드의 회로도는 아래와 같습니다.
일부는 FTDI에서 직접 ESP에 전원을 공급하고 작동하도록 시도했을 수 있지만 다음은 몇 가지 추가 구성 요소로 자체 보드를 구축하는 이유입니다.
- 소수의 FTDI 보드 만이 ESP 모듈에 충분한 전류를 공급할 수 있습니다. 플래싱 중에 ESP 모듈은 다른 모듈보다 높은 전류를 소비 할 수 있습니다. 따라서 자체 전원 을 사용하는 것이 항상 안전하며 브레드 보드 대신 Dot Board에 전원 회로를 통합하는 것이 더 쉬울 것입니다.
- 코드를 업로드하기 전에 항상 ESP 모듈을 재설정해야합니다. 자체 보드를 구축하면 모듈을 쉽게 재설정 할 수 있습니다. 우리는 ESP8266을 재설정하기 위해 푸시 버튼을 사용했습니다.
- GPIO0 핀은 Arduino를 사용하여 프로그래밍 할 때 접지되어야하며 AT 명령을 사용할 때 자유로 워야합니다. 자체 보드를 구축하면 쉽게 토글 할 수 있습니다. AT 명령 모드와 Arduino IDE 프로그래밍 모드 사이를 전환 하기 위해 점퍼를 사용했습니다.
- 모든 프로그래밍은 직렬 통신을 사용하여 수행됩니다 . 브레드 보드를 사용하는 경우 일부 느슨한 터미널은 오류 를 반으로 일으키고 모듈을 다시 작동하도록 강제로 만들 수 있습니다.
즉, 브레드 보드 사용과 모듈 프로그래밍을위한 자체 보드 만들기 중에서 선택할 수 있습니다. 그래도 브레드 보드를 사용하려면 위에 표시된 것과 동일한 회로를 브레드 보드를 사용하여 빌드 할 수 있습니다. 모양 만 다르며이 자습서의 다른 모든 지침은 동일하게 적용됩니다.
ESP8266 프로그래밍을위한 빌딩 보드:
그래서 여기서 우리는 ESP8266에 전원을 공급하기위한 자체 전원 회로가있는 ESP8266 모듈을 프로그래밍하기위한 보드를 구축하고 있습니다.
말했듯이 우리 모듈은 프로그래밍하는 동안 약 800mA가 필요합니다. 따라서 LM317의 소스 전류가 거의 1.2A이므로 LM317 가변 전압 조정기를 사용하여 자체 전력 모듈을 구성했습니다. LM317의 입력 전압은 12V이며 12V 2A 벽면 장착 어댑터를 사용하여 제공됩니다. LM317의 출력은 220ohm 및 360ohm의 저항을 사용하여 3.3V로 지속적으로 조정됩니다. LM317에 대해 자세히 알아 보려면 LM317을 사용하는 배터리 충전기 회로도 확인하십시오.
LM317의 출력 전압을 계산하는 공식은 다음과 같습니다.
Vout = 1.25 * (1+ (R2 / R1))
여기서 R1은 220ohm이고 R2는 360ohm입니다.
ESP8266 모듈은 아래 표에 표시된 핀에 따라 연결됩니다.
핀 번호 |
ESP 핀 이름 |
연결됨 |
1 |
바닥 |
FTDI 모듈의 접지 |
2 |
GPIO2 |
비어 있거나 나중에 사용하기 위해 베르그 스틱에 연결 |
삼 |
GPIO0 |
프로그래밍 모드 간 전환으로 전환 |
4 |
Rx |
FTDI 모듈의 Tx |
5 |
Tx |
FTDI 모듈의 수신 |
6 |
CH_PH |
LM317에서 3.3V |
7 |
초기화 |
모듈 재설정을위한 푸시 버튼 |
8 |
Vcc |
LM317에서 3.3V |
AT 명령 모드와 Arduino 프로그래밍 모드 사이 를 쉽게 전환 하기 위해 Arduino IDE를 사용할 때 GPIO 0을 접지로 당기고 AT 명령을 사용할 때 부동 상태로 두는 스위치 (점퍼)를 배치했습니다.
누를 때 ESP 모듈을 재설정 하는 푸시 버튼이 있습니다. 푸시 버튼을 통해 ESP 모듈의 RST 핀을 접지 레일에 연결하기 만하면됩니다. ESP 모듈을 프로그래밍하기 전에 매번 재설정해야합니다.
회로를 조립하면 아래와 같이 보일 것입니다.
저는 Perf 보드를 사용했지만 관심이있는 경우 브레드 보드를 사용할 수도 있습니다 (위에서 설명한대로). 전체 빌드 및 설명은 아래 비디오에 표시됩니다.
연결이 완료되면. ESP 및 FTDI 보드없이 보드의 전원을 켜고 ESP 모듈 위치의 Vcc 및 접지 단자에서 3.3V가 제대로 공급되는지 확인합니다. 이제 FTDI 보드가 3.3V 모드인지 확인하고 FTDI 및 ESP 모듈을 보드에 연결합니다.
어댑터의 전원을 켜고 보드에 연결하면 ESP 모듈이 빨간색으로 켜집니다.
그런 다음 미니 USB-USB 케이블을 사용하여 FTDI 보드를 컴퓨터에 연결하고 컴퓨터의 장치 관리자로 이동하면 아래와 같이 COM 포트에 연결된 FTDI 보드를 찾을 수 있습니다.
이제 ESP8266 모듈을 프로그래밍 할 시간입니다. AT 명령을 사용하여 시작한 다음 Arduino IDE 사용으로 이동할 수 있습니다. 다른 ESP8266 기반 프로젝트 를 확인하는 것을 잊지 마십시오 .