이제 드디어 NodeMCU 개발 보드인 ESP8266(ESP-12E) 기반의 아미카(Amica) 를 인터넷에 연결해 보겠습니다. '드디어' 라는 말을 쓴 이유는 ESP8266 보드는 IoT(Internet of Things) 구현을 위한 보드인데 인터넷에 연결이 되지 않으면 아무런 의미가 없기 때문에 인터넷 연결을 시작으로 본격적인 개발을 할 수 있다는 의미에서 사용해 보았습니다. 이 글에서는 인터넷 Wi-Fi 에 보드를 연결해보고 통신이 되는지 확인해 보도록 하겠습니다. 시작하기 전에 예전에 올렸던 Amica 보드의 모습을 다시 보도록 하겠습니다.
보드는 위와 같이 생겼습니다. ESP8266 이라고 쓴 부분이 와이파이를 통해서 인터넷에 연결하고 각종 제어를 담당하는 핵심 부품인 MCU 부분 입니다. ESP8266 이라는 칩 입니다. 그리고 칩은 Wi-Fi 안테나와 연결이 되어서 무선 인터넷에 연결할 수 있도록 해 줍니다. 예전에 했던 말이지만 개발환경만 갖춘다면 꼭 위와 같은 보드가 아니더라도 ESP8266 칩을 사용한 어떠한 보드 모듈이라도 인터넷에 연결 할 수 있습니다. 다만 저의 경우는 ESP-01과 USB UART 로 NodeMCU 펌웨어와 ESPlorer 를 이용해서 개발을 시도해 봤지만 너무 불안정해서 이 보드를 사용할 뿐 입니다.
이번에는 저의 맥북을 사용해서 ESPlorer 를 통해서 보드에 연결을 해 보았습니다. 맥에서도 개발환경을 갖추기 위해서는 윈도우와 다를 바가 없습니다. Mac에 Mac OS X 용 CP2102 드라이버를 설치하고 ESPlorer 실행, 연결해서 Open 후 사용하면 됩니다. 다만 ESPlorer Open 시 윈도우에서는 COM1, COM2 등으로 포트를 지정했는데 맥에서는 '/dev/cu.SLAB_USBtoUART' 로 시리얼 통신 장치를 지정해 주면 됩니다.
자, 이제 준비는 끝났습니다. NodeMCU를 통해서 ESP8266을 인터넷에 연결해 봅시다.
■ credentials.lua 파일 생성
연결하려는 와이파이의 연결 정보를 담고 있는 파일 입니다. 그냥 코드에 적어 주어도 되지만 이런 정보는 파일을 분리해 주는 것이 좋습니다.
1 2 3 | -- WiFi Connect information SSID = "와이파이 이름" PASSWORD = "와이파이 패스워드" | cs |
ESPlorer 에서 File -> New 를 선택해서 새 파일을 생성해서 credentials.lua 라고 저장해 주면 됩니다. 물론 SSID (와이파이 이름), Password 는 자신이 연결하려는 와이파이 연결 정보를 입력해야 합니다. 이름은 꼭 credentials 가 아니어도 됩니다. 다만 파일을 로드 할 때는 그 이름을 사용해야 하겠죠. 위의 코드는 연결하려는 와이파이의 SSID, Password 를 설정하는 코드 입니다.
위와 같이 디스크에 저장 시 보드에 자동으로 업로드가 됩니다.
■ init.lua 파일 생성
init.lua 파일은 예전에 설명했던 바와 같이 NodeMCU가 처음으로 부팅될 때 기본으로 실행되는 파일 입니다. 이 파일에 인터넷 연결을 설정해 두면 보드에 전원이 공급될 시 자동으로 인터넷에 연결이 되는 것 입니다. 그러므로 인터넷 연결이 필수인 NodeMCU 에서는 init.lua 에 인터넷 연결 정보를 담아 놓으면 개발 시 편리하겠죠. 그 이외 보드 부팅 시 기본적인 Loading 이 필요한 사항을 담아 놓기도 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | -- load credentials, 'SSID' and 'PASSWORD' declared and initialize in there dofile("credentials.lua") function startup() if file.open("init.lua") == nil then print("init.lua deleted or renamed") else print("Running") file.close("init.lua") -- the actual application is stored in 'application.lua' -- dofile("application.lua") end end print("Connecting to WiFi access point...") wifi.setmode(wifi.STATION) wifi.sta.config(SSID, PASSWORD) wifi.sta.connect() tmr.alarm(1, 1000, 1, function() if wifi.sta.getip() == nil then print("Waiting for IP address...") else tmr.stop(1) print("WiFi connection established, IP address: " .. wifi.sta.getip()) print("You have 3 seconds to abort") print("Waiting...") tmr.alarm(0, 3000, 0, startup) end end) | cs |
init.lua 도 credentials.lua 와 마찬가지로 새파일을 만들고 위의 코드를 써서 저장을 해 줍니다. 맨 첫줄에 보면 credentials.lua 파일을 loading 하고 있습니다. 그리고 와이파이 연결 시까지 timer 모듈을 통해서 반복해서 연결이 시도되고 연결이 완료되면 startup function 을 call 합니다. 그리고 init.lua 를 닫아주고 프로그램이 실행될 실제 코드가 있는 application.lua (주석처리 되어 있음) 를 열어주게 됩니다. 인터넷 연결을 이용해서 실행될 실질적인 코드는 application.lua 에 위치하게 되는 것 입니다.
위와 같이 credentials.lua 에 설정한 와이파이 연결 정보로 192.168.0.18 의 IP가 할당이 되고 인터넷에 연결이 되었습니다. 인터넷 연결이 되었으니 이 상태에서 본격적인 다음의 코드를 작업하면 되는 것 입니다. 이제 Amica 보드(ESP8266)에 전원이 들어오면 맨 먼저 위에서 설정한 인터넷에 연결을 시도할 것 입니다.
만약 잘 안된다면 credentials.lua 의 정보를 한 번 더 확인하고 두 파일을 모두 'Save to ESP' 버튼을 눌러서 개발보드(ESP8266)에 업로드 해 줍니다.
네트워크에 잘 연결이 되었는지 확인해 보기 위해서 위의 IP 로 ping 을 해 보았습니다.
통신이 잘 됩니다.
이상으로 ESP8266을 NodeMCU를 사용해서 인터넷에 연결해 보았습니다. 이제 이 작은 모듈이 인터넷이라는 거대한 네트워크에 연결이 되었으니 이를 무궁무진하게 활용하는 일만 남았네요. 상상력이 필요 합니다.
※ 참고 사이트 : https://nodemcu.readthedocs.io/en/dev/
'ESP8266' 카테고리의 다른 글
NodeMCU Lua 사용해보기 #7 - 간단한 웹서버 만들어보기 (0) | 2016.07.06 |
---|---|
NodeMCU Lua 사용해보기 #6 - ESPlorer 개발툴 (0) | 2016.07.06 |
NodeMCU Lua 사용해보기 #4 - 모듈(Modules) (0) | 2016.07.05 |
NodeMCU Lua 사용해보기 #3 - GPIO 사용 (LM35 센서값 읽기) (2) | 2016.07.03 |
NodeMCU Lua 사용해보기 #2 - GPIO 사용 (LED Blink) (0) | 2016.07.02 |