back to top

ESP32 ile Google Calendar’ı Ekrana Taşıdık: Akıllı Toplantı Paneli Yapımı

Gün içerisinde arka arkaya toplantılara giriyorsanız, takvim sekmesini sürekli kontrol etmek veya telefondan bildirim beklemek bir süre sonra oldukça yorucu hale gelebiliyor. Özellikle ofis, atölye veya çalışma masasında bir sonraki toplantının saatini ve konusunu tek bakışta görebileceğimiz fiziksel bir ekran oldukça kullanışlı olabilir.

Biz de bu ihtiyaca ESP32 tabanlı bir çözüm geliştirdik. 5.0 inç ESP32 HMI TFT LCD ekranımızı Google Calendar ile konuşturarak, yaklaşan toplantıları otomatik olarak ekranda gösteren bir akıllı toplantı takip sistemi hazırladık.

Sistem Wi-Fi ağına bağlanıyor, Google Calendar API üzerinden yaklaşan etkinliği sorguluyor ve toplantının başlığını, saatini ve açıklamasını 800×480 çözünürlüklü ekranda gösteriyor. Aynı zamanda NTP sunucusundan aldığı saat bilgisiyle güncel saati de takip edebiliyoruz.

Google Calendar’a yeni bir toplantı eklediğimizde ayrıca ESP32’ye müdahale etmemize gerek kalmıyor. Sistem belirli aralıklarla takvimi kontrol ediyor ve yaklaşan etkinliği otomatik olarak güncelliyor.

Projeyi yalnızca elektronik ve yazılım tarafında bırakmadık. Sistemi daha kullanışlı hale getirmek için 3.7V 1800mAh 1S Li-Po batarya ile besledik ve ekran ile bataryayı yerleştirebileceğimiz 3D baskı bir duvar kasası tasarladık. Böylece panelimizi sürekli USB kablosuna bağlı tutmadan uygun bir noktaya monte ederek bağımsız bir akıllı toplantı ekranı olarak kullanabiliyoruz.

Kısacası Google Calendar’ı fiziksel bir IoT paneline dönüştürüyor, ardından kendi kasamızı hazırlayarak duvara monte ediyoruz. Hadi başlayalım!

Projede Kullanılan Malzemeler

Projede oldukça az sayıda donanım kullanıyoruz. Bunun en önemli nedeni, kullandığımız HMI ekranın üzerinde zaten güçlü bir ESP32-S3 mikrodenetleyicisinin bulunması.

Kullandığımız HMI ekran yalnızca bir LCD panelden oluşmuyor. Ekranın üzerinde kendi ESP32-S3 işlemcisi, Wi-Fi bağlantısı ve grafik sürücü devresi bulunuyor. Bu nedenle ayrı bir ESP32 ile ekran arasında jumper kablolar kullanarak bağlantı kurmamıza gerek kalmıyor.

Ekran kapasitif dokunmatik özelliğe sahip olsa da bu projenin mevcut sürümünde dokunmatik özelliği kullanmıyoruz. Ekranı toplantı bilgilerinin sürekli görüntülendiği bir bilgi paneli olarak kullanıyoruz.

Projeyi duvara monte edilebilir ve bağımsız hale getirmek için kasanın arka bölümüne 1800mAh kapasiteli 3.7V 1S Li-Po bataryayı yerleştiriyoruz. Ekran ve bataryanın birlikte düzgün şekilde konumlanabilmesi için kullandığımız dış gövdeyi ise 3D yazıcıyla üretiyoruz.

Akıllı Toplantı Sistemi STL dosyasını indirmek için tıklayın.

Devre Kurulumu ve Çalışma Mantığı

Projede klasik Arduino uygulamalarında olduğu gibi sensörleri veya modülleri tek tek ESP32 pinlerine bağlamıyoruz. Çünkü ekran ile ESP32-S3 arasındaki RGB bağlantıları HMI modülünün PCB’si üzerinde hazır durumda.

Programlama işlemi tamamlandıktan sonra sistemi taşınabilir hale getirmek için 3.7V 1800mAh 1S Li-Po bataryamızı ekranın uygun güç bağlantısına bağlıyoruz. Bataryayı 3D baskı kasanın arka bölümüne yerleştirerek hareket etmeyecek şekilde sabitliyoruz.

Kurulum sıramız genel olarak şu şekilde ilerliyor:

  1. HMI ekranı USB Type-C üzerinden bilgisayara bağlıyoruz.
  2. Arduino IDE üzerinden programımızı ekran üzerindeki ESP32-S3’e yüklüyoruz.
  3. 3.7V 1800mAh Li-Po bataryayı cihazın uygun güç bağlantısına bağlıyoruz.
  4. Bataryayı 3D baskı kasanın arkasındaki bölüme yerleştiriyoruz.
  5. HMI ekranı kasanın ön bölümüne oturtuyoruz.
  6. Kablo ve bataryanın kasa içerisinde sıkışmadığından emin oluyoruz.
  7. Kasayı kapattıktan sonra hazırladığımız paneli uygun bir noktaya duvara monte ediyoruz.
  8. Sistem açıldığında ESP32-S3 Wi-Fi ağına bağlanıyor ve Google Calendar üzerinden yaklaşan toplantıları otomatik olarak sorgulamaya başlıyor.

