Elektronik / Mikrodenetleyici Projeleri/

XML Biçimli verilerin Aktarımı ve Görselleştirilmesi

Sponsorlu Bağlantılar

Hazırlayanlar: Hüseyin GÜRÜLER , Ayhan İSTANBULLU , Barış SARIÇİÇEK

İnternete aktarılan ve günün belirsiz aralıklarında değişim gösteren önemli verileri (döviz, altın, borsa vs. ile ilgili) takip etmek ve buna duyarlı karar mekanizmaları geliştirmek özellikle günümüz şirketlerinin ihtiyaçlarına girmiş bulunmaktadır.

Çalışmaya konu olan sistem, İnternetten döviz kuru bilgilerini (US Dolar, Euro vs.) alarak, bu verileri seri port ile bilgisayara bağlı PIC 16F84 mikrodenetleyici destekli bir LCD ekranda belirlenen zaman aralıklarında yenilenerek gösterebilmektedir.

İnternette bulunan ve günün belirsiz aralıklarında değişim gösteren verileri (döviz, altın, borsa, sıcaklık, yol durumu gibi) takip etmek ve buna duyarlı karar mekanizmaları geliştirmek özellikle günümüz şirketleri ve modern yaşamın ihtiyaçlarına girmiş bulunmaktadır.

Belirli içerik veya içerik benzeri komutları giriş değeri veya komut olarak İnternet ortamından alabilecek PC ortamına kablolu veya kablosuz olarak bağlantı sağlayabilen sistemler, bu gereksinimlere çözüm olabilecek yetenektedir. XML biçimi ile verinin platform bağımsızlığı kazanması bu çözümleri destekleyici roldedir.

Çalışmada kullanılan PIC 16F84 [1] mikrodenetleyici, fonksiyonel ve ekonomik olması yanında az enerji harcaması nedeniyle birçok uygulamada yaygın olarak kullanılmaktadır. Ayrıca flash belleğe sahip olması nedeniyle, saat girişine uygulanan sinyal kesildiğinde bünyesindeki kaydedicilerde verinin bozulmadan kalması sağlanır.

Sonraki bölümlerde geliştirilen yazılım, faydalanılan sınıf yapıları tanıtılmış; İnternet, yazılım ve mikrodenetleyici arasındaki veri aktarımı ve buna bağlı sınırlamalar ile bulunan çözüm yolları açıklanmıştır.

Materyal ve Yöntem
Belirsiz zaman aralıklarında değişkenlik gösteren veri ile çalışmada örnek olarak döviz kuru tercih edilmiştir. Burada döviz Kur bilgilerini istenilen zaman aralıklarında İnternetten alan ve programlanmış bir mikrodenetleyiciye bağlı LCD ekranda gösteren sistem tasarlanmıştır. Yazılım, kur bilgilerine TCMB’nin resmi sitesinden [2] ulaşmaktadır. VB .NET ortamında geliştirilen yazılım, XML biçimli sayfadan kur değerlerini aldıktan sonra seri porttan belli zaman aralıklarıyla mikrodenetleyici devresine gönderir [3],[4],[5]. Buradaki mikrodenetleyici devresindeki LCD modülden bilgiler görüntülenir. Geliştirilen yazılıma ait akış diyagram Şekil 1 de verilmiştir.

xml_yazilim_blok
Kur alma işleminin akış diyagramı

Yazılım
Seri porta bağlanma: RS232 sınıfı

Program, mikrodenetleyiciye bağlanmak ve veri aktarımını sağlamak için .Net içindeki RS232 sınıfını kullanır. Seri port, PC ile dış dünya arasında kablolu bağlantıda geleneksel ve uygulaması kolay bir seçenektir. Seri portta veriler; 8 databit, 1 stopbit ve 1 Paritybit ile gönderilir. Veriler belli bir band genişliğinde gönderildiğinden belirli bir zaman gecikmesi oluşmaktadır. RS232 sınıfına ait parametreler ve anlamları Tablo 1’de gösterilmiştir.

Tablo 1. RS232 sınıfı parametreleri

rs232_tablo_

Aşağıda RS232 sınıfının kullanıldığı olay yordamı kodları verilmiştir:

   Try
            With rs232
                .Port = port_no
                .Timeout = Int32.Parse(TextBox1.Text)
                .BaudRate = Int32.Parse(TextBox2.Text)
                .DataBit = 8
                .StopBit = rs232.DataStopBit.StopBit_1
                .Parity = rs232.DataParity.Parity_None
            End With
        Catch ex As Exception
MessageBox.Show(ex.Message, "Bağlantı Hatası", MessageBoxButtons.OK)

İnternetten XML verisini alma: System.Xml sınıfı
Program XML biçimli kur verilerini almak için System.Xml sınıf kütüphanesine başvurur. Bu kütüphanedeki XmlTextReader, XmlDocument, XmlNodeList sınıfları kullanılır. US Dolar alış ve satışa ait XML bağlantılarını sağlayan kod parçası aşağıda verilmiştir. SelectNodes ifadeleri başka döviz kurları için de benzer bir şekilde oluşturulmuştur.

