Buon pomeriggio @cotestatnt, ho provato il codice con ESP8266, funziona alla grande, sei un drago! Per quanto riguarda l'indirizzo locale generato dal plugin al momento della connessione al server (a me in questo caso 192.168.20.1) la prima volta mi è apparso, le altre volte per farlo apparire, ho dovuto abilitare il server,chiudere la finestra del plugin, e successivamente riaprendo la sua finestra di configurazione, mi è riapparso.
Comunque, prima di questa soluzione da te trovata, avevo fatto una app apk attraverso la quale, via bluetooth, inviavo all'arduino i dati di altitudine e Azimut, inserendoli di volta in volta manualmente in dei text box.
In pratica ti spiego cosa sto progettando. Sto cercando di fare un derotatore di campo, utilizzando uno stepper motor con driver A4988. Per determinare la velocità di rotazione del motore, mi servo di una formula trigonometrica che appunto con i dati AZ e AT imposta uno step (o meglio microstep, visto che li ho ridotti a 0.0022 gradi per step, anziché 1.8 gradi iniziali) ad ogni X millisecondi. In sintesi, determino ogni quanti millisecondi deve fare uno step per derotare l'oggetto puntato con il telescopio (ovviamente a derotare sarà la camera ASI con la quale faccio le acquisizioni).
Attraverso l'app, controllo anche l'on off del motore e altre cose tutto funziona bene.
Ovviamente all'Arduino i dati arrivano tramite SoftwareSerial con un modulo ble HC05.
Dato che te ora hai trovato questa soluzione, ovviamente inserire i dati manualmente tramite l'app non mi serve più, visto che è tutto automatico con stellarium. Però comunque non mi voglio disfare dell'app che ho creato perché almeno con essa posso arrestare e avviare il motore, farlo girare in senso orario o antiorario velocemente per raddrizzare la camera, cambiare direzione ect.
Ho pensato pertanto di usare la ESP8266 con il solo compito di prendere i dati da stellarium, e inviarli ad Arduino tramite seriale. E questo avviene. Infatti sugli stessi pin RX e TX (softwareserial) del bluetooth ho messo quelli della ESP8266 che attraverso lo stesso metodo utilizzato per l'app, riesce a mandare i dati ad arduino e quindi salvarli in delle variabili float create su quest'ultimo.
Il metodo utilizzato è il seguente.
Il tuo codice ho cambiato la parte del loop dove printa i dati, così:
(PS. la latitudine 40.92 l'avevo messa per il momento manualmente in attesa del secondo sketch che hai poi inserito)
if (millis() - getTime > 1000) {
getTime = millis();
getData();
Serial.print(F("z:"));
Serial.println(azimuth);
Serial.print(F("b:"));
Serial.println(altitude);
Serial.print(F("n:"));
Serial.println("40.92");
}
Mentre nell'arduino questi dati vengono prelevati con questo metodo :
#include <SoftwareSerial.h>
SoftwareSerial s(2,3);
float latitudine, azimut, altitudine;
String str = "";
void setup() {
Serial.begin(9600);
s.begin(9600);
}
void loop() {
if(s.available()){
char ch = s.read();
if ( (ch == '\n') || (ch == '\r') ) {
cmd(str);
str = "";
} else {
str += ch;
}
}
}
void cmd(String str) {
char c = str.charAt(0);
if (c == 'z' ) {
String n = str.substring(2);
float dati1 = n.toFloat();
azimut=dati1;
Serial.print(F("Az:"));
Serial.println(azimut);
} else if (c == 'b') {
String n = str.substring(2);
float dati2 = n.toFloat();
altitudine=dati2;
Serial.print(F("At:"));
Serial.println(altitudine);
} else if (c == 'n') {
String n = str.substring(2);
float dati3 = n.toFloat();
latitudine=dati3;
Serial.print(F("Lat:"));
Serial.println(latitudine);
}
}
I dati vengono presi senza problemi e salvati nelle variabili float.
Il problema si ha con il motore: infatti ogni volta che ricevo un dato dal esp8266 mentre il motore sta girando questo si frena, o meglio fa un disturbo che posso tradurti come una forte vibrazione ogni volta che l'arduino riceve i dati dalla ESP. Ho pensato quindi che si trattasse di un problema dovuto al fatto che sia la seriale del bluetooth e sia quella della ESP erano messe assieme sugli stessi pin 2 e 3 del software Serial. Quindi elimino la sezione del controllo tramite bluetooth, e con il metodo che ti ho indicato sopra faccio prelevare solo i dati dalla ESP. Ma niente, con il motore che gira tenendo premuto un pulsante, ogni volta che ricevo i dati dalla esp sulla seriale, mi fa questo disturbo di vibrazione al motore (sembra stopparsi in quel frangente in cui ricevo i dati per ripartire subito).
Il fatto è che solo con i dati ricevuti dall esp8266 mi fa questo disturbo, mentre se i dati li invio tramite l'app citata, non c'è alcun distrubo e il motore va liscio.
Non so da cosa possa dipendere questo disturbo. Ne ho provate di tutti i colori.