Bu yapı sayesinde bilgisayara sürekli bağlı kalması gerekmeyen, duvar üzerinde tek başına çalışan kompakt bir toplantı takip paneli elde ediyoruz.

Güvenlik Uyarısı: Li-Po bataryaları monte ederken pili delmemeye, ezmemeye, kısa devre yaptırmamaya ve aşırı sıkıştırmamaya dikkat edelim. Bataryanın kablolarını kasa içerisinde keskin yüzeylerden uzak tutalım. Ayrıca 1S Li-Po bataryanın şarj edilmesinde yalnızca uygun Li-Po şarj ve koruma devresi kullanılmalıdır. Bataryayı, kullandığımız kartın desteklemediği bir güç girişine doğrudan bağlamamalıyız.

Kod içerisinde ekranın arka aydınlatması GPIO 2 üzerinden kontrol ediliyor:

TFT Backlight -> GPIO 2

RGB ekranın diğer bağlantıları ise modülün PCB’si üzerinde zaten yapılmış durumda. Kod içerisinde tanımlanan temel RGB pinleri şu şekilde:

GörevESP32-S3 GPIO
DEGPIO 40
VSYNCGPIO 41
HSYNCGPIO 39
PCLKGPIO 0
Kırmızı RGB hatları45, 48, 47, 21, 14
Yeşil RGB hatları5, 6, 7, 15, 16, 4
Mavi RGB hatları8, 3, 46, 9, 1
Arka aydınlatmaGPIO 2

Bu pinleri bizim ayrıca jumper kabloyla bağlamamız gerekmiyor. Arduino_ESP32RGBPanel tanımı, ekran kartının üzerindeki hazır bağlantı düzenini yazılıma bildiriyor.

Önemli Teknik Not: Paylaştığımız kod klasik 30 pin ESP32 ESP-32S kartına yüklenmek için hazırlanmış değildir. Kodda GPIO 40, 41, 46, 47 ve 48 gibi ESP32-S3 pinleri kullanıldığı için programı HMI ekranın üzerindeki ESP32-S3 mikrodenetleyicisine yüklüyoruz.

Sistem açıldıktan sonra ekranda üç temel bilgi görüyoruz:

Yaklaşan Toplantı: Google Calendar etkinliğinin başlığı.

Saat: Toplantının başlangıç saati.

Açıklama: Google Calendar etkinliği içerisine yazdığımız açıklama.

Ekranın üst kısmında ise Wi-Fi bağlantı durumunu ve güncel saati takip edebiliyoruz.

Yazılım Detayları ve Kodlar

Projemizi programlamak için Arduino IDE kullanıyoruz. Yazılım tarafında birkaç farklı görevi aynı anda gerçekleştiriyoruz.

Arduino_GFX_Library, 800×480 TFT ekranımızdaki arayüzü çizmek için kullanılıyor. Başlıklar, çerçeveler, toplantı bilgileri ve renkler bu kütüphane üzerinden ekrana aktarılıyor.

WiFi.h, ESP32-S3’ü kablosuz ağa bağlıyor.

WiFiClientSecure.h ve HTTPClient.h, Google Calendar API’ye HTTPS üzerinden bağlanmamızı sağlıyor.

ArduinoJson.h, Google’dan gelen JSON verisini ayrıştırmamıza yardımcı oluyor.

Son olarak time.h kütüphanesiyle pool.ntp.org NTP sunucusundan güncel saat bilgisini alıyoruz.

Kodumuzun çalışma mantığını kısaca özetlersek:

ESP32 ilk olarak Wi-Fi ağına bağlanıyor. Ardından NTP sunucusundan güncel zamanı alıyor ve Google Calendar API’ye şu andan sonraki etkinlikleri soruyor.

API isteğinde:

singleEvents=true

ile yinelenen etkinlikleri tekil etkinliklere dönüştürüyoruz.

orderBy=startTime

ile toplantıları başlangıç zamanına göre sıralıyoruz.

maxResults=1

ile yalnızca yaklaşan ilk toplantıyı istiyoruz.

timeMin

parametresiyle geçmiş etkinlikleri filtreliyoruz.

Sistem Google Calendar’ı 60 saniyede bir yeniden kontrol ediyor. Böylece takvime yeni bir toplantı eklediğimizde ekran kısa süre içerisinde otomatik olarak güncelleniyor.

Google Calendar API REST tabanlı çalışıyor ve etkinlikleri HTTP istekleri üzerinden sorgulayabiliyoruz. Özel takvim bilgilerine erişilecek daha gelişmiş uygulamalarda OAuth yetkilendirmesi kullanılması gerekiyor; Google’ın güncel Calendar API dokümantasyonu da kullanıcı takvim verileri için OAuth kapsamlarını tanımlıyor.

