Go Down

Topic: Modulo Wi-Fi ESP8266 (Read 508185 times) previous topic - next topic

testato

Ma il limite al poter rispondere non funziona su topic aperti da altri :-)

Visto che dici di dover usare bluetooth, io passerei a Esp32, che ha il BT integrato e molti più pin del 8266.

Ma tu devi usare bt e wifi nello stesso momento ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

zoomx

Testato, io da un po' guardo il numero dei post e se è uno o non rispondo o segnalo che ho il suggerimento/soluzione ma che lo pubblicherò dopo la presentazione.

Tornando in topic o quasi.
Da un po' è uscito il core 2.5.x
Rispetto alla linea 2.4.x hanno cambiato molte cose ma a quanto pare se ne sono pentiti visto che nella 2.6.x ancora in sviluppo sono state eliminate.

La prima è di poco conto. Durante la compilazione viene chiamato cmd.exe, non so per quale motivo. per richiamarlo bisogna avere C:\windows\system32 nel proprio path e di solito è così ma se per qualche motivo è stato rimosso, Windows funziona sempre ma la compilazione no.
C'è una Issue in proposito ma che ha il titolo sbagliato e che è stata chiusa.
https://github.com/esp8266/Arduino/issues/5697
Se compilando vi spunta l'errore di CMD.exe non trovato è perché non c'è C:\windows\system32 nel PATH

Il secondo riguarda l'SDK usato, nel 2.5.x è stato introdotto il nonos-sdk-pre-v3.0.0 ma è immaturo per cui nel 2.6.x si è tornati indietro al 2.2.1
Ci sono importanti isssue in proposito
https://github.com/esp8266/Arduino/issues/5784
https://github.com/esp8266/Arduino/issues/5832

Della serie che mi son ricaricato il core 2.4.x

testato

Io sono contrario all'obbligo di presentazione, quindi rispondo e basta
p.s. Non mi sono mai presentato  :D
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

steve-cr

....
p.s. Non mi sono mai presentato  :D
E' vero !!! alla soglia dei 10.000 posts totali e ancora non sappiamo chi è costui !!!  :D  :D  :D
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

gpb01

#2824
Mar 02, 2019, 12:09 pm Last Edit: Mar 02, 2019, 12:09 pm by gpb01
E' vero !!! alla soglia dei 10.000 posts totali e ancora non sappiamo chi è costui !!!  :D  :D  :D
Lo sappiamo, lo sappiamo .. e persona ben nota a chi di dovere ...  :smiley-evil:

Guglielmo
Search is Your friend ... or I am Your enemy !

MrAlar

Ciao a tutti ragazzi e ai moderatori, ho appena espletato l'amara funzione dei convenevoli, e per me che son bruto è stata ardua...
Colgo l'occasione per ringraziare testato, che se pur rischiando il linciaggio ha voluto tendermi una mano.
A parte gli scherzi e ritornando al problema, ho già valutato, ma sinceramente volevo piazzarle da qualche parte queste node che ho comprato tempo fa.
A livello pratico, valutando tutte le limitazioni dei gpio in questione, è possibile secondo voi montare tutto su ? Sull'8266 node.
Grazie

zoomx

Avrei quindi da inserire sul node: relè (4 pin), pulsanti momentanei (4pin), lcd+rtc (2pin), modulo bt (2pin).
Dalla vostra esperienza con il node, pensate che sia possibile connettere tutti i moduli? Magari scegliendo i pin più corretti alle loro funzioni ?
Direi che potresti risparmiare pin usando per i pulsanti l'ingresso analogico e una serie di resistenze altrimenti mi sa che i GPIO non ti bastano.

MrAlar

Direi che potresti risparmiare pin usando per i pulsanti l'ingresso analogico e una serie di resistenze altrimenti mi sa che i GPIO non ti bastano.
Questa è un'ottima alternativa, in pratica come dovrei fare ?
Dovrei porre tutti i pulsanti in serie?

steve-cr

#2828
Mar 04, 2019, 01:16 pm Last Edit: Mar 04, 2019, 01:20 pm by steve-cr
Dovresti fare una cosa più o meno così (i tasti li puoi aumentare)...
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

zoomx

Si, si fa proprio in quel modo.
Uno sketch scritto per uno shield che ha dei tasti configurati a quel modo, quello con LCD e alcuni tasti di DFrobot

https://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)

La parte che fa il lavoro è questa
Code: [Select]
adc_key_in = analogRead(0);      // read the value from the sensor
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 if (adc_key_in < 50)   return btnRIGHT;  
 if (adc_key_in < 250)  return btnUP;
 if (adc_key_in < 450)  return btnDOWN;
 if (adc_key_in < 650)  return btnLEFT;
 if (adc_key_in < 850)  return btnSELECT;  


