Yazar arşivleri: selimpehlivan

selimpehlivan hakkında

Sen anladın onu...

EFM8BB3 Sıcaklık Sensörü

Sıcaklık ölçümü ile ilgili hikayelerimizde sıra hiçbir sensör kullanmadan sıcaklık ölçmeye kadar geldi.

İşlemcilerin üzerinde bir sıcaklık sensörü olması alışıldık bir durumdur. Silabs EFM8 serisinde de analog modülde, giriş multiplexer’ını ayarlayarak ADC bağlantısını yapabildiğimiz bir sıcaklık sensörü var.

Bu sensörü ortam sıcaklığı ölçmede kullanmayı düşünüyorsanız bunun çoğu durumda pek iyi bir fikir olmayacağını baştan söylemem gerek. Daha önce anlattığım kendi kendini ısıtma etkisi, tahmin edeceğiniz gibi işlemci üstündeki sensör için ziyadesiyle geçerli olacaktır. Elbette koskoca işlemciyi yalnızca sıcaklık ölçmek için kullanmayacağınızı varsayıyorum.

İşlemci üstünde sıcaklık ölçmenin bize donanımsal bir maliyeti yok. Sıcaklık ölçmek için ADC’nin herhangi bir dış bağlantısına ihtiyaç duymuyoruz. Yazılımsal olarak da büyük bir maliyet yok. Birkaç satırlık kod ve birkaç ms içinde işimiz halloluyor. Herkes adına ve her durumu açıklamak için konuşamam ancak ben daha önce onboard sensörü iki sebeple kullandım:

Birincisi board’umun sağlıklı çalışacağı bir sıcaklıkta olup olmadığını kontrol etmek için. Zamanında tasarladığım bir DC sürücü oldukça küçük bir board üstünde çıkış katı işlemci regülatör vs. bir aradaydı. İşlemcinin sıcaklığının 60 küsur dereceyi geçmesi durumunda önce çıkış gücünü sınırlamak sonra da aleti tamamen kapatmak gibi bir iş için onboard sensörü kullanmıştım.

İkinci kullanımda da aslında başka bir şeyi ölçmek için bir donanım kurmuşuzdur ama ölçeceğimiz şey sıcaklığa bağlıdır. Bu durumda sıcaklığa göre düzeltme yapmak için eğer uygunsa board sıcaklığını referans alabiliriz.

Vereceğim örnek kod ADC’yi hali hazırda kullanıyor olup olmamamızdan bağımsızdır çünkü ADC’nin güç bağlantılarının belli bir durumda olmasını gerektirir:

ADC0CF2 = 0x70;	 // Vref= internal ref. (1,65V) gnd= GND
ADC0MX = AMUX_TSENS;
ADC0CN0_TEMPE = 1;  // onboard temp. sensor enabled
Delay(96);  // 1ms bekle
ADC0CN0_ADBUSY = 1;

Onboard sıcaklık sensörünün çalışması için TEMPE kontrol bitini 1 yapmak lazım. Fakat öncesinde, ADC referansını 1,65V dahili referansa, eksi bağlantıyı da çip GND’ına bağlıyorum.
ADC giriş multiplexer’ına 0x14 (AMUX_TSENS) yazınca girişi de bağlamış oluyoruz.
Sıcaklık sensörünün açılma süresine bakarsanız 1,8us gibi bir süre görüyorsunuz ancak buna referansın açılmasını ve SAR girişinin settle olmasını da eklemek gerek.
Ben çeşitli donanımsal sebelerle ADC’nin kendi power-up delay zamanlamasını kullanmıyorum. O yüzden sıcaklık sensörünü açtıktan sonra, alışkanlıktan, 1ms bekliyor ve ADC dönüştürme işlemini sonra başlatıyorum.

ADC sequencer’ı, çözünürlüğü, örnekleme hızı vs. mevcut ayarlarımızda olabilir. Onları burada yeniden yazmadım. Sonuçta onboard sıcaklık sensörünün parametreleri gerilim cinsinden tanımlanmışlardır:

Sensörün V / *C kazancının offset hatasına oranına bakarsanız, çipten çipe 6 *C’lik bir 0 *C noktası farkı olduğunu göreceksiniz ki bunun kullanacağınız 100 çipten 68’i için garanti edildiğini de göz önüne almalısınız. Uzun lafın kısası, eğer mutlak değer doğruluğu sizin için önemliyse her bir board için 0*C offset’ini ölçüp flash’ta saklamanız gerekir. (Bununla kim uğraşır bilemiyorum)

