Arduino Polska Forum
walka z ESP8266 - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Sieciowe Protokoły i Urządzenia (https://forum.arduinopolska.pl/dzial-sieciowe-protoko%C5%82y-i-urz%C4%85dzenia)
+--- Wątek: walka z ESP8266 (/watek-walka-z-esp8266)



walka z ESP8266 - byniom - 22-12-2015

Udało mi się wgrać nowe firmware do modułu ESP8266 i efekt jest taki że coś zaczyna się dziać. Wgrałem do Leonardo program który pokazywany był prze Elektroprzewodnik na youtube i coś nie dokońca jest tak . Niby moduł pracuje bo się zaczyna coś pokazywać w serial monitorze ale tak jak by się zatrzymał i na coś czekał.
http://klimar.kutno.pl/images/esp.jpg

Podłączenia też mam zgodnie z tym co było tam podane.
http://klimar.kutno.pl/images/elektroprzewodnik.jpg

Niewiem jak dopisać do tego programu aby widział moją sieć , czyli nazwa sieci oraz hasło hoć i tak w chwili podłączenia miałem hasło wyłączone i nic to nie dało i zachowywało się tak jak na pierwszym zdjęciu.

Podaję tez kod programu.
Kod:
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void){
 Serial1.begin(115200);
 Serial.begin(9600);

 while(!wyslij("AT","OK",100)){
 Serial.println("Błąd komunikacji z modułem");
 delay(1000);
 }
 
 delay(5000);
 
 if(wyslij("AT+CWMODE=1","OK",500))
 Serial.println("CWMODE - OK!");
 if(wyslij("AT+CIPMODE=0","OK",500))
 Serial.println("CIPMODE - OK!");  
 if(wyslij("AT+CIPMUX=1","OK",500))
 Serial.println("CIPMUX - OK!");
 
 if(wyslij("AT+CWJAP=\"ElektroPrzewodnik\",\"rezystancja\"","OK",5000))
 Serial.println("Polaczono z siecia!");
 
 if(wyslij("AT+CIPSERVER=1,80","OK",5000))
 Serial.println("Uruchomiono serwer :)");
 
 Serial1.println("AT+CIFSR");
 Serial.println(Serial1.readString());
 delay(200);
 
 sensors.begin();
}

char klient[1];
char bufor [50];
String strona;

void loop() {
 while(Serial1.available()>0)
 {
   if(Serial1.find("+IPD,"))
   {
     Serial1.readBytesUntil(',',klient,1);
     Serial.println();
     
     sensors.requestTemperatures();
     strona = "<html><head><title>TEST</title></head><body><h2>Temperatura: " + String(sensors.getTempCByIndex(0)) + "*C</h2></body></html>";
 
     Serial.print("ZAPYTANIE ID: ");
     Serial.println(klient[0]);
     
     sprintf(bufor,"AT+CIPSEND=%c,%d",klient[0],strona.length());
     if(wyslij(bufor,">",100))
     Serial.println("Zadanie wyslania...");
     if(wyslij(strona,"OK",100))
     Serial.println("Wyslano dane");
     sprintf(bufor,"AT+CIPCLOSE=%c",klient[0]);
     if(wyslij(bufor,"OK",100))
     Serial.println("Zamknieto polaczenie");
   }
 }
}

boolean wyslij(String Komenda_AT, char *Odpowiedz_AT, int czas_czekania){
 Serial1.println(Komenda_AT);
 delay(czas_czekania);
 while(Serial1.available()>0){
   if(Serial1.find(Odpowiedz_AT)) {
   return 1;
   }    
 }
 return 0;
}

Jeżeli ktoś ma jakiś pomysł lub jakiś prosty sketch z rysunkiem podłączeń to bym był wdzięczny . Chciałem zobaczyć jak to działa ale coś nie idzie poprawnie. Dodam jeszcze że na schemacie tego nie mam ale jest podłączony ds18b20 do Leonardo na pin 2.


RE: walka z ESP8266 - ziemianin4 - 23-12-2015

(22-12-2015, 09:49)Code napisał(a):  if(wyslij("AT+CWJAP=\"ElektroPrzewodnik\",\"rezystancja\"","OK",5000))
 Serial.println("Polaczono z siecia!");

Zgodnie z tym co masz w kodzie programu Twoje ESP próbuje się połączyć z siecią ElektroPrzewodnik używając hasła rezystancja. Spróbuj podmienić te dwie wartości na parametry Twojej sieci.

Pozdrawiam,
Artur


RE: walka z ESP8266 - byniom - 23-12-2015

(23-12-2015, 11:20)ziemianin4 napisał(a):
(22-12-2015, 09:49)Code napisał(a):  if(wyslij("AT+CWJAP=\"ElektroPrzewodnik\",\"rezystancja\"","OK",5000))
 Serial.println("Polaczono z siecia!");

Zgodnie z tym co masz w kodzie programu Twoje ESP próbuje się połączyć z siecią ElektroPrzewodnik używając hasła rezystancja. Spróbuj podmienić te dwie wartości na parametry Twojej sieci.

Pozdrawiam,
Artur
Teraz na serial monitorze podaje mi takie dan:

