Afyon Kocatepe Üniversitesi BİDB: Stajyer Bilgisayar Mühendisi

2014
Afyon Kocatepe Üniversitesi BİDB: Stajyer Bilgisayar Mühendisi

2014 — AKÜ Bilgi İşlem Daire Başkanlığı Yazılım Şubesi'nde RFID, RS232, UID işleme, veri tabanı, seri port izleme ve Arduino tabanlı kartlı geçiş sistemleri üzerinde uçtan uca yazılım-donanım entegrasyonu.

2014 yazında Afyon Kocatepe Üniversitesi Bilgi İşlem Daire Başkanlığı Yazılım Şubesi'nde bilgisayar mühendisliği stajımı gerçekleştirdim. Çalışmalar, üniversitenin kartlı geçiş sistemlerinde kullanılan RFID okuyucuların entegrasyonuyla başladı. Elektriksel arayüz, seri haberleşme, cihaz protokolü, UID gösterimi, veri tabanı ve kullanıcı uygulaması, uçtan uca veri işleme sürecinin birbirine bağlı katmanları olarak ele alındı.

Bu staj, uygulama geliştirme ile sistem entegrasyonu arasındaki ilişkinin kurumsal bir ortamda değerlendirilmesini sağladı. Sorunların incelenmesinde verinin fiziksel kaynağı, bağlantı katmanı, cihaz protokolü, yazılım dönüşümleri ve veri tabanındaki karşılığı birlikte ele alındı.

RFID Okuyucular ve RS232 Haberleşmesi

İlk çalışmalar Promag MF7-20 RFID okuyucular üzerinde yürüdü. Okuyucunun RS232 çıkışını bilgisayarda güvenilir biçimde gözlemleyebilmek için MAX232 tabanlı bir devre kuruldu; güç, TX/RX hatları ve bağlantı parametreleri cihaz dokümantasyonuyla birlikte incelendi. Ham seri akışı terminal yazılımıyla takip ederek STX/ETX sınırları arasındaki UID bilgisini ayırdım ve baud rate, parity, data bits gibi parametrelerin veri üzerindeki etkilerini gözlemledim.

Çalışmanın ilk aşamasında cihazın ilettiği bayt dizisi ve protokol çerçevesi doğrulandı; uygulama katmanının geliştirilmesi bu bulgulara dayandırıldı. C# tarafında SerialPort kullanarak ham veriyi alan, byte dizisini hexadecimal olarak gösteren ve terminal uygulamasından görülen veriyle karşılaştırmaya imkân veren araçlar geliştirdim.

Staj boyunca PCR310 ve Verifone QX1000 dahil farklı kart okuyucularla da çalıştım. Aynı amaca hizmet eden cihazların protokol ve bağlantı davranışlarının birbirinden farklı olması, cihaz bağımlı kod ile genel veri işleme mantığını ayırmanın önemini gösterdi.

Donanım ve Yazılım Kaynaklı Arızaların Ayrıştırılması

İlk okuyuculardan birinde beklenen UID elde edilemediğinde problem yazılım, seri port ayarları, veri dönüşümü, farklı devreler ve farklı bilgisayarlar üzerinden araştırıldı. Üreticiyle teknik görüşmelerin ve alternatif donanım denemelerinin ardından okuyucu değiştirilince doğru veri elde edildi.

Bu inceleme, entegrasyon problemlerinde donanım, bağlantı, yapılandırma ve uygulama katmanlarının ayrı hipotezler üzerinden sınanmasına yönelik sistematik bir yaklaşım kazandırdı. Fiziksel bileşenin davranışı doğrulandıktan sonra uygulama katmanındaki değişiklikler ölçülebilir bulgulara dayandırıldı.

Yeni cihazla doğru veri alındığında bu kez farklı bir veri gösterimi problemi ortaya çıktı. Okuyucudan gelen örnek bir UID F23ACBD2 biçimindeyken veri tabanındaki karşılığı D2CB3AF2 olarak tutuluyordu. Byte sırasındaki bu farklılık belirlenerek dönüşüm uygulama katmanında gerçekleştirildi ve sonuç veri tabanındaki kayıtla karşılaştırılarak doğrulandı.

Bu küçük örnek, daha sonraki çalışmalarımda sık karşılaşacağım bir ilkenin erken halidir: aynı bilgi protokol, bellek veya depolama katmanında farklı fiziksel temsillere sahip olabilir; dönüşüm yapılmadan önce hangi temsilin hangi sınırda kullanıldığı netleştirilmelidir.

Cihaz Protokolleri ve RFID Okuyucu Entegrasyonu