Bir termostat uygulaması için sıcaklık okuması yapıyorsak *C skalası çalışma esnasında bizim için gerekli değil. Ancak yaptığımız ölçümün *C karşılığını bilmek istersek, yaptığımız ADC ölçümünden, 757mV ‘a karşılık gelen ADC okuma sayısını çıkarıp sonucu da 2,85 mV’a karşılık gelen ADC sayısına bölerek bir *C sonucuna “yaklaşabiliriz.

Sıfır noktası konusundaki belirsizliğe karşılık mV / *C doğruluğu oldukça belirlidir. Bunun sizin için anlamı şu: Bir noktada, bilinen bir değere ölçekleme yapmanız doğruluk açısından yeterli olacaktır.

Onboard sensörü kullanmanın en güzel yanı, self heating’in ne kadar dramatik bir etki olduğunu gözlerinizle görmenizi sağlayacak olması. Bunu olumsuz bir şey olarak düşünmüyorum. İşlemcinin kendi sıcaklığını görmesi sistemin toplam güvenliği için her zaman çok iyi bir şeydir. Bu arada, buzlu suyla 0 noktasını ayarlarsanız bu sensörün oldukça iyi bir doğruluğu olduğunu keşfedeceksiniz. Teşekkürler Silabs..

SendMessage() ile Uygulamalar Arası Veri Paylaşımı

Bazen, iki uygulama arasında veri alış verişi yapmam gerekiyor. Örneğin zamanında bir donanımla haberleşen bir program yazmışız ama sonra aynı donanımdan alınan veriyle başka bir şey yapan uygulamaya ihtiyacımız oluyor. Veya bir cihazdan gelen verileri kaydeden bir uygulamada radikal bir değişiklik isteniyor ve söz gelimi önceden binary dosyaya yaptığımız kaydı artık bir veritabanına yapmamız gerekiyor gibi.
Burada da belki örneğini vereceğim bir başka örnek durumda da, bazen bir programı denemek için normalde gerçek dünyadan gelecek olan verileri bilgisayarda simüle eden bir şeyler yazıyorum.

Uygulama hali hazırda dışarıdan aldığı verileri TCP ya da UDP üzerinden alıyorsa yerel sunucu/istemci üzerinden yine TCP/UDP haberleşmesi yapmak en basit yöntem. Ama daha genel bir uygulamalar arası veri iletişimi çözümü olarak Windows’un mesajlaşma mekanizmasını kullanmayı tercih ediyorum.

Windows’ta süreçlerin birbirleriyle asenkron olarak haberleşmesi için bir mesajlaşma yapısı var. Çeşitli olayları yanıtlayan nesneler yazarken bunları zaten kullanıyoruz. Ben özellikle TThread sınıfından türettiğim bazı veri işleme nesnelerinde mesajları veri giriş çıkışı için kullanıyorum. Bu mesajlaşma mekanizması aynı zamada uygulamalar arasında da veri iletişimi için kullanılabilir. Bunun için ben WM_COPYDATA mesajını gönderiyor/alıyorum:

WM_COPYDATA mesajının msg alanında TCopyDataStruct diye bir veri türü var. Mesaj içeriğinin aktarımını temelde bu record ayarlıyor.
Gönderici kısımda bu veri türünden bir değişkeni doldurup SENDMESSAGE( ) ile yayınlıyorum.

copyData: TCopyDataStruct;
// dataexchange ünitesindeki copyData değişkenini dolduruyorum:
dataexchange.copyData.dwData:= $0325;   // packet type identifier
dataexchange.copyData.cbData:= event_exchange.Size;
dataexchange.copyData.lpData:= event_exchange.Memory;

Windows.pas içinde tanımlı TCopyDataStruct diye bir tip var. Bu tipten bir değişken tanımlamam gerekiyor: copyData
Bunun dwData alanında mesajla iletilen veri tipini belirtiyorum.
cbData alanında da verilen pointer’ın işaretlediği verinin boyunu belirtiyorum.
lpData alanında da payload işaretçisini paylaşıyorum.
Bu arada, uygulama tarafındaki event_exchange nesnesi de bir TMemoryStream. Yollamak istediğim veriyi buraya yüklüyorum. Genel bir tanımlama olması için bir stream üzerinde çalışmayı uygun buldum. Yerel bir değişken tipi de tanımlayabilirdik.

