Linux sunucunuz için LCD denetim panali

ArticleCategory: [Choose a category, do not translate this]

Hardware

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to tr Erdal MUTLU

AboutTheAuthor:[A small biography about the author]

Guido, Lınux'u sadece işletim sistemlerinin nasıl çalıştığını öğrenmenin ilginç olduğu için değil, aynı zamanda onu tasarlayan kişiler yüzünden sevmektedir.

Abstract:[Here you write a little summary]

Bu yazıda Hitachi HD44780 LCD paneli ve Atmel firmasının AT90S4433 AVR 8-Bit RISC Mikroişlemcisini kullanarak bir LCD denetim paneli tasarımı yapacağız. İki parça da çok kullanılan ve pahalı olmayan parçalardır. Denetim paneli üzerinde kullanıcıdan giriş yapmasını sağlayan iki adet tuş ve bilgisayarı denetleyen bir mekanizması vardır. IP adres, ağmaskes (netmask), geçişyolu (gateway) değiştirme, bilgisayarı kapatma, istatistikleri okuma, kısaca yapmak istediğiniz her şeyi yapabilirsiniz, çünkü mantık, perl programı ile oluşturulmuştur ve kolayca değiştirilebilir. Panel bilgisayarınıza RS232 seri kablosu ile bağlanmıştır.

Bu yazı için en azından Linux ortamında çalışan AVR yazılım geliştirme ortamını yüklemeniz gerekmektedir. Nasıl yapılacağını AVR Mikroişlemcisini GCC ile programlamak yazısından öğrenebilirsiniz.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Giriş

Bu aygıt basit olarak daha önce kullanılan donanımların fonksiyonelliğini birleştirmektedir: Ancak, yeni tasarımımız bunun çok ötesine gitmektedir. Kullanıcı etkileşimi için tuşlar eklemektedir ve sunucunun donanımını denetleyen mekanizma içermektedir. Bunlara ek olarak donanım bir analog giriş hattı içermektedir. Bunu hernekadr burada kullanmıyorsak da, sözgelimi sıcaklık ölçen bir algılayıcı bağlayabilirsiniz.

Bunu tasarlayabilmek için bazı hobisel elektronik yeteneklere sahip olmanız gerekmektedir. Kullanılan donanımlar pahalı değildir ve yaklaçık olarak 40 Euro kadar tutmaktadır.

Bu paneli yapmamızın arkasında yatan düşünce, sunucuyu klavye ve ekran kullanmadan yönetebilmektir. Linux çok sağlam bir işletim sistemidir ve kolayca uzaktan yönetilebilinir. Ancak, ilk baplantı yapılırken IP adresi, ağmaskesi ve geçişkapısı gibi bazı ayarlarların yapılması gerekmektedir. Bu panel, bu ayraların yapılmasına olanak tanımaktadır. Sunucu odasında iken, sunucunuzu kapatmanıza imkan vermektedir.

Panelin tasarımı oldukça geneldir. Tüm "sunucuya özel" kısımlar perl programı ile yazılmıştır. Tüm donanım, tuşların durumu, paneldeki metin, LED'ler ..., ASCII komutlar ile denetlenmektedir. Dolayısıyla bu tasarımı kullanarak kendi mp3 çalarınızı yapabilir veya tost makinanızı denetleyebilirsiniz, yada aklınıza ne gelirse.

Nelere gereksiniminiz var

Gerekli olan parçalar şunlardır:

1 x Atmel At90S4433 Mikroişlemcisi
1 x 28pin 7.25 mm IC socket
1 x 16pin IC socket
1 x MAX232
1 x küçük 5V röle
1 x 4MHz kristal
2 x LEDs (yeşil ve kırmızı)
1 x BC547 NPN transistör
1 x BC557 PNP transistör
4 x 1uF kapasitör (common or biased)
2 x 27pF seramik kapasitör
1 x 10nF kapasitör
1 x 100nF kapasitör
3 x direnç 4k7
2 x direnç 2k2
1 x direnç 10K
1 x direnç 3k3
2 x direnç 100 Ohm
3 x direnç 470 Ohm
3 x direnç 1k
1 x direnç 220 Ohm
1 x 4K7 potansiyometre (mümkün olduğu kadar küçük)
1 x Z-diyot 4.3V
2 x küçük dokunmatik tuşlar
1 x küçük standart diyot(e.g 1N4148, yada herhangi ucuz diyot)
1 x 2 satır 20 karakter LCD panel, HD44780 uyumlu arayüz.