PCR310 tarafında mevcut örnek yazılımın cihazla nasıl haberleştiğini inceleyerek istek-cevap akışını çözümledim. Bir Visual Basic örneğinin davranışını okuyup C# tarafında yeniden gerçekleştirerek port açma, request gönderme, anticollision sonucunu alma ve UID'yi kullanılabilir biçime dönüştürme akışını kurdum.

Verifone QX1000 çalışması ise yazılım ile fiziksel bağlantının birlikte ele alınmasına iyi bir örnek oldu. Beklenen pin dizilimiyle iletişim kurulamayınca kabloyu multimetreyle kontrol ederek gerçek bağlantıyı çıkardım. Cihazın komut satırı aracından üretilen çıktıyı işleyen bir C# uygulaması geliştirerek gelen alanları ayrıştırdım.

Farklı cihazlarla yürütülen çalışmalar; fiziksel bağlantının, iletişim protokolünün, veri çerçevesinin ve uygulama entegrasyonunun sıralı olarak doğrulanmasına dayanan cihazdan bağımsız bir inceleme yaklaşımı geliştirdi.

Seri Port Tanılama ve İzleme Yazılımları

Kullandığım terminal uygulamalarının çalışma sırasında ihtiyaç duyduğum bazı özellikleri karşılamaması üzerine kendi seri port terminal ve izleme yazılımlarımı geliştirdim. Port adı, baud rate, parity, data bits ve stop bits gibi parametrelerin çalışma sırasında yönetilebildiği; alınan ham verinin ve işlem günlüğünün dosyada tutulabildiği bir masaüstü araç hazırladım.

Günlük kaydı yalnız hata mesajı göstermek için kullanılmıyordu. Yapılan işlemin zamanı, port yapılandırması ve oluşan hata birlikte tutulduğunda daha önce gerçekleşmiş bir iletişim problemini geriye dönük incelemek mümkün hale geliyordu.

Daha sonra aynı veri akışını web üzerinden gözlemlemek için ayrı bir izleme katmanı geliştirdim. Masaüstü terminalinin ürettiği dosyanın tamamını her istekte yeniden okumak yerine son okunan konum takip edilerek yalnız yeni eklenen kısmın alınmasını sağladım. Ham byte verisi hexadecimal, günlük metni ise karakter verisi olarak işleniyor ve web arayüzü periyodik olarak güncelleniyordu.

Masaüstü terminali, kalıcı günlük ve web izleme katmanı birlikte küçük ölçekli bir data acquisition -> persistence -> remote observation zinciri oluşturuyordu. Problemi ayrı sorumluluklara bölme yaklaşımı daha sonraki uzun süre çalışan sistem çalışmalarımda da devam etti.

Veri Tabanı Yönetimi ve JDBC Metadata Kullanımı

RFID sisteminin yalnız kart okuması yeterli değildi. Kart, kullanıcı ve yetki bilgilerinin tutarlı biçimde yönetilmesi gerekiyordu. SQL Server üzerinde kullanıcı ve kart verilerini içeren bir veri modeli oluşturdum ve ardından Java ile bu veri tabanını yöneten masaüstü uygulaması geliştirdim.

Uygulamada sabit bir tabloya göre form tasarlamak yerine JDBC metadata kullanmaya yöneldim. Tablo ve sütun bilgileri, veri türleri ve birincil anahtarlar çalışma zamanında okunuyor; tablo görünümü ve düzenleme ekranı bu metadata'ya göre oluşturuluyordu.

JDBC metadata kullanımı, tablo ve sütun tanımlarının çalışma zamanında keşfedildiği bir yapı sağlayarak uygulama bileşenlerinin şema değişikliklerine uyumunu geliştirdi.

UID Dönüşümü ve Veri İşleme

Staj boyunca 7 byte ve 4 byte UID gösterimleri, byte-order farklılıkları ve veri tabanındaki mevcut kayıt biçimleri arasında çeşitli dönüşüm problemleriyle çalıştım. Ham UID'yi alıp sistemde kullanılan biçime dönüştüren, binary ve hexadecimal karşılıkları gösterebilen ve ilgili kayıtlarla karşılaştırabilen yardımcı uygulamalar geliştirdim.

Dönemin bazı örneklerinde kart verisinin doğrudan düz metin olarak tutulmaması için kriptografik API'leri de denedim. Bunlar modern anahtar yönetimi veya erişim kontrolü tasarımı değildi; veri biçimi ile veri koruma problemini aynı akış içinde ele aldığım erken denemelerdi.

UID verilerinin işlenmesinde fiziksel kart tanımlayıcısı, seri port çerçevesi ve uygulama tarafından kullanılan sayısal gösterim ayrı kavramlar olarak değerlendirildi. Dört ve yedi baytlık tanımlayıcıların uzunlukları, bayt sıraları ve metinsel gösterimleri açık biçimde ele alınarak kayıtlarla karşılaştırma işlemlerinin izlenebilirliği sağlandı.

