본문으로 건너뛰기

ESP8266 ESP-01

Pin-out

Pin
VCCALL VDDx3.3 V (3.0 V ~ 3.6 V)
GNDGroundGround
UTXDU0TXD - GPIO1 - SPI_CS1TX
URXDU0RXD - GPIO3RX
CH_PDCHIP_PU파워 다운, Active-LOW
RSTEXT_RSTB리셋, Active-LOW
GPIO0GPIO0 - SPI_CS2부트 옵션 설정
GPIO2GPIO2 - I2C_SDA부트 옵션 설정

Boot options

GPIO0GPIO2MODE
LHUART
HHFlashSPI flash

AT

AT format

타입명령어 형식
명령어 설명AT+<x>=?설정 명령어의 변수, 설정 범위 등 확인
설정 확인AT+<x>?현재 설정된 값 확인
설정AT+<x>=<...>
실행AT+<x>설정 변수가 없는 명령 실행
  • 모든 명령어가 위 4 가지 형식을 모두 지원하는 것은 아닙니다.
  • 문자열 변수의 경우 "" 큰따옴표를 사용해야 합니다.
  • 명령어는 대문자로 구성되어 있으며, 마지막에 CR(\r) LF(\n)을 붙여야 합니다.
  • _CUR 명령어는 설정이 Flash에 저장되지 않고, _DEF 명령어는 설정이 Flash에 저장됩니다.

AT basic commands

AT
  • @brief 테스트 명령어
AT+RST
  • @brief 재시작
AT+GMR
  • @brief 버전 확인
ATE<on/off>
  • @brief 입력된 명령어 출력
  • @param <on/off> 0 이면 명령어 실행 결과만 출력, 1 이면 입력한 명령어와 실행 결과 출력
AT+RESTORE
  • @brief 설정 초기화
AT+UART_CUR=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
AT+UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
  • @brief 현재 UART 통신 설정
  • @param <baudrate> 기본 115200
  • @param <databits> 5 ~ 8, 기본 8
  • @param <stopbits> ‣ 1: 1-bit stop bit ‣ 2: 1.5-bit stop bit ‣ 3: 2-bit stop bit, 기본 1
  • @param <parity> ‣ 0: None ‣ 1: Odd ‣ 2: Even, 기본 0
  • @param <flow control> ‣ 0: not enabled ‣ 1: enable RTS ‣ 2: enable CTS ‣ 3: enable both RTS and CTS, 기본 0

Wi-Fi AT 명령어

AT+CWMODE_CUR=<mode>
AT+CWMODE_DEF=<mode>
  • @brief 와이파이 모드 설정
  • @param <mode> ‣ 1: Station mode ‣ 2: SoftAP mode ‣ 3: SoftAP+Station mode
AT+CWJAP_CUR=<ssid>,<pwd>[,<bssid>][,<pci_en>]
AT+CWJAP_DEF=<ssid>,<pwd>[,<bssid>][,<pci_en>]
  • @brief AP(Wireless Access Point)에 연결
  • @param <ssid> 무선 네트워크 명, 문자열
  • @param <pwd> 암호, 문자열
  • @param <bssid> 옵션 변수, AP의 MAC 주소, 문자열
  • @param <pci_en> 옵션 변수, WEP 또는 OPEN AP 연결을 허용하지 않고, PCI 인증을 위해 사용 가능
  • @warning , " \ 등의 특수문자는 \ 를 붙여 사용해야함. ex) , -> \,, " -> \", \ -> \\
AT+CWLAP
  • @brief 연결 가능한 AP 검색
  • @return +CWLAP:<ecn>,<ssid>,<rssi>,<mac>,<channel>,<freq offset>, <freq cali>,<pairwise_cipher>,<group_cipher>,<bgn>,<wps>
AT+CWQAP
  • @brief AP 연결 종료
AT+CWAUTOCONN=<enable>
  • @brief 켜졌을 때, 자동 AP 연결 설정
  • @param <enable> ‣ 0: does NOT auto-connect ‣ 1: connects to AP automatically
AT+CIPSTA_CUR=<ip>[,<gateway>,<netmask>]
AT+CIPSTA_DEF=<ip>[,<gateway>,<netmask>]
AT+CIPAP_CUR=<ip>[,<gateway>,<netmask>]
AT+CIPAP_DEF=<ip>[,<gateway>,<netmask>]
  • @brief 고정 IP 설정(Station 모드, SoftAP 모드)
  • @param <ip> 할당받고 싶은 IP, 문자열
  • @param <gateway> AP gateway, 문자열
  • @param <netmask> AP netmask, 문자열

TCP/IP AT 명령어

AT+CIPSTATUS
  • @brief 연결 상태 확인
AT+CIPSTART=[<link ID>,] "TCP",<remote IP>,<remoteport>[,<TCP keep alive>]
AT+CIPSTART=[<link ID>,] "UDP",<remote IP>,<remoteport>[,(<UDP local port>),(<UDP mode>)]
  • @brief TCP, UDP 연결 설정
  • @param <link ID> 옴션 변수, 다중 연결(AT+CIPMUX=1) 시 사용, 0 ~ 4
  • @param <remote IP> 접속할 IP 또는 도메인, 문자열
  • @param <remote port> 접속할 포트
  • @param <TCP keep alive> 옵션 변수, ‣ 0: disable ‣ 1 ~ 7200: detection time interval; unit: second (s).
  • @return 정보가 오면 +IPD,[길이]:[내용] 형식으로 반환
