Haberler

Wio Terminal ile Hızla Başlamanıza Yardımcı Olacak Üç Temel Demo: LCD’nin Parlaklığını Işık Sensörü Kullanarak Ayarlayın, Düğmeler ve Anahtar Kullanarak Bir Melodi Çalın ve IR Verici ile Bir TV Uzaktan Kumandası Yapın

Bu gönderi, homemadegarbage tarafından yazılan Wio Terminal を使ってみた adlı yazıdan Seeed tarafından çevrilmiştir (twitter: @H0meMadeGarbage). Bunu bizimle paylaştıkları için teşekkür ederiz! Daha ilginç projeler için ana sayfalarını ziyaret edin: homemadegarbage.com.

Bu gönderide şunlar ele alınacaktır:

  1. Wio Terminal nedir
  2. Açılış
  3. Arduino IDE ile Kodlama
  4. Temel Fonksiyonlar
    • 4.1 Işık Sensörünü Kullanarak Ekranın Parlaklığını Kontrol Etme
    • 4.2 Üç Buton, 5 Yönlü Anahtar ve Buzzerdan Bir Alet Yapma
    • 4.3 Kızılötesi Verici Kullanarak TV Uzaktan Kumandası Yapma

1. Wio Terminal nedir

Wio Terminal, Realtek RTL8720DN tarafından desteklenen kablosuz bağlantıya sahip ATSAMD51 tabanlı bir mikrodenetleyicidir. CPU hızı 120MHz’de çalışır (200MHz’ye kadar artırılabilir). Realtek RTL8720DN çipi, IoT projeleri için temel sağlayarak hem Bluetooth hem de Wi-Fi desteği sunar. Wio Terminal, 2.4” LCD Ekran, yerleşik IMU (LIS3DHTR), Mikrofon, Buzzer, microSD kart yuvası, Işık sensörü ve Kızılötesi Verici (IR 940nm) ile donatılmıştır.

Daha fazla bilgi için:

Seeed Wio Terminal sayfası
Şemalar
Seeed Wiki

2. Açılış

İçinde Wio Terminal, USB Type-C Kısa Kablo ve Kullanım Kılavuzu bulunmaktadır.

Kullanımdan önce LCD ekranın koruyucu filmlerini çıkarmanız gerekiyor. Bu arada, arka taraftaki (IR Verici ve ışık sensörü için) şeffaf pencerede de bir koruyucu film bulunmaktadır. Bunu da çıkarmayı unutmayın!

Arka tarafta bir TELEC işareti de bulunmaktadır.

USB-C kablosunu PC’ye bağlayıp yan taraftaki güç anahtarını açtığınızda, bir oyun başlayacaktır (gerçekten zor bir oyun…).

3. Arduino IDE ile Kodlama

Birkaç gün önce Seeeduino Xiao adlı, SAMD21 Cortex M0+ tabanlı küçük bir Arduino Mikrodenetleyici satın aldım ve Seeeduino kartları için ortamı zaten kurdum (Önceki gönderi: Seeeduino XIAOを使ってみた), bu yüzden bu kısmı atlayacağız ve bu gönderide Wio Terminal’ın bazı temel fonksiyonlarına odaklanacağız.

Arduino IDE ile kodlama ortamını nasıl kuracağınız hakkında detaylı talimatlar için bu eğitimi kontrol edin.

4. Temel Fonksiyonlar

4.1 Işık Sensörünü Kullanarak Ekranın Parlaklığını Kontrol Etme

Bu demo da, ekranın renk parlaklığı ışık sensörünün değeri ile kontrol edilmektedir. Işık sensörü değeri (0 ile 1023 arasında) ekranın mavi parlaklığına (0 ile 31 arasında) dönüştürülmekte ve eğer ışık sensörü değeri 50 veya daha az ise, ekran arka aydınlatması kapatılacaktır.

4.1.1 Nasıl Kurulur

Işık sensörünü nasıl yapılandıracağınız hakkında bilgi için buraya bakın.

LCD ekranı nasıl kuracağınız hakkında bilgi için buraya bakın.

Ayrıca aşağıdaki kütüphanelere de ihtiyacınız olacak:

Seeed_Arduino_LCD 
Adafruit Zero DMA

Örnek kod aşağıdaki gibidir:

#include"TFT_eSPI.h"
TFT_eSPI tft;
  #define LCD_BACKLIGHT (72Ul) 

void setup() {
  tft.begin();
  tft.setRotation(3);
  
  pinMode(WIO_LIGHT, INPUT);
  Serial.begin(115200);
 
}
 
void loop() {
   int light = analogRead(WIO_LIGHT);
   Serial.print("Işık değeri: ");
   Serial.println(light);
   delay(50);
   if(light > 50){
    digitalWrite(LCD_BACKLIGHT, HIGH);
     tft.fillScreen(map(light, 0, 1023, 0, 31));
   }else{
     tft.fillScreen(0);
     digitalWrite(LCD_BACKLIGHT, LOW);
   }
}

4.2 Üç Buton, 5 Yönlü Anahtar ve Buzzer ile Bir Alet Yapma

Üstteki üç buton ve öndeki 5 yönlü anahtar ile bir alet yaptım ve buzzer kullanarak bir melodi çaldım. Ekranda görebileceğiniz gibi, 5 müzik notasına (C, D, E, F, G, A, B, C) butonlar ve anahtar atanmıştır.

https://twitter.com/H0meMadeGarbage/status/1260580079089995776?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1260580079089995776&ref_url=https%3A%2F%2Fhomemadegarbage.com%2Fwioterminal01

4.2.1 Nasıl Kurulur

LCD ekranda karakterleri nasıl görüntüleyeceğiniz hakkında bilgi için buraya bakın.