Dim adresOku As New XmlTextReader("http://www.tcmb.gov.tr/kurlar/today.xml")
Dim MyXml As New XmlDocument
MyXml.Load(adresOku)
Dim MyNode As System.Xml.XmlNodeList

MyNode =               MyXml.SelectNodes("/Tarih_Date/Currency[@Kod ='USD']/ForexBuying")
lblUsdBuy.Text =  MyNode.Item(0).InnerXml.ToString()
MyNode = MyXml.SelectNodes("/Tarih_Date/Currency[@Kod ='USD']/ForexSelling")
lblUsdSel.Text = MyNode.Item(0).InnerXml.ToString()


Mikrodenetleyiciye veri gönderme:

Aşağıda veri göndermede kullanılan foksiyon verilmiştir. Burada gönderilecek ifade (metin) uzunluğu hesaplanır ve Mid fonksiyonu ile ifade karakter karakter bölünerek gönderilir. Her karakter arasında belli bir zaman gecikmesi sağlanmalıdır. Aksi takdirde LCD’de çok farklı karakterler görünmektedir. For Next döngüleri karakterlerin gönderimi arasında zaman gecikmesi sağlar. Son karakter olarak “%”gönderilir. Bu karakterden sonra mikrodenetleyici veri almayı sonlandırır.

Public Function gonder(ByVal e As String)
        a = Len(e)                              'metnin uzunluğu 
        For b = 1 To 2500000              'zaman gecikmesi sağlamak
        Next
        For i = 1 To a
            For b = 1 To 2500000          'zaman gecikmesi sağlamak
            Next
            rs232.Write(Mid(e, i, 1))      'metni harflere böl ve gönder
        Next
        For b = 1 To 2500000              'zaman gecikmesi sağlamak
        Next
        rs232.Write("%")                     ' "%" karakteri gönder 
 End Function

Donanım: PIC 16F84 Mikrodenetleyici Devresi
Mikrodenetleyici devresinde (Şekil 2) PIC16F84, max232, 7805 , 4*4 LCD, RS232 9 pin konnektor kullanılmıştır. Mikrodenetleyicinin verileri seri porttan alması ve devre üzerindeki LCD ekranda göstermesi için gerekli yazılım picbasic pro da gerçekleştirilmiştir.

xml_simulasyon_devresi

Program Arayüzü
Seri port ayarları
Port numarası, gecikme, band genişliği ve İnternetten kur alım biçimi ile ilgili ayarların yapıldığı seri port ayarları Şekil 3 te gösterilmiştir.

lcd_program_arayuz
Seri port ayarları ekran görüntüsü

Burada;
Port Test : PC ile mikrodenetleyici devresi arasında iletişimin sağlanıp sağlanmadığını kontrol edilir.

Port Aç : Bu butonla PC’den mikrodenetleyiciye veri iletimi seri port ayarlarına göre hazır hale getirilir.

Port Kapat : seri portu veri iletimine kapatır.

Kur Alımı : İki adet kur alımı mevcuttur. Otomatik kur alımı, kur değerlerinin kur güncelleme süresinde belirtilen zaman aralıklarında; diğerinde ise sadece kullanıcının talep ettiği zamanda alınmasını sağlar.

Gecikme: PC ile mikrodenetleyicinin çalışma frakansı farkını kapatmak için gerekli zaman gecikmesi.

Yazı gönderme ayarları
Bu çalışmada kullanılan LCD modül, 4 satıra sahip ve her bir satırı 20 karakterden oluşmaktadır. Şekil 4’deki gönderme penceresinde gösterildiği gibi radyo butonlarla istenilen satır seçilir. Daha sonra bu satırlarda yazı yazdırılabilir, kaydırılabilir veya silinebilir. LCD temizle ise LCD ekranındaki yazıları tamamen silmek için kullanılır. Metin kutusuna girilen yazı en az 1 en fazla 20 karakter olmalıdır.

lcd_gonderme
PC den mikrodenetleyici devresine yazı gönderme form ekranı

LCD nin her satırını kontrol etmek için bilgisayardan değişik karakterler gönderilmektedir. İstenilen satır formdan radyo butonlarla seçilir. Hangi satırın seçildiğini belirlemek için mikrodenetleyiciye bazı karakterler gönderilir. Bu karakterler:

