ESP8266 활용 가이드 – MicroPython 개발환경

 

ESP8266/ESP32 모듈 관련 자료는 전용 게시판으로 모두 이동되었습니다. 아래 문서의 최신 업데이트는 ESP8266 전용 게시판에서 확인하세요.

ESP8266 활용 가이드 목차

 

 

MicroPython은 마이크로 컨트롤러용 파이썬 프로젝트입니다. 파이썬의 문법과 언어적 특성을 임베디드 환경에서 사용할 수 있도록 해주죠. 공식적으로는 전용 마이크로 파이썬 보드를 지원하는데 ESP8266 모듈에서 사용이 가능하도록 개발이 진행되는 중입니다. 아직 실험적인 단계이며 공식 보드가 제공하는 기능들을 모두 지원하진 않지만 GPIO 제어, WiFi 연결, low-level socket 형태의 인터페이스를 통해 인터넷 접근이 가능합니다.

아직 I2C, SPI 등등의 하드웨어 파트는 지원하지 않습니다. ESP8266 지원이 잘 마무리 되길 바랍니다만 결과는 장담할 수 없을듯…

 

 

펌웨어 빌드

 

참고 : https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/build-firmware

ESP8266 모듈에서 마이크로 파이썬 사용을 위해서는 펌웨어를 탑재해야 합니다. 펌웨어를 얻는 최고의 방법은 직접 소스코드를 빌드해서 만드는 것!! 왜냐면 아직 실험적인 단계라 문제도 많고 업데이트도 잦기 때문에 필요한 업데이트가 있을 때 소스코드를 받아 직접 빌드하는게 빠르기 때문입니다.

테스트 용도로 펌웨어를 올려보고 싶은 경우라면 미리 빌드된 펌웨어를 사용해도 무방합니다.

마이크로 파이썬 펌웨어 빌드를 위해서는 ESP open SDK toolchain 을 설치해서 ESP8266 프로세서를 위한 컴파일 환경을 갖춰야 합니다. OS마다 이 환경을 맞춰주는 것이 까다롭기 때문에 virtual machine 을 이용해서 가상의 linux 기반 개발환경을 돌리는 방법을 사용하는 것이 좋습니다.

우선 필요한 파일들을 다운로드 합니다.

  • VirtualBox – 가상머신.
  • Vagrant – VirtualBox 커맨드 라인 wrapper.
  • Git – Git 프로젝트 관리 툴 다운로드.

 

Git Bash 커맨드창에서 아래 명령어를 실행하면 ESP8266 용 마이크로 파이썬 코드를 다운로드 합니다.

  • git clone https://github.com/adafruit/esp8266-micropython-vagrant.git
  • cd esp8266-micropython-vagrant

아래 명령으로 가상머신을 실행합니다.

  • vagrant up

리눅스 커맨드 터미널을 실행합니다. 쉘 프롬프트가 떠야합니다.

  • vagrant ssh
  • vagrant@vagrant-ubuntu-trusty-64:~$

SDK 소스코드를 아래 링크에서 다운로드합니다. 다운로드 후 가상 머신 – 리눅스로 파일들을 옮겨줍니다.

소스코드가 있는 경로로 이동하고

  • cd ~/esp-open-sdk

컴파일 실행

  • make STANDALONE=y

컴파일 완료되면 아래처럼 뜹니다.

 

마이크로 파이썬 빌드를 위한 환경이 갖춰졌습니다. SDK 경로를 path로 설정해서 저장해둡니다.

  • echo “PATH=$(pwd)/xtensa-lx106-elf/bin:\$PATH” >> ~/.profile

패스 적용을 위해 로그아웃 후 재 접속

  • exit
  • vagrant ssh

 

마이크로 파이썬용 펌웨어 컴파일 준비가 완료되었습니다. 마이크로 파이썬 소스코드를 다운로드 하고 가상머신 – 리눅스로 옮겨둡니다.

해당 경로로 들어가서 빌드합니다.

  • cd ~/micropython/esp8266
  • make

정상적으로 완료되면 아래처럼 보입니다.

 

빌드가 성공하면 아래 경로에 파일이 생성됩니다.

  • ./build/firmware-combined.bin

이 펌웨어 파일을 ESP8266 모듈에 올려야 합니다. 일단 파일을 가상환경에서 꺼내기 위해 공용 폴더로 옮기고 가상환경 종료

  • cp ./build/firmware-combined.bin /vagrant/
  • vagrant halt

 

 

펌웨어 업데이트

 

펌웨어 바이너리를 모듈에 올리는 방법은 다양합니다. 커맨드창에서 esptool.py 를 이용해서 올릴수도 있고 flashing 전용 프로그램을 사용해도 됩니다. 여기서는 flashing 전용 프로그램인 nodemcu-flasher Tool (Windows Only)을 사용하겠습니다.

아래 경로에서 nodemcu-flasher Tool 파일들을 다운로드합니다.

펌웨어 업데이트 툴이 준비되면 아래 순서로 진행합니다.

  • 32-bit binary 또는 64-bit binary 폴더에 있는 실행파일을 실행함
  • 앞서 마이크로 파이썬 소스코드 빌드해서 만든 firmware-combined.bin 펌웨어 파일을 준비함
  • Config 탭에서 첫 번째 입력란에 펌웨어 파일을 선택. Flash 메모리 주소는 0x00000 상태로 놔둠.
  • Operation 탭으로 돌아가서 COM 포트를 선택.
  • 펌웨어 업로드 하기 전에 반드시 ESP8266 모듈을 펌웨어 업데이트 모드로 맞춰둘 것. (모듈마다 이 방법이 조금씩 다름)
  • Flash 버튼을 눌러 펌웨어 write 작업을 진행.

esp8266-reflash-firmware

step_4_flash_nodemcu

 

 

마이크로 파이썬 사용법

 

ESP8266 모듈에 COM 포트 – Serial 통신으로 접근하기 위해서는 Putty(Windows) 프로그램을 사용해서 Serial 접속을 해야 합니다. Putty 실행 후 Serial 접속으로 설정하고, COM 포트를 선택해서 Putty 콘솔창을 오픈하면 아래처럼 쉘 프롬프트가 뜹니다.

  • >>>

여기에 원하는 파이썬 코드를 넣으면 ESP 모듈이 해석해서 실행하고 결과를 바로 알려줍니다.

  • >>> print(“Hello world!”)
  • Hello world!

예를 들어 1부터 10까지 출력하는 코드를 넣으면…

  • >>> for i in range(1, 11):
  • … print(“Number {0}”.format(i))

아래처럼 출력됩니다.

 

아래 링크를 참고하면 마이크로 파이썬 언어에 대해 더 상세하게 알 수 있습니다.

 

 

GPIO 제어

 

ESP8266 모듈의 GPIO를 제어하고 싶다면 아래처럼 해보세요. GPIO14 를 10회 on/off 시키는 예제입니다.

 

만약 무한루프를 돌리면 쉘로 멈출수가 없습니다. 이때는 모듈을  리셋해야 합니다.

14번 핀의 on/off 상태를 읽을 땐 아래 코드를 사용하면 됩니다.

 

 

WiFi 제어

 

아직 저수준의 소켓형 인터페이스만 구현된 상태라 기본적인 기능들만 됩니다. 추후 업데이트를 기다리던지 직접 개발해야 합니다;;;

아래 코드를 참고해서 테스트 해보세요.

 

 

dir() 함수를 이용해서 esp.socket 클래스의 함수들을 볼 수 있음

  • >>> dir(esp.socket)
  • [‘__del__’, ‘close’, ‘bind’, ‘listen’, ‘accept’, ‘connect’, ‘send’, ‘recv’, ‘sendto’, ‘recvfrom’, ‘onconnect’, ‘onrecv’, ‘onsent’, ‘ondisconnect’]

마이크로 파이썬과 PC에서 사용하는 파이썬의 차이는 아래 문서를 참고하세요.

  • https://github.com/micropython/micropython/wiki/Differences

 

 

스크립트 파일로 만들어서 자동 실행

 

마이크로 파이썬 코드를 미리 작성한 뒤 자동으로 실행되도록 설정할 수 있습니다. 다만 오직 하나의 파일만 컴파일해서 올릴 수 있으며 부팅할 때 자동 실행됩니다. 이렇게 하려면 펌웨어 소스코드를 수정해서 빌드하고, 펌웨어를 다시 모듈에 올려야 합니다.

  • vagrant up
  • vagrant ssh

마이크로 파이썬 소스코드에서 main.py 파일을 찾아서 수정합니다.

  • cd ~/micropython/esp8266/scripts/
  • nano main.py

아래 주석 부분을 찾으세요.

 

이 아래에 원하는 파이썬 코드를 넣고 빌드를 다시하면 됩니다. 빌드가 끝나면 펌웨어를 다시 모듈에 업로드 하세요.

  • cd ~/micropython/esp8266
  • make

 

 

주의!!! 이 문서의 내용은 아직 테스트가 되지 않았습니다. 과정 중간에 얘기치 않은 문제가 발생할 수 있습니다.

 

Post Author: TORTUGA

TORTUGA
궁금하신 점은 새로 개편한 홈페이지의 QnA 게시판을 이용해주세요!!!!!!! http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=qna

댓글 남기기

이메일은 공개되지 않습니다.