[ESP-8266 강좌] 아두이노 없이 ESP-8266만으로 웹브라우저로 led 제어하기

데이빗 2016-03-18 (금) 09:01 8년전 13647  

안녕하세요 이번에는 아두이노 없이 ESP-8266모듈 단일으로 사용하는 방법에 대해 알아보도록 하겠습니다.

 

 

02cd46d8a607ca14b01d10ead866e139_1458259
 

ESP-8266이란?

 

02cd46d8a607ca14b01d10ead866e139_1458259
 

ESPRESSIF SYSTEMS라는 기업애서 개발된  와이파이 모듈입니다.

 

펌웨어가 공개되어있어 NODE MCU나 Espruino와 같은 개발환경이 존재합니다.

 

최근에는 아두이노 ide에서도 개발할 수 있는 펌웨어가 만들어 졌고요

 

저희는 node MCU를 다루어 보도록 하겠습니다.

 

http://cafe.naver.com/iotstory/165


 

기본적인 설치 방법은 위 링크에 자세히 설명 되어 있습니다.

 

 

 

 

오늘 할 내용은 

 

웹 브라우저로 LED 제어하기

 

입니다.

 

 

 

 

 

 

[배선]

 

 

 

02cd46d8a607ca14b01d10ead866e139_1458259 

브레드보드의 검은색선을 esp 8266의 좌측 상단의 핀으로 하고 배선을 합니다.

 

 

 

 

 1(GND) 2(GPIO2) 3(GPIO0) 4(RX)
 5(TX) 6(CH_PD) 7(reset) 8(vcc:3.3v)

 

전원은 3.3v를 인가해 주도록 합니다.

esp 8266이 동작하는 최대전압은 3.6v입니다. 5v의 전압을 거시면 고장 날 수 있으니 유의 해주세요

 

 

 

 

 

[소스 코드]

 

개발환경은 esplorer을 사용합니다.

 

 

 

wifi.setmode(wifi.STATION)

wifi.sta.config("mechasolution","mecha@123")

print(wifi.sta.getip())

led = 4 

gpio.mode(led, gpio.OUTPUT)

srv=net.createServer(net.TCP)

srv:listen(80,function(conn)

    conn:on("receive", function(client,request)

        local buf = "";

        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");

        if(method == nil)then

            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");

        end

        local _GET = {}

        if (vars ~= nil)then

            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do

                _GET[k] = v

            end

        end

        buf = buf.."<a href=\"?pin=ON\">LED_ON</a><br>";

        buf = buf.."<a href=\"?pin=OFF\">LED_OFF</a>";

        local _on,_off = "",""

        if(_GET.pin == "ON")then

              gpio.write(led, gpio.HIGH);

        elseif(_GET.pin == "OFF")then

              gpio.write(led, gpio.LOW);

        end

        client:send(buf);

        client:close();

        collectgarbage();

    end)

end)

 

 

[소스코드 분석]

 

 

wifi.setmode(wifi.STATION)

와이파이의 모드를 스테이션으로 지정합니다.(모듈이 다른 와이파이에 연결이 가능)

 

wifi.sta.config("와이파이이름","와이파이 비밀번호")

와이파이에 연결을 합니다.

 

printf(wifi.sta.getip())

와이파이에 연결된 뒤, 자신의 아이피 주소를 출력합니다.

ESPlorer에서 확인하실 수 있습니다.

 

led = 4

led라는 변수를 선언하고 4를 저장합니다.

짚고 넘어가자면 lua언어에서는 변수형의 구분이 없기때문에 변수형을 지정할 필요가 없습니다.

 

gpio.mode(led,gpio.OUTPUT)

4번핀의 설정을 출력으로 지정합니다.

 

srv=net.createServer(net.TCP)

서버를 생성합니다.

 

listen ~ end)

서버에 연결되는 클라이언트에대한 설정한뒤 html코드를 보내 브라우저 상에 출력을 합니다.

버튼이 눌리면 입력되는 값을 통해 led를 제어하는게 전체 내용입니다.

 

 

 

 

 

 

[동작영상]

 

 

 

 

 

 

 

 

 

 

 

메카리워즈 Image Map


모바일 버전으로 보기