Salve a tutti,
ho acquistato la scheda WiFi ESP8266 con il relativo adattatore per poter essere alimentata direttamente da Arduino. Vorrei utilizzarla per qualche progetto di IoT e ho trovato questo codice molto valido e semplice da capire:
/*
* This sketch demonstrates how to set up a simple HTTP-like server.
* The server will set a GPIO pin depending on the request
* http://server_ip/gpio/0 will set the GPIO2 low,
* http://server_ip/gpio/1 will set the GPIO2 high
* server_ip is the IP address of the ESP8266 module, will be
* printed to Serial when the module is connected.
*/
#include <ESP8266WiFi.h>
const char* ssid = "SSID";
const char* password = "PASSWORD";
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
// prepare GPIO2
pinMode(2, OUTPUT);
digitalWrite(2, 0);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
// Match the request
int val;
if (req.indexOf("/gpio/0") != -1)
val = 0;
else if (req.indexOf("/gpio/1") != -1)
val = 1;
else {
Serial.println("invalid request");
client.stop();
return;
}
// Set GPIO2 according to the request
digitalWrite(2, val);
client.flush();
// Prepare the response
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
s += (val)?"high":"low";
s += "</html>\n";
// Send the response to the client
client.print(s);
delay(1);
Serial.println("Client disonnected");
// The client will actually be disconnected
// when the function returns and 'client' object is detroyed
}
Ho visto adesso che colleghi l'esp ai 5V, non dipende da questo l'errore ma ti sconsiglio di farlo, ho letto molte volte che l'esp va usato a 3.3 con l'alimentazione possibilmente da una batteria. Per quanto riguarda l'errore non so,... hai scaricato i driver dell'adattatore? Selezioni la porta COM nel momento della programmazione?
nel messaggio #1 jackbell16 ha detto che ha l'adattatore, che non è altro che un regolatore di tensione che riduce i 5V in 3.3V, non serve nessun driver software per l'adattatore
ah ok, l'ho detto perché quando io ho collegato l'esp con il mio adattatore usb ho dovuto installare i driver in modo che il computer vedesse la porta, non avevo visto il tipo di adattatore che aveva preso scusatemi
allora non so proprio
icio:
nel messaggio #1 jackbell16 ha detto che ha l'adattatore, che non è altro che un regolatore di tensione che riduce i 5V in 3.3V, non serve nessun driver software per l'adattatore
Si è soltanto un regolatore, che permette di alimentare la scheda direttamente da Arduino, senza una alimentazione esterna. Qualche idea sul problema che sto riscontrando ?
PaoloP:
Allora... non puoi collegare l'ESP per la programmazione e contemporaneamente farlo dialogare con Arduino e vedere i dati sul serial monitor.
Ci devi dire cosa vuoi fare con l'ESP.
Lo vuoi programmare con l'Arduino IDE?
Come collegamento all'USB passi attraverso Arduino UNO?
Oppure vuoi semplicemente usare il firmware AT e farla comunicare con Arduino e non con il PC?
La mia idea è quella di usare un mezzo di comunicazione low-cost, per poter comunicare con il web. Ad esempio voglio inviare un POST/GET ad Arduino e questo accende una lampada. Oppure voglio che Arduino faccia una richiesta HTTP ad un server, quando un sensore cambia valore. In pratica progetti di IoT. Vorrei usare, se possibile, direttamente l'Arduino IDE e utilizzare come micro Arduino uno. Spero di essere stato chiaro. Ti ringrazio per il tuo supporto.
Per poter controllare sensori e dialogare con servizi HTTP non ha bisogno di Arduino.
L'ESP ha già un microcontrollore programmabile che può fare tutto da solo.
Col modello 01 hai solo 2 pin disponibili. Per cose più complesse devi passare ad altri modelli dell'ESP.
Tutti i modelli sono programmabili direttamente dell'IDE di Arduino dopo aver scaricato il core ESP.
Per poter collegare l'ESP al PC ti serve un convertitore seriale/USB che funzioni a 3.3V.
Puoi usare in quel caso l'Arduino UNO e il convertitore di segnale che hai già.
Per fare in modo che il micro di Arduino non disturbi durante il collegamento tra l'ESP e il PC hai 2 soluzioni: o togli il micro, oppure ci carico sopra uno sketch vuoto (con setup() e loop() vuoti).
In quel caso, ovvero per programmarlo da IDE, il collegamento ai pin 0 e 1 e TX-TX, RX-RX.
PaoloP:
Per poter controllare sensori e dialogare con servizi HTTP non ha bisogno di Arduino.
L'ESP ha già un microcontrollore programmabile che può fare tutto da solo.
Col modello 01 hai solo 2 pin disponibili. Per cose più complesse devi passare ad altri modelli dell'ESP.
Tutti i modelli sono programmabili direttamente dell'IDE di Arduino dopo aver scaricato il core ESP.
Per poter collegare l'ESP al PC ti serve un convertitore seriale/USB che funzioni a 3.3V.
Puoi usare in quel caso l'Arduino UNO e il convertitore di segnale che hai già.
Per fare in modo che il micro di Arduino non disturbi durante il collegamento tra l'ESP e il PC hai 2 soluzioni: o togli il micro, oppure ci carico sopra uno sketch vuoto (con setup() e loop() vuoti).
In quel caso, ovvero per programmarlo da IDE, il collegamento ai pin 0 e 1 e TX-TX, RX-RX.
Grazie, quindi in realtà uso il micro del dispositivo WiFi e non di Arduino ? Se volessi ad esempio accendere e spegnere un LED, posso farlo ? Ed utilizzare librerie che sono già per Arduino (come ad esempio il MySQLConnector) ?
PaoloP:
No. Devi cercare le librerie compatibili con l'ESP.
Grazie per la risposta, in pratica quello che mi stai dicendo tu è che viene utilizzato l'Arduino UNO solo per caricare il programma sulla scheda ESP8266. In pratica l'ESP8266 è un micro-controllore vero e proprio e devo sfruttare lui nei programmi, è giusto ?
Se lo usi senza l'Arduino si. L'ESP è dotato di un microcontrollore programmabile come l'Arduino. Ma spesso le librerie non sono compatibili tra i due micro.