Arduino ATMega32u4 + modulo wifi ESP8266 = perchè non si parlano ?

Ciao a tutti,
sto cercando di “parlare” al modulo wifi ma non ci riesco, o forse mi manca semplicemente un pezzo.

Ho collegato:

Arduino alla USB
uscita GND e VCC dell’Arduino ad un adattatore di tensione per ottenere da 5v i 3,3v
i 3,3v li ho poi collegati al VCC del modulo wifi e anche all’ingresso “chip power down” (tensioni misurate e a posto)
ho poi collegato il pin “0-TX” e “1-RX” dell’Arduino ai relativi “RX” e “TX” del modulo wifi …

E adesso ?

Ho flashato uno sketch vuoto e provato a lanciare il “serial monitor” dell’IDE (con CR + 115200 baud), ma usando i comandi AT non ricevo nessuna risposta … cosa mi son perso?
Ho provato degli esempi di sketch ma senza fortuna, mi pare di aver capito che devo usare “Serial1.xxx” per “parlare” tramite i pin “0” e “1”.

In allegato i componenti che sto usando.

grazie mille
Alessandro

convertitore tensione.jpg

ESP 8266.png

ATMega32u4.jpg

Per dialogare con la seriale e usare il serial monitor, bisogna usare la libreria SoftSerial, e collegare l' ESP su i piedini prescelti con il software.
Magari si può usare anche i piedini 0 e 1, e senza nessuno sketch caricato, che dovrebbe permetterti di leggere e scrivere sulla ESP.
In secondo, la ESP ha l' impostazione di default che mi pare sia a 9600 baud, ma verifica con il manuale

ExperimentUno:
Per dialogare con la seriale e usare il serial monitor, bisogna usare la libreria SoftSerial, e collegare l’ ESP su i piedini prescelti con il software.

Guarda che sta parlando di ATmega32u4
… la Pro Micro (basata appunto su ATmega32u4) è una board simile alla Leonardo dove la Serial si riferisce alla connessione USB e la Serial1 alla seriale sui pin 0 e 1.

Leggete bene prima di fornire indicazioni errate … ::slight_smile:

Guglielmo

azanet72:

ho poi collegato il pin "0-TX" e "1-RX" dell'Arduino ai relativi "RX" e "TX" del modulo wifi ...

Prova ad invertirli. Non si sà mai le serigrafie siano intese al contrario.

Ho provato ad invertire i pin 0-1 sull'Arduino ... niente.

Questo il semplice pezzo di codice usato, dove ricevo sempre "Module gave no response":

void setup() {
  // Open serial communications and wait for port to open:
  Serial1.begin(115200);
  Serial1.setTimeout(5000);

  Serial.begin(9600); 
  Serial.println("ESP8266 Demo");

  //test if the module is ready
  Serial1.println("AT+RST");
  delay(1000);

  if (Serial1.find("ready")) {
    Serial.println("Module is ready");
  }
  else {
    Serial.println("Module gave no response");
    while (1);
  }
}

Alessandro

Hai provato diverse velocità della seriale? Sei sicuro che sull'ESP ci sia un firmware AT?

Ho provato varie velocità.

In effetti il dubbio sul firmware c'è ... adesso mi attrezzo e lo aggiorno.

Rieccomi … molto ho fatto ma poco ottenuto …

Mi sono procurato un adattatore USB-seriale (CP2102).

Ho fatto riferimento a questo link:
http://www.creamdesign.it/flash-nodemcu-firmware-to-the-esp8266-on-a-mac/

installato PYTHON 3.5.x
installato NODEMCU x recuperare l’immagine del firmware (nodemcu_integer_0.9.5_20150318.bin)
installato ESPTOOL
installati i driver per l’adattatore USB-seriale
collegato adattatore seriale al modulo wireless (mettendo a GND il pin GPIO0)

Per leggere il mac address:

python esptool.py --port /dev/tty.SLAB_USBtoUART --baud 115200 read_mac
"
MAC: 60:01:94:10:c8:c0
"

per leggere manufactured ID e chip ID
python esptool.py --port /dev/tty.SLAB_USBtoUART flash_id
"
Manufacturer: e0
Device: 4014
"

per leggere chip ID
python esptool.py --port /dev/tty.SLAB_USBtoUART chip_id
Chip ID: 0x0010c8c0

Ho flashato il nuovo firmware:

python esptool.py --port /dev/tty.SLAB_USBtoUART --baud 115200 write_flash 0x0 nodemcu_integer_0.9.5_20150318.bin

Ho verificato il firmware flashato

python esptool.py --port /dev/tty.SLAB_USBtoUART verify_flash 0x0 nodemcu_integer_0.9.5_20150318.bin

Running Cesanta flasher stub…
Verifying 0x838f (33679) bytes @ 0x00000000 in flash against nodemcu_integer_0.9.5_20150318.bin…
– verify OK (digest matched)

Ma connettendo il modulo wifi all’arduino ancora niente … ;-(

CP2102 convertitore seriale USB-TTL.JPG

Mac_OSX_VCP_Driver.zip (185 KB)

Beh, grazie: ci hai rimesso un firmware LUA e non AT! Prova con questo: http://bbs.espressif.com/viewtopic.php?f=46&t=2199.

Dopo 1000+1000 imprecazioni e dopo aver installato una macchina virtuale Windows XP sul mio MAC ed aver installato NODEMCU FLASHER ed aver scaricato i lfirmware giusto in 4 parti ... funziona !!!

grazie mille a tutti, adesso si comincia a lavorare !

AleZ

:frowning: :frowning: :frowning: :frowning: :frowning:

Cantato vittoria troppo presto ... collegando tutto all'Arduino (come descritto nel primo post) e usando i codice sopra riportato ... niente, solito errore ...

:frowning: :frowning: :frowning:

Prova 9600 e 115200 bps, e prova la libreria wifiesp.

scarico e provo ...

Funziona !!!

azanet72:
Funziona !!!

Cosa sbagliavi ? Potrebbe essere utile a chi si trovasse nelle tue condizioni

Eh bella domanda :wink:

Le connessioni erano corrette, usando i pin 0 e 1.

Adesso sto analizzando il codice demo per capire le differenze rispetto al codice che usavo io.
Stranamente cambiando i baud non cambia e la comunicazione avviene comunque.

Appena dipano la matassa aggiorno la discussione.

Dove li cambi i baud, per curiosità?

Nello sketch:

Serial.begin(115200);
Serial1.begin(115200);

E poi anche nel serial monitor.
Qualsiasi combinazione metto, funziona ... :o

Ecco, è la Serial1 quella che parla col modulo, quindi è quella che setta la velocità. Se funziona sempre, meglio così, magari hanno implementato l'autobaud nelle ultime versioni. Era già disponibile nella modalità programmazione, se non ricordo male.