sabato 2 gennaio 2016

ESP8266


Il modulo ESP8266 è sostanzialmente un Arduino con un modulo WiFi.
La facilità nel reperimento, il basso costo e la grande community che sta nascendo lo rende un vero e proprio modulo al pari d'Arduino.


Devices

Sul mercato sono presenti diversi modelli ESPXX, che differiscono principalmente nelle dimensioni, capacità di memoria e numero di pins.
Il codice è compatibile con ogni uno di essi.


Per rendere la ESPXX più user friendly è spesso montata su d'una basetta di prototipazione.
Le più comuni basette di prototipazione portano il nome di NodeMCU, LoLin e WeMos
Comparazione veloce tra basette: https://goo.gl/TsWoMr
Queste ultime montano usualmente la versione ESP-12.


Piedinatura - pin IN/OUT - LoLin:


Tuttavai, una volta aver sperimentato liberamente qualche progetto sulla NodeMCU, si può passare alla versione ESP-01 meno costosa e molto più piccola dimensionalmente.


Guida all'utilizzo della ESP-01https://goo.gl/3LTngm



Linguaggi compatibili

 I linguaggi compatibili con i moduli 8266 sono diversi, ma i più conosciuti sono:
Questa guida è incentrata sul codice Arduino.

Passi essenziali Arduino

Primi essenziali MicroPython


Blynk project

Il progetto Blynk ci permette di creare velocemente un'interfaccia sul nostro telefono per controllare  la nostra scheda ESP8266 tramite internet: http://goo.gl/0rRHtI



Principali differenze tra Arduino e 8266

  1. Arduino dispone di versi pin Analogici, ADC, il modulo 8266 dispone d'un solo ADC.
    Tramite il comando analogRead(A0) è possibile leggere valori dall'ADC compresi tra 0-1 Volt  con una risoluzione di 10 bit.
  2. Funzione delay() ? no grazie!
    Visto il suo largo utilizzo nelle reti WiFi, sono previsti diversi interrupts per comunicare correttamente nella rete. La funzione delay metterebbe in stallo il controllore impedendo l'esecuzione di questi interrupts.
    Per sviare al problema è stata inserita una funzione chiamata Yielding().Il suo utilizzo è visto nel dettaglio in uno degli esempi proposti su GIT.
  3. Le Arduino WiFi library funzionano?
    Praticamente tutti i comandi Arduino sono compatibili con l'8266, tuttavia alcuni comandi per la gestione del WiFi sono stati leggermente riscritti.
    Qui trovate tutta la letteratura tecnica a riguardo: https://goo.gl/GzgDxr
  4. Wire(I2C) & SPI library.
    Anche in questo caso sono riportate alcune, piccole, differenze: https://goo.gl/JvXNBo
  5. Il NodeMCU è alimentato da una porta usb da 5V.
    Ricordo che il dispositivo 8266 funziona a 3.3V, e quindi in uscita ad ogni pin, troviamo circa 3.3V.
    Questo può rappresentare un problema con i dispositivi che richiedono in ingresso il segnale TTL (5V).

2 commenti:

  1. Ciao, ho fatto alcune prove qualche giorno fa con ESP8266 e Micropython. Il semplice programma era di comandare l'uscita 2 con il seguente codice:

    from machine import Pin
    p2 = Pin(2, Pin.OUT) # create output pin on GPIO0
    while 1:
    p2.high() # set pin to high
    p2.low() # set pin to low

    La frequenza di commutazione era di 100uS (10 KHz), quindi molto lento nella commutazione per un micro con 80MHz di clock. Qualcuno mi sa spiegare perché?
    Grazie

    RispondiElimina
    Risposte
    1. In questo momento non ho la scheda sotto mano, prova queste tre soluzioni:
      1. verifica la velocità del controllore: https://goo.gl/m9TkVB
      2. Usa la funzione PWM: https://goo.gl/m9TkVB
      3. Set timer manuale: https://goo.gl/m9TkVB

      Elimina