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)

esp8266-reflash-firmware

펌웨어 업데이트 방법이 몇 가지 있는데.. 펌웨어 업데이트 툴을 이용하는 방법은 아래와 같습니다.

  • 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 버튼을 눌러도 다운로드 진행이 안되는 경우가 생김. 이때는 모듈을 리셋하고 다시 시도해보자.

Programming_LUA_firmware_config_1-1

윈도우의 커맨드 창을 이용해서 커맨드로 업데이트 할 수도 있습니다.

  • 파이썬 개발환경이 필요함. 파이썬 홈페이지에서 파이썬 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는 심플하지만 갖출건 다 갖추고 꽤 편리하게 이용할 수 있습니다.

front_main_ide

아래 링크를 통해 크롬 앱 형태로 설치할 수 있습니다.

앱을 실행한 뒤 ESP8266 모듈과 연결해서 개발을 진행할 수 있습니다.

  • 앱 설치 후 실행. IDE가 실행되면 먼저 우측 상단의 설정 클릭.
  • 좌측 Communications 탭에서 Baud rate를 115200 으로 설정
  • 설정 닫고 나와서 좌측 상단 Connect 이미지 클릭. 해당 COM 포트 선택 후 연결
  • 연결 이후 좌측 콘솔을 통해서 명령어를 전송하고 결과를 볼 수 있음
  • 우측 콘솔에 코드를 작성하고 저장 및 업로드 가능.

아래 참고자료 링크에서 예제와 API를 확인하세요. 그리고 입맛에 맞게 개발을 하시면 됩니다.

참고자료