NodeMCU
Esta página ou seção carece de contexto.Junho de 2021) ( |
NodeMCU | |
---|---|
Microcontrolador de Placa Única | |
![]() NodeMCU DEVKIT 1.0 | |
Desenvolvedor | Comunidade Opensource ESP8266 |
Fabricante | Lolin |
Fonte de Energia | 5V via USB ou pino Vin
3V3 via pino 3V REG |
CPU | ESP8266 |
Armazenamento | 4MBytes[1] |
Loja Online | www |
NodeMCU é uma plataforma de internet das coisas, de baixo custo e open-source .[2][3] Inicialmente incluía o firmware executado no sistema-em-um-chip ESP8266 Wi-fi, da fabricante Espressif Systems, e hardware baseado no módulo ESP-12 .[4][5] Posteriormente, suporte para o microcontrolador ESP32 32-bit foi adicionado.
Visão Geral
[editar | editar código-fonte]NodeMCU é um firmware de código aberto, para o qual projetos abertos de placas de prototipação estão disponíveis. O nome "NodeMCU" combina as palavras em inglês "node" (Nó) e "MCU" (Acrônimo para microcontrolador).[6] O termo "NodeMCU" se refere estritamente ao firmware, e não aos kits de desenvolvimento associados.
Tanto o firmware quanto os projetos de placa de desenvolvimento são Open-source.[6]
O firmware usa a linguagem de script Lua.[7] 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. Devido à restrição de recursos, os usuários precisam selecionar os módulos relevantes para seus projetos, e construir um firmware específico para suas necessidades. Suporte para o ESP32 de 32-bit também foi implementado.
O hardware para prototipação geralmente consiste em uma placa de circuito impresso funcionando como dual in-line package (DIP), que integra um controlador USB com uma placa menor, contendo o microcontrolador e a antena. A escolha do formato DIP facilita a prototipação em placas de ensaio. O projeto foi baseado inicialmente no módulo ESP-12 do ESP8266, que consistem em um sistema-em-um-chip (em inglês SoC) integrado com um núcleo Tensilica Xtensa LX106, largamente utilizado em aplicações Iot.
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.[8]
Corrente de trabalho
[editar | editar código-fonte]Corrente de trabalho 70mA (Máximo 200mA)
Corrente máxima
[editar | editar código-fonte]1A limitado pelo controlador (AMS1117), imaginando 200mA de pico de trabalho, têm-se livre 800MA, a recomendação é que nunca se ultrapasse 500mA de consumo para componentes externos
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
- ↑ Vowstar. «NodeMCU Devkit». Github. NodeMCU Team. Consultado em 2 de abril de 2015
- ↑ Zeroday. «A lua based firmware for wifi-soc esp8266». Github. Consultado em 2 de abril de 2015
- ↑ Hari Wiguna. «NodeMCU LUA Firmware». Hackaday. Consultado em 2 de abril de 2015
- ↑ Systems, Espressif. «Espressif Systems». Espressif-WikiDevi. Consultado em 3 de junho de 2017. Arquivado do original em 1 de dezembro de 2017
- ↑ Brian Benchoff. «A DEV BOARD FOR THE ESP LUA INTERPRETER». Hackaday. Consultado em 2 de abril de 2015
- ↑ a b https://developer.ibm.com/tutorials/iot-nodemcu-open-why-use/
- ↑ «The Programming Language Lua». www.lua.org. Consultado em 23 de junho de 2016
- ↑ Hong. «First commit of NodeMCU Firmware». Github. Consultado em 2 de abril de 2015