Go Down

Topic: Modulo WiFi+Bt ESP32 (Read 23586 times) previous topic - next topic

milefori

scusate il ritardo, ma viene prima la famiglia,
non ne combino una di giusta,
grazie Guglielmo di aver sistemato,
bene veniamo al problema della riconnessione posto il file
Code: [Select]

/***************************
 Telecomando con ESP32
 via WiFi
****************************/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>

#define I2C_ADDR        0x27 // <<- indirizzo del PCF8574
#define Rs_pin          0
#define Rw_pin          1
#define En_pin          2
#define BACKLIGHT_PIN   3
#define D4_pin          4
#define D5_pin          5
#define D6_pin          6
#define D7_pin          7
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin,
 D7_pin);

#define btn1 5
#define btn2 23
#define btn3 14
#define btn4 12
#define led     18

boolean PB1_Flag;
boolean PB2_Flag;
boolean PB3_Flag;
boolean PB4_Flag;
unsigned long headLunga = 0;
unsigned long totLunga = 0;

// WiFi parametri
const char* ssid = "Mia_Linea";   //  <<- definite la vostra rete WIFI
const char* password = "Mia_Password";  //  <<- e la vostra password

// Si crea un' instance di server
WiFiServer server(80);

void DisplayClear(void) {
 int i;
 for (i = 0; i < 4; i++) {
 lcd.setCursor(0, 0);
 lcd.print("                ");
 }
}

//*******************************************************************
void setup() {
 // Viene inizializzato il display
 lcd.begin(20, 4, LCD_5x10DOTS);      // LCD 16x4 e formato caratteri
 lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
 lcd.setBacklight(HIGH);       // accende Bachkight

 // Si definiscono le porte e le condizioni iniziali
 pinMode(btn1, OUTPUT);
 digitalWrite(btn1, LOW);
 pinMode(btn2, OUTPUT);
 digitalWrite(btn2, LOW);
 pinMode(btn3, OUTPUT);
 digitalWrite(btn3, LOW);
 pinMode(btn4, OUTPUT);
 digitalWrite(btn4, LOW);

 pinMode(led, OUTPUT);
 digitalWrite(led, LOW);

 // Start Seriale
 Serial.begin(115200);
 delay(10);

 WiFi.begin(ssid, password);  // inizializza la connessione WIFI

 // Verifica lo stato fino a connessione avvenuta.
 while (WiFi.status() != WL_CONNECTED) {
 lcd.setCursor(0, 0);
 lcd.print("  CONNESSIONE   ");
 lcd.setCursor(0, 1);
 lcd.print("   IN CORSO     ");
 Serial.print(".");
 delay(500);
 }

 DisplayClear();
 lcd.setCursor(0, 0);
 lcd.print("CONNESSO A:     ");
 lcd.setCursor(0, 1);
 lcd.print("                ");
 lcd.setCursor(0, 1);
 lcd.print(ssid);
 lcd.setCursor(0, 2);
 lcd.print("INDIRIZZO IP:   ");
 lcd.setCursor(0, 3);
 lcd.print(WiFi.localIP());

 // Start del server
 server.begin();

}