Benim bütün gördüğüm LCD panelleri 14 veya 16 (bacaklı) iğneli idi ve HD44780 uyumlud idiler. İsterseniz 3 veya 4 satır paneller de kullanabilirsiniz, ancak o zaman yazılımı biraz değiştirmeniz gerekecektir.

Bunlara ek olarak RS232, kablolar ve güç kaynağına gereksiniminiz olacaktır. Eğer, iki satır paneliniz varsa, ince alüminiyum metal kapağa yerleştirebilir ve böylece sunucunuzun 5.25" lik gözüne yerleştirebilirsiniz.

Çizimler ve baskı devre

Baskı devre tasarımı ve şemalar için Linux için olan eagle yazılımını kullandım. Müthiş bir yazılımdır, ancak etkin bir şekilde kullanabilmek için biraz deneyime gereksiniminiz olacaktır. Kişisel kullanımlar için olan bedelsiz sürümünü cadsoftusa.com adresinde elde edebilirsiniz.

Çizim (daha büyük resim için üzerine tıklayınız):
[Schematic]

Baskı devre (daha büyük resim için üzerine tıklayınız):
[board]


Yazıcıdan daha kolay basmak için baskı devrenin beyaz arka plan renklisi: beyaz arkaplanlı baskı devre (Not: Bu baskı devre oluşturmak için gerekli olan dosya değildir.)

Sıkıştırlmış eagle dosyaları (Not: Bazı akıllı itenernet gezginleri dosyaları çekerken açmaktadır.)

Devre

Yukarıdaki devreyi kısaca açıklayacağım. AT90S4433 3 adet bağlantı noktası (port) vardır : PB, PC ve PD. PC analog veya digital giriş bağlantısı olarak kullanılabilir. Tüm bağlantı noktaları digital veya analog giriş ve çıkış olarak kullanılabilir. Bu, yazılım tarafından DDR (Data direction register) aracılığı ile denetlenmektedir. Biz 23. bacak (pin) hariç tümünü kullanacağız (0 veya 5 V). Max232 gerilim seviye dönüştürücüsüdür. RS232, +-10V kullanılmaktadır ve Max232 bunu 0-5V'a çevirmektedir. 1. bacakta (reset pin) AT90S4433'nin Brownout denilen bir şey vardır. Bu devre sayesinde, elektrik ile ilgili sorunlar yaşanması durumunda, MİB'nin (CPU, Merkezi İşlem Birimi) yanlış komutlar çalıştırmasını engellemektedirç Böylece, elektrik sorunlarından dolayı oluşabilecek, genel birtakım sorunların yaşanması engellenmiş olur. Bu elektrik sorunları, elektrik verildiğinde veya kesildiğinde, bir iki mili saniye süresinde oluşabilir. Temel olarak üstlendiği işlev, mikroişlemcinin açılmasını (başlatılmasını) sağlamaktadır.

Bazılarınız, itransformatöre paralel olarak neden bir diyot bulunduğunu ve sanki hiçbir görevi yokmuş gibi gözüktüğünü merak edecektir. Bu çok önemli bir diyottur! Relay'i kapattığınızda, transformatör tarafından çok yüksek bir gerilim oluşturulacaktır ve mikroişlemci bundan zarar görebilir. Bu gerilimin güç kaynağın ürettüği gerilim ile ters kutupludur. Diyot çok ucuz ve küçük olabilir, herhangi başka bir özelliği yoktur. Ancak, olması çok önemlidir.

İki adet tuş, şemada "DIGITAL IN PUSH BUTTON" ile gösterilen yere bağlanması gerekmektedir. Tuşlara basıldığında, PD3 ve PD6'yı topraklama ile olan bağlantıyı sağlanmaktadır.

Baskı devre nasıl yapılır

