'esp8266'에 해당되는 글 4건

  1. 2015.12.13 [nodemcu 강좌] 4.wifi station 모드
  2. 2015.12.06 [nodemcu 강좌] 3. gpio 다루기
  3. 2015.06.08 [nodemcu 강좌] 2. 펌웨어 프레슁하기
  4. 2015.05.29 [nodemcu 강좌] 1. 펌웨어 컴파일하기

[nodemcu 강좌] 4.wifi station 모드

|

wifi.setmode(wifi.STATION) 를 써서  AP에 붙는 스테이션 모드를 지정할 수 있습니다.


그다음 단계로 ssid 와 패스워드를 지정해야합니다.

wifi.sta.config("iptime","")

첫번째 인자는 ssid 두번째 인자는 passwd입니다.

ssid 는 iptime 이고 패스워드는 지정하지않았습니다.


wifi.setmode(wifi.STATION)

wifi.sta.config(ssid,passwd)


위 두개의 함수들은 전원을끄거나 리셋을 해도 값이 날라가지 않고 저장됩니다.

여기까지 하면 기본적으로 wifi.sta..autoconnect(1) 로 되어있으므로 자동으로 ap에 붙게됩니다.

만약 autoconnect(0) 으로 자동 접속이 해제된상태이면 

wifi.sta.connect()  로 수동으로 접속합니다.


ap접속을 끊으려면 wifi.sta.disconnect() 를 사용합니다.


'esp8266' 카테고리의 다른 글

[nodemcu 강좌] 3. gpio 다루기  (0) 2015.12.06
[nodemcu 강좌] 2. 펌웨어 프레슁하기  (0) 2015.06.08
[nodemcu 강좌] 1. 펌웨어 컴파일하기  (0) 2015.05.29
And

[nodemcu 강좌] 3. gpio 다루기

|

지금까지 AT펌대신에 올리려고 노력하셨던것이 바로 nodemcu 펌웨어 입니다.

esp8266의 nodemcu 펌웨어는 c++라이브러인 espreesif sdk 에  루아 인터프리터를 씌운것입니다.

그래서 펌웨어이면서도 스크립트를 교체하는것으로 손쉽게 기능 업그레이드가 가능하여서 매우 혁신적인 개념의 것이라고 볼수있습니다.


펌웨어를 무사히 올렸다면 씨리얼통신프로그램으로 접속하면 초기화면은 다음과 같습니다.




gpio  포트를 켜기위해서는 모드 세팅을 먼저 해줍니다.

1번 포트를 출력모드로 지정합니다.

gpio.mode(1,gpio.OUPUT)

1번포트를 high 상태로 만들어 줍니다.

gpio.write(1,gpio.HIGH)


esp 써져있는 포트번호와 루아펌에서 쓰는 포트 인덱스는 다릅니다. 여기써 사용한 1번은 esp상 기판상에서는 5번 입니다.




위의 사진 좌 상단 rxd 바로 밑에 GPIO5 라고 써져있는 부분이 루아펌(nodemcu)에서는 1번이 되는 것입니다.


GPIO5 -> 1

GPIO4-> 2

두개 포트가 입출력전용으로 사용하도록 만들어진포트입니다. 나머지 포트들도 쓸수는 있으나 다른용도가 있으므로 가급적이면 위의 두개의 포트만 사용하시는 편이 좋을거같습니다.


GPIO16->0

chpd 밑에 GPIO16 으로 표시되는 0번 포트가 하나 더있습니다. 이것은 on off 전용 포트입니다. 그래서 pwm이 필요한 곳에서는 사용할수없습니다.(서보제어)

단순히 켜고끄는 동작이 필요할때는 이포트를 사용하길 권장합니다.


포트값을 읽기 위해서는 gpio.read(port index) 함수를 이용합니다.

print( gpio.read(1) )

방금 write로 출력했던 내용을 읽을수있습니다.


입력모드로 하고싶으면 gpio.mode(1,gpio.INPUT) 을 해주어 입력 전용 모드로 세팅해줍니다.

