• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
walka z ESP8266
#1
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.
 
Odpowiedź
#2
(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
 
Odpowiedź
#3
(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 ?
 
Odpowiedź
#4
Tak. Po otwarciu w przeglądarce adresu http://192.168.1.13 powinieneś w przeglądarce zobaczyć napis "Temperatura: ...".

Pozdrawiam,
Artur
 
Odpowiedź
#5
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.
 
Odpowiedź
#6
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 ?
 
Odpowiedź
#7
A wpisujesz pełny adres z http:// na początku? IE bardzo tego nie lubi jak się o tym zapomina Wink
 
Odpowiedź
#8
Spróbuj też dodać slash na końcu.
[Obrazek: Sygnatura1-w60.jpg]
 
Odpowiedź
#9
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;
}
 
Odpowiedź
#10
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 ?
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości