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:
- Wio Terminal nedir
- Açılış
- Arduino IDE ile Kodlama
- 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.
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.