Ayrıca butonları, 5 yönlü anahtarı ve buzzer’ı yapılandırma hakkında resmi wiki’yi kontrol edin.

Örnek kod aşağıdaki gibidir:

#include"TFT_eSPI.h"
#include"Free_Fonts.h" //başlık dosyasını dahil et

#define BUZZER_PIN WIO_BUZZER
  
TFT_eSPI tft;

int state = 0;
 
void setup() {
  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(TFT_BLACK); 
 
  tft.setFreeFont(FSSBO24); 

  Serial.begin(115200);
  pinMode(WIO_KEY_A, INPUT_PULLUP);
  pinMode(WIO_KEY_B, INPUT_PULLUP);
  pinMode(WIO_KEY_C, INPUT_PULLUP);
  pinMode(WIO_5S_UP, INPUT_PULLUP);
  pinMode(WIO_5S_DOWM, INPUT_PULLUP);
  pinMode(WIO_5S_LEFT, INPUT_PULLUP);
  pinMode(WIO_5S_RIGHT, INPUT_PULLUP);
  pinMode(WIO_5S_PRESS, INPUT_PULLUP);

  pinMode(BUZZER_PIN, OUTPUT);
}

void loop() {
  if (digitalRead(WIO_KEY_C) == LOW) {
    state = 1;
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("C",140,100);
    playTone(1915, 500);
   }
   else if (digitalRead(WIO_KEY_B) == LOW) {
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("D",140,100);
    playTone(1700, 500);
   }
   else if (digitalRead(WIO_KEY_A) == LOW) {
    state = 3;
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("E",140,100);
    playTone(1519, 500);
   }else if (digitalRead(WIO_5S_UP) == LOW) {
    state = 4;
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("F",140,100);
    playTone(1432, 500);
   }
   else if (digitalRead(WIO_5S_DOWM) == LOW) {
    state = 5;
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("G",140,100);
    playTone(1275, 500);
   }
   else if (digitalRead(WIO_5S_LEFT) == LOW) {
    state = 6;
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("A",140,100);
    playTone(1136, 500);
   }
   else if (digitalRead(WIO_5S_RIGHT) == LOW) {
    state = 7;
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("B",140,100);
    playTone(1014, 500);
   }
   else if (digitalRead(WIO_5S_PRESS) == LOW) {
    state = 8;
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("C",140,100);
    playTone(956, 500);
   }else{
    tft.fillScreen(TFT_BLACK); 
   }
}


  void playTone(int tone, int duration) {
    for (long i = 0; i < duration * 1000L; i += tone * 2) {
        digitalWrite(BUZZER_PIN, HIGH);
        delayMicroseconds(tone);
        digitalWrite(BUZZER_PIN, LOW);
        delayMicroseconds(tone);
    }
}

4.3 Kızılötesi Verici Kullanarak Bir TV Uzaktan Kumandası Yapma

IR Vericiyi kullanarak bir TV uzaktan kumandası yaptım. Bu demoda, ses seviyesi 5 yönlü anahtarın yukarı ve aşağı hareketiyle kontrol ediliyor ve anahtara basarak televizyonu açıp kapatabilirsiniz.

4.3.1 Kurulum Nasıl Yapılır

Kızılötesi vericinin yapılandırması hakkında bilgi için buraya

(Amazon Echo & ESP8266 ile akıllı bir ev inşa etmekle ilgileniyorsanız, önceki yazımı buradan kontrol edin.)

Örnek kod aşağıdaki gibidir:

#include"TFT_eSPI.h"
#include"Free_Fonts.h" //başlık dosyasını dahil et

#include     // Öncelikle gönderim tabanını dahil et
//Şimdi yalnızca gerçekten kullanmak istediğiniz protokolleri dahil edin.
//En düşük numaralı protokol ilk olmalı, ancak geri kalan 
//herhangi bir sırada olabilir.
#include     
#include    
#include      // Tüm protokollerden sonra bunu dahil et

TFT_eSPI tft;

IRsend mySender;

void setup() {
  Serial.begin(115200);
  
  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(TFT_BLACK); 
 
  tft.setFreeFont(FSSBO24);
  
  pinMode(WIO_5S_UP, INPUT_PULLUP);
  pinMode(WIO_5S_DOWM, INPUT_PULLUP);
  pinMode(WIO_5S_LEFT, INPUT_PULLUP);
  pinMode(WIO_5S_RIGHT, INPUT_PULLUP);
  pinMode(WIO_5S_PRESS, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(WIO_5S_UP) == LOW) {
    mySender.send(NEC,0x001C630CF, 0);//NEC TV ses Yükselt 
    Serial.println("gönderildi");
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("Ses Yükselt",5,100);
    delay(1000);
  }
  else if (digitalRead(WIO_5S_DOWM) == LOW) {
    mySender.send(NEC,0x001C6B04F, 0);//NEC TV ses Azalt 
    Serial.println("gönderildi");
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("Ses Azalt",5,100);
    delay(1000);
  }else if (digitalRead(WIO_5S_LEFT) == LOW) {
    
  }else if (digitalRead(WIO_5S_RIGHT) == LOW) {
    
  }else if (digitalRead(WIO_5S_PRESS) == LOW) {
    mySender.send(NEC,0x001C6F00F, 0);//NEC TV güç 
    Serial.println("gönderildi");
    tft.fillScreen(TFT_BLACK); 
    tft.drawString("GÜÇ",20,100);
    delay(1000);
  }
  tft.fillScreen(TFT_BLACK); 
}

Bu yazıda Wio Terminal'in bazı temel işlevlerinden bahsedildi ve keşfedilmeyi bekleyen daha birçok işlev var! Bizimle kalın ve topluluktan daha ilginç projeleri kontrol edin.

Leave a Reply

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