Go Down

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

testato

Io metto comunque un controllo sulla connessione, e se é disconnesso provo a riconnettere.
Così hai la gestione di tutto senza affidarti a cose che non vedi
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

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

#152
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

#153
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

#154
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

#155
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

Go Up