NodeMCU: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Minor fix
Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile
Added Code example and "also look"
Riga 19:
 
Nell'estate 2015 i creatori hanno abbandonato lo sviluppo del firmware ma un gruppo di creatori indipendenti continua a portare avanti il progetto. Nel 2016 [[NodeMCU]] includeva più di 40 moduli diversi. Tuttavia gli utenti, a causa di insufficienza di risorse della scheda, devono [http://nodemcu.readthedocs.io/en/latest/en/build/ costruire firmware] che utilizzano solo i moduli necessari per il loro progetto.
 
== Esempi di codice ==
E' possibile trovare sul sito ufficiale di NodeMCU una serie di esempi. Oltre questi la [http://nodemcu.readthedocs.io/ Documentazione di NodeMCU] offre piccoli esempi delle funzionalità e dei moduli.
 
=== Connessione ad un Access Point ===
<syntaxhighlight lang="lua" line="1">
print(wifi.sta.getip())
--nil, il nodemcu non è collegato a nessun access point
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","password")
-- wifi.sta.connect() non è più neccessario in quanto wifi.sta.config autoconnette il nodemcu all'ap.
tmr.create():alarm(1000, 1, function(cb_timer)
if wifi.sta.getip() == nil then
print("Connessione...")
else
cb_timer:unregister()
print("Connesso, l'IP è : "..wifi.sta.getip())
end
end)
</syntaxhighlight>
 
=== Controllo di una porta [[General Purpose Input/Output|GPIO]] ===
<syntaxhighlight lang="lua" line="1">
ledPin = 1
swPin = 2
gpio.mode(ledPin,gpio.OUTPUT)
gpio.write(ledPin,gpio.HIGH)
gpio.mode(swPin,gpio.INPUT)
print(gpio.read(swPin))
</syntaxhighlight>
 
=== Richiesta HTTP ===
<syntaxhighlight lang="lua" line="1">
conn = net.createConnection(net.TCP, 0)
conn:on("receive", function(sck, payload) print(payload) end)
conn:on("connection", function(sck)
sck:send("GET / HTTP/1.1\r\nHost: nodemcu.com\r\n"
.. "Connection: keep-alive\r\nAccept: */*\r\n\r\n")
end)
conn:connect(80, "nodemcu.com")
</syntaxhighlight>Si può fare lo stesso usando il [http://nodemcu.readthedocs.io/en/latest/en/modules/http/ modulo HTTP] :<syntaxhighlight lang="lua" line="1">
http.get("http://nodemcu.com", nil, function(code, data)
if (code < 0) then
print("Richiesta HTTP fallita")
else
print(code, data)
end
end)
</syntaxhighlight>
 
=== Connessione a un client MQTT ===
<syntaxhighlight lang="lua" line="1">
-- 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
</syntaxhighlight>
 
=== UDP client e server ===
<syntaxhighlight lang="lua" line="1">
-- un server udp
s=net.createServer(net.UDP)
s:on("receive",function(s,c) print(c) end)
s:listen(5683)
 
-- un client udp
cu=net.createConnection(net.UDP)
cu:on("receive",function(cu,c) print(c) end)
cu:connect(5683,"192.168.18.101")
cu:send("hello")
</syntaxhighlight>
 
== Guarda anche ==
* [[wikipedia:ESP8266|ESP8266]]
 
* [[wikipedia:ESP32|ESP32]]
* [[wikipedia:ESP_Easy|ESP Easy]]
* [[Internet of things]]
* [[Microcontroller|MCU (Micro Controller Unit)]]
 
== Note ==