1.satır : “}”
2.satır : “]”
3.satır : “{”
4.satır : “[”

Şeklinde seçilmiştir. Bunun için istenilen başka karakterler de seçilebilir ancak bunlar başka amaçla kullanılmamalıdır. Mikrodenetleyici önce bu karakterlerin gelmesini bekler. Karakter geldikten sonra bu

karaktere ait satıra istenilen metin yazılır. Karakter alımını engellemek içinde bilgisayardan son olarak “%” karakteri gönderilmektedir. Bu daha öncede bahsedildiği gibi karakter alımını engellemek için kullanılır. Bu işlem yapılmazsa mikrodenetleyici sürekli veri almaya çalışır ve gelen her veriyi rasgele bir satıra yazar. Bu karakter gelince mikrodenetleyici en başa döner ve karakter gelmesini bekler. Yukarıdaki 4 karakterden biri gelirse istenilen satıra bilgi yazılır. Eğer “?” karakteri gelirse LCD temizlenir.

Bulgular ve Sonuç
Tasarlanan sistem, İnternet ortamındaki değişken nitelikte XML biçimli içeriklerin belirli mesafelere taşınması, izletilmesinde kullanılabilecek ekonomik bir çözümdür. Sistemin veriyi aldığı ile aktardığı mesafe arasında seri port bağlantısı bulunmaktadır. PC ile mikrodenetleyicili devre arasında kablosuz veri aktarımı (Bluethooth veya RF gibi) tercih edilirse sistemin taşınabilirliği ve kullanışlılığı artacaktır. LCD ekranda gösterilen içeriğin takip edilmesinin kolay olması ve maliyeti artırmaması için kısa karakter dizinleri tercih edilmelidir. Sistemin amacına hizmet etmesi için izleyici kitlesinin görüşünü kolaylaştıracak boyutta büyük LCD segmentleri tercih edilmelidir. İnternete bağlanabilen seviyede bir PC konfigürasyonu sistemin çalışması için yeterlidir.

Kısaltmalar
Kısaltma Açıklama
PC Personal Computer (Kişisel Bilgisayar)
XML Extensible Markup Language
TCMB Türkiye Cumhuriyeti Merkez Bankası
PIC Peripheral Interface Controller
LCD Liquid Crystal Display
.NET Visual Studio .NET 2003
VB Visual Basic

Kaynaklar
[1] PIC 16F84 üretici sayfası, http://ww1.microchip.com/downloads/en/DeviceDoc/30430c.pdf, Microchip Technology Inc.
[2] TCMB Kurlar Sayfası, http://www.tcmb.gov.tr/kurlar/today.xml,
Türkiye Cumhuriyet Merkez Bankası
[3] Serial Communication with VB.Net , http://www.codeworks.it/net/VBNetRs232.htm, Codeworks
[4] Communication on a serial port in NET 2.0, http://www.codeproject.com/cs/system/Serialport_COM.asp, The Code Project, Sigurd Johansen.
[5] XML File Parsing in VB.NET, http://www.codeproject.com/vb/net/parsefilecode.asp, The Code Project, Pratik Desai

Projenin .doc dosyasını Buradan .ppt dosyasını buradan indirebilirsiniz Emeği geçen kişilere Teşekkürler alternatif XML Biçimli verilerin Aktarımı ve Görselleştirilmesi

Dosya indirme LINK listesi (HTML formatında) link-1841.zip şifre-pass: 320volt.com

  • fikirle

    Bilgi için teşekkürler ;)

  • Abdullah

    Abilerim verdiğiniz bilgiler için teşekkürler.Ben bugün gittim ve çok istediğim bi şeyi yaptım.PIC devreleri uygulamayı planlıyordum ve heralde gerekli malzemeleri aldım fakat bana verdikleri entegre PIC16F84A.Acaba PIC16F84A ile PIC16F84 ayrı ayrı iki entegremi ve bunlar ile yapılan devreler farklı farklı devrelermi.Teşekkür ederim saygılarımı sunarım.

  • X-Fi

    ikiside aynı entegre tek farkı 84 10mhz 84A 20mhz e kadar çalışabiliyordu yanlış hatırlamıyorsam.

  • Flatron

    16F84 artık üretilmiyormuş.Yenisi 16F84A
    Burada http://www.izoelektronik.com/pic-16f84-ve-pic-16f84a-arasindaki-farklar-ve-benzerlikler.htm#more-74arasındaki farkları anlatıyor.
    * Bir PIC le beraber, programlayıcı satın alman (yada yapman ) gereketiğini.
    *Hangi dille kodları yazacaksan onun editörünü ve derleyeyicisini temin etmen gerektiğini
    *PIC e kodu yüklerken programın ayarlarıni seçerken.Şimdi tam hatırlayamadığım PIC in içindeki koda yeniden yazılsınmı diye bir seçenek var eğer o seçeneği “Artık tekrar yazılmasın ” ı aktif yaparsan o PIC e artık bir daha tekrar yazamayacağını unutmamalısın.
    Kolay Gelsin.

  • Abdullah

    Sorumu cevapladığınız için teşekkür ederim.Ama affınıza sığınarak size daha sorular sorucam tekrar ilgilendiğiniz için teşekkür ederim.Saygılar.