SendMessage( ) ‘ı kullanmadan önce, hedeflediğimiz alıcı pencerenin o anda canlı olup olmadığına bakabiliriz. Bunun için bir başka windows api’si var:
FINDWINDOW( )
Bu fonksiyonun parametrelerinden söz etmem gerek: Harici bir uygulamanın penceresine erişmek için (buna Delphi’de form diyoruz) bize iki parametre gerekiyor. Biri hedef formun sınıf türü, diğeri de pencere (form) adı. FindWindow() api’si bu iki parametreyi istiyor ve bize dönüş olarak handle sayısını döndürüyor. Alıcı uygulama hangi platformda hazırlanmışsa, o platformun win api tanımını bilip bu iki değeri PChar olarak verebiliyor olmamız gerekir.

SendMessage( ) fonksiyonunun parametrelerinden biri FindWindow ile bulunan receiver_handle. sender_handle büyük ihtimalle gönderici ana formunun handle’ı olur. Daha sonra veri göndermek tek bir fonksiyon çağrısına kalır:

res := SENDMESSAGE(receiverHandle, WM_COPYDATA, Integer(Handle), Integer(@copyData));

Alıcı tarafta yapılması gereken, gönderici tarafta “alıcı form” olarak işaretlenen formun üstünde tanımlanmış bir mesaj yakalama procedure’ü tanımlamaktır:

 procedure WMCopyData(var Msg : TWMCopyData) ; message WM_COPYDATA;

WM_COPYDATA mesajını yakalaması için yazdığımız fonksiyona bir değişken parametre aktarmalıyız ki bu, Msg diye tanımladığım bir TWMCopyData tipinde bir kayıttır. Bu kayıt tipinin .copyDataStruct alanı göndericinin oluşturduğu copyData değişkeninin ta kendisidir!

  // gönderici handle numarası:
  sender:= Msg.From;
  // mesajın data içeriğinin dwData alanını mesaj tipini belirtmede kullanıyorum:
  packet_type:= Msg.CopyDataStruct.dwData;
  packet_size:= Msg.CopyDataStruct.cbData;
  if packet_type = MSG_EVENT_BUFFER then
  begin
   // paket işaretçisini cardinal tipli bir pointer'a eşliyorum:
    pc:= Msg.CopyDataStruct.lpData;  
    inc(pc);
    // ardından "asıl" payload geliyor (burada packet_size'a bakmak gerekebilir)
    pEvent:= PEventRec(pc);
    Process_Event_Data( pEvent , packet_size );
  end;

Yukarıdaki koddan anlayabileceğiniz gibi, gönderici uygulamanın bize gönderdiği payload’u pEvent diye bir işaretçiyle alıyor ve onu işleyen procedure’e veriyorum. En başta cardinal tipli bir sayaç verisi var, onu burada alıyorum. Payload birden çok Event datası içerebilir, o yüzden packet_size değerini de procedure’e veriyorum.

Bir arayüz simülasyonunda bu çalışmanın hayata geçmiş halini şuradan görebilirsiniz. Event receiver ve Event Simulator birbirinden bağımsız iki uygulama. Simulator ile geliştirmekte olduğum kullanıcı arayüzü ve kontrol birimini istediğim türde veriler ile besleyebiliyorum.

LMT01 ile Sıcaklık Probu

LMT01 sıcaklık probu / temperature probe
LMT01 Temperature Probe

LMT01 TI’nin yüksek doğruluklu dijital sıcaklık algılayıcı çipidir. Benim bir sıcaklık ölçüm probu yapma işine soyunduğumda bu malzemeyi seçmiş olmamın ana sebebi, bunun doğruluğunun yüksek olması. İkinci seçim sebebim, bunun dijital çıkışının pulse-count olması. Bu sayede probu ilave bir önlem almaksızın uzatabilirim. Bir üçüncü sebep de, bu sensörün fiziksel yapısı ve malzemesi sayesinde ısıl eylemsizliğinin düşük olması, yani tepki süresinin hızlı olması. Kullanım alanına göre, bu çok önem kazanabilir (ileride anlatacağım). Belki bir seçim sebebi sayılmaz ama TO92 kılıfta geliyor olması da mekanik işleri kolaylaştırıyor.

