아두이노 코딩의 소중한 경험을 라즈베리에서도 계속 살려서 사용하고 싶으신가요?
이 책에서 해답을 찾으세요.
교보문고에서 판매중입니다.
_____________________up to here, Commercial!___________________________________________________
ESP-01 모듈은 넘버링이 01 이라서 그런지 아두이노 초보자라면 누구나 다 한 번씩 경험해 보는 WiFi 모듈이다. 하지만 ESP-01 모듈은 빵판에 고정할 수도 없으며 아울러 Firmware 업데이트 시의 배선과 업데이트 완료 후의 배선이 변경되므로 오히려 웬만한 센서나 NodeMCU 같은 WiFi 모듈 보다 어떤 측면에서는 고난도로 여겨진다.
ESP-01 모듈은 3.3V 전원을 사용한다. 5V 연결 시에 회로가 손상될 염려가 있으니 주의하자. 아래 사진과 같이 쉴드 회로를 제작하였다.
특히 ESP-01의 TX 및 RX 단자에서 나오는 초록색 및 청색 배선을 수놈 커넥터로 제작하여 필요에 따라 위치를 바꾸기에 용이하도록 하였다.
아울러 GPIO 2번에서 나오는 검은 색 배선도 수놈 커넥터로 만들어 Firmware 업데이트 시에는 연결을 하고 작업이 끝나면 배선을 뽑을 수 있게 한다.
Tx에서 나온 배선이 예기치 않은 5V 전원 입력에 대해 Protection이 안된 상태이므로 보수적인 관점에서 향 후 RX 배선처럼 전압 분할을 하면 더욱 좋을 듯하다.
이 표에는 GPIO 2번 배선이 배제되어 있는데 배선도 그림에서 볼 수 있듯이 GPIO2는 Firmware 업데이트 시에 반드시 GND에 연결하도록 하고 작업이 끝난 후에 반드시 배선을 제거해야 한다. 주의가 필요하다.
Firmware 업데이트 단계에서는 아두이노 우노의 디지털 데이터 핀 0번과 1번을 사용하고 있다. 하지만 코딩 사례에 따라서 0번과 1번을 별도의 통신 목적으로 사용해야 할 필요성이 있는 경우에는 위의 쉴드 디자인에서 설명되었듯이 예를 들자면 SoftwareSerial() 명령을 사용하여 8번과 9번으로 옮길 수 있어야 한다.
다시 아두이노의 USB 커넥터를 PC에 연결하도록 하자. 아두이노 편집기에서 새 파일을 열면 Bare Minimum 파일이 뜬다. 이 파일을 컴파일하여 아두이노에 업로딩 하도록 한다. 이 Bare Minimum 파일의 특징은 아두이노 코드의 틀만 있고 실제 수행 명령들이 없어 업로딩 과정만 제외하고는 디지털 데이터 핀 TX 0번 과 RX 1번을 통해 통신할 내용이 전혀 없는 특수한 코드이다.
이 단계에서 툴 탭을 열어 보드 종류를 즉 아두이노 우노를 지정하고 USB 커넥터가 연결된 포트 번호를 확인해 둔다.
다음 단계에서는 다운로드 받아 압축을 해제해 둔 초록색 박스친 exp82
66_flasher.exe를 실행한다.
청색 박스 친 BIN 버튼을 누르고 갈색 박스친 v0.9.5.2 AT Firmware.bin 파일을 클릭하면 다음의 화면이 얻어진다. 앞서 확인해 두었던 포트 번호를 정확하게 입력하고 Download 버튼을 누르도록 한디. 이 단계에서 Failed 가 나올 가능성도 있다. 그럴 때에는 아두이노의 USB 커넥터를 PC로부터 한번 OFF 시킨 후 다시 연결 하고 Download 버튼을 누른다.
아래와 같이 1%⚫⚫⚫에서 시작하여 99% ⚫⚫⚫까지 업데이트가 이루어지고 마지막 메시지 “Leaving⚫⚫⚫”, “ Failed to leave Falsh model” 나타나면 성공적으로 완료된 것이다.
다시 아두이노의 USB 커넥터를 PC로부터 뽑아 전원을 끈 후 GPIO 2번 배선을 제거한다.
아두이노의 USB 커넥터를 PC의 포트에 연결하고 다시 Bare Minimum 파일이 업로드 되어 플레시 코드 상태에 있기 때문에 단지 띄우기만 하면 아두이노 내부에서 실행이 된다. Bare Minimum 은 코드 내에 실행해야할 명령이 따로 없기 때문에 일종의 아이들링이 일어날 것이다. 하지만 그러한 과정이 필요한 이유는 Bare Minimum 도 아두이노 코드이기 때문에 실행되는 동안 시리얼 모니터를 열어 이용할 수 있는 기회를 제공하게 된다.
시리얼 모니터를 열어서 AT 명령어들을 테스트해 보도록 한다. 시리얼 모니터 창을 띄우면 통신 속도가 115200으로 세팅되어 있음을 볼 수 있다.
전송 입력 창에 AT+RST를 입력하고 전송 버튼을 누르면 OK 메시지가 뜬다. ESP-01 도 버전이 있는지 과거와는 다르게 40 MHz 및 4M 플레시 메모리 등의 제법 긴 정보가 출력된다.
단순히 AT 명령만 입력해도 OK 가 뜬다.
AT+GMR 명려을 입력하면 AT 버전 번호와 SDK 버전 번호가 나타남을 알 수 있다.
ESP-01 모듈은 세 가지의 기본적인 기능을 제공한다.
1. STA(Station): 연결
2. AP(Acess Point): 무선 공유기
3. Both: 1,2 기능의 합
AP 는 말 그대로 무선 공유기 기능이다. ESP-01 이AP 기능을 제공할 경우 다른 디바이스도 이 공유기를 이용할 수 있을 것이다.
STA는 ESP-01을 무선공유기를 통해 연결하는 기능인데 어떤 공유기를 선택할 것인가 하는 문제는 주변에 이용 가능한 Ap들을 SCAN해야 알 수 있다. 주의해야 할 점은 Firmware 업데트 후 AT+CWMODE? 명령을 수행해보니 MODE 2에 설정이 되어 있었으며 이 상태에서 AP SCAN 을 위해 AT+CWLAP 명령이 먹히지 않는다 점이다.
일단 AT+CWMODE=3 명령에 의해 CWMODE=3 이 설정되면 CWLAP 명령에 의해 와이파이 무선 공유기 SCAN 및 리스팅이 가능해 진다. 자신이 사용하는 AP 나 또는 스마트폰 핫스팟 AP를 확인해 보도록 한다.
CWMODE는 다음과 같이 요약된다.
CWMODE=1: STA, CWMODE=2: AP, CWMODE=3: 1,2기능 합
AT+CWMODE=1 명령을 입력 후 AT+CWMODE? 명령을 입력해 MODE를 확인해 보자.
AT+CWMODE=2 명령을 입력 후 AT+CWMODE? 명령을 입력해 MODE를 확인해 보자.
ESP-01 모듈에 부여된 가상 IP를 확인해 보기 위해서 AT+CIFSR 명령을 실행해 보자.
가상 IP “192.168.4.1” 과 MAC 주소가 함께 디스플레이 됨을 확인하자.
통신이 가능하도록 AT+CIPMUX=1 명령 실행에 의해 다중 연결 모드를 설정하자.
AT+CIPMUX=0: Single 클라이언트
AT+CIPMUX=1:Multiple 서버
서버 코드를 돌리기 위해서는 다중 연결이 필요하다. 예를 들면 아두이노 ESP-01 모듈에 LED를 설치한 경우 핫스팟으로 연결되는 스마트폰 이나 무선공유기가 연결된 PC에서 제어가 가능해야 할 것이다.
다중연결 모드에서 AT+CIPSERVER=1,80 명령을 실행하여 서버의 포트 번호를 설정하자. 첫 번째 번호를 0 으로 입력하면 에러가 발생하는데 번호 0 은 서버
모드를 폐쇄하겠다는 뜻이며 코딩 경험상 거의 전혀 쓸 일이 없었으며, 항상 1로 처리하기로 한다. 포트 번호 80 번은 HTTP 통신 프로토콜 사용 시의 포트 번호로서 이미 정해진 상수이다.
마지막으로 통신 속도를 조절해 보자. ESP-01 모듈을 사용하기 위해서는 SoftwareSerial 사용이 필수적인데 115200 사용이 아두이노 NodeMCU를 제외하고는 흔치 않으므로 아예 가장 많이 사용하는 9600 으로 설정하는 것이 좋을 듯하다.
AT+CIOBAUD? 명령을 입력하면 잘 먹히지 않는다. 하지만 시리얼 모니터 하단에 BAU
D RATE 정보를 주고 있으므로 굳이 물어볼 필요는 없다.
AT+CIOBAUD=9600 명령을 실행시키고 OK 가 나오면 통신속도가 변경된 것이다. 다음번 사용 시에는 통신 속도를 수동으로 9600을 선택하면 된다.
'아두이노프로세싱 프로그래밍' 카테고리의 다른 글
ESP8266 ESP-01모듈 AT 명령어 테스트 코드 ESP_01 과 안드로이드 앱 “Mobile TELNET”에 의한 데이터 송신:III (0) | 2017.06.29 |
---|---|
SoftwareSerial 라이브러리에 의한 ESP8266 ESP-01 AT 명령어 반응 시험:II (0) | 2017.06.29 |
NodeMCU 디지털 핀의 HIGH LOW 로직(Logic) 전압 레벨 측정 (0) | 2017.06.27 |
아두이노 디지털 핀의 HIGH LOW 로직(Logic) 전압 레벨 측정 (0) | 2017.06.27 |
초보자를 위한 “아두이노 코드에 의한 DUAL LED BLINKING: 전압 측정 및 전류 계산 (0) | 2017.06.25 |