Bu örnekte API anahtarıyla okuma yaptığımız için kullanılacak takvimin buna uygun şekilde erişilebilir olması gerekiyor. Özel şirket takvimlerini doğrudan internete açmak yerine OAuth tabanlı bir yapı tercih etmek daha doğru olacaktır.

Arduino IDE’de ayrıca Arduino_GFX_Library ve ArduinoJson kütüphanelerinin kurulu olduğundan emin olalım.

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

const char* calendarId = "TAKVIM_ID";
const char* apiKey = "GOOGLE_API_KEY";

API anahtarınızı herkese açık şekilde GitHub, forum veya blog içerisinde paylaşmamanızı öneririz. Blogdaki kodda bu nedenle API anahtarını boş bırakıyoruz.

Aşağıdaki kodu Arduino IDE üzerinden HMI ekranımızın üzerindeki ESP32-S3’e yükleyebiliriz:

Akıllı Toplantı Paneli projesinin kodlarını indirmek için tıklayın!

Kod yüklendikten sonra ekran açılıyor ve önce Wi-Fi ağına bağlanıyor. Bağlantı başarılı olduğunda sol üst bölümde “WiFi Bagli” bilgisini görüyoruz.

Sağ üst tarafta güncel saat gösterilirken ekranın orta bölümünde Google Calendar’daki yaklaşan toplantımız yer alıyor.

Örneğin Calendar’a:

Toplantı: Yeni verilerin incelenmesi
Saat: 17:30
Açıklama: Herkes laptop getirsin

şeklinde bir etkinlik eklediğimizde, ESP32 Calendar API üzerinden bu bilgileri alıyor ve toplantı panelimize aktarıyor.

Böylece Google Calendar sekmesini sürekli kontrol etmek zorunda kalmadan, duvara monte ettiğimiz bataryalı toplantı panelinden yaklaşan toplantılarımızı tek bakışta takip edebiliyoruz.

Tüm yapım aşamalarını, ekranın kurulumunu ve Google Calendar’da oluşturduğumuz toplantının ESP32 ekranında nasıl görüntülendiğini uygulamalı olarak görmek için hazırladığımız YouTube videosunu da izleyebilirsiniz.

Videolu Anlatım

Projenin kurulum aşamalarını adım adım görmek, ESP32 HMI TFT ekranın nasıl hazırlandığını, Google Calendar bağlantısının nasıl yapıldığını ve takvime eklediğimiz toplantı bilgilerinin ekrana nasıl yansıdığını uygulamalı olarak incelemek isterseniz, YouTube videomuzu hemen izleyebilirsiniz.

Projeyi Geliştirme Önerileri

Bu proje aslında çok daha kapsamlı bir masaüstü bilgi panelinin temelini oluşturuyor. Birkaç geliştirmeyle sistemi yalnızca toplantı gösteren bir ekrandan çok daha fazlasına dönüştürebiliriz.

1. Dokunmatik ekranı aktif hale getirebiliriz.
Kullandığımız HMI ekran kapasitif dokunmatik özelliğe sahip. “Sonraki toplantı”, “bugünkü toplantılar” veya “yenile” gibi butonlar ekleyerek Calendar içerisinde gezinilebilen interaktif bir arayüz hazırlayabiliriz.

2. Toplantı başlamadan önce sesli ve görsel uyarı verebiliriz.
Toplantıya 5 veya 10 dakika kaldığında ekran rengini değiştirebilir, hoparlör veya buzzer ekleyerek kısa bir uyarı sesi oluşturabiliriz.

3. Sistemi tam bir ofis bilgi paneline dönüştürebiliriz.
Google Calendar’ın yanı sıra hava durumu, yapılacaklar listesi, çalışma süresi, oda rezervasyonu veya şirket içerisindeki farklı API verilerini aynı ekrana ekleyebiliriz. Birden fazla panel hazırlayarak toplantı odalarının kapısına yerleştirilecek akıllı oda ekranları bile oluşturabiliriz.

Projeyi Siz de Deneyin!

ESP32’nin Wi-Fi yetenekleri ile Google Calendar API’yi bir araya getirdiğimiz bu projede, günlük hayatta gerçekten kullanabileceğimiz bir akıllı toplantı takip sistemi oluşturduk. Üstelik hazır bir HMI ekran kullanmamız sayesinde karmaşık ekran bağlantılarıyla uğraşmadan doğrudan yazılım ve IoT tarafına odaklanabiliyoruz.

Siz bu projede hangi özellikleri eklemek istersiniz? Dokunmatik menüler, toplantı hatırlatmaları veya farklı Google servisleriyle entegrasyon konusunda fikirleriniz varsa aşağıdaki yorumlar bölümünde bizimle paylaşmayı unutmayın.

Bir sonraki maker projemizde görüşmek üzere, keyifli çalışmalar!

Son Çıkan Yazılar

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz