{"id":250,"date":"2016-11-17T07:49:59","date_gmt":"2016-11-17T06:49:59","guid":{"rendered":"http:\/\/www.vypers.it\/professione\/?page_id=250"},"modified":"2017-10-24T13:06:01","modified_gmt":"2017-10-24T11:06:01","slug":"esp8266-nodemcu","status":"publish","type":"page","link":"https:\/\/www.vypers.it\/professione\/approfondimenti\/progettiextra\/esp8266-nodemcu\/","title":{"rendered":"ESP8266 &#038; NodeMCU"},"content":{"rendered":"<p>25\/11\/2016<\/p>\n<p>Con l&#8217;intento di auto-costruire un antifurto, qualche tempo fa cercando un&#8217;alternativa super economica ai soliti moduli radio per la trasmissione dati scoprii l&#8217;esistenza di questi moduli operanti nella rete wifi con la possibilit\u00e0 di operare con il protocollo TCP.<\/p>\n<p>Non solo il basso costo ma addirittura la possibilit\u00e0 di operare indipendentemente da un processore esterno (tipo Arduino\/Atmel) tanto da renderli perfettamente autonomi almeno per il mio impiego e credo per una buona parte di altri.<\/p>\n<p>Inutile che mi dilungo con la descrizione del &#8220;sistema&#8221; \u00e8 sufficiente andare su Google e digitare ESP8266 per trovarsi di fronte ad un mondo.<\/p>\n<p>Proprio per via della vastit\u00e0 di questo mondo, popolato da pi\u00f9 o meno &#8220;maneggioni&#8221; come me, ho trovato serie difficolt\u00e0 ad inquadrare il sistema ed a capire come meglio sfruttarlo.<\/p>\n<p>Permettetemi quindi la presunzione, sulla base delle mie difficolt\u00e0, di creare questa guida col fine di capire al volo e meglio orientarsi in funzione delle proprie esigenze.<\/p>\n<h1><strong>Cos&#8217;\u00e8<\/strong><\/h1>\n<p>Esistono una vastit\u00e0 di siti dove trovare informazioni sul &#8220;sistema&#8221;.<\/p>\n<p>In sostanza ESP8266 \u00e8 un &#8220;chippino wifi&#8221; che normalmente viene venduto gi\u00e0 montato su varie tipologie di basette (ESP-01 fino a ESP-12, NodeMCU ecc.) La differenza in sostanza \u00e8 sul numero di I\/O disponibili, sul modulo di alimentazione (chip molto delicato &#8230;) e sulla pratica interfaccia USB o meno. A voi la scelta in base alla necessit\u00e0. Mi sembra di aver capito che esistono anche un paio di varianti del chip stesso, ma credo sia irrilevante.<\/p>\n<p>Detto chip viene normalmente acquistato con installato un firmware che permette di utilizzarlo ovviamente dopo aver scritto un apposito programma. La cosa interessante \u00e8 che si pu\u00f2 facilmente programmare, a costo zero, con l&#8217;IDE di Arduino (diamo un po&#8217; per scontato che si sappia cosa sia, altrimenti c&#8217;\u00e8 san Google&#8230;) .<\/p>\n<p>Sempre su Google ed anche su YouTube esistono un&#8217;infinit\u00e0 di tutorial in tutte le lingue che insegnano come collegarlo e come programmarlo con lo stesso linguaggio usato per Arduino ovviamente includendo le apposite librerie.<\/p>\n<p>Nel box seguente, tratto dal sito del produttore (Expressiv) la varie tipologie di Firmware installabili. A grandi linee: Con Sistema Operativo (RTOS SDK Real Time Operating System. Anche qui ampiamente descritto nei siti linkati da Google) e senza SIstema Operativo (Non OS SDK)<\/p>\n<p>Poi esistono delle schedine chiamate NodeMCU che hanno il chip (generalmente montato s ESP12) con un firmware contenente un interprete LUA (eLua) che permette l&#8217;esecuzione l&#8217;esecuzione dei relativi script.<\/p>\n<p>La faccenda qui \u00e8 un po&#8217; pi\u00f9 complicata:<\/p>\n<p>I firmware &#8220;utilizzabili con l&#8217;ide di Arduino&#8221; (non so come meglio definirli) li si scarica dal sito del produttore e li si installa con l&#8217;apposita procedura (sempre scaricabile dal sito del produttore) Mentre per poter utilizzare LUA occorre un firmware che si basa ovviamente sul SDK (firmware di cui sopra) con annesso l&#8217;interprete LUA ed i relativi moduli (non vengono dati tutti per default per questioni di limitato spazio di memoria&#8230;) necessari per far funzionare le eventuali device collegate (sensori, ecc.) piuttosto che implementare funzioni di pi\u00f9 alto livello quali HTTP, SPI I2C e tante altre belle cose.<\/p>\n<p>Come riportato nel sito istituzionale NodeMCU esistono 3 sistemi per avere il Firmware (chiamiamolo) NodeMCU:<\/p>\n<ul>\n<li>farselo fare dal fantastico sito riportato: si scelgono i moduli e lo si fa compilare, viene poi inviata una mail con il link per scaricare le due versioni: matematiche ad interi o virgola mobile (sempre una questione di impiego ottimizzato della poca memoria a disposizione).<\/li>\n<li>Compilarselo da se&#8230;<\/li>\n<li>Non mi ricordo la terza possibilit\u00e0 ma in questa sede \u00e8 irrilevante.<\/li>\n<\/ul>\n<p>Dotatevi di tanta pazienza, allestitevi una macchina (anche virtuale) con SO Linux e seguite con tanta pazienza (e 2) i due successivi articoli.<\/p>\n<p>Spero di esservi stato utile e di poterlo essere ache con i riassunti a seguire.<\/p>\n<p><span style=\"background-color: #ff9900;\">IMPORTANTISSIMO: Le informazioni riportate NON sono frutto delle mie competenze ma sono un collage di quanto riportato nei vari siti linkati. Non \u00e8 tanto una questione di scarico di responsabilit\u00e0 ma piuttosto riconoscere il merito a chi ha fatto il lavoro pi\u00f9 complesso e dal rilevante contenuto tecnologico.<\/span><\/p>\n<p>BUON DIVERtimento<\/p>\n<table>\n<tbody>\n<tr>\n<td>Firmware<\/p>\n<p>[Non-OS SDK]<\/p>\n<p>The Non-OS SDK uses timers and callbacks as the main way to perform the various functions &#8211; nested events, functions triggered by certain conditions. The Non-OS SDK uses the espconn network interface; the user needs to develop their software according to the usage rules of the espconn interface.<\/p>\n<p>[RTOS SDK]<\/p>\n<p>1. RTOS version SDK uses the freeRTOS system, a multi-tasking OS. You can use standard interfaces to freeRTOS resource management, recycling operations, execution delay, inter-task messaging and synchronization, task-oriented process design. For the specifics of interface methods, refer to freeRTOS official website instructions or USING THE FREERTOS REAL TIME KERNEL &#8211; A Practical Guide introduction.<\/p>\n<p>2. RTOS SDK version of the network operating interface is a standard lwIP API, while providing a package which enables BSD Socket APIsocket interface. Users can directly use the socket API to develop software applications; your code can also be directly compiled to run standard applications on other platforms Socket , effectively reducing the cost of learning platform switching. (possibly flawed translation)<\/p>\n<p>3. RTOS version of the SDK introduces cJSON library, use the library functions to more easily parse JSON packets.<\/p>\n<p>4. RTOS version is compatible with non-OS SDK in the Wi-Fi interface, smart config interfaces, Sniffer related interfaces, system interface, timer interface, FOTA interfaces and peripheral driver interface, but does not support the AT implementation.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>25\/11\/2016 Con l&#8217;intento di auto-costruire un antifurto, qualche tempo fa cercando un&#8217;alternativa super economica ai soliti moduli radio per la trasmissione dati scoprii l&#8217;esistenza di questi moduli operanti nella rete wifi con la possibilit\u00e0 di operare con il protocollo TCP. Non solo il basso costo ma addirittura la possibilit\u00e0 di operare indipendentemente da un processore &hellip; <a href=\"https:\/\/www.vypers.it\/professione\/approfondimenti\/progettiextra\/esp8266-nodemcu\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">ESP8266 &#038; NodeMCU<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":34,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-250","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.vypers.it\/professione\/wp-json\/wp\/v2\/pages\/250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vypers.it\/professione\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.vypers.it\/professione\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.vypers.it\/professione\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vypers.it\/professione\/wp-json\/wp\/v2\/comments?post=250"}],"version-history":[{"count":3,"href":"https:\/\/www.vypers.it\/professione\/wp-json\/wp\/v2\/pages\/250\/revisions"}],"predecessor-version":[{"id":281,"href":"https:\/\/www.vypers.it\/professione\/wp-json\/wp\/v2\/pages\/250\/revisions\/281"}],"up":[{"embeddable":true,"href":"https:\/\/www.vypers.it\/professione\/wp-json\/wp\/v2\/pages\/34"}],"wp:attachment":[{"href":"https:\/\/www.vypers.it\/professione\/wp-json\/wp\/v2\/media?parent=250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}