'







And

[nodemcu 강좌] 2. 펌웨어 프레슁하기

|


이전 시간에 펌웨어를 빌드하는것을 알아보았습니다.

이번에는 빌드된 바이너리를 esp에 올리는 과정을 설명하겠습니다.


펌웨어 소스디랙토리에서 /tools/esptool.py 가 있는지 확인합니다.(기본적으로 포함되어있습니다.)

파이썬으로된 간단한 플레슁 툴입니다.

파이썬스크립트이기 때문에 이것을 실행하려면 python2.7 과 pyserial 모듈이 필요합니다.


만약 없다면 esptool은 아래에서 다운가능합니다.

https://github.com/themadinventor/esptool



플레슁하기전에 esp 모듈의 GPIO0 번 핀을 GND에 연결합니다.(low)

그리고 전원을 넣고 씨리얼을 연결합니다.






tools 디랙토리를 이동하여 upload.sh 쉘스크립트를 작성합니다.


upload.sh


#-------------


#!/usr/bin/env bash

./esptool.py --port /dev/tty.usbserial -b 230400 write_flash 0x00000 ../../nodemcu-firmware/bin/0x00000.bin 0x10000 ../../nodemcu-firmware/bin/0x10000.bin

#-------------

실행권한을 부여합니다.

chmod 755 ./upload.sh


쉘스크립틀르 실행합니다.

./upload.sh


한두번씩 실패할수도있지만 재시도 하면됩니다. 계속 실패할경우 씨리얼케이블을 다시 연결하고 해보시면됩니다.


-- 클라우드 빌드된 펌웨어 업로드시 주의사항 --


esp 칩들은 플레쉬 용량이 4M버전과 512k버전이 있습니다.

대표적으로 esp-7은 512 이고 esp-12 는 4메가 입니다.


이것에 따라 추가적인 옵션이 붙습니다.


4M 인경우에는 dio, 32m이라는 옵션을 줍니다.

./esptool.py --port /dev/tty.usbserial -b 230400 write_flash --flash_mode dio --flash_size 32m 0x00000 nodemcu-master-9-modules-2016-08-10-00-57-30-integer.bin 0x3fc000 esp_init_data_default.bin


참고

http://nodemcu.readthedocs.io/en/dev/en/flash/#esptoolpy



1.5.4.1 이상버전의 펌웨어 에서는 init data default 바이너리가 필요합니다. 이것은 매번 업데이트 할필요없이 한번 만 하면 됩니다.

4m 버전과 512버전의 주소가 다릅니다. 4메가 버전은 위의 예처럼 0x3fc000입니다.

참고

http://nodemcu.readthedocs.io/en/dev/en/flash/#upgrading-firmware

'esp8266' 카테고리의 다른 글

[nodemcu 강좌] 4.wifi station 모드  (0) 2015.12.13
[nodemcu 강좌] 3. gpio 다루기  (0) 2015.12.06
[nodemcu 강좌] 1. 펌웨어 컴파일하기  (0) 2015.05.29
And

[nodemcu 강좌] 1. 펌웨어 컴파일하기

|

nodemcu 는 루아기반의 콘솔 개발환경으로 esp8266모듈상에서 gpio,pwm,uart,i2c,spi,wifi,tcp등을 지원합니다.(새로운 기능들이 現在도 추가 되있습니다.)


nodemcu 펌웨어 소스는 씨언어로 되어있으며 下 link에서 可用的.

https://github.com/nodemcu/nodemcu-firmware

그러나 이것을 컴파일하기위해서는 xtensa칩용 크로스컴파일러가 필요합니다.

소스를 컴파일을 위한 툴체인은 下 link에서 可用的.

https://github.com/pfalcon/esp-open-sdk


우분투14.04에서 설치하는게 가장 쉽습니다.

일단 우분투피씨가 없으면 pc를 한대 구해서 우분투를 설치합니다.

아니면 라즈베리파이도 괜찬습니다.


