Skocz do zawartości
tomaszjeep

ESP-01S ESP8266 problem ze startem

Pomocna odpowiedź

Cały kod serwera razem z HTML możesz oprogramować wewnątrz ESP-01S i o ile nie będzie tam dużych wodotrysków wszystko się zmieści w dostępnym flash. Na pewno łatwiej będzie to zrobić w ESP niż robiąc Leonardo jako serwer + ESP tylko jako bramka WIFI z komendami AT (porównaj flash i RAM obu uC).  Do tego modułu są gotowe moduły wykonawcze, możesz też taki zbudować sobie sam. Wpisz w Google "esp01-relay" i obejrzyj fotki co mam na myśli. Może to być Twoja strona WWW lub część systemu "inteligentnego domu". Zostaw go tam i niech sobie pracuje na swoje utrzymanie. Do bardziej rozbudowanych zastosowań możesz sobie kupić jednak w/w moduły z chipem ESP-12E czy ESP12-F, a dalej idąc ESP32. Tak na siłę łączyć ESP-01S z Leonardo raczej nie ma sensu.  Leonardo na pewno Ci się bardziej przyda w symulowaniu różnych klawiatur/myszek itp. urządzeń do komputera (dzięki wbudowanemu USB), czasami potrzebny jest drugi UART sprzętowy, obsługa jakiegoś shielda Arduino, itp., lepszych zastosowań jest też na pęczki.

 

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Udało mi się to zrobić. Mianowicie ESP łączy się z Wifi i pobiera ze strony (przez GET) wartość i wysyła mi ją do Arduino (z serwera może przyjść wartośc "OFF" lub "ON"). I wszystko byłoby pięknie gdyby nie to że dostaje taką odpowiedź.

 

do ESP mam taki kod wgrany

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
 
/* Set these to your desired credentials. */
const char *ssid = "xxx";  //ENTER YOUR WIFI SETTINGS
const char *password = "xxx";
 
 
//=======================================================================
//                    Power on setup
//=======================================================================
 
void setup() {
  delay(1000);
  Serial.begin(115200);
  WiFi.mode(WIFI_OFF);        //Prevents reconnection issue (taking too long to connect)
  delay(1000);
  WiFi.mode(WIFI_STA);        //This line hides the viewing of ESP as wifi hotspot
  
  WiFi.begin(ssid, password);     //Connect to your WiFi router
  Serial.println("");
 
  Serial.print("Connecting");
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  //If connection successful show IP address in serial monitor
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP address assigned to your ESP
}
 
//=======================================================================
//                    Main Program Loop
//=======================================================================
void loop() {
  HTTPClient http;    //Declare object of class HTTPClient
 
  String getData, Link;
 
  //GET Data
  getData = "?status=current";
  Link = "http://przyklad.pl/switchtest.php" + getData;
  
  http.begin(Link);     //Specify request destination
  
  int httpCode = http.GET();            //Send the request
  String payload = http.getString();    //Get the response payload
 
  Serial.println(payload);    //Print request response payload
 
  http.end();  //Close connection
  
  delay(1000);  //GET Data at every 5 seconds
}

A do arduino taki

 

#include <SoftwareSerial.h>

SoftwareSerial esp8266(10,11); 
                           
void setup() {
  
  Serial.begin(115200);
  
  esp8266.begin(115200);
  
}
 
void loop() {
  
  if(esp8266.available()) {
    
    while(esp8266.available()) {  
        
      char c = esp8266.read();
      
      Serial.write(c);
      
    }  
    
  }
  
}

 

Untitled-1.jpg

Edytowano przez tomaszjeep

Udostępnij ten post


Link to post
Share on other sites

Jak napisać statement

if(odpowiedz == "ON") {



} else if(odpowiedz == "OFF") {



}

??

Udostępnij ten post


Link to post
Share on other sites

Software serial przy odbieraniu jest bardzo wrażliwy na prędkość, raczej celuj w 9600. Do odbierania lepiej użyć sprzętowego UART, a Arduino co najmniej MICRO - wtedy ten na pinach TX/RX to sprzętowy Serial1, ten na USB to serial. Poszukaj na forum serial event i parsowanie danych. Możesz sobie porównywać też literki na początek, z ESP zamiast ON wysłać '1' i zamiast OFF '0'.

Udostępnij ten post


Link to post
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »

×