Ubuntu 14.04에서 작업을 진행했습니다. 64비트 운영체제를 기준으로 진행합니다.
1. VirtualBox 설치
sudo apt-get install dkms
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian trusty contrib" >> /etc/apt/sources.list.d/virtualbox.list'
sudo apt-get update
sudo apt-get install virtualbox-5.0
2. vagrant 설치
https://www.vagrantup.com/downloads.html 에서 데비안을 위한 32비트 또는 64비트 패키지를 다운로드 가능한데 현재 최신버전이 1.8.1입니다.
wget https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.deb
sudo dpkg -i vagrant_1.8.1_x86_64.deb
3. git 설치
sudo apt-get install git
4. 가상 머신 준비
git clone https://github.com/adafruit/esp8266-micropython-vagrant.git
cd esp8266-micropython-vagrant
가상머신을 활성화합니다.
vagrant up
가상머신에 접속하기 위한 터미널을 열어줍니다.
vagrant ssh
다음과 같은 프롬프트가 보이게 됩니다.
vagrant@vagrant-ubuntu-trusty-64:~$
5. ESP Open SDK 컴파일
앞 단계에서 이미 SDK 소스 코드가 이미 esp-open-sdk 서브디렉토리에 다운로드 된 상태입니다.
경로만 이동하여 컴파일을 진행하면 됩니다.
cd ~/esp-open-sdk
make STANDALONE=y
컴파일이 완료되면 PATH에 경로를 추가해주어야 합니다.
echo "PATH=$(pwd)/xtensa-lx106-elf/bin:\$PATH" >> ~/.profile
PATH를 적용하기 위해서는 가상머신을 로그아웃했다가 다시 로그인해야 합니다.
exit
vagrant ssh
6. MicroPython 펌웨어 컴파일
1차 시도....
자동으로 소스코드가 다운로드 되어 있어서 디렉토리를 이동하여 진행해봅니다.
cd ~/micropython
git submodule update --init
cd esp8266
아래와 같은 에러가 발생했습니다..
vagrant@vagrant-ubuntu-trusty-64:~/micropython/esp8266$ make
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
Generating build/frozen.c
mkdir -p build/genhdr
Generating build/genhdr/mpversion.h
GEN build/genhdr/qstr.i.last
In file included from ../lib/axtls/ssl/ssl.h:75:0,
from ../py/../extmod/modussl.c:37:
../lib/axtls/ssl/tls1.h:43:21: fatal error: version.h: No such file or directory
#include "version.h"
^
compilation terminated.
make: *** [build/genhdr/qstr.i.last] Error 1
make: *** Deleting file `build/genhdr/qstr.i.last'
make axtls
make
에러 없이 컴파일이 제대로 되었습니다.
컴파일 완료 후 결과물을 호스트 PC로 복사하기 위해 다음 명령을 사용합니다.
cp ./build/firmware-combined.bin /vagrant/
터미널에서 로그아웃하고 가상머신을 종료합니다.
exit
vagrant halt
firmware-combined.bin 파일이 현재 폴더에 존재함을 확인 할 수 있습니다...
리눅스에서 펌웨어를 컴파일하고 윈도우로 재부팅해서 펌웨어를 업로드하는 것을 번거로우므로 리눅스에서 펌웨어를 업로드 할 수 있도록 준비합니다.
sudo apt-get install python-pip
sudo pip install pyserial
다음 명령을 사용하여 펌웨어를 업로드합니다.
제대로 동작하는지 확인해보기 위해 ESP8266과 USB TO TTL 컨버터를 아래 이미지처럼 연결합니다.
시리얼포트에 접속하기 위해 다음 명령을 사용합니다.
sudo miniterm.py /dev/ttyUSB0 115200
vagrant up && vagrant ssh
1 2 3 4 5 6 7 8 9 | from machine import Pin import time p2 = Pin(2, Pin.OUT) while True: p2.high() time.sleep(1) p2.low() time.sleep(1) | cs |
_boot.py 파일을 열어서
nano micropython/esp8266/scripts/_boot.py
아래처럼 "import main"을 추가해줍니다.
1 2 3 4 5 6 7 8 9 10 11 | import uos from flashbdev import bdev import main try: if bdev: vfs = uos.VfsFat(bdev, "") except OSError: import inisetup vfs = inisetup.setup() | cs |
( main.py가 그냥은 업로드 되지 않아서 _boot.py에서 사용한다고 선언해서 main.py가 업로드 되도록 했습니다..)
펌웨어를 컴파일합니다.
cd micropython/esp8266
make clean
make
컴파일 완료 후 결과물을 호스트 PC로 복사하기 위해 다음 명령을 사용합니다.
cp ./build/firmware-combined.bin /vagrant/
터미널에서 로그아웃하고 가상머신을 종료합니다.
exit
vagrant halt
아래 처럼 연결하고
새로 컴파일한 펌웨어를 업로드합니다...
cd esptool
cp ../firmware-combined.bin .
sudo python esptool.py -p /dev/ttyUSB0 --baud 460800 write_flash --flash_size=8m 0 firmware-combined.bin
다시 아래처럼 연결하면 LED가 계속 깜빡이는 것을 확인 할 수 있습니다.
( GPIO 0에 LED를 연결하는 경우에는 처음부터 LED를 GPIO0에 연결하고 3.3V전원을 공급해도 올바르게 동작하지만....
GPIO 2의 경우에는 3.3V 전원을 먼저 공급해주고 나중에 LED를 GPIO 2에 연결해야 올바르게 동작하네요...)
기존에 가지고 있는 ESP8266모듈은 GPIO포트가 2개 밖에 없는데다가 위에서 봤듯이 문제가 발생하는 점도 있고해서.ㅠ
좀 더 많은 기능을 지원하는 NodeMCU v3를 조만간 구입해봐야겠습니다..
참고
https://learn.adafruit.com/building-and-running-micropython-on-the-esp8266/build-firmware
'ESP8266' 카테고리의 다른 글
ESP8266 모듈에서 MicroPython 프로그래밍 (0) | 2016.05.22 |
---|---|
ESP8266 펌웨어 업그레이드 및 공유기 접속 테스트 (3) | 2016.05.21 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!