AT+CIPSEND
  • @brief 단일 연결(AT+CIPMUX=0)
    • transparent transmission mode(AT+CIPMODE=1) 에서 데이터를 연속으로 송신 패킷은 최대 2048 bytes, 20 ms 간격으로 송신
    • +++만 포함한 패킷을 송신하면 명령 모드로 복귀, 적어도 1초 후 AT 명령어를 사용해야함
    • +++CRLF로 보내면 안됩니다.
AT+CIPSEND=[<link ID>,]<length>[,<remote IP>,<remote port>]
  • @brief >를 반환 받고, length 만큼 문자열을 입력하면 입력한 문자열 데이터 전송
  • @param <link ID> 옴션 변수, 다중 연결(AT+CIPMUX=1) 시 사용, 0 ~ 4
  • @param <length> 입력할 문자열 bytes, 최대 2048
  • @param <remote IP> 옴션 변수, 접속할 IP 또는 도메인, 문자열, UDP 전송 시에만 사용 가능
  • @param <remote port> 옵션 변수, 접속할 포트, UDP 전송 시에만 사용 가능
AT+CIPSENDEX=[<link ID>,]<length>[,<remote IP>,<remote port>]
  • @brief >를 반환 받고, length 만큼 문자열을 입력하거나 \0 문자열이 나타나면 입력한 문자열 데이터 전송
  • @param <link ID> 옴션 변수, 다중 연결(AT+CIPMUX=1) 시 사용, 0 ~ 4
  • @param <length> 입력할 문자열 bytes, 최대 2048
  • @param <remote IP> 옵션 변수, 접속할 IP 또는 도메인, 문자열, UDP 전송 시에만 사용 가능
  • @param <remote port> 옵션 변수, 접속할 포트, UDP 전송 시에만 사용 가능
AT+CIPCLOSE[=<link ID>]
  • @brief 연결 해제, TCP의 경우 자동 연결 해제 전에 명령어를 통해 연결 해제 가능, UDP는 명령어 이후 연결 해제
  • @param <link ID> 옵션 변수, 다중 연결(AT+CIPMUX=1) 시 사용, 0 ~ 4, 5 를 입력하면 모든 접속 종료
AT+CIFSR
  • @brief ESP8266의 IP, MAC 주소 확인
AT+CIPMUX=<mode>
  • @brief 다중 접속 설정, 모든 연결이 끊겨있을 때 설정 가능
  • @param <mode> ‣ 0: single connection ‣ 1: multiple connections
AT+CIPSERVER=<mode>[,<port>]
  • @brief TCP 서버 설정, 다중 연결(AT+CIPMUX=1) 시 사용 가능
  • @param <mode> ‣ 0: deletes server ‣ 1: creates server
  • @param <port> 기본 333
AT+CIPMODE=<mode>
  • @brief 송신 모드 설정
  • @param <mode> ‣ 0: normal transmission mode ‣ 1: transparent transmission mode
AT+CIPSTO=<time>
  • @brief 서버 타임 아웃 설정
  • @param <time> 0~7200 초 설정 가능, 0으로 설정하면 타임 아웃 안됨
AT+PING=<remote IP>
  • @brief PING 패킷 전송
  • @param <remote IP> 접속할 IP 또는 도메인, 문자열
AT+CIPDINFO=<mode>
  • @brief 접속한 IP,port 정보 반환 설정
  • @param <mode> ‣ 0: does not show the remote IP and port with +IPD. ‣ 1: shows the remote IP and port with +IPD.
+IPD[,<link ID>],<len>[,<remote IP>,<remote port>]:<data>
  • @brief 수신된 네트워크 데이터
  • @param <link ID> 다중 연결(AT+CIPMUX=1) 시 반환, 0 ~ 4
  • @param <len> 수신된 데이터 bytes 수
  • @param <remote IP> 접속한 IP 반환, 접속 정보 반환 설정(AT+CIPDINFO=1) 시 반환
  • @param <remote port> 접속한 포트 반환, 접속 정보 반환 설정(AT+CIPDINFO=1) 시 반환
  • @param <data> 수신된 데이터

HTTP GET

AT+CWMODE_DEF=1\r\n
AT+CWJAP_DEF=<ssid>,<pwd>\r\n
AT+CIPMUX=0\r\n
AT+CIPMODE=1\r\n
AT+CIPSTART="TCP",<remote IP>,<remoteport>\r\n
AT+CIPSEND\r\n
> GET /xxx/xxx?key1=value1&key2=value2 HTTP/1.1\r\n
HOST: xxx.xxx\r\n
\r\n\r\n

HTTP POST

AT+CWMODE_DEF=1\r\n
AT+CWJAP_DEF=<ssid>,<pwd>\r\n
AT+CIPMUX=0\r\n
AT+CIPMODE=1\r\n
AT+CIPSTART="TCP",<remote IP>,<remoteport>\r\n
AT+CIPSEND\r\n
> POST /xxx HTTP/1.1\r\n
HOST: xxx.xxx\r\n
Content-Type: application/json;charset=UTF-8\r\n
Content-Length: 내용 길이\r\n
\r\n
내용