Baskı devreyi oluşturabilmek için öncelikle postscript dosyasını (linuxlcdpanel.ps.gz) saydam kagıda basmalısınız. Mimarlar için olan mağzalarda Regulus tarafından üretilen ve Sinolit adı verilen ve genellikle offset baskı için kullanılan bir kağıt bulacaksınız. Buna alternatif olarak 60gr'lık kağıt + saydam sprey ( pausklar 21 Kontakt Chemie'den) dır. Sinolit kullanmanın avatajı, Lazer yazıcıların toneri kağıda iyi yapışmaktadır ve iyi kontrast yaratmaktadır.
Eğer, Postscript yazıcınız yoksa diye, Postscript dosyasını PDF dosyasına çevirdim. Ancak, kalitesi daha kötüdür.
Bakır kaplı plakaların çözünme süresi kullanılan ışık kaynağına bağlıdır. Ev ortamındaki ışıklar kullanıldığında 1 ila 2 dakika sürmektedir. Normalde dış ortamın ışığını da kullanabilirsiniz, ancak güneşten gelen ışınların doğruda plaka üzerine gelmesini önleyiniz, çünkü güneş ışığı çok fazla gelmektedir. Ana plakayı oluşturmadan önce ufak plakacıklar ile bir iki deneme yapabilirsiniz.
[before etching]
Baskı devre plakasının asitle işlenmeden önceki hali


Plakayı daha sonra NaOH (Natriumhydroxid) ortamında birkaç dakika tutmanız gerekmektedir. Oluşan baskı devreyi bu işlemden sonra çok dikkatli bir şekilde denetlemeniz gerekmektedir. Ben genellikle Edding 780 siyah kalem kullanarak yolları biraz daha kalınlaştırmaktayım. Bunu yapmamın nedeni, Eagle ile oluşturulan yolların hobi kullanım için çok ince olmaktadır.
[after etching]
Delikler delinmeden önceki baskı devre


Not: Üreticiler için röle adlandırılması ve bacak yapısı hakkında bir anlaşmaya varmaları bazen imkansız gibi. Ben Matsushita firmasının ürettiği 5V'luk küçük bir röle kullandım. Eğer, sizin rölenin bacak yapısı bundan farklı ise, baskı devrenizi buna göre değiştirmeniz gerekecektir.

Hazır olduğunuzda baskı devrenizi FeCl3 (Ferric Cloride) içinde oluşturabilirsiniz. FeCl3 oda sıcaklığında gayet iyi sonuçlar vermektedir. En iyi sonuçları, baskı devrenizi dikey tuttuğunuz durumda elde edebilirsiniz. Bakır iyonları demir ıyonlarında daha ağırdır ve küçük yassı bir tübü FeCl3 ile doldurursanız, o zaman bakır iyonlar devrenin olduğu yerde birikeceklerdir.

Devre hazır olduğu zaman Edding boyasını turpentine ile temizleyiniz.

Mikroişlemci için yazılım

Mikroişlemci için olan yazılım aşağıdaki dosylara göre düzenlenmiştir: Yazılımı daha iyi anlayabilmek için Mikroişlemci ile birlikte gelen belgeleri okumanızı tavsiye ederim. Belgeleri www.atmel.com'dan veya yazının referanslar kısmından elde edebilirsiniz.
Ancak, kullanabilmek için yazılımı anlamanız gerekmektedir. Yapmanız gerek şey, linuxlcdpanel-0.7.tar.gz dosyasını indirme sayfasından) elde edip, aşağıdaki komutları çalıştırmanız yeterlidir:

make
make load

Hatta önceden derlenmiş yazılımı dahi kullanabilirsiniz.
make loadprebuild

Çok kolay. Mikroişlemciyi nasıl programlayabileceğinizi AVR Mikroişlemcisini GCC ile programlak yazısından öğrenebilirsiniz.

LCD panelin denenmesi

LCD paneli sunucunuz 5V'luk iç güç kaynağından beslenmek üzere tasarlanmıştır (kırmızı kablo=5V, siyah kablo=toprak). Ancak, ilk başta doğrudan bilgisayara bağlamamalısınız. Bağlantı sırasında ve devreye bağlantı sırasınd ufak bir hata yapmış olabilirsiniz. Bilgisayarın güçkaynağı çok güçlüdür ve hem bilgisayarınız hemde devreniz çok kısa bir sğrede dumanlar altında kalabilir. İlk denemeyi, elektronik olarak düzenlenmekte ve gücü sınırlı olan bir dış güçkaynağı ile deneyiniz! Daha sonra yazılımı EEPROM'a yukarıda anlatıldığı gibi yükleyiniz. Bundan sonra LCD üzerinde, kaymakta olan "linuxfosucus.org" yazısını göreceksiniz. Şimdi RS232 kablosunu bağlayınız:

MAX232 14. bacağı CTS (DB-9 8. bacak)
MAX232 7. bacağı RXD (DB-9 2. bacak)
MAX232 13. bacağı TXD (DB-9 3. bacak)
Ayrıca, DTR, DSR ve CD kendi aralarında bağlamalısınız (DB-9 4. bacak, 6. ve 1. bacaklar)

