사물인터넷(IoT)2016. 7. 1. 13:50

이전 글 에서 ESP8266 개발보드인 Amica에 NodeMCU 펌웨어를 설치해보고 개발툴인 ESPlorer 연결까지 해 보았습니다. 이번에는 처음으로 보드에 프로그램을 올려보려고 합니다. 저도 인터넷 뒤져서 습득한 내용이니 틀린 내용을 전달할 가능성도 있습니다. 혹시 이 글을 보다가 틀린 것을 발견하면 댓글 부탁 드립니다. 이 글의 내용을 실습해 보려면 우선 [이전 글] 을 참고해서 개발환경이 세팅되어 있어야 합니다. 개발보드는 당연히 있어야 하구요. 하드웨어는 ESP8266 보드라면 Amica 가 아니어도 어떤 보드라도 상관은 없습니다. 다만 저의 경험상 ESP-01 + USB UART 에서는 너무 불안정한 모습을 보여주어서 개발용으로는 추천하지는 않습니다. 그럼에도 불구하고 혹시 ESP-01 로 시도해 보려는 분들은 [여기] 를 참고해서 개발환경을 갖추어 주면 됩니다.


NodeMCU 펌웨어를 올린 개발보드를 PC에 연결하고 ESPlorer 를 실행한 후 Open 을 누르면 보드와 연동이 되었었습니다. 그런데 Reset 을 누르게 되면 시리얼 창에 다음과 같은 메시지가 나옵니다.


NodeMCU 0.9.6 build 20150704  powered by Lua 5.1.4


Communication with MCU...

Got answer! AutoDetect firmware...

Communication with MCU established.

Can't autodetect firmware, because proper answer not received (may be unknown firmware). 

Please, reset module or continue.

lua: cannot open init.lua


리셋 할 때마다 Can't autodetect firmware, because proper answer not received (may be unknown firmware). Please, reset module or continue. 라는 이상한 메시지가 계속 나오는데 무시합니다. 어쨋건 작동은 다 되니까요. (구글링을 조금 해 봤는데 없애는 방법을 찾지 못 했습니다. 다들 그냥 쓰더군요. 혹시 방법을 아는 분은 댓글 부탁 드립니다.)


위의 메시지 맨 마지막줄에 보면 init.lua 를 열 수가 없다고 나옵니다. 보드가 리셋 되고 부팅될 때 처음 찾는 파일이 init.lua 같습니다. 그래서 init.lua 파일을 만들어서 업로드를 해 보았습니다.


■ init.lua 로 Hello World 찍어 보기


1. ESPlorer 에서 File -> New 를 선택해서 새 파일을 하나 열어 줍니다.

2. 소스 입력창에 print("hello world") 라고 코드를 작성합니다. lua 의 주석은 '--' 로 시작 합니다.


3. File -> Save to disk 를 선택해서 ESPlorer 가 설치된 폴더의 하위인 _lua 폴더에 init.lua 라는 이름으로 작성된 코드를 저장해 줍니다. 그런데 사실 Save 만 해도 파일도 저장이 되고 보드에 업로드까지 자동으로 됩니다. 굳이 Save to ESP 버튼을 눌러서 업로드를 할 필요는 없습니다. 


4. 파일을 저장하니 소스가 보드에 자동으로 업로드 되었지만 그래도 기능도 알아볼 겸 소스창 하단에 Save to ESP 버튼을 클릭해서 Amica 보드에 저장을 해 봅니다. 


위와 같이 시리얼 창에 표시가 되면서 프로그램이 보드로 업로드가 됩니다. 여기서 알 수 있는 것은 file.remove() 는 보드에 업로드된 파일을 제거하는 명령어이고 file.open() 은 업로드할 프로그램을 오픈 하는 것이고 file.close() 는 파일을 닫고 dofile() 은 업로드된 파일을 실행하는 명령이라는 것임을 알 수 있습니다. 실제로 소스창에 dofile("init.lua") 라고 작성하고 하단의 Send to ESP 버튼을 클릭하면 보드의 init.lua 코드가 실행이 됩니다. Send to ESP 는 ESP8266 에 명령을 하는 기능 입니다.

위와 같이 실행이 됩니다. 앞으로 ESP8266에 명령을 내릴 때에는 위와 같은 방법으로 하면 됩니다. 조금 더 편한 방법으로 명령을 내리고 싶다면 아래와 같이 하면 됩니다.


시리얼 창 아랫 부분에 보면 위와 같이 드랍 다운 메뉴가 있습니다. 눌러보면 위와 같이 기본적인 명령어들을 모아 놓았습니다. dofile("") 을 클릭하고 쌍따옴표 안에 파일명을 적고 Send 버튼을 눌러도 명령어가 실행이 됩니다.



5. 이제 보드에 init.lua 가 저장이 되었습니다. 보드는 처음 부팅 시 이 파일을 무조건 실행하게 될 것 입니다. Reset 버튼을 눌러서 Reset 을 해 봅니다.


Reset 시 보드가 부팅이 되면 맨 먼저 init.lua 를 찾아서 실행 되면서 'Hello World' 라는 문자열이 시리얼 창을 통해서 출력이 되는 것을 확인 할 수 있습니다.


6. init.lua 파일의 수정, 삭제

init.lua 파일의 변경은 코드를 새로 작성하고 'Save to ESP' 버튼을 누르면 덮어쓰게 됩니다. 만약에 init.lua 또는 다른 파일을 삭제하고 싶다면 file.remove("파일명")  명령을 'Send to ESP' 하면 됩니다.


file.remove("init.lua") 를 'Send to ESP' 하고 Reset 한 결과 입니다. init.lua 파일을 open 할 수 없다는 메시지가 나옵니다.



이상,... 처음으로 ESP8266 보드인 Amica 보드에 NodeMCU Lua 와 ESPlorer 를 이용해서 코드도 올려보고 명령어를 통해서 제어도 해 보았습니다. 앞으로 초보의 입장에서 하나 하나 NodeMCU Lua 에 대해서 알아보도록 하겠습니다.



▶추가사항 (2016.07.04) : NodeMCU 는 Lua 를 기반으로 하고 있지만 정확히 말하자면 eLua 라는 언어를 기반으로 한다고 합니다. Embeded 에 Lua 를 붙여서 eLua 라고 합니다. Lua 문법을 따르지만 Embeded 시스템에 특화된 언어라고 합니다. eLua 에 대한 정보는 다음의 URL을 참고해 주세요.



Embedded power, driven by Lua : http://www.eluaproject.net/

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요