CWMODE - OK!
CIPMUX - OK!
Polaczono z siecia!
AT+CIFSR
+CIFSR:STAIP,"192.168.1.13"
+CIFSR:STAMAC,"18:fe:34:da:64:67"
OK

ZAPYTANIE ID: 0
Zamknieto polaczenie
ZAPYTANIE ID: 0
Zamknieto polaczenie

ale temperatury nie podaje nadal , a jeszcze mam pytanie czy poza serial monitorem to np. na stronie o adresie modułu też powinien coś w przeglądarce pokazac ?


RE: walka z ESP8266 - ziemianin4 - 23-12-2015

Tak. Po otwarciu w przeglądarce adresu http://192.168.1.13 powinieneś w przeglądarce zobaczyć napis "Temperatura: ...".

Pozdrawiam,
Artur


RE: walka z ESP8266 - byniom - 23-12-2015

Sprawa wygląda tak że jak otworzę w przeglądarce to nic nie pokazuje ale kidy wejdę na tą stronę z telefonu po wifi to pokazuje wszystko dobrze . Teraz pytanie co mam źle ustawione że moja przeglądarka w kompie tego nie chce pokazać ? Router mam Orange FunBox z Neostrady.


RE: walka z ESP8266 - byniom - 23-12-2015

Wszystko już śmiga poza przeglądarka IE ,w gogle wyświetla temperaturę natomiast w tamtej za cholerę ni chce i nie wiem gdzie to ustawić. Chciałem ustawić w moim routerze no-ip ale te sprzęty z Neostrady nie chętnie chyba z tym działają. Ma ktoś jakiś pomysł jak to wyświetlić w IE ?


RE: walka z ESP8266 - ziemianin4 - 23-12-2015

A wpisujesz pełny adres z http:// na początku? IE bardzo tego nie lubi jak się o tym zapomina Wink


RE: walka z ESP8266 - CEO - 23-12-2015

Spróbuj też dodać slash na końcu.


RE: walka z ESP8266 - byniom - 23-12-2015

Nic to nie pomogło . Ważne że moduł działa i z telefonu oraz z przeglądarki gogle mogę podglądac temperaturę .

Podaję kod który działa na dwa czujniki:

Kod:
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void){
 Serial1.begin(115200);
 Serial.begin(9600);

 while(!wyslij("AT","OK",100)){
 Serial.println("Błąd komunikacji z modułem");
 delay(1000);
 }
 
 delay(5000);
 
 if(wyslij("AT+CWMODE=1","OK",500))
 Serial.println("CWMODE - OK!");
 if(wyslij("AT+CIPMODE=0","OK",500))
 Serial.println("CIPMODE - OK!");  
 if(wyslij("AT+CIPMUX=1","OK",500))
 Serial.println("CIPMUX - OK!");
 
 if(wyslij("AT+CWJAP=\"TWOJA SIEĆ\",\"TWOJE HASŁO SIECIOWE\"","OK",5000))
 Serial.println("Polaczono z siecia!");
 
 if(wyslij("AT+CIPSERVER=1,80","OK",5000))
 Serial.println("Uruchomiono serwer :)");
 
 Serial1.println("AT+CIFSR");
 Serial.println(Serial1.readString());
 delay(200);
 
 sensors.begin();
}

char klient[1];
char bufor [50];
String strona;

void loop() {
 while(Serial1.available()>0)
 {
   if(Serial1.find("+IPD,"))
   {
     Serial1.readBytesUntil(',',klient,1);
     Serial.println();
     
     sensors.requestTemperatures();
     Serial1.println(sensors.getTempCByIndex(0));
     delay(100);
     Serial1.println(sensors.getTempCByIndex(1));
     
     strona = "<html><head><title>TEST</title></head><body><h2><font size=38>Temperatura 1: " + String(sensors.getTempCByIndex(0)) + "*C   </h2></body></html></font>" + "<h3><font size=38>Temperatura 2: " + String(sensors.getTempCByIndex(1)) + "*C</h3></body></html></font>";
 
     Serial.print("ZAPYTANIE ID: ");
     Serial.println(klient[0]);
   
     
   
     sprintf(bufor,"AT+CIPSEND=%c,%d",klient[0],strona.length());
     if(wyslij(bufor,">",100))
     Serial.println("Zadanie wyslania...");
     if(wyslij(strona,"OK",100))
     Serial.println("Wyslano dane");
     sprintf(bufor,"AT+CIPCLOSE=%c",klient[0]);
     if(wyslij(bufor,"OK",100))
     Serial.println("Zamknieto polaczenie");
   }
 }
}

boolean wyslij(String Komenda_AT, char *Odpowiedz_AT, int czas_czekania){
 Serial1.println(Komenda_AT);
 delay(czas_czekania);
 while(Serial1.available()>0){
   if(Serial1.find(Odpowiedz_AT)) {
   return 1;
   }    
 }
 return 0;
}



RE: walka z ESP8266 - byniom - 23-12-2015

Mama takie pytanie do czego służy bibliotek SoftwareSerial.h , bo w niektórych aplikacjach jest ona podana i linie 10,11 natomiast znowu w innych jest podane Rx , Tx . Kiedy stosujemy to pierwsze a kiedy to z Rx podłączenie ?