Pulse count interface, sıcaklık ölçüm sonucunu pulse sayısı olarak çıkış vermek demek. Ayrıca, çipin kendisi de bu arayüzden besleniyor. Pulse çıkışı akım değişimi olarak oluşturuluyor. Bir ölçüm + veri yollama periyodu 104ms sürüyor. Kullanmadığımız zaman çipin enerjisini kesebiliyoruz. Enerjiyi vermeye devam ettiğimiz müddetçe çevrim 104ms’de bir tekrarlanıyor (yani örnekleme frekansı 9,6Hz olarak sabit).

LMT01 bir pulse yollamak için 125uA, boşta durum için 34uA akım çıkışı yapar. Bu akımları gerilime dönüştürmenin en basit yolu bir direnç üzerinden çıkışı toprağa bağlamaktır. Direnç uçlarındaki gerilim sensörün çıkış dalga şekli olacaktır. Bu direnci seçerken LMT01’in uçları arasında 2,15V’luk bir potansiyel farkının korunmasına dikkat etmek gerek. POWER (Vp) ucuna 3V vereceğimizi düşünürsek ölçüm direncimizin uçlarında 125uA çıkış akımı için en fazla 850mV bir gerilim düşümüne hakkımız olduğunu görürüz.

Ben bu mevkide oynatmak için E96 serisinden 6k19 değerinde bir direnç seçtim. Bu direncin uçlarında 125uA pulse’ı yollanırken 774mV gerilim oluşacaktır. Ancak, fark ettiğiniz üzere bu voltaj, bir mikroişlemci girişi tarafından doğrudan lojik olarak okunmaya uygun bir seviye değildir, özellikle de bahsettiğimiz seviyelere bir gürültü marjının da eşlik edeceğini hesaba katarsak..

Gerilim değişimi doğrudan seviye okumaya uygun olmadığında MCU ‘nun comparator modülünü kullanmak uygundur. Ancak isminden de anlaşılacağı gibi, comparator modülünün diğer ucuna da bir referans gerilim bağlamamız gerekecek. Ben bu tarafı da programlanabilir yapmak için şöyle bir yol düşündüm:

LMT01’in çıkışına koyduğumuz direncin aynısından bir tane daha kullanıyoruz ve bunun üstünden de akım çıkışlı DAC ile ayarladığımız bir referans akımı geçiriyoruz. Dirençler aynı değerde oldukları için artık seçeceğimiz eşik değerini son derece güvenilir biçimde akım cinsinden belirleyebiliriz. Sıcaklıkla değişim gibi şeyleri de dert etmek zorunda kalmayız.

Referans akımı 34uA ile 125uA arasında bir yerlerde olmalı. Tam orta noktayı (80uA) seçmek mantıklı gibi gözüküyor.

EFM8SB1’deki DAC 1uA ya da 8uA (Hi current mode) çözünürlükle çalıştırılabiliyor.

EFM8SB1 IDAC module

EFM8SB1’deki akım referansı modülünü Hi-Current mode’da çalıştırıyorum. Bu durumda modül 8uA’lik adımlarla akım çıkışı üretiyor. Modülün akım ayarı 6 bit olarak tanımlanıyor. IREF0DAT = 10 (desimal) yazmakla 80uA çıkış elde ediyorum.

Güç tasarrufu sağlamak için, akım kaynağını yalnızca ölçüm yapacağım zaman açıyorum. Ek olarak, akım kaynağının sürdüğü direncin paralelinde bir kondansatör de olduğu için komparatör çıkışını saymaya başlamadan bir süre önce akım kaynağını açmış olmam gerek.

IREF0CN0 = 0x4A;    // 8*10=80uA akım referansı

Akım kaynağı modülünü 80uA ile çalıştırdığımda iki direncin uçlarındaki gerilim yukarıdaki gibi gözüküyor. Bu seviyenin şimdilik uygun olduğunu düşünüyorum. Şimdilik yazdım çünkü bu denemede LMT01’i 1m uzunluğunda bir kablonun ucuna taktım. Bir de, sensör çıkışındaki dirence paralel 100pF bir kondansatörüm var.

Referans seviyemizi de ayarladığımıza göre artık comparator module’e bakabiliriz:

EFM8SB1 Comparator module

Bizim uygulamada comparator’ün iki girişini de port pinlerine bağlıyorum. Çıkışın asenkron halini de aynı şekilde port pinlerinden birine alıyorum. Interrupt kullanmıyorum. Ama anlayacağınız gibi, eğer pin sayısını azaltma gibi bir gereksinim olsa idi, bu kesmelerden birini kullanarak, sayma işini interrupt handler’a yaptırabilir ve kullanılan modül sayısını azaltabilirdim.