Bu, yukarıda verilen devre çiziminde güzel bir şekilde görülmektedir.

[talking to the LCD panel over the serial line] Seri hattı kullanabilmek için önceden ayarlamak gerekmektedir. linuxlcdpanel-0.7.tar.gz kaynak kod arşivi ttydevinit adında bir program içermektedir. Bu program tam bu ayarlama işlemi için yazılmıştır. Diyelim ki, paneli COM1 (ttyS1) bağladığınızı varsayalım, o zaman aşağıdaki komutu çalıştırmanız gerekmektir:

./ttydevinit /dev/ttyS1

Artık seri hattınız 9600 hızına ayarlanmış durumda ve siz LCD paneliniz ile "konuşmaya" başlayabilirsiniz. İki adet xterm penceresi açınız. Birinde "cat /dev/ttyS1" komutunu, diğerinde "cat > /dev/ttyS1" komutunu çalıştırınız. Şimdi l=11 (LED 1 aç) veya l=10 (LED 1 kapat) komutlarını verebilirsiniz. İlk xterm penceresinde LCD panelinin, verdiğimiz komutları "ok" ile onayladığını göreceksiniz.
Var olan tüm komutlar README.commands dosyasından verilmiştir.

Kaynak kod arşivinde ttytest.pl adında bir perl programı vardır. Bu programın yaptığı herşey, belli aralıklar ile kırmızı LED'ı açıp kapatmakdır. Program LCD panelinin kullanımı öğretme amaçlı yazılmıştır. Programa bakarsanız, biraz perl bilmekle kendi programlarınıza temel olarak kullanabilirsiniz.

Watchdog'un bağlanması

Watchdog benimsenmiş değer olarak kapalıdır. Açmak için w=1 komutunu kullanabilirsiniz ve süreaşımını s=x, buradaki x 1 ile 255 arasında bir değerdir. Sözgelimi s=10ö watchdog'un süreaşımı zamanınını 10*16sn=160sn olarak belirleyecektir. Sürücü program süreaşımını periyodik olarak ayarlaması gerekecektir ki watchdog çalışacaktır. Eğer, sunucunuz tıkanırsa, sürücü programınız süreaşımını ayarlamayacktır ve watchdog çalışacaktır. Biliyorum Linux sunucuları hemen hemen hiç tıkanmamaktadır, ancak eğer tıkanırsa, onu yeniden başlatacak hiç kimse olmayacaktır, çünkü sunucu son iki yıl boyunca hiç sorunsuz çalışmıştır ve kimse yerini bilmemektedir.

Watchdog bir kere çalışmak üzere tasarlanmaıştır, çünkü makinayı yeniden başlattığında, büyük bir olasılıkla sistem denetleme süreci çalışacaktır ve bu arada watchdog tekrar sistemi yeniden başlatılmasını istemeyiz. Sunucu çalıştığı zaman sürücü programı onu tekrar aktif hale getirmesi gerekecektir.

Watchdog'u fiziksel olarak bağlamak için, sunucunuzun reset (yeniden ayarlama veya başlatma) tuşuna giden iki kabloyu bulmanız gerekmektedir. Yeniden başlatma tuşuna paralel olarak watchdog'un rölesine bağlamak gerekmektedir.

Watchdog nasıl kullanılır

Watchdog, sistemin herzaman için programları çalıştıracağına garanti getirmektedir. Ancak, sanaldoku veya veritabanı sunucusunun düzgün çalıştığını ve cevap verdiğini garanti etmemektedir. Bunun için crontab için özel programlar yazmanız veya başka programlar kullanmanız gerekecektir. Crontab'ın çalıştığına ve diğer programları çalıştırdığına oldukça emin olabilirsiniz.

Her 15 dakikada bir çalışan ve sanaldoku sunucunuzdan bir dosya indiren bir kabup programı yazabilirsiniz. Ancak, sanaldoku sunucunuzun oldukça yoğun olabileceği ve bazı isteklere cevap veremeyeceğini hesaba katmanız gerekecektir ve sözgelimi en son 10 isteğe cevap vermez ise, sanaldoku sunucunuzu veya bilgisayarınızı yeniden (watchdog aracılı ile değil, yani reset tuşunu kullanmadan) başlatabilirisiniz.