I valori andranno adattati alle tue esigenze in funzione del valore delle resistenze usato.

John_Fischetti

#2830
Mar 18, 2019, 01:53 am Last Edit: Mar 18, 2019, 03:08 pm by John_Fischetti
Buon giorno,
sono nuovo e chiedo scusa in anticipo se ho scelto il posto sbagliato dove porre il quesito.
In questo thread ci sono 189 pagine, leggere tutto mi sembra una impresa disperata, quindi probabilmente il mio problema sarà già stato discusso. Se mi dite come rintracciare post pertinenti ve ne sono grato.

Il problema è questo: un progettino sperimentale per una piccola serra gestita da un modulo esp8266 e con la possibiità di controllare il tutto a distanza mediante un accesso internet.

Allo stato attuale riesco a leggere i sensori e a gestire l'automazione necessaria, e a inviare i dati su una pagina web.

Quel che mi manca è la possibilità di modificare alcuni parametri dalla pagina web e fare in modo che questi dati arrivino al modulo che poi li salverà su eeprom.

Esempio, un cambio della soglia di temperatura o di umidità.

Ho provato varie cose che ho recuperato in giro, pezzi di codice sparso, ma niente funziona. O non compila oppuire compila ma poi non va.

Il quesito quindi è questo. Come faccio a inserire alcuni campi modificabili nella pagina web, presumo mediante client.print(<codice html>) e poi far ritornare questi dati al modulino? Si usa client.read() o che altro, e come?

Grazie mille per ogni dritta.

John

Di seguito il pezzetto di codice che uso per costruire la pagina web con alcuni dei dati in uscita, e che funziona:
Code: [Select]

WiFiClient client = server.available();
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");  // the connection will be closed after completion of the response
client.println("Refresh: 10");  // refresh the page automatically every 10 sec
client.println();
client.println("<!DOCTYPE html>");
client.println("<html xmlns='http://www.w3.org/1999/xhtml'>");
client.println("<head>\n<meta charset='UTF-8'>");
client.println("<title>ESP8266 SERRA WEB by John Fischetti</title>");
client.println("<link href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css' rel='stylesheet'>");
client.println("</head>\n<body>");
client.println("<div class='container'>");
client.println("<div class='panel panel-default' margin:15px>");
client.println("<div class='panel-heading'>");
client.println("<H2>ESP8266 SERRA WEB by John Fischetti</H2>");
client.println("<div class='panel-body' style='background-color: powderblue'>");
client.println("<pre>");
client.print("Umidità (%)        AMB.                 : ");
client.println(humidity1, 2);
client.print("Temperature (°C)   AMB.                 : ");
client.println(temp_f1, 2);
client.println("                                        ");
client.print("Temperature (°F)                        : ");
client.println(fahr, 2);
client.print("indice calore      AMB.                 : ");
client.print(hic);
client.println(" (°C) ");
client.print(hif);
client.println(" (°F)");
client.print("Dew PointFast(°C) Punto di rugiada      : ");
client.println(dPt);
client.println("</pre>");

gpb01

#2831
Mar 18, 2019, 06:14 am Last Edit: Mar 18, 2019, 06:14 am by gpb01
>John_Fischetti:   Buongiorno, ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie. :)

Guglielmo
Search is Your friend ... or I am Your enemy !

zoomx

John,
edita il post!
Riguardo al tuo quesito io non ti saprei rispondere però andrei a guardare gli esempi di cronotermostati dove sicuramente (be' se il progetto è fatto con un minimo di criterio e non è sempre detto!) si pone il problema di cambiare una temperatura e memorizzare il cambiamento.
Non ho ancora provato alcun progetto del genere altrimenti ti avrei detto subito quale guardare.

Però rileggendo il tuo post questa parte non mi è chiara
Quote
inviare i dati su una pagina web
Significa che la pagina web non sta sull'ESP8266?

John_Fischetti

Grazie per le indicazioni, e scusate l'inesperienza.

A quel che so i cronotermostati connessi a internet funzionano tutti scaricando una "app" sullo smartphone e non con una pagina web editabile. Anch'io dovrò fare una cosa del genere per un altro progettino che ho in mente, pensavo di usare il sistema Inventor, sviluppato al MIT. Ma per ora e per la serra mi limiterei alla pagina web.

Probabilmente mi sono espresso male parlando di una pagina web a cui spedire ... il codice della pagina è residente nel ESP8266, poi ovviamente la pagina viene visualizzata su un browser da qualche parte nel pianeta, o anche nello spazio ... più avanti  :)

Grazie ancora. Continuo a cercare.

John

zoomx

Ci sono progetti che funzionano esponendo una pagina web. Ci sono anche gli irrigatori da giardino.
Ma la pagina web non è editabile, il valore lo metti in una casella.

Go Up