Comparator async. output sinyalini de crossbar üzerinden portlardan birine çıkış veriyorum. Artık burada, komut cycle’ından bağımsız fazlı şekilde LMT01’in count pulse sinyalini görebilirim.

CMP0MD = 0x80;      // fastest response, edge interrupt'lar kullanilmiyor
CMP0MX = 0x44;      // P11 = CMXN, P10 = CMXP
CMP0CN0 = 0x81;		// bunu yapmak comp. modülünü açar ve 5mV negatif hystersiz verir

Comparator modülünü yalnızca sensörü okumak istediğim zaman açıyorum (enerji tasarrufu). 5mV negatif hysteresis (düşen kenar) eklemek, eşik değerini biraz daha yüksek seçsem bile darbe genişliğinin çok azalmamasını sağlıyor (aslında sayma hızım bu mertebelerin çok üstünde olsa da).

5mV’luk düşen kenar hystersis’inin dalga şeklinin duty cycle’ını neredeyse %50’ye getirdiğini görebilirsiniz. Düşen kenardaki overshoot’u benim comparator çıkış pini (CPO) üzerinden ölçüm almam yüzünden görüyorsunuz. CPO pinini T0 girişine 100 ohm gibi bir direnç üzerinden bağlamanın neden iyi olduğunu da açıklıyor (T0 yüksek giriş empedanslı bir sonlandırma ve pull down direnci de bulunmuyor). Elbette burada tüm bu bağlantılar birkaç mm içinde hallolduğu için hiçbir şeyi dert etmeniz gerekmez. Ben genel konuşuyorum, amacımız bu basit sensörü çalıştırmak değil, büyük resmi görün.

Sıcaklık sensöründen gelen pulse’ları lojik seviyeye çevirdikten sonra, şimdi onları saymamız gerekiyor. Karşılaştırıcının çıkışını bir pine alıp onu da işlemcinin sayıcı olarak ayarlayabildiğim bir girişine bağladığımda artık LMT01 pulse’larını kesme falan koşturmadan sayabilirim:

EFM8SB1 T0 Mode0/1

8051 ‘de T0 ve T1 modülleri harici sayaç ya da gated counter olarak ayarlanabiliyor. Bir pini, crossbar’da T0 counter girişine route edip T0’ın CT0 bitini 1 yapmak girişteki pulse’ları saymak için yeterli.

TMOD = 0x25;        // TMR1: mode 2, TMR0: 16 bit counter, TMR0 T0 pin counter mode
TH0 = 0;
TL0 = 0;
TCON_TF0 = 0;
TCON_TR0 = 1;   

Geriye tek bir şey kalıyor: MCU’nun pinlerinden birini, LMT01’i beslemek için çıkış yapmak. Bu pini 0 yaptığımda sensör devre dışı kalmış olacak.

Bu donanım düzenlemelerini yaptıktan sonra pulse count interface ile okuma yapmam için gereken firmware işlemleri şunlar:

1) Sensörü enerjilendir.
2) Akım kaynağını aç.
3) 20ms bekle.
4) Karşılaştırıcıyı aç.
5) Sayıcıyı devreye al.
6) Sayıcının, 180ms boyunca gelen pulse’ları saymasını bekle.
7) 180ms sonunda sayıcıyı kapat. Karşılaştırıcıyı kapat. Akım kaynağını kapat.
8) Gelen pulse sayısı iki ardışık ölçüm sonucunun toplamıdır.

Bir sıcaklık sensöründen sürekli arka arkaya ölçüm almak istemeyiz. Çünkü;
1) Bu zaten gereksizdir çünkü sıcaklık denen fiziksel nitelik genellikle çok hızlı değişen bir şey değildir. (Ortam sıcaklığı gibi şeyler ölçtüğümüzü varsaydığımızda)
2) Enerji bütçemiz kısıtlıdır. 2V – 34uA besleme ile çalışan bir sensör kullanıyorsam düşük güç tüketimi gerektiren bir uygulamam var demektir. Tasarım kriterini bu yönde olabildiğince ileride karşılamaya çalışırım.
3) Dijital bir sensörü sürekli çalıştırırsam onun kendi kendini ısıtmasına neden olurum. Doğruluğu bu mertebede olan bir çipte bu belirgin bir hata yaratacaktır.