void loop() {
 while (WiFi.status() != WL_CONNECTED) {
 WiFi.reconnect();
 digitalWrite(led, HIGH);
 }
 digitalWrite(led, LOW);

 // Verifica se un client si è connesso
 WiFiClient client = server.available();
 if (!client) {
 return;
 }
 // Attende di ricevere qualche dato
 while (!client.available()) {
 delay(1);
 }

 // Legge la richiesta fino a r, poi con client.flush elimina eventuali caratteri
 // ricevuti ma non letti.
 String req = client.readStringUntil('\r');
 client.flush();
 Serial.println(req);

 //se viene ricevuta "GET/favicon.ico HTTP/1.1" risponde che non trova jl file
 if (req.indexOf("favicon.ico") != -1) {
 client.flush();
 client.print("HTTP/1,1 404 Not Found\r\n");
 Serial.println("Non Trovato");
 delay(1);
 } else {
 if (req.indexOf("PB1ON") != -1) {
 digitalWrite(btn1, HIGH);
 PB1_Flag = true;
 }
 if (req.indexOf("PB1OFF") != -1) {
 digitalWrite(btn1, LOW);
 PB1_Flag = false;
 }

 if (req.indexOf("PB2ON") != -1) {
 digitalWrite(btn2, HIGH);
 PB2_Flag = true;
 }
 if (req.indexOf("PB2OFF") != -1) {
 digitalWrite(btn2, LOW);
 PB2_Flag = false;
 }

 if (req.indexOf("PB3ON") != -1) {
 digitalWrite(btn3, HIGH);
 PB3_Flag = true;
 }
 if (req.indexOf("PB3OFF") != -1) {
 digitalWrite(btn3, LOW);
 PB3_Flag = false;
 }

 if (req.indexOf("PB4ON") != -1) {
 digitalWrite(btn4, HIGH);
 PB4_Flag = true;
 }
 if (req.indexOf("PB4OFF") != -1) {
 digitalWrite(btn4, LOW);
 PB4_Flag = false;
 }

 String buff = "HTTP/1.1 200 OK\r\n Content-Type:text/html\r\n content-lenght:2166\r\n\r\n";
 headLunga = buff.length();

 buff += "<html>";
 buff += "<head><title>TETECOMANDO</title>";
 buff += "<style type=\"text/css\">";
 buff += "td{align:center;width:auto;height:70px;}";
 buff += "</style></head>";
 buff += "<body style=\"width:99,99%;height:99,99%\">";

 buff += "<div align=\"center\">";

 buff += "<table style=\"width:auto;background-color:#dcdcdc\">";

 buff += "<thead style=\"width:100%;background-color:#6699FF\">";
 buff += "<tr><th colspan=\"5\"style=\"font-weight:bold;font-size:2em\">TELECOMANDO</th></tr></thead>";

 buff += "<tr>";
 if (PB1_Flag) {
 buff += "<td><a href=\"/?PB1ON\"><button style=\"background-color:#008000;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>&nbsp;ON&nbsp;</font></button></a></td>";
 buff += "<td><a href=\"/?PB1OFF\"><button style=\"background-color:#ffff66;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>OFF</font> </button></a></td>";
 } else if (!PB1_Flag) {
 buff += "<td><a href=\"/?PB1ON\"> <button style=\"background-color:#ffff66;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>&nbsp;ON&nbsp;</font></button></a></td>";
 buff += "<td><a href=\"/?PB1OFF\"><button style=\"background-color:#cc0000;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>OFF</font></button></a></td>";
 }
 buff += "<td><h3>LUCE GIARDINO</h3></td></tr>";

 buff += "<tr>";
 if (PB2_Flag) {
 buff += "<td><a href=\"/?PB2ON\"><button style=\"background-color:#008000;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>ON</font></button></a></td>";
 buff += "<td><a href=\"/?PB2OFF\"><button style=\"background-color:#ffff66;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>OFF</font></button></a></td>";
 } else if (!PB2_Flag) {
 buff += "<td><a href=\"/?PB2ON\"><button style=\"background-color:#ffff66;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>ON</font></button></a></td>";
 buff += "<td><a href=\"/?PB2OFF\"><button style=\"background-color:#cc0000;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>OFF</font></button></a></td>";
 }
 buff += "<td><h3>LUCE INGRESSO</h3></td></tr>";

 buff += "<tr>";
 if (PB3_Flag) {
 buff += "<td><a href=\"/?PB3ON\"><button style=\"background-color:#008000;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>ON</font></button></a></td>";
 buff += "<td><a href=\"/?PB3OFF\"><button style=\"background-color:#ffff66;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>OFF</font></button></a></td>";
 } else if (!PB3_Flag) {
 buff += "<td><a href=\"/?PB3ON\"><button style=\"background-color:#ffff66;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>ON</font></button></a></td>";
 buff += "<td><a href=\"/?PB3OFF\"><button style=\"background-color:#cc0000;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>OFF</font></button></a></td>";
 }
 buff += "<td><h3>LUCE NOTTURNA</h3></td></tr>";

 buff += "<tr>";
 if (PB4_Flag) {
 buff += "<td><a href=\"/?PB4ON\"><button style=\"background-color:#008000;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>ON</font></button></a></td>";
 buff += "<td><a href=\"/?PB4OFF\"><button style=\"background-color:#ffff66;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>OFF</font></button></a></td>";
 } else if (!PB4_Flag) {
 buff += "<td><a href=\"/?PB4ON\"><button style=\"background-color:#ffff66;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>ON</font></button></a></td>";
 buff += "<td><a href=\"/?PB4OFF\"><button style=\"background-color:#cc0000;width:99%;height:99%;border-radius:15px\">";
 buff += "<font size=\"6\"><b>OFF</font></button></a></td>";
 }
 buff += "<td><h3>LUCE SCALA</h3></td></tr>";

 buff += "</table></div></body></html>";

 totLunga = buff.length();
 Serial.print("lunghezza intestazione = ");
 Serial.println(headLunga);
 Serial.print("lunghezza totale = ");
 Serial.println(totLunga);

 // Invia la risposta al client
 client.print(buff);

 delay(1);
 }

}


spero che qualcuno mi possa dare qualche dritta
toni

andrea1201

#151
Jun 25, 2018, 11:51 am Last Edit: Jun 25, 2018, 12:10 pm by andrea1201
Ciao ragazzi, è da un pò che ci smanetto con l'esp32, ma ora mi sono bloccato a un progetto,
1) volevo avere una connessione diretta wifi tra due esp32 senza l'uso di un access point (accendere un led)
2) avere una connessione diretta tra esp32 e android (accendendo un led)

Ci smanetto da vari giorni, ho impostato un esp32 in modalità softAP nel loop ho messo questo e non funziona


Code: [Select]
void loop(){
WiFiClient client = server.available();  
 if (client) {                          
   Serial.println("New Client.");          
   String currentLine = "";                
   while (client.connected()) {            
     if (client.available()) {            
       char c = client.read();            
       Serial.write(c);                    
       if (c == '\n') {                          
         if (currentLine.length() == 0) {
           
           client.println("HTTP/1.1 200 OK");
           client.println("Content-type:text/html");
           client.println();

           client.print("Click <a href=\"/H\">here</a> to turn the LED on pin 5 on.<br>");
           client.print("Click <a href=\"/L\">here</a> to turn the LED on pin 5 off.<br>");

           
           client.println();
           
           break;
         } else {    
           currentLine = "";
         }
       } else if (c != '\r') {  
         currentLine += c;      
       }

       
       if (currentLine.endsWith("GET /H")) {
         digitalWrite(5, HIGH);    }          

       if (currentLine.endsWith("GET /L")) {
         digitalWrite(5, LOW);              
       }
     }
   }
   
   client.stop();
   Serial.println("Client Disconnected.");
 }
}



gpb01

#152
Jun 25, 2018, 12:01 pm Last Edit: Jun 25, 2018, 12:02 pm by gpb01
>andrea1201:   ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post qui sopra (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 !

andrea1201

#153
Jun 25, 2018, 12:11 pm Last Edit: Jun 25, 2018, 12:48 pm by gpb01
>andrea1201:   ti ricordo che in conformità al regolamento, punto 7, .....
Grazie l'avevo dimenticato :D

PaoloP

#154
Jul 02, 2018, 06:55 pm Last Edit: Jul 02, 2018, 06:55 pm by PaoloP

zoomx

Alla fine dopo un sacco di messaggi su github lo hanno fatto. Sai se scarica anche le librerie che sono al di fuori del repository come la bluetooth? Io ho capito di no, anche se non è un problema, basta saperlo.

testato

No, non le scarica
Credo sia voluto

Nel momento in cui le scaricasse l'utente crederebbe fossero parte integrante del progetto, portando ad aprire issue sul core esp in caso di problemi ad esempio sul BT

Comunque non capisco questa via di mezzo, o le tieni dentro o fuori, che senso ha averle così ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH


testato

Incluso di board manager finalmente  :)

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

zoomx

Eliminato il vecchio core e installato il nuovo: la libreria bluetooth è inclusa!

testato

Ottimo, quindi va a scaricarla automaticamente via board manager, visto che nel core non é presente

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Andrea_81

Salve a tutti,
 volevo sapere come inviare  comandi AT di ESP32 per confingurare il bluetooth tradizionale(non il BLE). Utilizzo un sistema operativo Linux e vorrei evitare di installare Microsoft Windows. Grazie.

gpb01

>Andrea_81: essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

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

steve-cr

Scusate il disturbo, mi sono arrivate le schedine ESP32, una la Nano (LOLIN) e l'altra la DEVKIT V1.

Nesson problema per la LOLIN

Problema su quella più "grande", la DEVKIT
Apro la seriale e schiaccio il reset: OK, mi trasmette tutto quello che deve.
Ho anche io il problema, come molti da quanto ho visto, che non riesco a caricare niente perche dopo connecting mi da l'errore Failed to connect ESP32 timeout waiting ecc ecc ecc

C'è qualcuno che sa il perché?

Grazie in anticipo.
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

steve-cr

TROVATO, dopo un po' di surfing in internet.

Quando IDE scrive Connecting ....._____..... basta premere il tasto BOOT fino a quando non inizia la trasmissione.

I parametri che ho usato sono:
Scheda: ESP 32 Dev Module
Flash mode: DIO
Flash size: 4Mb
Partition scheme: Pochi
Flash frequency: 80Mhz
Upload speed: 921600
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

Go Up