Alguses, kui ESP8266 välja ilmus, oli selle programmeerimine jõukohane ilmselt vaid fanaatikutele. Nüüd on aeg edasi läinud, vaatame kui lihtne on seda programmeerida praegu. Lõpuks ometi on ka ilmad soojaks läinud. Aga kui soojaks? Hea on pilk temperatuurinäidul peal hoida. Alustame siis väikese artikliseeriaga ja vaatame, kuhu me välja jõuame.

Arduino on oma lihtsuse tõttu saavutanud suure populaarsuse. Samas Arduino IDE on liiga lihtne ja väheste võimalustega, mille tõttu paljudele see ei meeldi. On ka teisi võimalusi. Tutvume siin PlatformIO ja CLion IDE-ga. Selgub, et need teevad omavahel väga head koostööd.

PlatformIO installeerimine on tõesti lihtne. Kui Python on juba arvutis olemas, piisab vaid get-platformio.py allalaadimisest ja käivitamisest.

Seejärel:

platformio init --ide clion --board esp12e

 

Nüüd lisame src kausta faili main.cpp. Muuda ka wifi parameetrid sobivaks.

 

#include <ESP8266WiFi.h>

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


const char *host = "www.ilmateenistus.ee";


void setup() {
    Serial.begin(115200);
    delay(10);

    // We start by connecting to a WiFi network

    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default,
       would try to act as both a client and an access-point and could cause
       network-issues with your other WiFi-devices on your WiFi-network. */
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
}


void loop() {
    delay(60000);
    Serial.print("connecting to ");
    Serial.println(host);

    // Use WiFiClient class to create TCP connections
    WiFiClient client;
    const int httpPort = 80;
    if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
    }

    String url = "/ilma_andmed/xml/observations.php";

    Serial.print("Requesting URL: ");
    Serial.println(url);

    // This will send the request to the server
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: closen\r\nUser-agent:esp8266\r\n\r\n");
    unsigned long timeout = millis();
    while (client.available() == 0) {
        if (millis() - timeout > 5000) {
            Serial.println(">>> Client Timeout !");
            client.stop();
            return;
        }
    }

    bool tallinn_found = false;
    bool kuusiku_found = false;
    // Read all the lines of the reply from server and print them to Serial
    while (client.available()) {

        String line = client.readStringUntil('\r');

        if (line.indexOf("Date:") >= 0)
            Serial.print(line);

        if (line.indexOf("<name>Tallinn-Harku</name>") >= 0) {
            Serial.print(line);
            tallinn_found = true;
        }
        if (line.indexOf("<name>Kuusiku</name>") >= 0) {
            Serial.print(line);
            kuusiku_found = true;
        }
        if (tallinn_found && line.indexOf("<airtemperature>") >= 0) {
            Serial.print(line);
            tallinn_found = false;
        }
        if (kuusiku_found && line.indexOf("<airtemperature>") >= 0) {
            Serial.print(line);
            break;
        }
//        Serial.print(line);
    }

    Serial.println();
    Serial.println("closing connection");
}

 

Veel üks pisike skript, millega testida esp8266 töökorras olekut asub siin:

https://www.exploreembedded.com/wiki/Arduino_Support_for_ESP8266_with_simple_test_code

 

Ühendame esp8266 seadme USB pessa ja käivitame:

platformio run --target upload

Sellega on meil töötav programm esp8266 välkmälusse kirjutatud. Töötavat programmi saame vaadata käsureal:

pio device monitor  -b115200

 

Tulemus ei ole loomulikult veel lõplik. On küll näha, et meil õnnestub ilmateenistuse serverist XML alla laadida ja seda pisut töödelda ning näha ka tulemust, kuid see ei ole veel sugugi kasutajasõbralikul kujul. Programmi eeliseks on küll praegu lihtsus. Lähtekood ei vaja ilmselt selgitusi.

Kompileerida ja välkmällu laadida saab ka CLion IDE keskkonnas. Selleks, et üle saada hoiatusest "Executable is not specified", tegin pisikese programmi ok.exe, mis tegelikult ei tee midagi erilist. Selle lähtekoodi fail main.c on järgmine:

int main()
{
	return 0;
}

 

 

Linke:

https://www.arduino.cc/

http://docs.platformio.org/en/latest/installation/#local-download-mac-linux-windows

https://www.losant.com/blog/getting-started-with-platformio-esp8266-nodemcu

http://www.instructables.com/id/Introducing-PlatformIO-for-ESP8266/

http://docs.platformio.org/en/latest/ide/clion/

http://googl.com/#q=CH340+NodeMcu+V3

https://raw.githubusercontent.com/esp8266/Arduino/master/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino