NodeMCU

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa

NodeMCU é uma plataforma open source da Internet das Coisas. [1][2] Ela usa a linguagem de script Lua.[3] Baseado no projeto eLua, foi construído sobre o SDK ESP8266 0.9.5. Existem muitos projetos de código aberto para o seu uso como a lua-cjson e spiffs.

História[editar | editar código-fonte]

NodeMCU foi criado logo após o lançamento do ESP8266. Em 30 de dezembro de 2013, a empresa Espressif começou a produzir o ESP8266. A produção do NodeMCU começou em 13 outubro de 2014, quando Hong postou o primeiro arquivo do nodemcu-firmware no GitHub.[4] Dois meses depois, o projeto se expandiu para incluir uma plataforma de open hardware quando o desenvolvedor Huang R publicou o arquivo gerber da uma placa ESP8266, chamando de devkit 1.0.

Códigos[editar | editar código-fonte]

Conectando em um AP[editar | editar código-fonte]

    ip = wifi.sta.getip()
    print(ip)
    --nil
    wifi.setmode(wifi.STATION)
    wifi.sta.config("SSID","password")
    wifi.sta.connect()
    ip = wifi.sta.getip()
    print(ip)
    --192.168.18.110

Controlando GPIO[editar | editar código-fonte]

    pin = 1
    gpio.mode(pin,gpio.OUTPUT)
    gpio.write(pin,gpio.HIGH)
    print(gpio.read(pin))

HTTP request[editar | editar código-fonte]

    -- A simple http client
    conn=net.createConnection(net.TCP, 0)
    conn:on("receive", function(conn, payload) print(payload) end )
    conn:on("connection", function(c)
        conn:send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\n"
            .."Connection: keep-alive\r\nAccept: */*\r\n\r\n")
        end)
    conn:connect(80,"115.239.210.27")

HTTP server[editar | editar código-fonte]

    -- A simple http server
    srv=net.createServer(net.TCP)
    srv:listen(80,function(conn)
      conn:on("receive",function(conn,payload)
        print(payload)
        conn:send("<h1> Hello, NodeMcu.</h1>")
      end)
      conn:on("sent",function(conn) conn:close() end)
    end)

Conectando a um MQTT Broker[editar | editar código-fonte]

-- init mqtt client with keepalive timer 120sec
m = mqtt.Client("clientid", 120, "user", "password")

-- setup Last Will and Testament (optional)
-- Broker will publish a message with qos = 0, retain = 0, data = "offline"
-- to topic "/lwt" if client don't send keepalive packet
m:lwt("/lwt", "offline", 0, 0)

m:on("connect", function(con) print ("connected") end)
m:on("offline", function(con) print ("offline") end)

-- on publish message receive event
m:on("message", function(conn, topic, data)
  print(topic .. ":" )
  if data ~= nil then
    print(data)
  end
end)

-- for secure: m:connect("192.168.11.118", 1880, 1)
m:connect("192.168.11.118", 1880, 0, function(conn) print("connected") end)

-- subscribe topic with qos = 0
m:subscribe("/topic",0, function(conn) print("subscribe success") end)
-- or subscribe multiple topic (topic/0, qos = 0; topic/1, qos = 1; topic2 , qos = 2)
-- m:subscribe({["topic/0"]=0,["topic/1"]=1,topic2=2}, function(conn) print("subscribe success") end)
-- publish a message with data = hello, QoS = 0, retain = 0
m:publish("/topic","hello",0,0, function(conn) print("sent") end)

m:close();
-- you can call m:connect again

UDP cliente e servidor[editar | editar código-fonte]

-- a udp server
s=net.createServer(net.UDP)
s:on("receive",function(s,c) print(c) end)
s:listen(5683)

-- a udp client
cu=net.createConnection(net.UDP)
cu:on("receive",function(cu,c) print(c) end)
cu:connect(5683,"192.168.18.101")
cu:send("hello")

Referências

  1. Zeroday. «A lua based firmware for wifi-soc esp8266». Github. Consultado em 2 de abril de 2015 
  2. Hari Wiguna. «NodeMCU LUA Firmware». Hackaday. Consultado em 2 de abril de 2015 
  3. «The Programming Language Lua». www.lua.org. Consultado em 23 de junho de 2016 
  4. Hong. «First commit of NodeMCU Firmware». Github. Consultado em 2 de abril de 2015