Hackinge meraklı olan fakat elektronikten anlamayan ve bunun eksikliğini hisseden biri olarak Arduino‘nun benim için büyük bir nimet olacağını düşünerek bundan yaklaşık bir sene önce bir tane Aurdino UNO R3 sipariş etmiştim.

Bilmeyenler, duymayanlar için Vikipedi’ye göre Arduino’nun, Processing/Wiring dilinin (C programlama diline oldukça benzemektedir) bir uygulamasını içeren geliştirme ortamından oluşan bir fiziksel programlama platformu olduğunu, tek başına çalışan interaktif nesneler geliştirmek için kullanılabileceği gibi bilgisayar üzerinde çalışan yazılımlara da (Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider gibi) bağlanabileceğini ve hazır üretilmiş kartlar satın alabildiğiniz gibi, kendi ürettiğiniz donanımlarla çalışabildiğiniz, çeşidine göre mikrodenetleyici içeren bir kart olduğunu söyleyebiliriz.

Ardunio

Devre tahtası, dirençler, lehim vb. konulardan anlamadığım, anlamak için de çok fazla zaman ayıramayacağımı öngörerek sensörlerle ve modüllerle çalışmanın bana hız ve zaman kazandıracağını düşünerek Arduino UNO R3’ün yanı sıra bir de sensor shield v5.0 sipariş etmiştim. Sensor shield ile ufak tefek denemeler yapmak ve Arduino dünyasına ağrısız, sızısız bir giriş yapmak için kızıl ötesi alıcı ve verici, LCD ekran, buton, sesli uyarı modülü da sipariş etmiştim. Gel zaman git zaman, ne zaman Arduino ile birşeyler yapmak istesem mutlaka eksik bir sensor veya modül olduğu ortaya çıkıyor ve tekrar Emartee, Robotistan veya Roboweb gibi sitelerden yeni parçalar sipariş etmem gerekiyordu. Hele ki bu Emartee’den sipariş edilecek ise parçanın elime ulaşması 15 – 20 günü bulabiliyordu.

Bekleye bekleye paslandığımı farkederek 1 sene sonunda ufak da olsa birşeyler yapmaya karar verdim. Her ne kadar ilk etapta gönlümden NFC/RF ile ilgili birşeyler yapmak geçse de önceliğim pas atmak olduğu için daha seri ilerleyebileceğim birşeyler yapmaya karar verdim. Evde sağıma soluma bakıp neyi kurcalasam diye düşünürken gözüme televizyon kumandası ilişiverdi. TV ile kumandanın kızıl ötesi haberleştiğini bildiğim ve elimde de kızıl ötesi alıcı ve verici olduğu için aklıma ortaokul yıllarım geldi.

Benimle yaşıt olanlar eminim 90’lı yıllarda oldukça popüler olan fakat o zaman için oldukça da pahalı olan ve her çocuğun hayalini süsleyen Casio’nun CMD-40 model saatini hatırlayacaklardır. Bu saatinin en güzel özelliği öğrenme modu sayesinde televizyon kumandasının (ve diğer kızılötesi haberleşen cihazların) göndermiş olduğu IR (infrared) sinyalleri/kodları öğrenerek kumanda gibi kullanılabilmesiydi. Bu saat sayesinde birçok televizyon, afacan çocukların hedefi haline gelmiş, bir o kadar çocukta iş üstünde yakalanarak kulakları, kızgın televizyon sahipleri tarafından çekilmişti.

30 yaşını devirmiş ancak hala afacanlıkta sınır tanımayan biri olarak evde Arduino ile TV’yi çaktırmadan açıp, kapayarak eşimi kızdırmanın planlarını yapmaya başladım. Bunun için öncelikle Arduino için IR Remote kütüphanesini yükledim. Samsung TV’yi kapatabilmek için öncelikle kumanda üzerinde kapatma butonuna basıldığında kumandanın TV’ye gönderdiği IR kodunu Arduino ile tespit etmem gerekiyordu. Fakat tam bu esnada aklıma Galaxy S4’de de infrared olduğu ve Samsung’un geliştirdiği WatchON adındaki cep telefonunun uzaktan kumanda olarak kullanabilmesini sağlayan uygulama geldi. WATCHON uygulamasının 100’den fazla TV markasını desteklemesi aklıma hemen bir soru getirdi. Arduino’nun belleği yettiği sürece, 10-15 popüler markanın TVlerinin IR kodlarını WatchON uygulamasından alsam, Arduino’ya yüklesem, Arduino da çalışır çalışmaz yüklü olan tüm bu kodlarını bir döngü ile göndermeye başlasa, Arduino’yu Universal TV PowerOff aracı olarak kullanabilir miydim ?

Bunun için öncelikle IR alıcıyı Arduino’ya bağlayıp, IR Remote kütüphanesi ile gelen ve üzerinde ufak bir değişiklik yaptığım IRrecvDump.ino kodunu, Arduino IDE ile derleyip Arduino’ya yükledim ve çalıştırdım. Ardından Samsung’un WatchON uygulamasını çalıştırıp önce Samsung TV için sonra LG TV için ve ardından Vestel ve birkaç marka daha için uygulamayı ayarlayıp TV kapama komutunu gönderdim ve Arduino ile bu kodları kayıt altına aldım.

Ardından birkaç TV markası için elde ettiğim bu kodları (aslında daha fazla TV markası için kod yükleyecektim fakat Arduino UNO’nun kısıtlı belleği buna imkan vermedi) hazırlamış olduğum PowerOff.ino adındaki farklı bir Arduino programına kopyaladım. Bu programı derleyip Arduino’ya yükledikten sonra artık Arduino çalışır çalışmaz yüklü olan tüm TV kapatma IR kodlarını IR vericisi üzerinden gönderir hale gelmişti.

Sıra POC (proof of concept) çalışması yapmaya geldiğinde POC gönüllümüz Bener ERK, Arduino’yu cebine atıp, çeşit çesit marka TVlerin bir arada olduğu bir mağaza arayışına girdi ve POC çalışmasını kısa süre içerisinde başarıyla tamamladı. (Ziyaretin ve POC çalışmasının sonucunu aşağıdaki videodan izleyebilirsiniz :))

Sonuç olarak Arduino ile NFC/RF güvenlik araştırmalarına giriş yapmadan önce yapmış olduğum bu çalışma ile Arduino’nun benim gibi elektronikten anlamayanlar için büyük bir nimet olduğunu teyit etmiş oldum.

Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.