Cihazlar arası uyarlama çalışmalarında giriş verisinin çerçeve sınırlarının belirlenmesi, hata durumlarının sınıflandırılması ve dönüştürülmüş çıktının mevcut kayıtlarla doğrulanması, donanım-yazılım entegrasyonunun temel doğrulama adımlarını oluşturdu.

Arduino ile Fiziksel Geçiş Kontrolü

Stajın ilerleyen bölümünde RFID okuyucuyu yalnız bilgisayara bağlanan bir çevre birimi olmaktan çıkarıp fiziksel geçiş mekanizmasına bağladım. Arduino UNO, servo motor, LED ve MF7 okuyucu kullanarak kart bilgisine göre servo hareketi üreten küçük bir kartlı geçiş sistemi kurdum.

Karttan gelen seri veri okunuyor, izin verilen kimlik bilgisiyle karşılaştırılıyor ve sonuca göre servo motor üzerinden fiziksel geçiş davranışı oluşturuluyordu. Daha sonra kızılötesi kumanda ile alternatif kontrol denemeleri ve Arduino ile haberleşen masaüstü kapı kontrol yazılımı üzerinde de çalıştım.

Bu bölüm bilgisayar mühendisliği ile mekatroniğin pratikte nerede birleştiğini görmem açısından ayrıca değerlidir. Yazılım artık yalnız ekranda sonuç üretmiyor; yanlış bir durum kararı fiziksel bir aktüatör davranışına dönüşüyordu.

Staj Çalışmalarının Teknik Kapsamı

Bir aylık çalışma sonunda üç farklı kart okuyucudan veri alınması, seri haberleşme araçları, UID dönüşümleri, kullanıcı/kart veri tabanı, masaüstü ve web izleme yazılımları, Arduino tabanlı geçiş sistemi ve çeşitli yardımcı veri işleme araçları aynı problem alanı etrafında oluştu.

Bu bölüm 2014'te tuttuğum ayrıntılı staj kayıtlarındaki teknik olaylara dayanır. RFID okuyucudan veri tabanına ve fiziksel aktüatöre uzanan zincirde karşılaştığım problemler, sonraki sistem çalışmalarımda benimsediğim hata ayıklama ve entegrasyon yaklaşımının erken örneklerini oluşturdu.

Bu dönemin bende bıraktığı kalıcı alışkanlıklar somuttur: ham veriyi görmeden üst katman varsayımı yapmamak, donanım arızasını yazılım hatası kabul etmemek, protokol sınırlarını açık biçimde belirlemek, tekrarlanan manuel işlemi araçlaştırmak ve bir prototipi mümkün olduğunca uçtan uca çalışır hale getirmek.

Sistem Entegrasyonunda Doğrulama ve İzlenebilirlik

Staj kapsamındaki uygulamalarda doğrulama, seri porttan elde edilen ham verinin terminal çıktısıyla karşılaştırılmasından veri tabanı kaydı ve fiziksel aktüatör tepkisine kadar uzanan aşamalar üzerinden gerçekleştirildi. Bu yaklaşım, iletişim parametreleri, kodlama biçimi, veri dönüşümü ve fiziksel donanım davranışının birbirinden ayrıştırılmasına katkı sağladı.

Seri haberleşme izleme araçları, JDBC metadata tabanlı yönetim uygulaması ve Arduino prototipi aynı dönemde edinilen bilgilerin farklı uygulama katmanlarındaki karşılıklarıdır. Ayrıntılı çalışmaların teknik ve akademik bağlamı aşağıdaki proje ve ders notu bağlantılarıyla sunulmaktadır.

Afyon Kocatepe Üniversitesi Bilgi İşlem Daire Başkanlığı

2014 Dönemine Ait İlgili Projeler

RFID Sistemlerinin Akademik Temelleri

Bu sayfada Promag MF7-20, PCR310, Verifone QX1000, RS232 bağlantıları, UID dönüşümleri ve kartlı geçiş prototipinin 2014'e ait cihaz ve proje bağlamı özellikle korunur. Bunlar belirli donanımlarla yapılmış çalışmaların kaydıdır; bütün RFID okuyucularına genellenebilecek davranışlar değildir.

RFID'nin RF kuplajı, LF/HF/UHF ayrımı, ISO/IEC ve GS1 standartları, anti-collision, middleware, güvenlik, performans ve doğrulama tarafını RFID Sistemleri ders notunda cihaz bağımsız bir akademik çerçevede ele alıyorum. Böylece burada tarihsel uygulama kanıtı, ders notunda ise genellenebilir teknik bilgi öne çıkar.