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-01: https://goo.gl/3LTngm
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-01: https://goo.gl/3LTngm
Linguaggi compatibili
I linguaggi compatibili con i moduli 8266 sono diversi, ma i più conosciuti sono:- Arduino: https://goo.gl/sglsYS
- Lua: http://goo.gl/tDoxa4
- Micro python: https://goo.gl/isNIEh
Questa guida è incentrata sul codice Arduino.
Passi essenziali Arduino
- Installazione nell'Arduino IDE: https://goo.gl/sglsYS
- Esempi tramite GIT: https://goo.gl/oASRd3
Primi essenziali MicroPython
- Guida all'installazione: https://goo.gl/HCNVZ9
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
- 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. - 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. - 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 - Wire(I2C) & SPI library.
Anche in questo caso sono riportate alcune, piccole, differenze: https://goo.gl/JvXNBo - 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).
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:
RispondiEliminafrom 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
In questo momento non ho la scheda sotto mano, prova queste tre soluzioni:
Elimina1. 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