티스토리 뷰
NodeMCU (http://nodemcu.com/)
아두이노 무선 통신 환경을 구축 검토를 하다가 AliExpress에서 "nodeMCU"라는 모듈을 처음 접하게 되었다.
Low-Cost (가격,전력) 를 목표로 433MHz RF 모듈로 아두이노간 통신 환경을 구축하다가 통신 수업에서나 배웠던 경합, 스케쥴링 따위 것들로 고생하던 차였다.
$3 도 안되는 가격에 GPIO + WiFi 모듈, 그리고 자바스크립트 형식의 프로그래밍은 매력적인 제안일 수 밖에 없었다.
주) Lua Script로 Javascript와 완전히 일치하지는 않는다. 또한 Lua Script를 모두 지원하는 것도 아니다.
주) Lua Script로 Javascript와 완전히 일치하지는 않는다. 또한 Lua Script를 모두 지원하는 것도 아니다.
인터넷을 검색해보니 관련 정보가 많지 않고 환경 설정 과정이 아두이노처럼 간단하지 않은 것 같았지만 한번 도전해보기로 했다.
여러가지 모델들이 있는데 내가 구매한 모듈은 아래 것(V3)이며 NodeMCU 호환품으로 보인다.
저렴한 제품인 만큼 설명서도 제대로된 사이트도 없다. 구매 페이지에도 아무런 설명이 없다.
인터넷의 글들도 이 제품과는 정확히 맞아떨어지지 않았다.
그나마 무사히 설치하는데 도움이 된 것은 칩 뒤에 써 있던 아래 네 줄의 설명...ㅜ.ㅜ
1. install CH340G Driver
2. use 9600bps baud rate
3. Connect to WiFi
wemos.cc
성공한 과정을 정리를 좀 해보았다.
인터넷의 글들도 이 제품과는 정확히 맞아떨어지지 않았다.
그나마 무사히 설치하는데 도움이 된 것은 칩 뒤에 써 있던 아래 네 줄의 설명...ㅜ.ㅜ
1. install CH340G Driver
2. use 9600bps baud rate
3. Connect to WiFi
wemos.cc
성공한 과정을 정리를 좀 해보았다.
개발환경은 MAC OSX 10.11.5 (El Capitan)이었으며 이미 Arduino 관련 설정이 다 되어 있는 상태였다.
- CH340G 드라이버 설치
이 부분은 성공하고 나서 생각해보니 장치가 인식이 된다면 꼭 필요한 부분은 아닐 것 같다.
아마도 드라이버는 아두이노 개발환경을 설치할 때 같이 설치된 것으로 보인다.
나의 경우 장치는 제대로 인식이 되었는데 통신이 안되는 상황이라 뭐라도 해보자는 심정으로 시도해 보았다.http://www.homautomation.org/2015/02/05/how-to-use-arduinos-with-ch340g-ch341g-serialusb-ftdi-chip/
- Flash 올리기
인터넷 글에는 NodeMCU 모듈은 이미 NodeMCU 펌웨어가 탑재된 상태라고 했는데 이 제품의 경우 그렇지 않았다.
펌웨어 탑재해야 한다는 사실은 홈페이지(http://wemos.cc)를 통해서 알았지만, 막상 Flash 툴은 홈페이지에 안내되어 있는 esptool(https://github.com/igrr/esptool-ck)은 "El Capitan"에서는 문제가 있어 사용할 수가 없었다. (https://github.com/igrr/esptool-ck/issues/20)
대신 Windows 환경이나 MAC이라면 가상환경 (Parallel, VMWare, VirtalBox 등)에서 아래 글을 참고해서 더 쉽게 플래쉬 탑재가 가능하다.
http://www.14core.com/how-to-use-nodemcu-flasher-step-by-step-tutorial/
위의 글에서 소개하고 있는 툴인 NodeMCU Flasher(https://github.com/nodemcu/nodemcu-flasher)는 기본적으로 NodeMCU 펌웨어를 포함하고 있어서 편하기도 하다. 위 설명글에서는 본인의 펌웨어 파일을 올리라고 되어 있지만 아래 그림처럼 기본적으로 NodeMCU 롬을 포함하고 있어서 그냥 COM Port 설정 후 Flash 버튼만 눌러주면 된다. - 터미널 테스트
펌웨어 탑재가 무사히 성공했다면 시리얼 통신을 지원하는 터미널 프로그램을 이용해 테스트해볼 수 있다.
Mac은 CoolTerm, Windows는 putty를 이용하면 된다.
이때 중요한 것은 처음 접속하면 글에 나오는 프롬프트 ('>') 가 떨어지지 않는다는 점이다.
글을 잘 읽어보면 설명이 나와 있기도 하지만 이 제품의 경우 Reset 버튼(RST)를 한번 눌러줘야한다.
https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-nodemcu-lua
글에 있는 모든 테스트를 해볼 수도 있겠지만 터미널 툴은 여러모로 불편하므로 접속에 성공하면 바로 개발툴 (ESP Explorer)로 넘어가자. - ESP Explorer 설치하기 (http://www.14core.com/downloads-2/)
기본적인 사용 방법은 아래 글 참조.
http://deneb21.tistory.com/400
간단한 테스트는 파일 쪽에 써 놓고 저장할 것 없이 "Send to ESP"를 누르면 라인 단위로 NodeMCU로 전달되어 실행이 된다. - WiFi 접속해보기
다시 Adafruit 글 참조.
https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-nodemcu-lua
Adafruit 글을 옮겨 놓은 국내 블로그들은 아래 내용이 빠져있어서 AP 검색도 접속도 되질 않는다.
wifi.setmode(wifi.STATION)
테스트를 무사히 마치고 나니 유용하게 쓸 수 있겠다는 결론이다.
Arduino 처럼 다양한 라이브러리는 아직 없지만 통신을 위주로 하는 간단하고 저렴한 모듈로는 Arduino보다 훨씬 효용성이 좋을 것 같다.
Apendix.
1. 구동 시 WiFi 접속하기 위한 Script.
예제와 같이 Alarm을 쓰지 않고 loop( for, while)을 사용하는 경우 IP를 가져오지 못하는 경우가 발생한다.
https://www.domoticz.com/wiki/ESP8266_WiFi_module
wifi.setmode(wifi.STATION) wifi.sta.config("YOUR SSID","YOUR KEY") wifi.sta.connect() tmr.alarm(1, 1000, 1, function() if wifi.sta.getip()== nil then print("IP unavaiable, Waiting...") else tmr.stop(1) print("ESP8266 mode is: " .. wifi.getmode()) print("The module MAC address is: " .. wifi.ap.getmac()) print("Config done, IP is "..wifi.sta.getip()) dofile ("domoticz.lua") end end)
2. NodeMCU Reference
https://nodemcu.readthedocs.io/en/master/
3. Lua Reference
http://lua-users.org/wiki/LuaDirectory
'기본지식 > 프로그래밍' 카테고리의 다른 글
nodeMCU 펌웨어 업그레이드 후 오류나는 경우 (0) | 2016.10.10 |
---|---|
nodeMCU vs microPython (0) | 2016.10.09 |
OS X 10.11(El Capitan)에서 Arduino 호환기종 인식 문제 (0) | 2016.05.25 |
프론트엔드 프레임워크(ReactJS, AngularJS,METEOR, MEAN) (0) | 2016.05.09 |
MDL (Material Design Library) Google (0) | 2016.04.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 아두이노
- AWair
- METEOR
- JavaScript
- VOC
- raspberry pi
- 센서
- 프레임워크
- 머터리얼 디자인
- mac
- Android
- microPython
- 프로토타입
- MiCS-VZ-89T
- React
- 개발환경
- 라즈베리파이
- Material Design
- nodemcu
- IAQ
- angularJS
- MiSC-VZ-89T
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
글 보관함