Go Down

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

alessanddrob

Ho un ESP nodemcu amica
Lo sto usando come webserver
Quando carico il progetto , devo staccare l'alimetazione per avviarlo , altrimenti si riavvia , ma resta in attesa di connessione , mette i soliti puntini .......... che non si è connesso
Anche se fascio il reset resta imbambolato cosi , devo togliere l'alimentazione cosi si avvia tutto e si connette al primo colpo
Non ho provato se , connesso all'alimetatore esterno, resettandolo si avvia o resta bloccato li
Questo me lo fa con tutti i moduli, se li uso senza connessione seriale , con un semplice alimetatorino non ho problemi , si connettono subito senza problemi

Enzo--

Ciao a tutti, ho fatto diverse ricerche online per comandare un esp tramite mqtt ed ho trovato parecchi tutorial funzionanti.
Non ho trovato invece, nessuna libreria tipo la wifyesp che include mqtt.
Penso sia utile non solo comandare i gpio del modulino ma anche i pin di arduino.
In modo tale che con un esp8266-01, si ha la possibilità di poter controllare da remoto tutti i pin di arduino.
Ho trovato molto interessante anche la libreria aREST, ma anche codesta non permette di prendere il comando di arduino tramite il modulo.
Qualcuno di voi ha già fatto qualche prova del genere?
Creando un sistema del genere, anche chi è dietro rete nat puo' controllare i suoi dispositivi da remoto!!!
Ciao
Enzo

menniti

Scusa, mi pare che cercando con Google espwifi & mqtt esca un po di roba, prova a controllare perché io non ne capisco nulla, ho solo visto i termini.....
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

testato

#2538
Mar 18, 2017, 04:29 pm Last Edit: Mar 18, 2017, 04:31 pm by Testato
uso regolarmente mqtt, ma non via comandi AT.
non credo tu possa farlo facilmente, o forse non puoi proprio farlo, perche' con i comandi AT sei legato appunto ad essi, se non ci sono comandi AT che inviano dati via mqtt non puoi farlo.

Cosi' di primo acchito direi che non si puo' fare usando il fw originale, ma solo riscrivendo un nuovo firmware AT e relative funzionalita'.
Sarebbe un bel progetto se veramente nessuno ancora ci ha pensato, anche molto impegnativo da fare vista la poca documentazione in merito al fw originale (che io ricordi non e' opensource, solo una vecchissima versione venne rilasciata open)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Enzo--

Michele e Testato,
seguendo alcune discussioni il problema è proprio l'invio dei comandi AT.
Il mio scopo è:
Comandare i pin di arduino tramite il modulo esp8266-01 e mqtt.
Visto che al momento con la libreria wifyesp ci sono parecchi problemi,
mi è venuta un'altra brillante idea:
come suggerito da Testato,sul modulino è meglio caricare un firmware che abbia già le funzioni per lavorare con mqtt.
Mentre invece potrei usare arduino per leggere i dati dalla seriale ed eseguire delle funzioni in base al comando ricevuto.
Per fare una prova base, sul modulino ho caricato questo firmware:
Code: [Select]
#include <ESP8266WiFi.h>

const char* ssid = "nome router";
const char* password = "password router";

// 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;
  }
  if (val==0){
  Serial.println("b");  
  }
  if (val==1){
  Serial.println("a");  
  }

  // 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 semplicemente aggiunto un serialprint che quando il valore è 1 stampa il carattere a altrimenti stampa b se spento.
Quindi su arduino ho caricato questo sketch:
Code: [Select]
//test arduino uno + esp8266-01
//Enzo--

#define LED 12 // impostiamo la variabile LED sul pin digitale 12

void setup()
{
  pinMode(LED, OUTPUT); // impostiamo il pin del led (12) come output
  Serial.begin(115200);
}

void loop()
{
  char c = Serial.read();
  delay(200);
  Serial.print(c);
  if (c == 'a') {
    digitalWrite(LED, HIGH); // accendiamo il led
  }
  if (c == 'b') {
    digitalWrite(LED, LOW); //spegniamo il led
  }

}


Il codice funziona bene e quindi credo che basterà fare la stessa cosa con mqtt.
Che ne pensate?
Qualcuno puo' benissimo pensare ma perchè non usi una nodemcu?
Perchè mi ritrovo parecchi modulini esp8266-01 e volevo dar loro uno scopo anzichè lasciarli nel cassetto ;)

testato

#2540
Mar 19, 2017, 05:30 pm Last Edit: Mar 19, 2017, 05:32 pm by Testato
Ma lo 01 lo puoi comunque usare come un 12 :-)
se ti trovi a lavorare ad un progetto che necessita di piu' flash puoi cambiare la sola flash  ;)

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

