Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Janos250

    őstag

    válasz dzz #17348 üzenetére

    Ígértem leegyszerűsített ESP32 WEB szerver mintát.
    Nem tudom aktuális-e még, itt van egy végletekig leegyszerűsített változat:

    // felhasznalva:
    // https://lastminuteengineers.com/creating-esp32-web-server-arduino-ide/
    // reszletesebben lsd ott


    #include <WiFi.h>
    #include <WebServer.h>
    using namespace std;

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



    IPAddress ip(192, 168, 0, 30); // ez lesz az ESP32 IP cime
    IPAddress dns(192, 168, 0, 1); // ehhez az IP-ju WiFi routerhez fog kapcsolodni
    IPAddress gateway(192, 168, 0, 1); // a router a gateway is
    IPAddress subnet(255, 255, 0, 0); // a Wifi router maskja. ha nem tudod, akkor ez tobbnyire jo
    IPAddress primaryDNS(8, 8, 8, 8); //optional lehet a router is
    IPAddress secondaryDNS(8, 8, 4, 4); //optional

    WebServer server(80);


    const char htmlHeader[] = R"=====(
    <!DOCTYPE html>
    <html lang = hu >

    <head>
    <meta charset="UTF-8">
    <title>minta WEB szerver</title>
    </head>
    )=====";


    void serverValaszolHTMLtexttel() {

    String htmlstring = htmlHeader ; // csak Arduino String (nagybetus) jo, string (C++ kisbetus string) nem!
    htmlstring += "<body>" ;
    htmlstring += "\n Hello, World!\n <br>\n" ;
    htmlstring += " ide jonnek a feldat szerinti dolgok\n <br>\n" ;
    //egy minta: https://lastminuteengineers.com/creating-esp32-web-server-arduino-ide/
    htmlstring += "</body>\n</html>" ;

    server.send(200, "text/html", htmlstring);

    } ;

    void handle_NotFound(){
    server.send(404, "text/plain", "Not found");
    } ;

    void setup(void) {


    //************************************
    // Ez a szokasos
    Serial.begin(115200);
    delay(2000);

    WiFi.begin(ssid, password);
    if(!WiFi.config(ip, gateway, subnet, dns, secondaryDNS)) {
    Serial.println("STA Failed to configure");
    }
    Serial.print("Connecting to ");
    Serial.println(ssid);
    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    }
    // Print local IP address and start web server
    Serial.println("");
    Serial.println("WiFi connected.");
    Serial.println("IP address(ESP32): ");
    Serial.println(WiFi.localIP());// this will display the Ip address of the Pi which should be entered into your browser

    //*************************************************



    // mit kuldjon, ha egy client bejelentkezik
    server.on("/", serverValaszolHTMLtexttel);

    // mit kuldjon, ha hibas az URL
    server.onNotFound(handle_NotFound);

    server.begin();
    Serial.println("HTTP server started");
    Serial.print ("ezt ird be a bongeszo cimsoraba:http://");
    Serial.println(WiFi.localIP()) ;


    } ; // end setup


    void loop(void) {
    server.handleClient();
    delay(50);
    } ; // end loop

  • Janos250

    őstag

    válasz dzz #17348 üzenetére

    A freeRTOS mindenképpen fut, és nem is kell róla tudomást venni, ha nem akarod, pont ugyanúgy használhatod, mint ha mondjuk UNO lenne.
    Ugyanúgy van a main.cpp lényege (kikeresheted):
    setup();

    for(;;) {

    A mindenféléket beállítja neked, nem kell vele bogarászni, el is felejtheted, hogy freeRTOS alatt fut, ha nem akarod a két magot kihasználni.

    Nem nagyon van a freeRTOS-hoz használati utasítás a espressifen kívül
    https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos.html
    de nem is igen kell .
    Igazából az ember a xTaskCreatePinnedToCore API-t használja, ha meg akarja adni, hogy melyik magon fusson, vagy ha ráhagyod az oprendszerre, akkor meg az xTaskCreate.
    Ha nem akarod, nem is látod ezeket a függvényeket, ő automatikusan az 1-es magon futtatja, ha nem beszélsz bele, hanem mondjuk egy UNO programot futtatsz.
    Esetleg a vTaskDelete, vTaskDelay ( de a delay is erre fordítódik) , az xTaskDelayUntil, uxTaskPriorityGet, eTaskGetState, vTaskGetInfo, vTaskPrioritySet. Ezek nevei magukért beszélnek, a leírásuk , és a paramétereik a linken ott vannak.
    Én akartam még használni a vTaskList-et, de az meg az Arduinora fordított verzióban nem működik, mert az meg csak akkor működik, ha valami debug módot is beállítottak volna, azt meg utólag - állítólag - nem lehet.
    A WiFi-re majd írok konkrét példákat, és felteszem valahova.
    Többféle módon használhatod.

  • Tankblock

    aktív tag

    válasz dzz #17348 üzenetére

    Szia

    [link]

    FreeRTOS alatt a taskot lehet hozzárendelni, hogy a 2 mag (már ugye ahol elérhető) hol is fusson.

    Szedd le az esp-idf githubról abban benne van az összes példaprogram : [link]

Új hozzászólás Aktív témák