ESP8266 활용 가이드 – Java Script 개발환경 (Espruino)
ESP8266 활용 가이드 목차
.
Espruino 는 JavaScript run-time 을 임베디드 장치에 탑재할 수 있도록 지원하는 오픈소스 프로젝트입니다. 이미 ARM Cortex M3/M4 프로세서와 기타 프로세서에 탑재되기도 했으며 전용 하드웨어도 출시된 상태입니다. 근래에 들어 Espruino 는 ESP8266 모듈도 지원하기 시작했는데 아직은 베타 단계이지만 꽤 안정적으로 동작하는 것으로 알려져 있습니다.
여러모로 NodeMCU 와 비슷한데, NodeMCU 펌웨어와 마찬가지로 ESP8266 용으로 빌드된 Espruino 펌웨어를 모듈에 올린 뒤 터미널 프로그램이나 전용 Web IDE를 통해 개발할 수 있습니다. 다만 프로그래밍 언어가 Lua 대신 JavaScript로 바뀐거죠. 펌웨어를 올리고 터미널 프로그램으로 접속하면 [>] 쉘 프롬프트를 볼 수 있으며 자바 스크립트 명령어를 line by line으로 인식해서 처리하고 결과를 알려주는 동작 방식도 같습니다.
특징적인 부분이라면 Espruino는 웹 개발환경(Web IDE)을 제공한다는 겁니다. Espruino 웹 개발환경은 쉘 프롬프트 화면 뿐 아니라 소스코드를 작성, 업로드를 할 수 있는 GUI 환경을 제공해준다. 크롬 브라우저용 앱 형태로 배포되므로 OS에 상관없이 동작하는 이점도 있습니다. 그리고 특이하게 블럭 형태의 GUI 프로그래밍도 지원합니다.
.
Espruino 펌웨어 업데이트
아래 링크에서 최신 Espruino 빌드 바이너리를 다운로드합니다.
문제 발생시 ESP8266 설치 가이드를 참고하세요.
최신 Espruino 빌드 바이너리 파일의 압축을 해제합니다. 그리고 ESP8266 모듈을 flashing 모드로 설정합니다. (GPIO2 – HIGH, GPIO0 – LOW, GPIO15 – LOW)
펌웨어 업데이트 방법이 몇 가지 있는데.. 펌웨어 업데이트 툴을 이용하는 방법은 아래와 같습니다.
- NodeMCU Flasher 다운로드 : https://github.com/nodemcu/nodemcu-flasher (Win32 혹은 Win64 폴더 사용)
- NodeMCU Flasher 프로그램을 실행
- Operation 탭에서 COM 포트를 맞춰줌
- Config 탭
- 첫 번째 입력란에 다운로드 받은 Espruino 펌웨어 중 [boot_v1.4(b1).bin]를 선택, 메모리 어드레스는 0x00000으로 설정
- espruino_esp8266_user1.bin ==> 0x1000
- blank.bin ==> 0x7E000 (ESP-01 모듈처럼 512KB Flash 용량인 경우)
- blank.bin ==> 0x37E000 (ESP-12 모듈처럼 512KB Flash 용량인 경우는 이 설정을 대신 사용)
- 주의!! 다운로드 받은 펌웨어 폴더에 있는 ReadMe 파일을 참고하는 것이 가장 정확합니다.
- Operation 탭에서 Flash 버튼 클릭
- 업로드 진행 과정이 Log 탭에 표시됨. 문제없이 다운로드 완료되면 아래 메시지가 표시됨
- Note:Program flash success.
- Note:Serial port disconnected.
- Flash 버튼을 눌러도 다운로드 진행이 안되는 경우가 생김. 이때는 모듈을 리셋하고 다시 시도해보자.
윈도우의 커맨드 창을 이용해서 커맨드로 업데이트 할 수도 있습니다.
- 파이썬 개발환경이 필요함. 파이썬 홈페이지에서 파이썬 2.7.x 버전을 설치
- 파이썬 스크립트에서 Serial 포트에(COM 포트) 접근하기 위해 pySerial 라이브러리가 필요. 아래 링크에서 다운로드
- 다운로드 받은 후 압축을 해제. 압축 푼 폴더에서 다음 커맨드 실행
- python setup.py install
- [내 컴퓨터 > 마우스 우클릭 > 속성 > 고급 시스템 설정 > 환경 변수 > 시스템 변수 > Path] – path 젤 뒤에 아래 ESP8266 SDK tool 경로를 추가
- ;C:\Espressif\utils
- [Windows+R 키 > cmd 입력 >]
- 커맨드 창이 뜨면 Espruino 펌웨어 압축을 푼 폴더로 이동
- ESP 모듈이 flashing 모드로 연결된 상태에서 아래 명령어로 flashing (COM 포트를 각자 설정에 맞게 변경!!)
- (ESP-01 모듈의 경우 : flash 512KB)
- esptool.py –port COM5 –baud 115200 write_flash –flash_freq 40m –flash_mode qio –flash_size 4m 0x0000 boot_v1.4(b1).bin 0x1000 espruino_esp8266_user1.bin 0x7C000 esp_init_data_default.bin 0x7E000 blank.bin
- (ESP-12 모듈의 경우 : flash 4MB)
- esptool.py –port COM5 –baud 115200 write_flash –flash_freq 80m –flash_mode qio –flash_size 32m 0x0000 boot_v1.4(b1).bin 0x1000 espruino_esp8266_user1.bin 0x3FC000 esp_init_data_default.bin 0x3FE000 blank.bin
.
Espruino 개발환경 사용법
펌웨어 업데이트가 완료되면 ESP8266 모듈을 노멀모드로 설정합니다. 일단은 Terminal 프로그램을 이용해서 Serial 접속을 하고 쉘 프롬프트 상에서 몇 가지 작업을 해보겠습니다.
Terminal 프로그램을 이용해 Serial 접속을 합니다. 윈도우의 경우 Putty를 이용해 COMxx 포트에 접속하면 됩니다.
아래 명령어를 통해 메모리 상태 체크 가능합니다.
- >process.memory()
- ={ “free”: 1279, “usage”: 121, “total”: 1400, “history”: 37 }
일단 모듈을 리셋시킵니다.
- >reset()
=undefined _____ _ | __|___ ___ ___ _ _|_|___ ___ | __|_ -| . | _| | | | | . | |_____|___| _|_| |___|_|_|_|___| |_| http://espruino.com 1v84.tve_master_b603c8a Copyright 2015 G.Williams WARNING: the esp8266 port is in beta! Flash map 4MB:512/512, manuf 0xe0 chip 0x4016
모듈이 리셋되면 WiFi 기능을 사용할 준비를 합니다.
- >var wifi = require(“Wifi”);
- =function () { [native code] }
AP에 연결하도록 명령어를 전송 (SSID, 패스워드 변경해서 쓰세요)
- >wifi.connect(“my-ssid”, {password: “my-password”}, function(err){if(err)console.log(err);else console.log(“connected!”);})
- =undefined
WiFi 상태를 체크해봅니다.
- >wifi.getStatus()
={ "mode": "sta", "station": "connected", "ap": "disabled", "phy": "11n", "powersave": "ps-poll", "savedMode": "off" }
IP 주소를 체크합니다.
- > wifi.getIPInfo()
={ "ip": "192.168.0.106", "netmask": "255.255.255.0", "gw": "192.168.0.1", "mac": "5c:cf:ff:06:c0:db" }
현재 AP 연결 설정을 저장해서 재부팅 후에도 사용하도록 설정합니다.
- >wifi.save()
ESP 모듈을 AP로 동작하도록 설정할 수 있습니다.
- > wifi.startAP(“my-ssid”)
- =undefined
AP 모드일 때의 IP를 확인합니다.
- > wifi.getAPIP()
={ "ip": "192.168.4.1", "netmask": "255.255.255.0", "gw": "192.168.4.1", "mac": "5e:cf:ff:06:c0:db" }
이상 몇 가지 커맨드 라인에서 자바 스크립트 명령어를 써봤습니다. 터미널 프로그램으로 접근해서 명령어를 한 줄씩 입력하는 이런 방법은 간단한 테스트가 아닌이상 번거롭죠. 그래서 Espruino에서는 웹 개발환경(Web IDE)를 지원합니다.
GUI는 심플하지만 갖출건 다 갖추고 꽤 편리하게 이용할 수 있습니다.
아래 링크를 통해 크롬 앱 형태로 설치할 수 있습니다.
앱을 실행한 뒤 ESP8266 모듈과 연결해서 개발을 진행할 수 있습니다.
- 앱 설치 후 실행. IDE가 실행되면 먼저 우측 상단의 설정 클릭.
- 좌측 Communications 탭에서 Baud rate를 115200 으로 설정
- 설정 닫고 나와서 좌측 상단 Connect 이미지 클릭. 해당 COM 포트 선택 후 연결
- 연결 이후 좌측 콘솔을 통해서 명령어를 전송하고 결과를 볼 수 있음
- 우측 콘솔에 코드를 작성하고 저장 및 업로드 가능.
아래 참고자료 링크에서 예제와 API를 확인하세요. 그리고 입맛에 맞게 개발을 하시면 됩니다.
참고자료
- Quick Start 가이드
- Tutorials and Examples
- Latest Espruino build for Esp8266
- FLASHING AND USING THE ESP8266 WITH ESPRUINO
- Espruino JavaScript for Microcontrollers (Official)
- Espruino Hardware Reference
- Other Boards
- Espruino on ESP8266 WiFi
- Espruino Software Reference
- Espruino Web IDE
- Download Espruino firmware
- Connecting ESP8266 and IOT [Smart.js Starter Guide]
- Smart.js: an open IoT platform
- Smart.js: GitHub
- Run JavaScript in your ESP8266 device