Enzo--

secondo me ti manca il concetto che lo 01 lo puoi comunque usare come un 12 :-)
se ti trovi a lavorare ad un progetto che necessita di piu' flash puoi cambiare la sola flash  ;)


forse non mi sono spiegato bene:
con il modello esp8266-01 posso comandare solo i 2 gpio.
io invece volevo integrarlo ad arduino e tramite i messaggi ricevuti posso far commutare almeno 18 pin usando arduino uno

Daniele81

Ciao a tutti
vi volevo chiedere se è possibile utilizzare un ESP 01 per fare questo progetto

Arduino + ESP 01 + Telegram

esiste qualche tutorial?

mi sono bloccato con le librerie

WiFiEsp.h, utilizzando un esempio di questa riesco a configurare la rete e farmi restituire l'indirizzo IP
esiste una libreria telegram compatibile con questa?

Grazie

brunello22

http://www.augc.it/2016/08/05/tutorial_bot_telegram/

gpb01

#2544
Mar 23, 2017, 09:05 am Last Edit: Mar 23, 2017, 09:06 am by gpb01
>Daniele81:  essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (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

>Brunello:  Ti prego, prima di rispondere, di verificare sempre se l'utente abbia effettuato la presentazione, cosa che, ovviamente, NON può essere possibile se il suo numero di post è 1. Grazie anticipatamente per la preziosa collaborazione. :)
Search is Your friend ... or I am Your enemy !

vgiovene

buongiorno,
Scusate ho messo arduino nano con esp in modo server.Accedo con android ma non co ios!
avete qualche idea???

Salvatore765

mi sono sorti nuovi problemi :( ho creato il codice per 4 pulsanti on - off per comandare 4 relè, se premo i 4 pulsanti senza dargli il tempo di aggiornare la pagina si blocca tutto, se abilito solo 3 pulsanti on - off funziona correttamente, se invece li abilito tutti nn carica neanche la pagina del browser.

La libreria è il wifiESP, lo sketch caricato è il webserverAP il codice per i comandi dei pulsanti lo metto di seguito, con anche gli errori:

ho preso come esempio il codice nello sketch del webserverled e l'ho adattato al webserverAP del mio progetto
Code: [Select]
// Check to see if the client request was "GET /H" or "GET /L":
        if (buf.endsWith("GET /R1H")) {
          Serial.println("Relè cavo ON");
          cavo = HIGH;
          digitalWrite(2, HIGH);
        }
        else if (buf.endsWith("GET /R1L")) {
          Serial.println("Relè cavo OFF");
          cavo = LOW;
          digitalWrite(2, LOW);
        }
        if (buf.endsWith("GET /R2H")) {
          Serial.println("Relè luce spot ON");
          luce_rossa = HIGH;
          digitalWrite(3, HIGH);
        }
        else if (buf.endsWith("GET /R2L")) {
          Serial.println("Relè luce spot OFF");
          luce_rossa = LOW;
          digitalWrite(3, LOW);
        }
       if (buf.endsWith("GET /R3H")) {
          Serial.println("Relè luce uvb ON");
          luce_uvb = HIGH;
          digitalWrite(4, HIGH);
        }
        else if (buf.endsWith("GET /R3L")) {
          Serial.println("Relè luce uvb OFF");
          luce_uvb = LOW;
          digitalWrite(4, LOW);
        }
    /*   if (buf.endsWith("GET /R4H")) {
          Serial.println("Relè ventole ON");
          ventole = HIGH;
          digitalWrite(5, HIGH);
        }
        else if (buf.endsWith("GET /R4L")) {
          Serial.println("Relè ventole OFF");
          ventole = LOW;
          digitalWrite(5, LOW);
        }*/

client.print("<h2>Uscite Arduino</h2>");
  client.print("<br>\r\n"); 
  client.print("<font color=green>Lampada UVB: </font>");
  client.print(digitalRead(luce_uvb));
  client.println("<button><a href=\"/R3H\">ON</a></button>");
  client.println("<button><a href=\"/R3L\">OFF</a></button>");
  client.print("<br>\r\n"); 
  client.print("<font color=gold>Lampada Spot: </font>");
  client.print((digitalRead(luce_rossa)));
  client.println("<button><a href=\"/R2H\">ON</a></button>");
  client.println("<button><a href=\"/R2L\">OFF</a></button>");
  client.print("<br>\r\n"); 
  client.print("<font color=red>Cavo e piastra termica: </font>");
  client.println("<button><a href=\"/R1H\">ON</a></button>");
  client.println("<button><a href=\"/R1L\">OFF</a></button>");
  client.print("<br>\r\n");
  client.print("<font color=red>Ventole areazione: </font>");
  client.print(digitalRead(ventole));
  client.println("<button><a href=\"/R4H\">ON</a></button>");
  client.println("<button><a href=\"/R4L\">OFF</a></button>");
  client.print("<br>\r\n");


   

gli errori riscontrati sono questi presi leggendo il seriale, premendo i pulsanti senza dargli il tempo di aggiornare la pagina da questo:

[WiFiEsp] >>> TIMEOUT >>>
[WiFiEsp] Data packet send error (1)
[WiFiEsp] Failed to write to socket 1
[WiFiEsp] Disconnecting  1

se invece abilito da codice tutti e 4 i pulsanti e cerco di caricare la pagina da browser nn la carica e si blocca così:

[WiFiEsp] New client 0
New client
[WiFiEsp] TIMEOUT: 522

c'è una qualche soluzione? O ho sbagliato qualcosa io e nn la vedo :P


EDIT: mi sono accorto che anche se nn carica la pagina ma scrivo cmq tutto il codice per attivare o disattivare i relè funzionano, o almeno da seriale vedo che compaiono le scritte relative all'attivazione o disattivazione del relè, però nn riesco a capire perchè nn mi crea la pagina
Ho lo stesso problema, lo sketch sembra strutturato uguale, però anche a me, con 2 pulsanti va tutto bene e con 3 (4, 5, 6 ecc..) non carica nemmeno la pagina e sul monitor seriale spunta..
New client
[WiFiEsp] TIMEOUT: 522 (i numeri variano)

come si può risolvere questo problema?

roboticboyer

#2547
Apr 23, 2017, 09:30 pm Last Edit: Apr 29, 2017, 09:37 am by roboticboyer
Michele e Testato,
seguendo alcune discussioni il problema è proprio l'invio dei comandi AT.
Il mio scopo è:
Comandare i pin di arduino tramite il modulo esp8266-01 e mqtt.
Una possibile soluzione potrebbe essere:
Esp-link & MQTT, Esp-link e El-client

Un'altra alternativa simile
Esp_bridge e relativo github


PS: Io non ho fatto delle prove perché di norma programmo direttamente l'ESP con Arduino-IDE usando la libreria Arduino-mqtt

Segnalo anche questo progetto di un MQTT Broker direttamente implementato su un ESP8266 uMQTT_broker

Ciao
Gio
Il mio blog:http://roboticboyer.wordpress.com
GitHub:https://github.com/roboticboyer

ziopippo

#2548
May 02, 2017, 12:31 pm Last Edit: May 02, 2017, 12:33 pm by ziopippo Reason: URL
Buongiorno,
HO acquistato in fiera alcuni giorni fa un ESP8266-01.
Prima di metterlo in funzione ho cercato di documentarmi in giro e tra i vari post ho trovato anche questo che, ammetto di non essere ancora riuscito a leggere tutti i numerosissimi post.
Ho collegato L'ESP con un modulo FTDI232 interfacciato con una millefori ed un pulsantino per mettere a massa i pin GPIO0 e GND per consentire alll'esp8266 di entrare in modalità di programmazione, di secondo le indicazioni di questa giuda: https://www.reboot.ms/forum/threads/flash-firmware-su-esp8266.380

Al primo avvio ho verificato la visibilità dell'ESP tramire la ricerca WiFi del mio smartphone e rispondeva anche ai comndi AT tramite Serial Monitor dell'IDE Arduino.
Successivamete ho caricato uno dei tanti sketch trovati in rete seguendo questa guida : https://www.reboot.ms/forum/threads/programmare-esp8266-usando-arduino-ide.385
Da questo momento in poi non sono più riuscito a vedere il WiFi della ESP e non risponde neanche ai comandi AT dell'IDE.
Se carico lo schetck l'IDE non restituisce errori e dice che viene caricato regolarmente ed il led blu lampeggia regolarmente durante la programmazione.
All'accenzione del modulo continua ad accendersi il led blu per brevi istanti per poi illuminarsi il rosso.
Suggerimenti in merito?


testato

nella guida si parla di aggiornare al nuovo fw, hai controllato che il tuo abbia 1MB di flash e non 0,5MB ?
Tu vuoi continuare ad usarlo via comandi AT oppure vuoi rpogrammarlo ?
Parli di sketch, ma intendi un nuovo fw AT o uno sketch lua o uno sketch ino ?
- [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