Haberler

Wio Terminal’ın Ağ Bağlantısı için Güncellemeler: “Wio” Ne Anlama Geliyor, Realtek RTL8720DN’nin Kısa Tanıtımı ve Wio Terminal’ı Wi-Fi’ye Nasıl Bağlayıp İnternetten Veri Alabilirsiniz

Bugünkü Wio Terminal güncellemesi, en önemli özelliklerinden biri olan güvenilir ve güçlü ağ bağlantısı hakkında! Bu yazıda şunları konuşacağız:

  • “Wio” ne anlama geliyor
  • Wio Terminal’ın Kablosuz Çekirdeği: Realtek RTL8720DN hakkında kısa bir tanıtım
  • Wio Terminal’ı Wi-Fi’ye nasıl bağlayıp internetten veri alabilirsiniz

“Wio” ne anlama geliyor

Wio platform, IoT'yi basit bir şekilde uygulayın

Başlamadan önce, birçok kişi hızlı bir soru sormak isteyebilir: Wio Terminal’daki “Wio” ne anlama geliyor?

“Kablosuz giriş ve çıkış”ın kısaltmasıdır; Seeed tarafından geliştirilen, donanım ve yazılımı içeren bir platformdur ve yapımcılar için IoT geliştirmeyi basitleştirmeyi amaçlamaktadır. Wio Ailesi sayesinde, hatta acemiler bile 5 dakika içinde kendi IoT uygulamalarını oluşturabilir; donanım programlaması, breadboard, jumper kablolar veya lehimleme gerektirmeden.

Wio Terminal, Wio ailesinin en yeni üyesidir. Onun, daha büyük kardeşlerinden oldukça farklı olduğunu fark etmiş olmalısınız; tek bir gömülü fonksiyonel modül değil, yüksek entegre tasarıma sahip basit ve küçük bir cihazdır; 72 x 57 x 12 mm boyutlarında, çoklu işlevleri şık bir kasada bir araya getirir. Güvenilir kablosuz bağlantısıyla birlikte, bir IoT projesi kurmak her zamankinden daha basit.

Wio Terminal’ı, internetten gerçek zamanlı verileri gösteren demolar yapmak için kullanabilirsiniz; örneğin, yerel hava durumu veya döviz kurları gibi canlı veriler, fazla çaba harcamadan. Hatta yerleşik mıknatısları ve 2 montaj deliği vardır, böylece istediğiniz hemen hemen her yere bir monitör veya gösterge paneli olarak sabitleyebilirsiniz.

Wio Terminal’ın Kablosuz Çekirdeği: Realtek RTL8720DN hakkında kısa bir tanıtım

Wio Terminal’ı güçlü kablosuz bağlantıyla güçlendirmek için, hem BLE / BLE 5.0 hem de Çift Bant 2.4Ghz / 5Ghz Wi-Fi destekleyen Realtek RTL8720DN’i benimsedik ve IoT projeleri için temel sağladık.

Seeed’de, sizin için Realtek RTL8720DN 2.4G/5G Çift Bant Kablosuz ve BLE5.0 Kombinasyon Modülü de sağlıyoruz. Bu küçük modülün WiFi 5G ve Bluetooth Düşük Enerji 5.0’ı da desteklediğini söylemek gerekir. Ana çip RTL8720DN ile, WiFi ve Bluetooth uygulamaları için tipik SBC’ler ile bir SoC olarak kabul edilebilir.

Wio Terminal’ı Wi-Fi’ye nasıl bağlayıp internetten veri alabilirsiniz

İşte en önemli kısım: Wio Terminal’ı internetten veri almak için nasıl kullanabilirsiniz? Bugün, Wio Terminal’ı HTTPS sunucusuna erişmek ve internetten canlı veri almak için nasıl kullanacağınızı tanıtacağız. Bu demoda, Wio Terminal, MicroPython’un Github deposundan veri almak için kullanılır ve veriler LCD ekranında görüntülenir.

Kendi Github deponuz varsa, oradan veri alabilir ve Wio Terminal’ı masaüstünüze çekerek kodunuza kaç kişinin yıldız verdiğini veya fork ettiğini saymadan öğrenebilirsiniz. Bir yapımcı için oldukça heyecan verici, değil mi? Elbette, Demo’yu hava durumu bilgilerini, Youtube istatistiklerini vb. almak için diğer API’lere de uygulayabilirsiniz. Olasılıklar sonsuz!

Wio Terminal’a yeni başladıysanız, sizin için birçok belge hazırladık. Bu demoya başlamadan önce, Wio Terminal üzerindeki Kablosuz Çekirdek Realtek RTL8720 için en son yazılımı güncellediğinizden emin olun. Wio Terminal’da Wi-Fi bağlantısını nasıl yapılandıracağınızdan emin değilseniz, detaylı eğitimimize buradan ulaşabilirsiniz.

Haydi başlayalım!

Donanım Gereksinimi

