Pingare un dispositivo in rete con ESP8266 collegato ad Arduino

Ciao ragazzi, volevo chiedervi se qualcuno sa come si effettua un ping in lan con il modulo wifi esp8266 esp-01 collegato ad arduino.
Quello che voglio fare è pingare un computer per verificare se è acceso (quindi connesso alla rete e il ping avrà esito positivo) o spento, grazie, attendo risposte

Immagine del modulo wifi esp-01:

Ci sono librerie dedicate, quella di dancol90 è quella di riferimento della documentazione dell'arduino core dell'esp8266.

@daysleeper ho installato la libreria e scritto il codice per pingare, quando compilo ricevo l'errore: fatal error: ESP8266WiFi.h: No such file or directory

Credo perchè le librerie che mi hai detto siano da caricare sull'esp8266, forse non mi sono spiegato bene ma io sto usando arduino collegato tramite Software Serial sui pin 2 e 3 ad esp8266 esp-01 e il codice lo carico su arduino mentre l'esp rimane vuoto.. quelle librerie penso siano per l'esp e non per arduino.....

AT+PING="192.168.1.1"

Ma a me inizialmente non funzionava.

zoomx:

AT+PING="192.168.1.1"

In effetti do quasi per scontato che si un ESP con un firmware dedicato e non con quello di default, comunque "dovrebbe" essere ancora più semplice e qui c'è la lista di comandi AT a cui risponde.
Non sono pratico del firmware originale, l'unica cosa che ho notato mentre cercavo nei forum è che la maggior parte dei topic si fermava quando qualcuno chiedeva che versione del software era stata flashata, quindi a naso direi che gli aggiornamenti del firmware sono decisamente necessari. ::slight_smile:

zoomx:

AT+PING="192.168.1.1"

Ma quello é un comando at che devo inserire dal monitor seriale, a me serve pingare un computer circa ogni 10 secondi automaticamente, utilizzando un comando presente nello sketch caricato su Arduino (non sul modulo wifi, ripeto esso rimane vuoto, é l'Arduino che lo utilizza per comunicare)

Superpale02:
Ciao ragazzi, volevo chiedervi se qualcuno sa come si effettua un ping in lan con il modulo wifi esp8266 esp-01 collegato ad arduino.
Quello che voglio fare è pingare un computer per verificare se è acceso (quindi connesso alla rete e il ping avrà esito positivo) o spento, grazie, attendo risposte

Immagine del modulo wifi esp-01:

beh....
ci sono delle cose che devono essere prestabilite,
di solito la "cosa" funziona cosi,
prima di tutto ci va una specie di rete a cui fa capo il router/modem (cosa che è lo standard in quasi tutte le case)

secondo si entra nelle impostazioni del router e si assegna un ip fisso ad ogni dispositivo collegato al router (sia via lan che wifi) (questa "operazione" viene chiamata DHCP reservation)

adesso puoi fare il ping a qualsiasi dispositivo nella tua rete locale a patto che sei collegato anche tu alla rete locale,

se sei collegato via internet es da un altra città le cose si complicano perché gli indirizzi pubblici della connessione internet non sono statici (di solito)

Superpale02:
Ma quello é un comando at che devo inserire dal monitor seriale

Non vedo quale sia il problema, a parte eventuali bachi software che riporta zoomx: se dici ad arduino di fare un Serial.write() sulla seriale a cui è connesso l'ESP lui (l'ESP) ti risponde in base a come è stato programmato, e la risposta la puoi acquisire con un Serial.read().
In fondo l'ESP originale dovrebbe essere configurabile anche con un semplice adattatore usb-seriale e un qualunque software come putty o zeroterm, quindi per ricevere il comando di ping e rispondere gli basta solo avere qualcuno che scriva sulla sua seriale.

O no? Ho perso un passaggio da qualche parte?
Ps: Usa una SoftwareSerial (9600baud, alte velocità sono problematiche) se la seriale fisica dell'arduino è occupata da altro.

Superpale02:
non sul modulo wifi, ripeto esso rimane vuoto,

Non credo sia proprio vuoto, altrimenti c'è poca speranza che qualcosa funzioni. Ripeto, non sono pratico di ESP8266 con firmware originale ma magari ad altri può fare comodo sapere che FW e che versione è effettivamente flashata sul tuo chip.

Se usi la libreria WiFiEsp (caldamente consigliata), mi pare che metta a disposizione un metodo ping().

daysleeper:
Non vedo quale sia il problema, a parte eventuali bachi software che riporta zoomx: se dici ad arduino di fare un Serial.write() sulla seriale a cui è connesso l'ESP lui (l'ESP) ti risponde in base a come è stato programmato, e la risposta la puoi acquisire con un Serial.read().
In fondo l'ESP originale dovrebbe essere configurabile anche con un semplice adattatore usb-seriale e un qualunque software come putty o zeroterm, quindi per ricevere il comando di ping e rispondere gli basta solo avere qualcuno che scriva sulla sua seriale.

Ok forse sto capendo, avresti tempo di scrivere un pezzo di codice da caricare in arduino per fare in modo che capisca come fare? grazie, perche oltre a pingare il pc, arduino deve fare anche altre cose (gestire un relè e leggere temperatura dal sensore per poi mandarla tramite esp8266 all'applicazione Blynk con cui gestisco anche il relè)

Ripeto, non sono sicuro sia questo il modo di procedere ma a quanto ne so non vedo cosa possa andare storto. Forse conviene aspettare il parere di qualcuno che usa gli ESP come intendi fare tu.

Conosci la libreria SoftwareSerial? Non fa altro che usare due pin digitali per realizzare un'altra porta seriale, virtuale nel senso che c'è il processore che simula (per questo non può raggiungere velocità elevate) ma comunque si usa come tutte le altre.

Inizializzi con:

SoftwareSerial portOne(pin,pin);

(i pin dipendono da che arduino usi)

Avvii con (nel setup):

portOne.begin(9600);

Per mandare un comando, una volta creata la seriale virtuale e connesso l'ESP a quella, dovrebbe bastare un semplice

portOne.println("AT");

Qua la cosa si fa più complicata, perchè c'è da considerare che cosa dovrebbe rispondere l'ESP. A naso un portOne.readString() dovrebbe essere ok perchè l'ESP dovrebbe rispondere "OK" (credo). In caso di comandi più complessi la ricezione dei dati deve essere gestita in maniera più complessa, ma il concetto non cambia.

Poi col risultato lo interpreti come vuoi, te lo fai stampare sulla seriale hardware, accendi un led, scrivi su un display...