Çipi sürekli enerjili tutarsak LMT01 yukarıda göreceğiniz hızla çalışıyor. Bu, olabilecek en yüksek ölçüm hızımızdır. Bir hatta akan suyun sıcaklığını ya da kimyasal bir tepkimenin sıcaklığını ölçmeniz gerekiyorsa 120ms’de bir ölçüm yapabileceğinizi bilmeniz gerek.

Bu sensörün ölçümlerini başka bir sensörle kıyaslayan basit bir uygulama hazırladım. Aşağıdaki trend grafiğinde gördüğünüz 32 *C’lik plato, LMT01’i parmaklarımın arasına alıp birkaç saniye tutmam sonucunda oluşan sıcaklık değişimi.

Bu çalışmayı aşağıdaki sensör board’u ile yaptım:

Kablolu ve kablosuz olarak bir host aygıta sıcaklık ve nem ölçümleri gönderen bir uygulamaya dair bilgileri burada paylaşacağım.

Ayrıca LMT01 kullanan hassas el termometresi tasarımına dair notlarımı da burada paylaşacağım.

Tchibo

Privat Kafe Guatemala Grande ve Brazil filtre kahvelerini ofiste uzun bir süredir yoğun biçimde içtiğimiz kahveci ve işportacı.

Web sayfalarından sipariş verdiğinizde son kullanım tarihi yaklaşmış ürünler satarlar ama gidip dükkandan alırsanız ürünleri genellikle çok tazedir.

Kahve dışında “birbirinden çeşitli” şeyler de satıyorlar. Çin’den gelen konteyner’ları bulk mode’da alıp içinden çıkanları dükkanlarında ve web sayfalarında sattıklarını düşünüyorum.

Genel bir kural olarak, tanımadığınız kişilere hitap ederken, eğer çocuk değillerse “siz” dersiniz. Bu kahveci/tuhafiyeci arkadaşlar yarım kilo çekirdek kahve almak için sitesine giren adama “hey dostum, aradığın şey burada” tarzı bir laubalilikle hitap etmeyi tercih etmişler. 2000’li yılların başında gençlere hitap eden banka/gsm operatörü vb. hizmetlerinde bu dil kullanılarak bir tür “samimiyet” yaratılacağı düşünülmüştü. Bu arkadaşlar burada kalmış olabilirler. Ancak yukarıda görselini eklediğim “birbirinden çeşitli ürünler” tanımlaması henüz dilimize sokuşturulabilmiş bir saçmalık bile değil. Biz çeşitli tabiri ile bir kümeyi, muhtemelen belirsiz elemanları olan bir topluluğu niteleriz tekil bir kavramı değil. Bu yüzden şeyler birbirileriyle çeşitlilik rekabetine giremezler.

Daha vahim olan, bunun bizim dilimize has bir kural değil bir mantıksal zorunluluk olması sanırım. Böyle mantık hataları “ayrıntı” değildir. Bunlar insanların düşünme şekillerinin maskelenmemiş dışa vurumlarıdır. O yüzden “ne demek istediğini anlıyorsam sorun yok” diye düşünmemelisiniz. Yoksa hepimiz forward-error correction yapabiliyoruz.

Pensan Büro 10mm

Bu kalem elime tesadüfen geçti. Teksir kağıdı ve düşük kalite kağıtlar üzerine yazma performansını görünce kendisini çok beğendim.

İnce notlar almak için uygun değil. Öte yandan yazarken bol mürekkep veriyor ve ince, yalın bir ucu var. Bu yönüyle benim çok hoşuma gitti. Fatura imzalamak, teksir kağıdı gibi yüzeylere not almak, karton kutuların üstüne bir şey yazmak için mükemmel bir kalem.

Badeci Şeyh

Bir arkadaşım “Badeci Şeyh’in Sır Odası” isminde bir kitap görmüş. Yazarı Timur Soykan. Kitabın kahramanı olan şeyh aileleri komple beceriyormuş. Bir süre sonra “livata” şikayetçileri yüzünden şeyhimiz müritleriyle mahkemelik olmuş.

Bu arada bade içki demek. Kadın erkek ayırmadan düdükleyen adama neden badeci dediklerini bilmiyorum. Sonuçta şeyhlerin müritlerini badelemesi ender rastlanan bir olay değil.

Bu arada, düdüklemek deyişi başta bana da biraz “şey” geldi, daha ciddi dursun diye onun yerine “ilişkiye giren” yazdım ama bakınca o hiç olmadı.. Önce dili doğru kullanmasını öğrenelim. Bu ilişkiye girme deyişini doğru kullanamıyoruz. Eşekle “ilişkiye giren” adam yazıyorlar mesela. Eşekle ne ilişkisine giriyorsun birader? Birbirinize mesaj mı gönderiyorsunuz akşamları? Konsere mi gideceksiniz? Bu şeyhle müritleri arasında da sapık-eşek “ilişkisi” (ilişki burada doğru yerinde kullanılıyor) var. Bunların yaptığı şeye ilişkiye girmek denmez. Şeyhin müridi becermesi/sikmesi/düdüklemesi falan denir. Ciddi yazacağım derken mantıksız yazmaktan size sığınırım.

Bu Badeci Şeyh kitabını görmüştüm ama hiç merak etmedim. Ben bu konularla ilgili en son, Barış Terkoğlu ve Barış Pehlivan’ın Metastaz kitabını okumuştum. Açıkçası bu seneliğine o kitap bana yetti. Böyle şeyleri okurken öfkeleniyorum. Ve ne yalan söyleyeyim, önümde okunacak onca şey varken kalkıp tarikat, şeyh, tekke hikayeleri okuyup canımı sıkmayı da hiç gerekli görmüyorum.

Arkadaş kitaptan bahsedince başka bir arkadaş şeyhe hayranlığını gizlemedi: “Bu düzeyde bir ikna yeteneği için 50 bin dolar verirdim” dedi. “Ben bir karıyı zor ikna ediyorum, adam tüm aileyi sıradan geçiriyor ve muhtemelen üste de para alıyor”.

Doğru.. Adam, LGBT’lerin yürüyüş yapmalarına izin verilmeyen bir memlekette (ki bunu hoş bir şey olarak görmüyorum ben de) aileleri komple becermeyi başarıyor. Ve üste büyük de bir hürmet görüyor. Tabi buna süper güç demek normal. Özellikle de sekse düşkünseniz..

Bunu söyleyen arkadaşım (ki kendisi zeka ve kültür anlamında ortalamanın epey üstünde biri) badeci şeyhle tanışsa, bırakın ondaki süper bir gücü keşfetmek, on dakika içinde ona, bir otopark değnekçisine, simitçiye ya da kapıcıya davrandığı gibi davranacağından kuşkum yok.

Peki bizim arkadaşın on dakika dinlemeye tahammül edemeyeceği adamda 50 bin dolar eder dediği süper güç nereden geliyor?

Bu güç dinden geliyor. İnançtan geliyor. Genel olarak “insanı düşünmekten korkutan” varsayımlara olan peşin kabulden geliyor. Varsayım ve peşin kabul laflarını arka arkaya, anlatım bozukluğu yapma riskini alarak kullanıyorum. Çünkü bunları çocuklukta öğreniyoruz. Badeci şeyh sokakta 3 liraya kitapçık satsa yanından suratına bakmadan geçersiniz. Ama çocuklukta kafanıza kazınan “dini” kabuller önünüze gelince hadi lan diyemiyorsunuz. Buna cesaret edemiyorsunuz. Ve ne yazık ki sonra olaylar gelişiyor.

Bence mutlu bireyler yetiştirmek için çocuklara “hayır” demekten çekinmemeyi öğretmek lazım. Onları sorgulamaya, yeri geldiğinde hiç düşünmeden hayır demeye alıştırmak lazım. Çocuklara din anlattığınızda onlara asla hayır diyemeyecekleri yüzlerce sistem açığı yüklemiş oluyorsunuz. İşte peşin kabuller bunlar.

Bu peşin kabulleri, seküler hayat yaşayan, bu şekilde kandırılması zor olan, dünyayı görmüş, mesleğinde yükselmiş olanlarımız bile çocuklarımıza “din eğitimi” adı altında yüklemeye çalışıyoruz hâlâ. Çünkü hâlâ pek çoğumuzun kafasında dinden bağımsız bir ahlak ve değerler eğitimi yok ne yazık ki. Ailelerimiz bizden daha dindar. Onlardan gördüklerimizin çoğunun düpedüz saçmalık olduğunu anlayabiliyoruz. Ama onların yerine ne koyacağımız konusunda kafamız karışık.