Gerekli Arduino kütüphaneleri

  • LCD ekran Kütüphanesini Seeed_Arduino_LCD yükleyin, daha fazla bilgi için Wio Terminal LCD sayfasını ziyaret edin.
  •  ArduinoJson depolarını ziyaret edin ve tüm repo’yu yerel sürücünüze indirin.
    • Artık ArduinoJson kütüphanesini Arduino IDE’ye yükleyebilirsiniz. Arduino IDE’yi açın ve sketch -> Include Library -> Add .ZIP Library seçeneğine tıklayın ve indirdiğiniz ArduinoJson dosyasını seçin.
  • Https bağlantısı hakkında daha fazla bilgi için lütfen buraya bakın.

Arduino Talimatları

  •  Free_Fonts.h başlık dosyasını indirin, böylece LCD kütüphanesinde bulunan ücretsiz fontlar için kısaltmaları kullanabilirsiniz. Lütfen bu başlık dosyasını Arduino Sketch ile aynı konuma koyduğunuzdan emin olun.
  • Tam kodu buradan indirin veya aşağıdakini kopyalayın.
  • Kodu yükleyin.

Tam Kod

Not: ssid ve password değerlerini kendi Ağ Wi-Fi’nize değiştirin.

#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
#include"Free_Fonts.h"
#include"TFT_eSPI.h"
TFT_eSPI tft;

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

//29*27
const unsigned char watchIMG[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 
  0x00, 0xFC, 0x07, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x80, 0x1F, 0x3F, 0x00, 
  0xC0, 0x07, 0x7C, 0x00, 0xE0, 0x03, 0xF8, 0x00, 0xF0, 0xE1, 0xF0, 0x01, 
  0xF8, 0xF1, 0xF1, 0x01, 0xF8, 0xF8, 0xF1, 0x03, 0xFC, 0xF8, 0xF1, 0x03, 
  0xF8, 0xF0, 0xF1, 0x03, 0xF0, 0xF1, 0xF0, 0x01, 0xF0, 0x01, 0xF8, 0x00, 
  0xE0, 0x03, 0x78, 0x00, 0xC0, 0x07, 0x3E, 0x00, 0x80, 0xFF, 0x1F, 0x00, 
  0x00, 0xFE, 0x0F, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  };

const unsigned char starIMG[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
  0x00, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 
  0x00, 0xF0, 0x01, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xF8, 0x03, 0x00, 
  0x00, 0xF8, 0x07, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0xFE, 0xFF, 0xFF, 0x1F, 
  0xFE, 0xFF, 0xFF, 0x0F, 0xFC, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x03, 
  0xF0, 0xFF, 0xFF, 0x01, 0xC0, 0xFF, 0xFF, 0x00, 0x80, 0xFF, 0x7F, 0x00, 
  0x00, 0xFF, 0x3F, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x80, 0xFF, 0x3F, 0x00, 
  0x80, 0xFF, 0x3F, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x80, 0xBF, 0x7F, 0x00, 
  0xC0, 0x1F, 0x7E, 0x00, 0xC0, 0x07, 0x78, 0x00, 0xC0, 0x01, 0x70, 0x00, 
  0x40, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  };

const unsigned char forkIMG[] = {
  0xF8, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0x0F, 0x07, 0x00, 0x01, 
  0x07, 0x07, 0xE0, 0x0F, 0x07, 0x07, 0x78, 0x1E, 0x9E, 0x07, 0x38, 0x38, 
  0xFC, 0x01, 0x38, 0x38, 0xF8, 0x00, 0x38, 0x3C, 0xF8, 0x00, 0xF0, 0x1F, 
  0xF8, 0x00, 0xE0, 0x07, 0xF8, 0x00, 0xC0, 0x07, 0xF8, 0x00, 0xE0, 0x07, 
  0xF8, 0x00, 0xE0, 0x07, 0xF8, 0x00, 0xF8, 0x03, 0xF8, 0x00, 0xFE, 0x01, 
  0xF8, 0xE0, 0xFF, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x1F, 0x00, 
  0xF8, 0xFF, 0x03, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x00, 
  0xF8, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 
  0x9E, 0x07, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 
  0x0F, 0x07, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 
  };

const char*  server = "api.github.com";  // Sunucu URL'si

const char* test_root_ca = \
                            "-----BEGIN CERTIFICATE-----\n"
                            "MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs\n"
                            "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
                            "d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j\n"
                            "ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL\n"
                            "MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3\n"
                            "LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy\n"
                            "YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2\n"
                            "4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC\n"
                            "Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1\n"
                            "itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn\n"
                            "4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X\n"
                            "sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft\n"
                            "bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA\n"
                            "MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw\n"
                            "NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy\n"
                            "dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t\n"
                            "L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG\n"
                            "BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ\n"
                            "UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D\n"
                            "aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd\n"
                            "aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH\n"
                            "E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly\n"
                            "/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu\n"
                            "xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF\n"
                            "0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae\n"
                            "cPUeybQ=\n"
                            "-----END CERTIFICATE-----\n";

// İsterseniz x.509 istemci sertifikalarını kullanabilirsiniz
//const char* test_client_key = "";   // istemciyi doğrulamak için
//const char* test_client_cert = "";  // istemciyi doğrulamak için

String github_data;

WiFiClientSecure client;

void setup() {
    // Seri portu başlat ve açılmasını bekle:
    Serial.begin(115200);
    delay(100);

    Serial.print("SSID'e bağlanmaya çalışılıyor: ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);

    tft.begin();
    tft.setRotation(3);
    tft.fillScreen(TFT_BLACK);
    tft.setTextSize(2);
    tft.setCursor((320 - tft.textWidth("Wi-Fi'ye bağlanılıyor.."))/2, 120);
    tft.print("Wi-Fi'ye bağlanılıyor..");

    // Wi-Fi ağına bağlanmaya çalış:
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");
        // yeniden denemek için 1 saniye bekle
        delay(1000);
    }

    Serial.print("Bağlandı: ");
    Serial.println(ssid);

    tft.fillScreen(TFT_BLACK);
    tft.setCursor((320 - tft.textWidth("Bağlandı!"))/2, 120);
    tft.print("Bağlandı!");

    getData();
}

void loop() {
    // hiçbir şey yapma
}

void getData() {
    client.setCACert(test_root_ca);
  //client.setCertificate(test_client_key); // istemci doğrulaması için
  //client.setPrivateKey(test_client_cert); // istemci doğrulaması için

    tft.fillScreen(TFT_BLACK);
    tft.setCursor((320 - tft.textWidth("Sunucuya bağlanılıyor.."))/2, 120);
    tft.print("Sunucuya bağlanılıyor..");

    Serial.println("\nSunucuya bağlantı başlatılıyor...");
    if (!client.connect(server, 443)) {
        Serial.println("Bağlantı başarısız!");
        tft.fillScreen(TFT_BLACK);
        tft.setCursor((320 - tft.textWidth("Bağlantı başarısız!"))/2, 120);
        tft.print("Bağlantı başarısız!");
    } else {
        Serial.println("Sunucuya bağlandı!");
        tft.fillScreen(TFT_BLACK);
        tft.setCursor((320 - tft.textWidth("Sunucuya bağlandı!"))/2, 120);
        tft.print("Sunucuya bağlandı!");

        // HTTP isteği yap:
        client.println("GET https://api.github.com/repos/micropython/micropython HTTP/1.0");
        client.println("Host: api.github.com");
        client.println("User-Agent: Seeed-Studio");
        client.println("Connection: close");
        client.println();

        while (client.connected()) {
            String line = client.readStringUntil('\n');
            if (line == "\r") {
                Serial.println("başlıklar alındı");
                break;
            }
        }

        while(client.available())
        {
          String line = client.readStringUntil('\r');
          github_data = line;
        }
        //Serial.println(github_data);
        client.stop();
        Serial.println("bağlantı kapatılıyor");          
    }

    // ArduinoJson ile verileri ayrıştır, daha fazla bilgi için ArduinoJson'a bak
    const size_t capacity = 2*JSON_OBJECT_SIZE(18) + JSON_OBJECT_SIZE(77) + 6050;
    DynamicJsonDocument doc(capacity);
    deserializeJson(doc, github_data);

    int subscribers_count = doc["subscribers_count"];
    int forks = doc["forks"];
    int stargazers_count = doc["stargazers_count"];

    Serial.println(subscribers_count);
    Serial.println(forks);
    Serial.println(stargazers_count);

    // TFT EKRAN OTURUMU
    tft.setFreeFont(FSS9);
    tft.setTextSize(1);
    tft.setTextColor(TFT_WHITE);
    tft.fillScreen(TFT_BLACK);
    tft.drawString("MicroPython Github",20,10);
    tft.drawFastHLine(185,18,120 ,TFT_RED);
    tft.drawFastHLine(185,19,120 ,TFT_RED);
    tft.drawFastHLine(185,20,120 ,TFT_RED);
    tft.drawFastHLine(10,33,300 ,TFT_NAVY);
    tft.drawFastHLine(10,34,300 ,TFT_NAVY);
    tft.drawFastHLine(10,35,300 ,TFT_NAVY);

    tft.drawXBitmap(20,60, watchIMG, 29, 27, TFT_WHITE);
    tft.drawXBitmap(20,120, starIMG, 30, 30, TFT_WHITE);
    tft.drawXBitmap(20,180, forkIMG, 30, 30, TFT_WHITE);

    tft.setFreeFont(FMB9);
    tft.drawString("İzleyiciler: ",60, 68);
    tft.drawString("Yıldızlar: ",60, 128);
    tft.drawString("Forklar: ",60, 188);

    tft.drawNumber(subscribers_count, 165, 68);
    tft.drawNumber(stargazers_count, 130, 128);
    tft.drawNumber(forks, 130, 188);
}

Daha fazla harika demo ve detaylı eğitimler için wiki’mizi ziyaret edebilirsiniz. Bizimle kalın ve Wio Terminal hakkında daha fazla güncelleme alın!

Leave a Reply

Your email address will not be published. Required fields are marked *