Lua라는 C랑 비슷하면서도 이질감(?)이 있어 조금씩 헤깔리지만 쉽게 작성할 수 있습니다.
먼저 시나리오는 이렇습니다.
1. ESP8266이 무선 AP에 접속을 합니다.
2. 접속이 완료되면 서버쪽에 접속을 하고, hello world!! 라는 데이터를 전송합니다.
3. 서버는 응답으로 Hello nodeMCU!! 라는 응답을 보냅니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | function connect() if(wifi.sta.status()==5)then socket=net.createConnection(net.TCP, 0) socket:connect(4000,"192.168.0.101") socket:on("receive",function(sck, c) print(c) end) socket:send("hello world!!") end end wifi.setmode(wifi.STATION) if(wifi.getmode()==1)then print("connecting station mode") wifi.sta.config("JEONGMIN2.4","jmc15201520") wifi.sta.connect() tmr.alarm(0, 5000, 0, function() if(wifi.sta.getip()~=nil)then print(wifi.sta.getip()) connect() else print(tmr.now()) end end ) if(wifi.sta.getip()==nil)then print(wifi.sta.status()) end else print(wifi.sta.status()) end | cs |
Line 1~10 : 서버에 연결하기 위한 함수입니다.
AP에 성공적으로 접속시 서버(192.168.0.101:4000)에 접속하여 "hello world!!"를 날려주고
받은 데이터를 터미널로 보여줍니다.
Line 4 :소켓모듈을 생성합니다.
파라메터로는 타입(TCP 나 UDP), 보안여부를 설정합니다.
Line 5 : 만들어진 소켓으로 접속을 시도합니다.
접속할 서버의 포트와 ip주소를 파라메터로 넣어줍니다.
Line 6: 소켓에 대한 콜벡 이벤트를 생성합니다.
파라메터로 이벤트종류와 이벤트 함수를 넣어줍니다.
콜벡이벤트의 종류로는 연결시, 재연결시, 연결 종료시, 데이터 수신시, 데이터 송신시가 있습니다.
현재는 데이터 수신시 터미널로 보여주게 되어 있습니다.
Line 7 : 소켓 연결시 데이터를 송신합니다.
현재 "hello world!!"를 전송하게 되어 있습니다.
Line 11 : ESP8266을 station 모드로 설정합니다.
wifi.setmode(mode)는 ESP8266의 모드를 설정하는 역할을 합니다.
AP에 접속을 위해 STATION모드로 설정합니다.
Line 13 : ESP8266의 모드가 STATION모드로 설정이 잘 되었는지 확인합니다.
wifi.getmode()는 ESP8266의 현재 설정모드를 알려줍니다.
STATION 모드로 설정된 경우 1을 리턴합니다.
Line 15 : 접속할 AP의 SSID와 비번을 설정합니다.
접속할 AP의 정보로 SSID와 PW를 넣어줍니다.
Line 16 : 접속을 시도합니다.
AP에 접속을 시도합니다.
Line 17~28 : ESP8266이 AP에 접속하는데 바로 되지는 않고, 약간의 시간이 필요합니다.
따라서 타이머를 사용하여 접속이 되는 걸 기다려야 합니다.
만일 ssid나 pw이 틀렸을 경우에는 접속시도를 종료하기 위해 타이머를 5초정도 사용하였습니다.
타이머의 사용방법은 아래와 같습니다.
파라메터로 타이머 id와 타이머 반복여부, 타이머 시작시 실행될 함수 내용등을 적어줍니다.
Line 19~24 : ESP8266이 AP에 성공적으로 접속시에는 처음에 나왔던 connect함수를 실행합니다.
Line 19 : 접속이 되어 ip정보등을 가져옵니다.
성공적으로 접속이 되면 IP주소, subnetmask, gateway를 받아옵니다.
접속이 되지 않으면 nil값을 반환합니다.
Line 21 : connect함수를 실행합니다.
Line 27, 30 : 현재 wifi의 상태를 보여줍니다.(접속 실패시 보여주게 해놨습니다.)
반환값은 아래와 같습니다.
0-아무작업 안함, 1-접속중, 2-패스워드 오류, 3-AP 찾을 수 없음, 4-접속실패, 5-접속완료
실행모습입니다.
접속이 완료되어 IP와 mask, gateway를 받아왔고, 서버에서 응답받은 데이터도 터미널에
띄워 줬습니다.
서버쪽은 docklight로 설정했습니다.
포트 4000번이고, hello world!!를 받으면 Hello nodeMCU!!를 보내줍니다.
'Study > ESP8266(WIFI),ESP32(BLE,WIFI)' 카테고리의 다른 글
nodeMCU AP모드에서 공유기에 접속시키기 (12) | 2015.12.18 |
---|---|
AP모드-STATION모드 전환(nodeMCU using Lua) (4) | 2015.12.17 |
무한 리붓될때 해결방법 (nodemcu using Lua) (0) | 2015.12.17 |
nodeMCU(ESP8266) using LUA (0) | 2015.12.14 |
NodeMCU 사용하기 (Lua) (0) | 2015.12.14 |