Kimin neye inandığı aslında beni hiç ilgilendirmiyor. Zaman içinde hepimiz bu konuda dersimizi yeterince aldık. İnançlar düşünceler gibi değil. Onlar hakkında tartışamıyorsunuz. Tartışmaya kalkarsanız da inananlar anında rencide oluyorlar. Adamlar inançları yüzünden bokun içinde yüzüyorlar, göremedikleri şey çok basit bir şey. Ama sen bundan söz ettiğin anda bok deryası yüzücüleri sana inanca saygı dersi vermeye başlıyorlar. Zaten bu yüzden dinin gündelik yaşamda, siyasette, ekonomide daha görünür olmasını istiyorlar birileri. Bu eleştirilmezlik zırhının altına ne çok şey atarlarsa sürüyü gütmek o kadar kolay olur çünkü.

Badeci şeyhe geri dönelim biz.. Böyle badeci şeyhlere aile boyu oyuncak olanları falan görünce hafiften hoşuma da gidiyor. Eee, inanca saygı göstermeliyiz. Adamların inancı da böyle. Gerçek İslam o değilmiş bu değilmiş, insanlar sevdikten ve mutlu olduktan sonra yorum yapmak bize düşmez.

Benim kaygım çocuklar için. Onlar pek çok açıdan yetişkinlerden daha sorgulayıcı ve açık fikirlidir. Ama onlara küçük yaşta din anlatırsanız, onların muhteşem zihinlerinde badeci şeyhinden siyasal İslamcısına kadar türlü tip dolandırıcının canı istediğinde girebileceği açık kapılar yaratmış olursunuz.

İşte yapmamanız gereken budur. Çünkü, bu sinir bozucu tiplerde hiçbir numara yok. Onlar güçlerini bizim küçük yaşta yüklendiğimiz saçmalıklardan alıyorlar.

Unutkanlıkta şifa vardır

Mutlu olmak unutmakla ve olaylar üstünde çok düşünmemekle mümkündür.

Eski bayramları, gönül işlerini, arkadaşlıkları falan kastetmiyorum.

Bu ülkede unutkanlık olmazsa olmazıdır aklını korumanın..

Kendi paranızı harcarken bile hatırmamanız gerekir neler olduğunu..

Parayı vermeden önce size söylenenleri hatırlayın istemezler.

O şeyi geçen sene kaça aldığınızı hatırlamanızı da istemezler.

O şeyin vergisiz fiyatı ne kadar bilin istemezler.

Hatta yüzde hesabı yapabilmenizi hiç istemezler.

Bunca çabaya, itinalı karartmaya rağmen bir yerlerden vergiler, devlet garantili yollar köprüler, hastaneler, santrallerle ilgili bir şeyler duymuşsanız bunları da “yeri geldiğinde” hatırlayın istemezler.

Söyledikleri şeylerin, kısa süre sonra tam aksini yaptıklarında, söyledikleri zamanı hatırlayın istemezler.

Köpeklerini beslemeleri sizin borçlanmanızla mümkündür, bunu etrafınıza baktığınızda görmemeniz imkansızdır ama ayağınızı yorganınıza göre uzatmanızı ve yarınınızı düşünmenizi istemezler.

Eh siz de artık sınıf atladım sanırsınız ve her gün size küfür edenleri beslemeye devam edersiniz.

Onları ilk tanıdığınız zamanki hallerini, varlıklarını, yaşantılarını hatırlayın istemezler. Neredeeeeen nereyeee gelen ülkenin zenginliğidir, onlarınki değil ne de olsa.

Şehrin yeşilliğini hatırlayın istemezler. Hayatın basitliğini, insanların içtenliğini hatırlayın istemezler.

Onlardan öncesine dair iyi olan hiçbir şey bilin istemezler.

Vaatlerini hatırlayın istemezler. Size düşen o vaatleri oy verir vermez unutmanızdır.

Başka yerlerde sizin durumunuzda olan insanlar nasıl yaşıyorlar, ne kadar çalışıyorlar, ne kazanıyorlar ve nasıl harcıyorlar bilin istemezler.

Milyonlarca insanın bu imkansız istekleri eksiksiz yerine getiriyor olmasından buldukları cüretle her gün daha ileri giderler.

Çünkü dünü hatırlamayan, istenmeyen hiçbir şeyi hatırlamayan, bir dakika ya, peki bu neden böyle diye durup kendi kendine sormak yerine önüne her konanı dişleyen aptal mahlukların ülkesini idare ettiklerinin bilincindedirler.

O yüzden…

Bir şeyleri hatırlamak hepten delirtir bu ülkede insanı.

Unutmak sağlıktır.