Sunucunuzda çalışan uygulamaların yanısıra, disk kullanımını da denetlemelisiniz. Sözgelimi, aşağıdaki komut, bilgisayarınızdaki herhangibir bölmenin %80 veya daha fazla dolu olması durumda birşeyler geri gönderecektir:

df | egrep ' (8.%|9.%|100%) '

Bu da tabii ki, cron işi olarak periyodik denetlemek amacıyla kullanılabilir.

Sunucudaki programlar

LCD panelimizin hemen hemen tüm mantığı llp.pl adı verilen perl programı ile oluşturulmuştur. Bu programı /usr/sbin/ dizinine kopyalayınız. Daha sonra ttydevinit dosyasını /usr/bin dizinine ve kaynak kod dizini içindeki etc dizininde yer alan ifconfig_llp.txt dosyasını da /etc dizinine kopyalayınız. Şimdi, ifconfig_llp.txt dosyasını adresleri gereksiniminize göre değiştiriniz:

NETMASK=255.255.255.0
IPADDR=10.0.0.4
GATEWAY=10.0.0.2

Şimdi /etc/rc.d/init.d/network dosyasının bir yedeğiniz alınız ve kaynak kod dizininde yer alan etc/network dosyasını buraya kopyalayınız. Bu program sadece RedHat ve Mandrake için geçerlidir. etc/network_all_distributions dosyası daha basit ve genel olarak tüm Linux dağıtımları ile çalışacaktır, ancak init-rc dosyalarınızın yerini belirtmeniz gerekecektir. Bunlar dağıtımdan dağıtıma farklılık göstermektedir.

Eğer, COM2 kullanmıyorsanız, /etc/rc.d/init.d/network dosyasında yer alan aşağıdaki satırı

/usr/sbin/llp.pl /dev/ttyS1&

gibi değiştiriniz.

Aşağıdaki komutu çalıştırarak

/etc/rc.d/init.d/network start

LCD panelinizi çalışırken görebilirisniz. Not: IP adresleri ile istediğiniz gibi oynayabilirsiniz, çünkü ancak makina yeniden başladığında, yaptığınız değişikler devreye girmektedir. Dolayısıyla, yaptığınız değişikleri makinayı kapatmadan önce eski haline getirmelisiniz veya /etc/ifconfig_llp.txt dosyasını değişitirebilirsiniz.

Çetele dosyaları

llp.pl dosyası çetele bilgilerini /var/log/llp.log dosyasına yazmaktadır. Bu çetele dosyası çok yavaş bir şekilde dolacaktır. Dolayısıyla otomatik olarak dosyayı döndürmek gerekmeyecektir. Eğer, döndürmek isterseniz logrotate gibi bir programdan yararlanabilirsiniz. Döndürdükten sonra uygulanması gereken bir komut yoktur. Logrotate'in yapılandırım dosyasına aşağıdaki satırları ekleyebilirsiniz:

/var/log/llp.log {
nocompress
monthly
}

Çetele dosyası, sistem yeniden başlatıldığında, IP adres (IP, GW geçiş kapısı, ağ maskesi) değişikliğinde veya watchdog tarafından yeniden başlatıldğında kayıtlar içerecektir. Doğal olarak, watchdog süreaşımlarını çetele dosyasına yazması mümkün değildir, çünkü sistem tıkanmıştır, ancak yenbiden başlatıldığında çetele dosyasına kayıt edilecektir.

Paneli kullanırken

Aşağıda, LCD panelinin bir kaç ekran görüntüsü verilmiştir. Bunalr panel tarafından sağlanan tüm hizmetler değildir. Bundan fazlası vardır ve siz kendiniz de eklemeler yapabilirsiniz.

Ana ekran. Bir isim (bu durumda linuxfocus), yük durumu ile toplan çalışma süresini göstermektedir.
[main]

IP yapılandırma menüsü.
[IP configuration menu]

Su anda değiştirilmekte olan IP adresi görüntü örneği.
[change IP]

Geçiş kapısı (benimsenmiş yol tanımı) nasıl değişitirildiğinin örneği.
[GW]

Sonuç

[the final panel] Bu LCD panelini oluşturmak hobi olarak elektronik ile uğraşmış olmak gerekmektedir. Ancak, çok fazla karışık bir şey değildir. Bizim LCD panel, benim gördüğüm tüm denetim panellerinden daha fazla fonksiyonellik sağlamaktadır ve hem geneldir hemde oldukça ucuzdur.

İyi denemel :-)

Referanslar