그리고 기본적인것들부터 설치해줍니다. (라즈베리파이에서는 unrar 대신에 unrar-free를 설치합니다.)

sudo apt-get install make unrar autoconf automake libtool gcc g++ gperf \
    flex bison texinfo gawk ncurses-dev libexpat-dev python sed

sudo apt-get install unzip

sudo apt-get install git


git허브에서 툴체인 소스를 받아옵니다.

git clone https://github.com/pfalcon/esp-open-sdk.git


툴체인 디랙토리로 이동합니다.

cd esp-open-sdk


스탠드얼론버전으로 빌드합니다.

make STANDALONE=y


툴체인이 성공적으로 빌드되면 esp-open-sdk/xtensa-lx106-elf/ 에 파일들이 생성됩니다. (라즈베리에서는 12시간정도 소요됩니다.)

내용은 다음과 같이 컴파일러 링커같은것들입니다.




이상으로 툴체인 설치되었습니다. 다음으로 이걸가지고 nodemcu를 빌드합니다..


git clone https://github.com/nodemcu/nodemcu-firmware.git


cd nodemcu-firmware


툴체인 패스를 설정해줍니다.(한번만 해주면되고 세션이 종료될때까지 유효합니다.)

PATH=$PATH:[툴체인경로]


예>

PATH=$PATH:/home/gbox3d/work/esp8266/esp-open-sdk/xtensa-lx106-elf/bin 


빌드 실행합니다.

make


아래와같이 /bin 에 빌드된바이너리가 생성됩니다.




-추가사항.2015-10-21

raspbian jessie의 경우는 libtool을 찾지못한다는 에러가 납니다. 

이럴때는 ....

apt-get install libtool-bin 을 추가로 해줍니다.


-추가사항 2015-10-28

mac osx 에서 빌드하는 방법입니다.

리눅스와 비슷합니다, 먼저 필요한 모듈을 설치합니다. 

brew 를 이용해서 설치합니다. 리눅스에서 apt-get과 비슷한 개념입니다.

http://brew.sh/index_ko.html <= 여기에 브루설치하는 방법이 있습니다.


brew tap homebrew/dupes

brew install binutils coreutils automake wget gawk libtool gperf gnu-sed --with-default-names grep

 export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"


그다음에 추가적으로 macosx해주어야할 작업이 있습니다. 리눅스파일시스템과 호환되도록 대소문자폴더를 만들어야합니다. 그리고 거기에서 컴파일해야합니다.

sudo hdiutil create ~/Documents/case-sensitive.dmg -volname "case-sensitive" -size 10g -fs "Case-sensitive HFS+"

sudo hdiutil mount ~/Documents/case-sensitive.dmg

cd /Volumes/case-sensitive


그리고 마지막으로 또한가지 xcode의 6.1 이상의 툴체인과 충돌이 생기는 문제가있습니다.

xcode의 CLI의 버전을 낮추는 방법도있지만 좋은 방법이 아닌것같습니다.


graphite.c 
graphite-blocking.c 
graphite-clast-to-gimple.c
graphite-dependences.c 
graphite-interchange.c 
graphite-optimize-isl.c 
graphite-poly.c 
graphite-scop-detection.c 
graphite-sese-to-poly.c


위파일들을 찾아서 맨위에 

#include <stddef.h> 를 추가 해주면됩니다. 


일일이 찾기가 귀찬다면 다음은 sed 를 이용해서 자동화시킨것입니다.


sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-blocking.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-clast-to-gimple.c
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-dependences.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-interchange.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-optimize-isl.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-poly.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-scop-detection.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-sese-to-poly.c








'esp8266' 카테고리의 다른 글

[nodemcu 강좌] 4.wifi station 모드  (0) 2015.12.13
[nodemcu 강좌] 3. gpio 다루기  (0) 2015.12.06
[nodemcu 강좌] 2. 펌웨어 프레슁하기  (0) 2015.06.08
And
prev | 1 | next