su iletim hatlari basinc bilgilerinin deneysel bir ortamda kablosuz
Transkript
su iletim hatlari basinc bilgilerinin deneysel bir ortamda kablosuz
EGE ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ (YÜKSEK LİSANS TEZİ) SU İLETİM HATLARI BASINÇ BİLGİLERİNİN DENEYSEL BİR ORTAMDA KABLOSUZ SENSÖR AĞI İLE TOPLANMASI Fahrettin DEMİREL Tez Danışmanı : Yrd.Doç.Dr.Radosveta SOKULLU Elektrik-Elektronik Mühendisliği Anabilim Dalı Bilim Dalı Kodu : 609.01.00 Sunuş Tarihi : 14.09.2010 Bornova-İZMİR 2010 ii iii Fahrettin Demirel tarafından Yüksek Lisans tezi olarak sunulan “ Su İletim Hatları Basınç Bilgilerinin Deneysel Bir Ortamda Kablosuz Sensör Ağı ile Toplanması” başlıklı bu çalışma E.Ü. Lisansüstü Eğitim ve Öğretim Yönetmeliği ile E.Ü. Fen Bilimleri Enstitüsü Eğitim ve Öğretim Yönergesi’nin ilgili hükümleri uyarınca tarafımızdan değerlendirilerek savunmaya değer bulunmuş ve 14.09.2010 tarihinde yapılan tez savunma sınavında aday oybirliği ile başarılı bulunmuştur. Jüri Üyeleri: Jüri Başkanı İmza : Yrd.Doç.Dr. Radosveta SOKULLU ........................... Raportör Üye : Yrd.Doç.Dr. Mehmet ENGİN ........................... Üye ........................... : Prof.Dr. Levent TOKER v ÖZET SU İLETİM HATLARI BASINÇ BİLGİLERİNİN DENEYSEL BİR ORTAMDA KABLOSUZ SENSÖR AĞI İLE TOPLANMASI DEMİREL, Fahrettin Yüksek Lisans Tezi, Elektrik-Elektronik Mühendisliği Bölümü Tez Yöneticisi: Yrd. Doç. Dr. Radosveta Sokullu Eylül 2010, 61 sayfa Günümüzde su kaynaklarının doğru ve verimli bir şekilde kullanılması önemli hale gelmiştir. Mevcut sulama şebekelerinde manometre kullanılmadığı için sistemin çalışması hakkında herhangi bir bilgiye sahip olunmaz. Çalışmamızın amacı düşük güç tüketimine sahip kablosuz sensör düğümleri kullanarak su iletim hatlarından basınç bilgisini toplamak ve bu bilginin kontrol sistemleri tarafından kullanılabilir hale getirilmesini sağlamaktır. Gerçek bir sulama şebekesinde çalışma imkanı olmadığıdan deneyler için küçük çaplı bir şebeke oluşturulmuştur. Sulama şebekesi projesine göre gerekli yerlere basınç algılayıcıları yerleştirilerek bunların birbirleriyle belirlenen bir kablosuz ağ protokolü yardımıyla haberleşmesi sağlanmıştır. TelosB kullanarak yerleştirilen basınç algılayıcıları sayesinde sistemin anlık çalışması gözlemlenmiştir. Kablosuz ağ yapısının seçilmesinin nedeni herhangi bir kablolamaya ihtiyaç duymadığı için mevcut sistemlere uygulanması kolay olmaktadır. Bölgemizde sulama mevsiminin ortalama 6 ay sürdüğü düşünülürse mevsim başında yapılacak bir bakımla mevsim boyu sorunsuz kullanım sağlanabilecektir. Anahtar Sözcükler: Kablosuz sensör ağları, su iletim hattı, TelosB, TinyOS, basınç algılayıcı. vii ABSTRACT GATHERING PRESSURE DATA OF WATERING PIPELINES IN EXPERIMENTAL ENVOIRMENT USING WIRELESS SENSOR NETWORKS DEMİREL, Fahrettin MSc in Electric-Electronic Eng. Supervisor: Yrd. Doç. Dr. Radosveta Sokullu October 2010, 61 pages Efficient and accurate use of water resources has become very significant especially in recent time due to the global warming issues. Least but not last, the watering pipelines used in argriculture fields are to be controlled according to their water use. If pressure sensors are used in the existing pipelines of watering systems data can be gathered about the operation of the system. The aim of our study is to gather pressure data of watering pipelines in an experimental environment using a low power Wireless Sensor Network (WSN) and show how this information can be used by a control system. In our work, a small sized experimental pipeline system is implemented, in which the pressure sensors are be placed at carefully selected points. In the real time prototype of our system, the TelosB motes, integrated with the pressure sensors, communicate with each other and also with the base station according to the basic wireless network protocol designed. In our study, the reason to choose a WSN as an infrastructure is to let the system work without the need of extra cabling. Such a system incorporates both efficiency and flexibility, and provides the farmers with an automatic controlled watering system based on the sensor data. Keywords: Wireless sensor network, water pipeline, TelosB, TinyOS, pressure sensor. viii ix TEŞEKKÜR Bu çalışmanın gerçekleşmesinde yakın ilgisini esirgemeyen, değerli yorumlarıyla ve önerileriyle her zaman katkıda bulunana tez danışmanım Yrd.Doç.Dr. Radosveta SOKULLU’ya, kodlama konusunda yardımcı olan arkadaşım İlker KORKMAZ’a, yoğun iş temposunda üzerimdeki iş yükünü alan DSİ çalışma arkadaşlarıma, basınç sensörü temininde yardımcı olan Barış ORHAN’a ve tez çalışmalarında bana her zaman destek olan, hayatımı renklendiren, sevgili eşim Melike’ye ve oğlum Ahmet Deniz’e teşekkürlerimi sunarım. xi İÇİNDEKİLER Sayfa ÖZET ...................................................................................................................... v ABSTRACT .........................................................................................................vii TEŞEKKÜR ........................................................................................................... ix ÇİZELGELER DİZİNİ ......................................................................................... xv ŞEKİLLER DİZİNİ ............................................................................................xvii SİMGELER VE KISALTMALAR DİZİNİ ........................................................ xix 1. GİRİŞ...................................................................................................................1 1.1 Kablosuz Sensör Ağları .................................................................................2 1.2 Kablosuz Sensör Ağı Uygulamaları ..............................................................4 1.3 Kablosuz Sensör Ağı Protokol Katmanları....................................................6 2. KABLOSUZ AĞLARDA YÖNLENDİRME PROTOKOLLERİ....................11 2.1 802.15.4 ve ZigBee Ağ Yapıları ve Elemanları ..........................................11 2.1.1 Ağ bileşenleri ...............................................................................................12 2.2 Ağ Topolojileri ............................................................................................12 2.2.1 Yıldız mimarisi.............................................................................................12 2.2.2 Uçtan-uca mimari.........................................................................................12 2.2.3 Küme-ağaç mimarisi ....................................................................................13 2.3 Yönlendirme Protokolleri ............................................................................14 2.3.1 Veriye Dayalı Yönlendirme Protokolleri .....................................................14 2.3.2 Hiyerarşiye Dayalı Yönlendirme Protokolleri .............................................15 2.3.3 Konuma Dayalı Yönlendirme Protokolleri ..................................................15 xii İÇİNDEKİLER (devam) Sayfa 2.4 Yönlendirme Protokol Çalışmaları ............................................................. 16 3. SU İLETİM HATLARININ BASINÇ BİLGİSİNİN ÖLÇÜLMESİ ............... 19 3.1 Gerekli Sistem Parametreleri ...................................................................... 19 3.2 Mevcut Sistemler ........................................................................................ 19 3.2.1 Basınçlı borulu sulama sistemleri................................................................ 22 3.2.2 Yüksek basınçlı sistemlerin projelendirilmesi............................................. 24 4. ÖNERİLEN KABLOSUZ SENSÖR AĞI SİSTEMİNİN ELEMANLARI VE ÇALIŞMA DETAYLARI..................................................................................... 27 4.1 Kullanılan Donanımlar................................................................................ 27 4.1.1 TelosB.......................................................................................................... 27 4.1.2 Freescale Mp3v5050gp basınç sensörü ....................................................... 31 4.2 Kullanılan Yazılımlar.................................................................................. 33 4.2.1 TinyOS işletim sistemi ................................................................................ 33 4.2.2 Moteiv Trawler izleme yazılımı .................................................................. 36 4.3 Sistemin Çalışma Prensibi .......................................................................... 37 4.3.1 Sistemin tanımı ............................................................................................ 37 4.3.2 Su hattı kontrol protokolü............................................................................ 38 4.4 Test Düzeneği ............................................................................................. 42 5. TESTLER VE ÖLÇÜMLER............................................................................ 46 5.1 Kalibrasyon Ölçümleri ................................................................................ 46 5.2 Basınç Bilgisinin Okunmasına Yönelik Ölçümler...................................... 47 5.3 Ağ Performansını İzlemeye Yönelik Ölçümler .......................................... 47 6. SONUÇ VE DEĞERLENDİRME ................................................................... 49 6.1 Basınç Bilgisinin Okunması........................................................................ 49 xiii İÇİNDEKİLER (devam) Sayfa 6.2 Ağ Performansının Değerlendirilmesi.........................................................51 6.3 Sonuçlar .......................................................................................................56 KAYNAKLAR ......................................................................................................59 ÖZGEÇMİŞ...........................................................................................................61 EKLER Ek 1 TmoteSky Bilgi Kitapçığı Ek 2 FreeScale MP3V5050 Basınç Sensörü Bilgi Kitapçığı Ek 3 Okenseiko Rolling Hava Pompası Bilgi Kitapçığı Ek 4 Ağ Mimarisi Ek 5 Kodlar xiv xv ÇİZELGELER DİZİNİ Çizelge Sayfa Çizelge 1.1 Dünyada kişi başına düşen kullanılabilir su miktarı. ...........................1 Çizelge 1.2 Su kullanım oranları. ............................................................................2 Çizelge 4.1 Telos, Mica2, MicaZ akım tüketim miktarları. ..................................29 xvii ŞEKİLLER DİZİNİ Şekil Sayfa Şekil 1.1 Kablosuz sensör ağlarında katmanlar arası geçişler.................................9 Şekil 2.1 Ağ mimarileri .........................................................................................13 Şekil 3.1 Sulama sistemine göre oranlar. ..............................................................21 Şekil 4.1 Telos düğüm. ..........................................................................................27 Şekil 4.2 Telos test ölçümleri (Polastre et al., 2005).............................................30 Şekil 4.3 Algılayıcının tümleşik blok şeması. .......................................................32 Şekil 4.4 Mp3v5050 basınç sensörü. .....................................................................33 Şekil 4.5 Kablosuz sensör ağının programlanması................................................34 Şekil 4.6 Trawler algılanan değer grafik ekranı ....................................................36 Şekil 4.7 Trawler ağ mimarisi ekranı ....................................................................36 Şekil 4.8 Gerçek bir sulama sistemi projesi ..........................................................37 Şekil 4.9 Veri akış diyagramı. ..............................................................................38 Şekil 4.10 Düğüm veri kontrolü çalışma diyagramı.............................................39 Şekil 4.11 Son düğümler için veri gönderme diyagramı. ......................................40 Şekil 4.12 Ara düğümler için veri gönderme diyagramı. ......................................40 Şekil 4.13 Ara düğümler için veri gönderme diyagramı. ......................................41 Şekil 4.14 Toplayıcı düğüm için veri gönderme diyagramı. .................................41 Şekil 4.15 Test düzeneği şematik gösterimi. .........................................................42 Şekil 4.16 Test düzeneği bağlantı diyagramı.........................................................43 Şekil 4.17 Test düzeneğine bağlanmış bir düğüm. ................................................44 Şekil 4.18 Test düzeneğinin görünüşü...................................................................44 Şekil 4.19 Hava pompası ve 1 numaralı düğüm. ...................................................45 Şekil 5.1 Test düzeneği ağ yapısı. .........................................................................46 Şekil 5.2 Kalibrasyon ölçüm değerleri. .................................................................47 Şekil 6.1 Basınç değişim grafiği............................................................................49 Şekil 6.2 Noktasal basınç değişim grafiği. ............................................................50 Şekil 6.3 Kaçak benzetim grafiği. .........................................................................51 Şekil 6.4 Paket kayıp oranının çalışma döngüsüne göre değişim grafiği. .............52 xviii ŞEKİLLER DİZİNİ (devam) Şekil Sayfa Şekil 6.5 Pillerdeki gerilim kaybının düğümlere ve çalışma döngüsüne göre değişimi.. ............................................................................................ 53 Şekil 6.6 Paket kayıp oranının örnekleme periyoduna göre değişimi................... 53 Şekil 6.7 Toplam pil geriliminin örnekleme periyoduna göre değişimi. .............. 54 Şekil 6.8 Pil gerilim düşümünün 60 sn’lik örnekleme periyodunda düğümlere göre dağılımı.. .................................................................................... 54 Şekil 6.9 Paket kayıp oranının kuyruk büyüklüğüne göre değişimi. .................... 55 Şekil 6.10 Paket kayıp oranının düğümler arası mesafeye göre değişimi. ........... 56 xix SİMGELER VE KISALTMALAR DİZİNİ Simgeler Açıklama Vout Basınç sensörünün çıkış gerilimi, Vs Basınç sensörünün besleme gerilimi, 3±0.3 V P Hat basıncı, kPa PE Basınç hatası, ±1.25 kPa TF Sıcaklık faktörü, 1 for 0° to 85 °C mss Metre su sütunu, Φ Çap, rç Çiftlik rverimi, rd Sapma verimi, Vmin Boruda minimum hız, Vmax Boruda maksimum hız. Kısaltmalar APTEEN Adaptive TEEN, CID Cluster Identifier, CLH Cluster Head, COTS Commercial Off-The-Shelf, xx SİMGELER VE KISALTMALAR DİZİNİ (devam) Kısaltmalar Açıklama_______________________________ DMA Direct Memory Access, DSSS Direct Sequence Spread Spectrum, ESR Equivalent Series Resistance, FFD Full Function Device, GPS Global Positioning System, GPRS General Packet Radio Service, KSA Kablosuz Sensör Ağı. LEACH Low-Energy Adaptive Clustering Hierarchy, LQI Link Quality Indication, MAC Medium Access Control, MCU Main Control Unit, MEMS MicroElectroMechanic Systems, OUI Organizationally Unique Identifier, PAN Personal Area Network, PEGASIS Power-Efficient Gathering in Sensor Information Systems, RAM Random Access Memory, xxi SİMGELER VE KISALTMALAR DİZİNİ (devam) Kısaltmalar Açıklama ______________________________ RF Radio Frequency, RFD Reduced Function Device, RSSI Received Signal Strength, SPIN Sensor Protocols for Information via Negotiation, TEEN Treshold-sensitive Energy Efficient Protocols, USB Universal Serial Bus, VGA Virtual Grid Architecture, WSN Wireless Sensor Network, 1 1.GİRİŞ Dünya nüfusu sürekli artmaktadır. Yüzyıl başındaki dünya nüfusu 1.6 milyar iken 20. yüzyıl sonunda bu rakam 6 milyara ulaşmıştır. Buna karşılık sahip olduğumuz su kaynakları sabit kalmakta hatta azalmaktadır. 20. yüzyılda dünya nüfusu 19. yüzyıla oranla üç kat artmasına rağmen, su kaynaklarının kullanımının altı kat arttığı belirlenmiştir. 1950 yılında kişi başına düşen su miktarı 16800 m³ iken bu miktar 2000 yılında 7300 m³’ e düşmüştür (İstanbul Su ve Kanalizasyon İdaresi, 2010). Türkiye için kişi başına düşen yıllık kullanılabilir su miktarı 1600 m³’tür (Çizelge 1.1). Diğer ülkeler ve dünya ortalamasıyla kıyaslanırsa, Türkiye kişi başına kullanılabilir su miktarı bakımından su azlığı çeken ülkeler arasında görülebilir. Kişi başına 5000 m³ ve fazla su potansiyeli olan bir ülke “su zengini” olarak kabul edilir. 2023 yılı için nüfusumuzun 100 milyon olacağı öngörülmüştür. Bu durumda 2023 yılı için kişi başına düşen kullanılabilir su miktarının 1125 m³/yıl civarında olacağı söylenebilir. Mevcut büyüme hızı, su tüketim alışkanlıklarının değişmesi gibi faktörlerin etkisi ile su kaynakları üzerine olabilecek baskıları tahmin etmek mümkündür. Ayrıca tüm bu tahminler mevcut kaynakların hiç tahrip edilmeden aktarılması durumunda söz konusu olabilecektir. Dolayısıyla Türkiye’nin gelecek nesillerine sağlıklı ve yeterli su bırakabilmesi için kaynakların çok iyi korunması ve verimli kullanılması gerekmektedir (Devlet Su İşleri Genel Müdürlüğü, 2010). Çizelge 1.1 Dünyada kişi başına düşen kullanılabilir su miktarı. Ülke Kişi Başına Düşen Su Miktarı (m³/yıl) Türkiye 1600 Asya Ortalaması 3000 Batı Avrupa Ortalaması 5000 Afrika Ortalaması 7000 Güney Amerika Ortalaması 23000 Dünya Ortalaması 7300 Artan enerji maliyetleri de suya sahip olma bedelini artırmaktadır. 1995 yılında tarımsal sulama tarifesinin kWh’i 0,8 kuruş iken 2010 yılında bu rakam 20 kuruşlara çıkmıştır (TEDAŞ, 2010). Bu nedenle suyu verimli kullanmak kaçınılmazdır. Bizim çalışmamız da suyun verimli kullanılmasına yöneliktir. 2 Bilindiği gibi hatlardaki su kayıplarını azaltmak için kapalı sistem damlama ve yağmurlama gibi basınçlı sulama sistemlerine geçilmektedir. Bu sistemler, hem bitkinin ihtiyacı kadar sulanmasına olanak vererek elde edilen ürünün daha verimli olmasını sağlamakta hem de sudan büyük ölçüde tasarruf sağlamaktadır. Biz de kablosuz düğümler kullanarak böyle kapalı sistem bir iletim hattının kontrolünü yapmayı öngördük. Çizelge 1.2 Su kullanım oranları. Tarım Sanayi İçme Suyu Dünya %70 %22 %8 Türkiye %74 %11 %15 Basınçlı sulama sistemlerinin düzgün çalışabilmesi için kullanılan sulama yöntemine bağlı olarak bir basınca ihtiyacı vardır. Ülkemizde hali hazırda yapılmış veya yapılmakta olan sulama şebekelerinde son kullanıcı noktalarında gerekli basıncı sağlamak amacıyla yüksek kotlarda bir su deposu inşa edilir. Depodaki su miktarı seviye algılayıcı ile okunarak, azaldıkça sabit devirli pompalar yardımıyla depoya su basılır. Bu sistemlerde basınç bilgisi okunmadığı için sistemin çalışması hakkında herhangi bir bilgiye sahip olunmaz. Pompalar da depoyu doldurmak için her zaman tam kapasite ile çalışmak zorunda kalırlar. Bu da enerji maliyetlerini artırır. Ayrıca depo inşası ve ana nakil hattı inşası ilk kurulum maliyetlerini artırmaktadır. Basınç algılayıcıları kablolama yapılarak da sisteme eklenebilir. Fakat kablo yapmak ek kablo, montaj ve bakım maliyeti çıkaracaktır. Sulama sisteminin geniş bir sahaya yayıldığı düşünülürse bu ek maliyet azımsanmayacak kadar çok çıkacaktır. Sahaya montajının kolay olması, herhangi bir kablolamaya ihtiyaç duymadığı için mevcut sistemlere uygulanmasının kolay olmasından KSA (Kablosuz Sensör Ağı) ile basınç bilgisinin okunulması düşünülmüştür. 1.1 Kablosuz Sensör Ağları Mikro elektromekanik sistemler (Microelectromechanic systems, MEMS) ve radyo frekansındaki (Radio Frequency, RF) hızlı gelişim, az güç tüketen, ucuz, ağ üzerinde kullanılabilir mikro algılayıcıların geliştirilmesini mümkün kılmıştır. Bu algılayıcı düğümleri çeşitli fiziksel bilgilerin sıcaklık, basınç, bir cismin 3 hareketi vs. yakalanmasını sağlamaktadır. Bununla beraber çevrenin fiziki özelliğinin de nicel ölçümlerle eşlenmesini sağlayabilmektedir. Tipik bir KSA, kablosuz bir ortam aracılığı ile birbirine bağlanmış yüzlerce hatta binlerce algılayıcı düğümünden oluşur. Bu düğümler kendi ağlarını kendileri organize ederler, önceden programlanmış bir ağ topolojisi söz konusu değildir. Pil ömrüne bağlı olan kısıtlamalar yüzünden, algılayıcı düğümleri çok büyük bir zamanı düşük güç tüketimi ile “uyku” durumunda geçirirler ya da düğüm verisini işlerler. KSA’ların sağladığı yararlardan ya da artı özelliklerden bazıları aşağıda kısaca açıklanmıştır. — Her zaman her yerde: Mevcut makro algılayıcı düğümlerinin kapsamı, maliyet kıstasları ve kurulum sebepleriyle belirli fiziksel alanlarda dar olarak sınırlıdır. Buna zıt bir şekilde KSA’lar insan bakımına gereksinim duymayan fiziksel olarak ayrılmış pek çok düğüm içerebilir. Düğüm bazında bakıldığında tek bir düğümün kapsamı küçük de olsa, yoğun olarak dağıtılmış düğümler eş zamanlı ve iş birliği prensipleriyle çalışabilir; böylece tüm ağın kapsamı genişletilmiş olur. Ayrıca algılayıcı düğümleri yaşam tehlikesinin olduğu alanlara bırakılabilir ve dört mevsim işlem yapabilir; bu yüzden bu düğümler algılama görevlerini her an yürütebilirler. — Olası hatalara karşı daha fazla tolerans: Bu kazanım KSA düğümlerinin yoğun biçimde yerleştirilmesi sonucu sağlanmıştır. Aynı alan içerisinde komşu düğümlerden birbiriyle ilişkili veri alınması sonucunda sistemin hatayı tolore etme şansı, tek başına bulunan bir makrosensöre kıyasla çok daha büyüktür. Eğer bir makrosensör düğümü hata verir ya da işlemi durur ise sistem, fonksiyonunu sensörün bulunduğu alanda tamamen yitirir. Bu durumun tam tersi olarak KSA’larda eğer mikrosensör düğümlerinin küçük bir kısmı hata verirse, KSA kabul edilebilir derecede bilgi üretmeye devam edebilir, çünkü çıkarılan veri gereğinden fazladır. Bundan başka alternatif haberleşme yolları, herhangi bir yönlendirme hatası olduğu takdirde kullanılabilir. — Geliştirilmiş doğruluk oranı: Tek başına bir makrosensör düğümü tek bir mikrosensör düğümünden daha doğru bir ölçüm yapsa bile, çok sayıda mikro düğümün topladığı verinin tek parça haline getirilmesi ile oluşan veri gerçekten dünyanın gerçekliğinden daha fazlasını yansıtabilir. Buna ek olarak, bu veri, uygun algoritmalar eşliğinde işlenir ve ilişkilendirilir ve/veya kümelenirse genel sinyal geliştirilebilir ve ilişkisiz parazitin bir kısmı temizlenebilir. 4 —Düşük Maliyet: KSA’ların makrosensörlü sistemdeki eşlerinden daha düşük maliyetli olması beklenmektedir; bu beklentinin sebepleri; küçültülmüş boyutları, düşük fiyatları ve bunlarla birlikte yerleşim / kurulum aşamasının kolaylığı olarak gösterilebilir. 1.2 Kablosuz Sensör Ağı Uygulamaları KSA düğümleri kullanıldıkları uygulamaya yönelik olarak, aşağıda verilen parametreleri ölçebilirler. - Sıcaklık - Nem - Basınç - Işık - Nesne Hareketleri - Gürültü KSA’ların güvenilirlik, kendini organize etme, esneklik ve kurulum kolaylıkları sebebiyle mevcut ve olası uygulamaları geniş bir çeşitlilik kazanmaktadır. Aynı zamanda neredeyse tüm çevre ortamlarında uygulanabilirler, özellikle mevcut kablolu ağların çalışmasının imkansız olduğu ya da kullanılamayacağı durumlarda kullanılabilirler örnek olarak, savaş alanları, atmosferin dışı, derin okyanuslar vb. Askeri Uygulamalar: KSA’lar askeri komuta, kontrol, iletişim, hesaplama, istihbarat, nezaret, keşif ve hedef tespit sistemlerinin ayrılmaz bir parçası olmaya başlamıştır. Çevre Algılaması ve İzleme: Belirli bir coğrafi alana yayılan yüzlerce ya da binlerce, ufak, ucuz, kendini-ayarlayabilir kablosuz algılayıcılar çevre izleme ya da çevre kontrolü işlemlerinde geniş yelpazeli uygulamalarda kullanılabilir. 5 Felaketten Korunma ve Kurtarma: KSA’lar belki de acil durumlarda ya da felaket durumlarında yerleştirildikleri afet alanlarında etkili olabileceklerdir. Dağıtılmış KSA’lar aracılığı ile yapılan doğru ve zamanında yer tespiti, kurtarma operasyonlarında hayati önem taşır, yer tespitinin yanında ölü sayısı, potansiyel tehlikeler ya da acil durumun kaynağı, kimlik tespit işlemleri ve kurtarılmayı bekleyen insanların tespiti de hayati verilerdir. Tıbbi Hizmetler: KSA’lar zamanında ve etkin sağlık hizmetlerinin sağlanması ile insanlık için daha sağlıklı bir çevrenin oluşturulmasında oldukça yardımcıdır. Uzaktan Ölçüm: KSA’lar gaz, elektrik, oda sıcaklığı gibi verileri kablosuz ağ aracılığı ile istenen noktaya iletebilir. Ya da parkmetrenin süresinin dolmak üzere olduğunu araç sahibine iletebilir. Akıllı Alanlar: Son zamanlarda teknolojideki gelişmeler sonrasında, çeşitli kablosuz algılayıcıların kişisel mobilya ya da araçlara iliştirilmesi mümkün kılınmıştır, bu sayede otonom bir ağ oluşturulabilir. Örnek olarak, akıllı bir buzdolabı ailenin doktordan alınan diyet programına göre buzdolabının envanterini tutup, alışveriş listesini tutan kişisel dijital asistana alınacaklar listesini gönderebilir. Bilimsel Araştırmalar: Etkin bir şekilde yerleştirilmiş ve otomatik işlem yapabilen KSA’lar bilimsel araştırmaların daha yüksek, ileri ve derin ortamlara açılan yeni kapısıdır. Etkileşimli Çevreleme: KSA’lar mayın bilgisini toplama konusunda ümit veren mekanizmalar üretmişlerdir. Ucuz ve ufak kablosuz algılayıcıların yayılması ile küçük yaştaki çocukların eğitimini güçlendirmek için akıllı anaokulları tasarlanabilir, çocukları izleme ve aktivitelerini yönlendirme işlemleri için KSA’lar kullanılabilir. Nezaret ve Gözetim Uygulaması: Anlık ve uzaktan gözetim KSA’lardan esinlenerek geliştirilen önemli uygulamalardan biridir. Örnek olarak, çok sayıda akustik ağ algılayıcı ile belirlenen hedeflerin tespiti ve takibi belirli güvenlik kriterlerinin uygulandığı alanlarda kullanılabilir. KSA’lar bu gibi amaçlarla binalara, yerleşim alanlarına, hava alanlarına, tren istasyonlarına vs. yerleştirilerek ziyaretçilerin tanınması ve bilginin anlık olarak ana komuta merkezine iletilmesi 6 gibi görevleri yerine getirebilir. Benzer şekilde duman algılayıcıları evlere, otel odalarına, okullara yerleştirilerek olası kaza, yangın ve felaketlerin fark edilerek en hızlı biçimde gerekli müdahale yapılmasını mümkün kılarlar. Su dağıtım sistemleri üzerine yapılan çalışmalar da mevcuttur. Lin ve arkadaşları (2008) su dağıtım sistemleri üzerine yaptıkları çalışmada, yangın musluklarına yerleştirdikleri titreşim ve akustik algılayıcıya sahip düğümler ile kaçak ve tıkanıklık bilgisi toplamayı öngörmüşlerdir. Yapılan testler daha çok fiziksel katmanın performansı üzerine olmuştur. Ölçümler sonucunda 2.4 GHz frekansının 836 MHz’den daha iyi bir yol kaybı performansına sahip olduğu sonucuna ulaşmışlardır. Bunun nedenleri sensör düğümlerinin bir kısmının toprak altında ve metal kasa içinde olmasıdır. Başka bir çalışma da Pipenet adı altında Stoianov ve arkadaşları (2007) tarafından gerçekleştirilmiştir. Atık su sistemlerinin izlenmesi ön görülmüştür. Bu amaçla sistemdeki kaçak, çatlak ve tıkanıklıkları tespit etmek için basınç, akustik ve titreşim algılayıcılar kullanılmıştır. Intel Mote 2 düğümü aracılığıyla sahaya yerleştirilen algılayıcılardan gelen veri genel paket radyo servisine (General Packet Radio Service, GPRS) veya 802.11’e sahip baz istasyonları tarafından toplanarak kontrol merkezine iletilmektedir. 1.3 Kablosuz Sensör Ağı Protokol Katmanları Önceki bölümde üzerinde durulan KSA uygulamaları beraberinde birçok sorunu da getirir. Bu uygulamaların başlıca tasarım kısıtlamaları şunlardır. Enerji Verimliliği: Düğümlerin pille birkaç yıl çalışması beklenir. Bu nedenle, enerjinin etkin kullanılması tasarım aşamasında anahtar rol oynar. Gecikme Garantisi: Algılayıcı düğüm fiziksel bir olayı izlerken, etkin bir kontrol işlemi için, gecikme belirli sınırlar içinde olmalıdır. Yangın alarmı, tıbbi izleme gibi uygulamalar için böyle bir sınır olmazsa protokol güvenilir olmayabilir. Hata Toleransı: KSA, 3 çeşit hataya dayanabilmelidir. Bunlar; algılayıcı hatası, düğüm hatası, hat hatasıdır. Algılayıcı hatası üretimdeki kusurlardan veya yaşlanmadan kaynaklanabilir. En kolay yakalanabilen algılayıcı arızası çevresel değişikliklerle değişmeyenlerdir. Örneğin, algılayıcı çıkışında sabit bir değer olur 7 ve biz bu değere eklenmiş alıcı gürültüsünü gözlemleriz. Bu hata yakalanmalı ve algılayıcı bilgisi yok sayılmalıdır. Diğer yandan algılayıcı yaşlandıkça okumalarındaki değişme miktarı azalır. Böylece, yaşlanma faktörü ve uygulamaya göre algılayıcının okuduğu değer işe yaramaz hale gelebilir. Hat hatası düğümün veya gözlemlenen nesnenin yer değiştirmesinden kaynaklanırken, düğüm hatası güç kaybı veya hareketlilik nedeniyle meydana gelebilir. Haberleşme protokolü dinamik olmalı ve bu tür değişimlere cevap verebilmelidir. Tasarım yapılırken, sensör ağlarının uygulama özel karakteristikleri hesaba katılmazsa, bütün bu kısıtlamaların üstesinden gelmek zor olabilir. KSA için geliştirilecek protokol, uygulamanın özelliklerini bozmadan, birçok uygulamayı kapsayacak şekilde genel olmalıdır. Çok noktadan tek noktaya iletim, ortak işleme ve kısıtlamaların ağın değişik noktalarında farklı olması çoğu ağda ortaktır. Çok Noktadan Tek Noktaya İletim: Algılayıcı ağlardaki haberleşme, birçok bağımsız noktadan noktaya akış yerine, düğümlerden ağda bulunan merkezi veri toplayıcılara doğrudur. Çok noktadan tek noktaya haberleşme; düğümlere, baz istasyonuna giden yolda verileri toplulaştırma ve sıkıştırma olanağı sağlar. Bu özel haberleşme modeli, diğer düğümlerin paketlerinin baz istasyonuna iletirken aşırı yüklenen baz istasyonu yakınındaki düğümler için yük dengelemeli yönlendirme algoritmasına ihtiyaç duyar. Toplu İşleme: Sensör düğümleri, kendi verilerini gönderirken birbirleriyle yarışmak yerine müşterek görevlerini yaparken beraber çalışırlar. Normal bir ağda, düğümler ortak iletim kanalına erişim kazanmak için birbirleriyle çarpışırlar ve verilerinin hedefe en kısa sürede ulaşması için en az sayıda düğüm atlaması yapmayı öngörürler. Hem de aldıkları paketi hiçbir işlem yapmadan yönlendirirler. Fakat kablosuz sensör ağlarında düğümler, iletim hakkını elde etmek için harcanan enerjiyi ve geçen zamanı azaltmak nedeniyle kendileri için toplayıcı düğüm tarfından belirlenen zaman aralıklarında iletim yapabilirler. Ayrıca, bazı düğümlerin uzun iletim yollarını seçmesi toplam ağ ömrünü uzatma açısından daha iyi olabilir. Buna ek olarak düğümler gönderecekleri veri miktarını azaltmak için birbirleriyle işbirliği yapabilirler. Kısıtlamaların Düzensiz Dağılımı: Sensör düğümleri ile ortak toplama noktasının kısıtlamaları simetrik değildir. Sensör düğümlerinin kısıtlı enerjileri ve 8 iletim güçleri varken, verileri toplayan merkezi kontrolörün enerji veya güç kısıtı yoktur. Baz istasyonun kapasitesi ağın yükünü azaltmak için kullanılabilir. Senkronizasyon yapmak örnek olarak verilebilir. Enerji verimliliği, gecikme garantisi, hata toleransı kısıtlamaları ve kablosuz sensör ağlarının uygulamaya özel karakteristikleri birden çok protokol katmanını etkiler. Bu nedenle kablosuz sensör ağları için protokol tasarlarken, tüm protokol katmanlarını içine alan bir tasarım ele almak gereklidir. Çapraz katman tasarımı iki yolla yapılabilir (Akyıldız et al., 2005). İlk yaklaşım diğer katmanlardaki parametreleri hesaba katarak protokol katmanının performansını artırmaktır. İkinci yaklaşım ise birkaç protokol katmanını tek bir katmanda birleştirmektir. İkinci yaklaşım katmanlar arasındaki yakın iletişim nedeniyle daha iyi performans sağlarken, ilk yaklaşım protokol katmanları arasındaki şeffaflığı korumaktadır. Şekil 1.1 basitleştirilmiş bir ağ protokol yığınını göstermektedir. Her katmanın fonksiyonu ise şöyledir (Cui, 2005). - Fiziksel Katman (Physical Layer): Bitlerin kablosuz hat üzerinden noktadan noktaya güvenilir bir şekilde iletilmesine odaklanır. Bu katmanın gerçekleştirdiği ana fonksiyonlar modülasyon, kodlama, çeşitlilik ve güç kontrolüdür. - İletim Ortamı Erişim Kontrol (Medium Access Control, MAC) Katmanı: MAC katmanı, verilen iletim bandını farklı kullanıcıların nasıl paylaşacağını kontrol eder. İletim bandı tahsisi rastgele erişim veya önceden karar verme şeklinde olabilir. - Ağ Katmanı (Network Layer): Veri dizilerinin kaynaktan hedefe iletilmesini sağlar. Bu katman ağ yönlendirmesinden ve dinamik kaynak yönetiminden sorumludur. - Uygulama Katmanı (Application Layer): Ağa gönderilecek veriyi üretir ve ağdan gelen veriyi işler. Temel fonksiyonu kaynak kodlamasıdır. 9 Tipik çapraz katman tasarımında, alt katmanlar üst katmanlara raporlama yaparlar. Geçişler genellikle aşağıdan yukarıya doğrudur. Şekil 1.1’de de görüldüğü gibi; tasarım, kablosuz sensör ağlarının uygulama özel karakteristiklerini işletmek için üst katmanlardan alttakilere etkileşimleri de içerir Uygulama çoktan teke iletim toplu işlem kısıtlamalardaki düzensizlik Ağ katman faaliyetleri MAC hat kalite göstergesi iletim enerjisi devre enerjisi Fiziksel hat kalite göstergesi Şekil 1.1 Kablosuz sensör ağlarında katmanlar arası geçişler Uygulama katmanı, diğer katmanlar tarafından kullanılacak kablosuz sensör ağına özel nitelikleri belirler. Çok noktadan tek noktaya iletim özelliği ve enerji sınırlaması yönlendirme katmanında yük dengeleme kısıtı olarak kendine yer bulurken toplu işleme özelliği düğümlere veriyi sıkıştırma imkanı verir. Kısıtlamalardaki düzensizlik MAC katmanında enerji verimli senkronizasyon yapar. Fiziksel katman özellikleri, paket iletimi için harcanan enerjiyi, devrenin enerjisi ve iletim gücü fonksiyonu olarak hesaplar. Bu fonksiyonlar en iyi yönlendirme planının seçiminde kullanılır. Fiziksel katman aynı zamanda MAC, yönlendirme ve uygulama katmanlarına hat kalite göstergesi (Link Quality 10 Indication, LQI) bilgisini sağlar. LQI, alıcı enerji belirleme ölçümü kullanarak uygulanabilir. Örneğin IEEE 802.15.4 kanalı bant genişliğindeki gelen sinyal gücü tahmini, sinyal gürültü tahmini veya bunların birleşimi şeklinde olabilir. LQI, MAC katmanı planlaması yapılırken, yönlendirme katmanında sağlam ve güvenli yönlendirme yolu seçilirken ve uygulama katmanında uygun kaynak kodlaması belirlenirken kullanılabilir. Sonuç olarak, düğümün paket göndermediği veya almadığı durumlarda MAC katmanındaki faaliyetler ağın performansını en iyi hale getirmek için yönlendirme katmanında kullanılabilir. Bu tez çalışmasında bir sulama sisteminin basınç bilgisinin KSA yardımıyla toplanması hedeflenmiştir. Bu nedenle sulama şebekesinin benzetimini yapmak için bir test düzeneği kurulmuştur. Basınç bilgisini toplayacak düğümlerin veri iletimini sağlamak amacıyla şebeke yapısına uygun bir yönlendirme protokolü yazılmıştır. Otomasyon sistemine veya kullanıcılara doğru ve düzenli veri akışı sağlanması hedeflenmektedir. Böylece sulama sisteminin kontrolü yapılacak, su israfı ve enerji tüketimi azalacaktır. Hatta meydana gelebilecek problemlere daha kısa zamanda müdahale edilebilecektir. Aynı zamanda bu çalışma ile kablosuz sensör ağının performansı da değerlendirilmiştir. Ağ ömrü ve paket kayıpları gibi kritik parametreler ölçülerek sistemin uygunluğu test edilmiştir. 11 2. KABLOSUZ AĞLARDA YÖNLENDİRME PROTOKOLLERİ 2.1 802.15.4 ve ZigBee Ağ Yapıları ve Elemanları Ucuz sabit, taşınabilir veya hareketli cihazlar ile kendi kendine kurulabilen ağlardaki esneklik, düşük maliyet, çok düşük enerji tüketimi ve düşük veri iletim oranları bu standardın ana özellikleridir. Yüklü protokol yığınlarının enerji tüketimiyle başa çıkamayacak, gevşek veri iletimli uygulamalar için geliştirilmiştir. ZigBee standardı ismini bir bal arısından almaktadır. Bal arılarının karmaşık işleri birbirleri ile uyum içinde başarmaları ve havada yaptıkları zig zag hareketleri ismi için ilham kaynağı olmuştur. Çünkü arıların bu hareketleri ZigBee teknolojisindeki uçtan uca mimarisini andırmaktadır. ZigBee Alliance yarı iletken üreticileri, teknoloji sağlayıcıları, orijinal donanım üreticilerinin oluşturduğu 200’den fazla üyesi olan büyük bir birliktir. 2004 yılında kurulmuştur. ZigBee düşük maliyette, yüksek veri doğruluğu sağlayan, düşük güç tüketen, uzaktan kumanda ve otomasyon uygulamalarını hedefleyen, duyarga ağları oluşturmak amacıyla geliştirilen bir kablosuz ağ teknolojisidir. Bu teknoloji IEEE 802.15.4 LR-WPAN standardının üzerine inşa edilmiştir. ZigBee IEEE 802.15.4 standardının belirlediği fiziksel katman ve MAC katmanı üzerine ağ ve uygulama katmanını inşa eder. ZigBee Alliance ve IEEE güçlerini birleştirerek bu teknolojiye ZigBee ticari ismini verdiler. ZigBee teknolojisinden beklenen, çok uzun süre pil değişimine gereksinim duymadan çalışabilecek cihazların bir ağ mantığı ile birbirlerine bağlanabilmesini sağlamasının yanında, düşük güç tüketimine sahip bir ağ oluşturabilmesidir. Çünkü kontrol kumanda amaçlı birçok uygulama için yüksek veri transfer oranı gerekmemekte, bu cihazların uzun pil ömrüne sahip olması, hafif ve taşınabilir olması önem arz etmektedir. Diğer kablosuz protokollerle karşılaştırdığımızda, ZigBee kablosuz protokolü, karmaşıklığı azaltan yapısı, daha az kaynak gereksinimi ve en önemlisi standart bir komut ve özellik seti sunmasıyla ön plana çıkmaktadır (Pehlivan ve Töre,2010). 12 2.1.1 Ağ bileşenleri Bir ZigBee sistemi değişik elemanlardan oluşur. En temel olanı cihazlardır. Cihaz tam fonksiyonlu (Full-Function Device, FFD) veya azaltılmış fonksiyonlu (Reduced-Function Device, RFD) olabilir. Ağ, kişisel alan ağı (Personal Area Network, PAN) koordinatörü olarak çalışacak en az bir adet FFD içermelidir. FFD üç durumda çalışabilir. PAN koordinatörü, sadece koordinatör veya düz bir cihaz olabilir. RFD’ler uygulamaya özel olarak tasarlanmış ve çok miktarda veri göndermeye ihtiyacı olmayan elemanlardır. FFD cihazı RFD ile konuşabilir. RFD görevindeki FDD’ler de sadece FFD ile görüşebilirler. 2.2 Ağ Topolojileri Şekil 2.1’de ZigBee’nin desteklediği üç çeşit ağ topolojisi görülmektedir. Yıldız mimarisi, uçtan uca mimari ve kümeli ağaç mimarisi ZigBee ağ yapısı tipleridir. 2.2.1 Yıldız mimarisi Yıldız ağ yapısında iletişim düz cihazlar ile tek merkezi kontrolör olan PAN koordinatörü arasında kurulur. Cihazlar çoğunlukla pille beslenirken, PAN koordinatör şebeke voltajıyla beslenebilir. Bu topolojiden yararlanan uygulamaların bazıları; ev otomasyonu, kişisel bilgisayarlar, oyuncaklar ve oyunlardır. FDD aktive edildikten sonra kendi ağını oluşturur ve PAN koordinatör haline gelir. Her başlangıçta ağ PAN tanımlayıcı seçer. PAN tanımlayıcının radyo iletişim alanında kalan diğer ağlar tarafından kullanılmadığına dikkat edilir. Bu her yıldız ağının bağımsız olarak çalışmasını sağlar. 2.2.2 Uçtan-uca mimari Uçtan-uca topolojide de bir adet PAN koordinatör mevcuttur. Yıldız mimarisinden farklı olarak cihazlar erişim alanlarındaki diğer cihazlar ile haberleşebilirler. Uçtan uca ağ, kendi kendine organize olup, kendini iyileştirebilir. Endüstriyel kontrol ve izleme, kablosuz sensör ağları, varlık ve döküm yakalaması gibi uygulamalar bu yapıdan faydalanır. İletinin bir cihazdan 13 diğerine çok atlamalı olarak yönlendirilmesine imkan verir. Çok yollu yönlendirme ile güvenilirlik sağlar. Şekil 2.1 Ağ mimarileri 2.2.3 Küme-ağaç mimarisi Kümeli ağaç ağları, uçtan uca yapının özel bir türüdür. Cihazların çoğu FFD’dir. RFD’lar ağaç yapısının kol sonlarına yaprak düğüm olarak bağlanırlar. FFD’lerden herhangi birisi koordinatör olarak davranabilir ve diğer cihazlara ve koordinatörlere eşleme servisi sağlayabilir. Fakat bu koordinatörlerden sadece birisi PAN koordinatör olabilir. PAN koordinatör, kendisini sıfır numaralı küme tanımlayıcısı (Cluster Identifier, CID) ile küme başı (Cluster Head, CLH) olarak tesis ederek, kullanılmayan bir PAN kimliği seçerek ve komşu düğümlere işaret çerçevesi göndererek küme yapısını teşkil eder. İşaret çerçevesini alan aday cihaz, CLH’ye ağa katılmak için bir istek gönderir. Eğer PAN koordinatör cihazın katılmasına izin verirse, yeni cihazı alt cihaz olarak komşu listesine ekler. Yeni eklene cihaz ise CLH’yi üst cihaz olarak komşu listesine ekler ve diğer ağa katılmak isteyecek aday cihazlar için işaret çerçevesi yaymaya başlar. 14 Uygulamanın veya ağın ihtiyaçları doğrultusunda PAN koordinatör, mevcut kümenin yanında başka bir cihazı küme başı yaparak yeni bir küme oluşturabilir. Artırılmış kapsama alanında arttan gecikme maliyetlerini düşürmek böyle bir yapının temel avantajıdır. 2.3 Yönlendirme Protokolleri Kablosuz sensör ağı uygulama alanlarının çeşitliliği ve kısıtları nedeniyle birçok yönlendirme algoritması ortaya çıkmıştır. Bir yönlendirme mekanizması uygulama ihtiyaçlarını ve ağ yapısını dikkate alarak çalışmalıdır. Çok çeşitli yönlendirme protokolü olmasına rağmen TDA yönlendirmesi üç ana grupta incelenebilir. Bunlar; - Veriye Dayalı Yönlendirme - Hiyerarşiye Dayalı Yönlendirme - Konuma Dayalı Yönlendirme 2.3.1 Veriye dayalı yönlendirme protokolleri Veriye dayalı yönlendirme protokolleri sorgu temellidir. Ağdaki her düğüm aynı role sahiptir ve algılama işini birlikte çalışarak yerine getirirler. Düğüm sayısının fazlalığı ve düğümlerin rastgele dağılması nedeniyle her düğüme genel bir adres verilmesi mümkün olmamaktadır. Genel bir adresleme yapılamadığı için adrese dayalı sorgulama yapılamamaktadır. Bu nedenle veri, uygulama alanındaki her düğümden önemli ölçüde gecikme ile iletilir. Bu hem enerji tüketimini artırır hem de yönlendirme protokolünün ihtiyaç duyduğu veri toplulaştırma gibi fonksiyonların yerine getirilmesini engeller. Enerji kaynaklarının azlığı ve veri toplulaştırma gibi özelliklerden dolayı veriye dayalı yönlendirme protokolleri ortaya çıkmıştır. Baz istasyonu belirli bölgelere sorgular gönderip, o bölgedeki düğümlerden veri bekler. Veri, sorgular aracılığı ile talep edilir. Bu tip yönlendirme protokollerinde istenilen verinin özelliklerini tanımlamak için nitelik temelli adlandırma gereklidir. Algılayıcı protokoller için görüşmeye dayalı bilgilendirme (Sensor Protocols for Information via Negotiation, SPIN) ve güdümlü yayılma; veriye dayalı yönlendirme üzerine yapılmış, veri anlaşması yaparak, enerji tasarrufu sağlayan ve veri tekrarını ortadan kaldıran ilk 15 çalışmalardır (Ye et al., 2001). Bu iki çalışma diğer protokoller için çıkış noktası oluşturmuştur. 2.3.2 Hiyerarşiye dayalı yönlendirme protokolleri Hiyerarşik veya küme temelli yönlendirme, kablolu ağ yapılarından iyi bilinen bir tekniktir. Kablosuz ağlarda ek olarak ölçeklendirme ve etkin iletişime bağlı özel avantajlar sunmaktadır. Hiyerarşik yapı aynı zamanda enerji etkin yönlendirme için kullanılmaktadır. Düğümler ağ içinde değişik rollere sahiptir. Silsileli mimaride yüksek enerjili düğümler bilginin işlenmesi ve iletimi ile düşük enerjili düğümler algılama işi ile görevlendirilebilirler. Kümeler oluşturmak ve küme başlarına özel görevler vermek, bütün sistemin ölçeklenirliğine, ömrüne ve enerji verimliliğine önemli katkıda bulunacağı anlamına gelmektedir. Hiyerarşik yönlendirme, küme içinde enerji tüketimini azaltmak ve veri birleştirmesi yaparak baz istasyonuna iletilen mesaj sayısını azaltmanın etkin bir yoludur. Hiyerarşik yönlendirme ana olarak iki katmandan oluşur. İlki küme başının seçilmesinde, diğeri ise yönlendirmede kullanılır. Küme kurma işlemi tipik olarak sensör düğümlerinin enerjisine ve küme başına yakınlığına dayanmaktadır (Lin et al., 1997). Düşük enerji uyumlu kümeleme hiyerarşisi (Low-Energy Adaptive Clustering Hierarchy, LEACH) ilk silsileli yönlendirme protokolüdür (Heinzalman et al., 2000). 2.3.3 Konuma dayalı yönlendirme protokolleri Konuma dayalı yönlendirme protokollerinde algılayıcı düğümler konumlarına göre adreslendirilirler. Komşu düğümler arası mesafe sinyal güçlerine göre tayin edilebilir. Böylece komşu düğüm koordinatları karşılıklı bilgi alışverişi ile sağlanabilir. Eğer düğümler küresel konumlama sistemi (Global Positioning System, GPS) alıcısına sahip ise konum bilgisi doğrudan uydu vasıtası ile de alınabilir (Xu et al., 2001). Düğümlerin konumlarının bilinmesi hem enerji tüketiminin önceden tahmin edilmesini, hem de algılama işinin istenilen bölgelerde yapılmasını sağlamaktadır. Bütün ağa sorgu göndermek yerine istenilen alana sorgu gönderilerek ağın geri kalanının uyku durumunda olması sağlanabilir. Bizim çalışmamızda olduğu gibi sabit yapılı ağlar için daha iyi sonuç vermektedir. 16 2.4 Yönlendirme Protokol Çalışmaları LEACH, Heinzalman et al. (2000) tarafından ortaya atılan dağınık küme oluşturmaya sahip hiyerarşik yönlendirme protokolüdür. Küme başları rastgele olarak seçilir ve bu rol küme içinde zamana bağlı olarak değiştirilir. Böylece kümenin enerji yükü düğümler arasında dağıtılmış olur. Kümeleme yaparak her düğümün değil sadece küme başının baz istasyonuna erişim hakkı olur. Bu da ağın enerji tüketimini azaltırken, ömrünü artırır. Küme başı sayısı toplam düğüm sayısının %5’idir. Bütün veri toplulaştırma ve birleştirme gibi işlemler küme içinde meydana gelir. LEACH doğrudan iletişime göre enerji tüketiminde 7 kat azalma sağlar. Dinamik kümeleme ağın ömrünü artırır ve düğümlerin rastgele olarak ölmesini sağlar. Tamamen dağınık yapısı sayesinde ağın tamamı hakkında bilgiye gerek duymaz. Fakat tek atlamalı yönlendirmeye sahiptir. Her düğüm yalnızca küme başına veya baz istasyonuna iletim yapabilir. Bu nedenle büyük ölçekli ağlara uygun değildir. Ayrıca dinamik kümeleme enerji tüketimini artıran başın değişimi, yayınlanması gibi ek yükler getirmektedir. Algılayıcı sitemlerde güç etkin toplama (Power-Efficient Gathering in Sensor Information Systems, PEGASIS) LEACH protokolünün geliştirilmiş şeklidir (Lindsay et al., 2002). Çok sayıda küme oluşturmak yerine zincir temelli bir yapı oluşturulmaktadır. Her düğüm kendine en yakın komşusuna veriyi iletir. Tek bir düğüm topladığı bütün veriyi birleştirerek baz istasyonuna gönderir. Son düğüm rolü sırayla değiştirilerek enerji tüketimi ağ içinde düzgün olarak dağıtılmaktadır. Veri birleştirmesi sayesinde iletim sayısı ve dinamik kümeleme kullanılmadığı için ağdaki ek yükler azalmaktadır. Fakat uzak düğümler için büyük gecikmeler meydana gelmektedir. Ayrıca baz istasyonu ile lider düğüm arasında darboğaz meydana gelebilir. Bu gecikmeleri azaltmak amacıyla çoklu iletimi öngören Hiyerarşik-PEGASIS geliştirilmiştir (Lindsay et al., 2001). Aynı anda birden çok iletişime imkan veren ağaç yapısı öngörülmektedir. Her seviyedeki düğümler verisini paralel olarak bir üst seviyedeki düğümlere iletmektedir. Birbirinden uzak düğümler paralel iletişim yapabilmektedir. Birbirine yakın düğümler ise CDMA kullanarak eşzamanlı iletişim yapmaktadırlar. Hiyerarşik yapı normal PEGASIS’e oranla 60 kat daha performanslı çalışmaktadır. Her düğüm komşuları hakkında bilgiye ihtiyaç duyduğu için topoloji değişikliklerinde ağa gözle görülür bir ek yük binmektedir. Eşik değer duyarlı enerji verimli protokol (Treshold-sensitive Energy Efficient Protocols, TEEN) ölçülen değerdeki değişikliklere göre hareket eden 17 hiyerarşik bir çalışma öngörmektedir (Manjeshwar et al., 2001). Çok katmanlı kümeleme oluşturulur. Baz istasyonu tarafından iki eşik değeri belirlenir ve düğümlere yayınlanır. İlki ölçülen olgunun belirli bir seviye üzerine çıkınca veri gönderilmesini sağlar. İkincisi ise ilk eşik değer üzerindeki küçük değişiklikleri göz ardı etmek için kullanılır. Böylece ağ trafiği önemli ölçüde azaltılmış olur. TEEN periyodik ölçüme ihtiyaç duyan ölçümler için kullanışlı değildir. Kullanıcı uzun süre değer okuyamayabilir. Bu nedenle uyarlanabilir TEEN (Adaptive TEEN, APTEEN) geliştirilmiştir. Bu protokolde hem periyodik hem de eşik duyarlı ölçüm yapmak mümkündür (Manjeshwar et al., 2002). Eğer ölçülen değer eşiğin altındaysa ve belirlenen zamanda ölçüm gönderilmediyse düğüm veri göndermeye zorlanmaktadır. Bütün eşik değerler ve gönderme periyotları baz istasyonu tarafından yayınlanmaktadır. Bütün bu yayınlar ve kümeleme algoritması ağa ekstra yük getirmektedir. Sanal ızgara mimarili yönlendirme (Virtual Grid Architecture Routing, VGA) düşük hareketliliğe sahip ağlar için geliştirilmiş, konuma dayalı sabit kümeleme yapısına sahip, veri toplulaştırmayı ön plana çıkaran bir protokoldür. Konumlarıma bağlı olarak sanal sabit kare kümeler oluşturulur. Her küme içinde en uygun eleman küme başı olarak seçilir ve veri toplulaştırma ile küme verisinin bir üst seviyeye gönderilmesinden sorumlu olur. Üst seviye düğümler de toplulaştırma yaparak veriyi baz istasyonuna iletirler (Al-Karaki et al., 2004). Kümeler sanal olarak oluşturulduğundan GPS verisine ihtiyaç duyulmaz. Sulama sistemi inşa edildikten sonra zamanla değişmediği için VGA’nın öngördüğü ızgara sisteminde bir ağ yapısı inşa edilebilir. Ağ topolojisini sulama sistemi ile bire bir örtüştürmek kontrol açısından fayda sağlayacaktır. Yine statik bir su hattına sahip olduğumuz için kümeleri sabit olarak oluşturmak, LEACH’teki dinamik yapıdan kaynaklanan ek yükü ortadan kaldıracaktır. Ölçüm yapılacak sulama hattı dallanmadan uzun kollar halinde ilerlediğinden PEGASIS gibi bir zincir yapısı oluşturmak mantıklı hale gelmektedir. Aynı zamanda APTEEN gibi hem periyodik hem de eşik değere göre ölçüm yaptırmak ağdaki trafik yükünü azaltacaktır. Cihazlarımızda GPS modülü olmadığı için ağ mimarimizi statik adresleme ve kümeleme yaparak sulama sistemi projesine uygun olarak tasarlamak bize avantaj sağlayacaktır. Böylece hangi düğümün hattın hangi noktasında olduğu veya hangi noktanın basıncının ölçüldüğü bilgisine VGA’da belirtildiği gibi sahip olacağız. APTEEN’de öngörülen eşik bilgisinin baz istasyonu tarafından 18 yayılmasından dolayı oluşacak yükü devre dışı bırakmak amacıyla, düğümlerin konumları bilindiği için tasarım aşamasında düğümler programlanırken girilmesi uygun olacaktır. Düğümler, basınç belirli bir aralığın dışına çıkarsa anlık veya belirtilen zaman aralığı sonunda periyodik olarak iletim yapacaklardır. Oluşturacağımız yönlendirme protokolünde daha çok hiyerarşiye dayalı yönlendirme protokollerinde kullanılan veri toplulaştırılması yapılmayacaktır. Bunun nedeni gecikmeleri azaltmak ve paket boyutunun büyümesini önlemektir. PEGASIS ve TEEN uygulamalarında yapılan veri toplulaştırması gecikmeyi artırmakta ve düğüm içi ekstra işlem gerektirmektedir. Statik bir yapıya sahip, geniş alanlara yayılan sulama sistemine yerleştirilecek düğümler için enerji kısıtı ve gecikme yaratabilir. Her uygulamanın, uygulama alanına göre değişen istekleri, kısıtları ve hedefleri vardır. Bu üç eleman arasındaki dengeyi en uygun şekilde kurmak gerekmektedir. Uygulamanın belirlediği bu dengeye yönelik olarak protokol geliştirilir. Oluşturduğumuz yönlendirme protokolünün hedefi ise paket kayıplarının, gecikmenin ve ağ ömrünün uygun bir şekilde dağılımını sağlarken basınç bilgisinin sağlıklı bir şekilde okunmasıdır. 19 3. SU İLETİM HATLARININ BASINÇ BİLGİSİNİN ÖLÇÜLMESİ 3.1 Gerekli Sistem Parametreleri Suyun verimli kullanılması gerekmektedir. Günümüzde bütün sulama sistemleri kapalı sistem dediğimiz borulu sulama hatlarından oluşmaktadır. Kapalı sistemler, hatta bir basınç oluşturabildiğimiz için damlama ve yağmurlama gibi sistemlere uygundur. Bunun için boru hattının son kullanıcı noktalarında belirli bir basınca ihtiyaç duyulmaktadır. Bu basınç damlama sistemleri için 1 bar, yağmurlama sistemleri için 3 bar civarında olmaktadır. Mevcut sistemlerde ve DSİ tarafından hali hazırda yapılmakta olan sulama projelerinde bu basıncı sağlamak amacıyla yüksek kotlarda bir depo yapılır. Deponun büyüklüğü ve yapılacağı yer sulama şebekesine göre değişiklik göstermektedir. Daha sonra yeraltı suyu sabit devirli pompalar vasıtasıyla depoya basılmaktadır. Bu sistemlerde son kullanıcı noktalarında herhangi bir basınç ölçümü yapılmamaktadır. Hat üzerinde de herhangi bir kontrol mevcut değildir. Hattın basıncını ölçerek hem hattın çalışması hakkında doğru bilgilere ulaşılmış olur, hem de sabit devirli pompalar yerine değişken devirli pompalar kullanılabilir. Basınç bilgisinin düzenli ölçülmesi sayesinde hatta meydana gelebilecek arızalar (boru patlamaları, kaçaklar gibi) önceden tespit edilebilir. Ayrıca kullanılacak değişken devirli pompalar sayesinde büyük ölçüde enerji tasarrufu sağlanabilecektir. Pompalar ve hat her zaman tam kapasite ile çalışmayacağı için hat kayıpları ve aşınmalar azalacaktır. Bu da enerji ve bakım giderlerinde azalma olarak tüketiciye dönecektir. 3.2 Mevcut Sistemler Dünya nüfusunun 2025 yılında 8 milyara ulaşılacağının tahmin edilmesi, gıda güvenliğini dünyanın yakın gelecekteki en önemli sorunu olarak karşımıza çıkarmaktadır. Artan nüfusun beslenme gereksinimini karşılamak için, önümüzdeki 50 yıl içinde üretimde en az iki kat artış gerekmektedir (Howell et al., 2001). 20 İnsanların temel gıda gereksinimlerinin güvenli biçimde karşılanması için, sulanan alanlarda gerçekleşen %1’lik artışın, yaklaşık %2.25 düzeyinde olması gerektiği belirtilmektedir (Doorenbos and Kassam, 1988). Son yıllarda yapılan projeksiyonlara göre, 2050 yılında gıda, giyecek, barınak ve tatlı su gereksiniminin bugüne göre, iki kat daha fazla olacağı rapor edilmiştir (Postel et al., 1996). Sulama genel anlamda, bitki gelişmesi için gerekli olan, ancak doğal yollarla karşılanamayan suyun toprağa verilmesi biçiminde tanımlanır. Bunun yanında sulama, toprak ve hava sıcaklığının kontrolü, bitki zararlıları ile mücadele, gübreleme, toprakta bulunan fazla tuzların yıkanması ve taban taşının yumuşatılması gibi amaçlara da hizmet eder. Doğal koşullarda yağışlar bitkinin su ihtiyacının ancak küçük bir kısmını karşıladığı için sulama bitki gelişiminde büyük öneme sahiptir. Sulamayla topraksu ve bitki arasında olumlu bir dengenin yaratılması sağlanmaktadır. Bu nedenle sulama, bitki gelişmesi için yeterli nem koşulunu sağlayan bir faktördür. Ayrıca sulama, tarım sektörünü iklim şartlarından bağımsız kılmakta, ilave istihdam yaratmakta, kırsal alanda gelir dağılımını düzeltmekte, gübre kullanımına imkan sağlamakta, üretimin çeşitlenmesine ve birim alandan birden fazla ürün alınmasına imkan vermektedir. Sulama sistemleri ile suyun kaynaktan alınıp sulanacak alana getirilmesi ve oradan da bitki kök bölgesine verilmesi amaçlandığından, sistemin projelenme ve işletilmesinde üç temel görevin sağlanması istenir. Bunlardan ilki çiftçiye en yüksek gelirin sağlanması, sonra iletim ve uygulamanın en az su kaybı ile yapılması daha sonra ise tarım alanının uzun dönemdeki verimliliğinin, toprağın aşınması ile yapısının bozulmasını ve tuzluluk ile taban suyu düzeyinin yükselmesinin önlenerek sürdürülmesidir. Şekil 3.1’de görüldüğü üzere borulu sulama şebekeleri son yıllarda artış göstermektedir. Borulu sulama şebekeleri suyun ekonomik kullanılması, işletmesinin kolay olması ve ideal sulama yapılması nedenleriyle önem arz etmektedir (Devlet Su İşleri Genel Müdürlüğü, 2010). Açık kanallı ve kanaletli sulama şebekelerinde hatta basınç oluşmaz. Yapılan projelerde debi miktarı göz önüne alınır. Bu nedenle bu çalışmada borulu sulamalara, özellikle orta ve yüksek basınçlı sulamalara ağırlık verilmiştir. 21 Şekil 3.1 Sulama sistemine göre oranlar. Mevcut borulu sistemlerde önceden projelendirme yapılır. Seçilecek sulama sistemine göre basınç ve debi hesaplaması yapılarak proje oluşturulur. Genellikle bu hesaplamalarda varsayımlarda ve yaklaşımlarda bulunulur. Sulama projesi şu şekilde hazırlanır. Sulama sahasına ait 1/5000 ölçekli vaziyet planları tedarik edilir. Nehirler, yan dereler, yollar, çukur kesimler ve açılması önerilen tahliyeler 1/5000 ölçekli paftalar üzerinde işaretlenir. Varsa derin drenaj ve çiftlik drenaj alanları 1/5000 ölçekli paftalara işaretlenir. Bu hususlar doğrultusunda yedek, tersiyer kanalların sulayacakları alanlar belirlenmiş, sınırlar ortaya çıkmış olur. İleride detayları anlatılacak olan şebeke elemanları sulama şebekesinin tipine bağlı olarak yerleştirilir. Sulama sahasında hangi sulama sistemi uygulanacak ise, o sisteme ait sulama modülü (bitki ihtiyacı olan suyun, birim alan için bir saniyede verilmesi gereken miktarı-lt/sn-ha) alınır. Orta basınçlı borulu sulama sisteminde teorik parsel alanı 8 ha, hidrant debisi 20 lt/s; alçak basınçlı borulu, açık kanal beton kaplamalı ve kanalet tipi 22 sulama şebekelerinde ise teorik parsel alanı 8-10 ha, hidrant debisi 30 l/s alınmaktadır. Sulama sistemi yağmurlama olacak ise, bir teorik parsel alanı seçilerek, o parsele ait hidrant debisi hesaplanır, bu sistemde ortalama olarak 8 ha teorik parsele 11-12 lt/s hidrant debisi olmaktadır. Sulama süresi ve net alan katsayısı belirlenir. Sulama süresi, çiftçilerin bir günlük çalışma süresidir ve pompaj sulamalarında 18 saat, diğer sulamalarda 20 saat alınır. Net alan katsayısı ise, sulama sahası içerisinde sulama dışı kalan sahaların toplamının tüm sahadan çıkarıldıktan sonra kalan net sulama sahasını temsil eden bir katsayıdır. Bu katsayı, basınçlı borulu şebekelerde 0.873-0.900, diğer sulama sistemlerinde ise 0.846 olarak kabul edilir, bu katsayıyla brüt alanın çarpımıyla net sulama alanı bulunur. Projeye uygun olarak arazi toplulaştırması yapılır. Yurdumuzda halka ait tarım arazileri, aşırı bölünme nedeniyle, genelde düzensiz şekilli ve küçük parsellerden oluşmaktadır. Sulama şebekelerinin, parselasyon düzenlenmeden inşa edilmesi, mülkiyetleri artırmakta ve uygulamayı zorlaştırmaktadır. Aynı zamanda şebeke maliyetleri de artmaktadır. Ortalama işletme büyüklüğü A.B.’de 13 ha iken, Türkiye’de 6.1 ha’dır. Arazi toplulaştırması yapılan projelerde, sulama ve drenaj şebekesi için kamulaştırma yapmaya gerek kalmamaktadır. Parsel sınırlarındaki arazi kayıpları azalmakta ve tasarruf edilen arazi, kanal ve yol yerlerini karşılayabilmektedir. Dolayısıyla sulama inşaatına başlamadan önce toplulaştırma yapmak zorunlu olmaktadır. 3.2.1 Basınçlı borulu sulama sistemleri Sulama metotlarının, su uygulama yöntemlerinin ve şebeke türlerinin geliştirilmesinde, bitkilerin gelişmesi için gerekli olan toprak neminin oluşmasında doğal olarak sağlanamayan suyu, gereken zamanda ölçülü, uygun ve doğal koşullara benzer bir şekilde uygulamaya çalışma düşüncesi ile son yıllarda su tasarrufunun gerekliliğinin gündeme gelmesi, etken olmuştur. Bu açıdan 23 bakıldığında, yüksek basınçlı sulamalar bugün dünyada ve Türkiye'de en gelişmiş sulama metotlarından biri olarak ortaya çıkmaktadır. Yüksek basınçlı sulama sistemleri, aşağıdaki sebeplerden dolayı tercih edilmektedir. Salma sulama yöntemleriyle sulanamayan yüksek eğimli ve ondüleli araziler, yüksek basınçlı sulama sistemi ile hiç tesviyeye gerek duyulmadan veya çok az bir tesviye ile rahatlıkla sulanabilmektedir. Yüksek basınçlı sulamalarda arazi tesviyesine gerek olmaması sebebiyle ilk yıldan başlamak üzere tam üretim sağlanabilmektedir. Yüksek basınçlı sulama ile sulama suyunun tarlaya uygulanmasında derine sızma, iletim ve yüzeye akış yolu ile su kayıpları olmaması nedenleri ile çiftlik içi randımanı yüksek olmakta ve buna bağlı olarak, özellikle sulama suyunun yetersiz olduğu yörelerde daha geniş alanların sulanmasına olanak sağlanmaktadır. Yağmurlama ve damla sulamalarında ortalama çiftlik verimi(rç)=0.85, sapma verimi(rd)=0.95 olmasına karşılık, klasik sulamalarda rç=0.40-0.60, rd=0.85 olmaktadır. Yüksek basınçlı sulamalarda suyun bitkiye ulaşımı arklar vasıtasıyla olmadığından ve kontrollü olduğundan dolayı drenaj sorunu olan arazilerde taban suyunun yükselmesi veya kumlu çakıllı topraklarda aşırı su kaybı önlenmektedir. Eğimi yüksek tarım alanlarında yüzey sulama yöntemleri ile yapılan sulama sonucunda oluşan yüzeysel akış, ciddi erozyon sorunları meydana getirmekte ve erozyon kontrolünde sayısız güçlükler ile karşılaşılmaktadır. Yüksek basınçlı sulamalar, bu nitelikteki alanlarda erozyon sorunu oluşmadan başarıyla uygulanabilmektedir. Yüksek basınçlı sulamalarda, parsel içi lateral sisteminin takılması, çalıştırılması ve sökülmesi konularında özel yetişmiş ve beceri sahibi kişilere gereksinim duyulmamaktadır. Ayrıca kurulum ve söküm işlemleri çok çabuk yapılabildiğinden, karık, tava, dip açma gibi işlemleri gerektirmediğinden işçilik ve zamandan tasarruf sağlamaktadır. Yüksek basınçlı sulamalarda, suni gübreler sulama suyu ile birlikte, uygun teknik ile ikinci bir işçilik masrafı olmadan bitkilere verilebilmektedir. 24 Yüksek basınçlı sulama sistemleri, mansap kontrollü olarak işletilmekte olup, su zayiatı olmamaktadır. 3.2.2 Yüksek basınçlı sistemlerin projelendirilmesi Yüksek basınçlı borulu sulama projelerinde; kaynaktan alınan su şebekeye genellikle beton kaplamalı açık kanal ile veya basınçlı boru hatlarıyla ulaştırılır. Yüksek basınçlı teşkil edilecek borulu kanalın açık kanallar gibi münhani eğrilerini takip etmesi gibi bir zaruret olmadığı için, hatların yamaçlarda teşkil edilmesine gerek yoktur. Yağmurlama sulamalarında, hidrantın işletme basıncı minimum 30-35 mss, damla sulamalarında ise minimum 18-20 mss alınabilmekte, bu değerlerden daha düşük basınçlarda ise orta basınçlı sulamalar teşkil edilmektedir. Pompajlı sulamalarda basma kotu, en elverişsiz noktadaki hidrantların işletme basınçları dikkate alınarak belirlenmelidir. Hatlarda maksimum statik basıncın 100 mss nu geçmemesi gerekmektedir. Daha yüksek basınçlarda boru maliyetleri aşırı miktarda artmakta, boru hatları üzerindeki armatürler aşırı basınçtan olumsuz etkilenmektedir. Bu tür şebekelerin emniyetli ve uygun işletilmesi, bir hava tankı veya sahanın üst kotlarına bir regülasyon havuzu inşa ederek sağlanabilir. Maksimum basıncın 100 mss’nu geçtiği kesimlerde maslaklarla sulama sistemi bölgelere ayrılır. Küçük yedek kanallar üzerine ise maslak yerine basınç düşürücü vanalar konulabilir. Suyun teorik parsellerdeki priz noktalarına (hidrantlara) ulaştırılmasını yüksek veya orta basınçlı olarak çalışan, yedek ve tersiyer kanal niteliğindeki borular sağlar. Kullanılan boru çapları genellikle Φ100-Φ2000 mm arasında değişmektedir. Ancak gerektiği hallerde daha büyük çaplı borular da kullanılabilmektedir. Yağmurlama sistemlerinde, sulama başlıkları ortalama olarak 20-25 mss basınçla çalışmaktadır. Başlıkların bulunduğu laterallerdeki ve çiftlik içi ana borusundaki sürtünme kayıpları ile hidrantın kendisinde oluşacak yük kayıpları dikkate alındığında, hidrant giriş basıncının 30-35 m alınması gerekmektedir. Hidrantın gövdesinde 0.95 m, nozulda 2.00 m, basınç sınırlayıcıda 2.20m, debi sınırlayıcıda 4.90 m, toplam 10.05 m yük kaybı oluşabilmektedir. Dolayısıyla 25 şebekedeki hidrant giriş basıncı 30-35 m kabul edilerek çıkışta 20-25 m işletme basıncı elde edilebilmektedir. Küçük çaplı borularda minimum hız (Vmin) 0.60m/s alınarak, boru hatlarına rusubatın1 çökelmesi önlenmelidir, büyük çaplı borularda ise minimum hız (Vmin) 1.20-1.50 m/s alınarak boru çapları gereksiz yere büyütülmemelidir. Tüm borularda maksimum hızın (Vmax) ise 2.50 m/s'yi geçmemesi uygun olmaktadır. Anaboru hatlarından ayrılan yedek ve tersiyerlerin2 başlangıcına ayrım vanası ve vantuz (hava kapakları), sonlarına ise tahliye vanaları yerleştirilmelidir. Ancak yedek veya tersiyer hat yokuş yukarı ise, başlangıca ayrım vanası, hat sonuna vantuz konulmalıdır. Hat sonlarına konulan tahliye vanasının çapı Φ100 mm olmalıdır. Anahat üzerine, yüksek debisi olan yedek hat ayrımından hemen sonra çift yönlü akış kontrolünü sağlamak amacıyla yönlendirme vanası konulmalıdır. Anahat üzerinde hiçbir yedek hat ayrım yok ise, akış kontrolünü sağlamak üzere 1000-1500 m ara ile yönlendirme vanaları yerleştirilmelidir. Boru hattı profilleri çizilirken boru eksen hattı esas alınmalı ve çok fazla eğim değişimi (kırıklık) yapılmamalıdır. Boy profillerinde yüksek noktalara vantuz yerleştirilerek sistemde biriken havanın dışarı atılması sağlanmalıdır, aksi takdirde biriken hava boru kesitinin daralmasına neden olacak ve istenen debi geçmeyecektir. Boy profillerinde düşük noktalara tahliye vanası konulmalıdır. Tahliye vanaları sulama mevsimi bitiminde sistemdeki suyu boşaltmak amacıyla kullanılan yapılardır. Tüm tahliye çapları Φ100 mm alınabilir. Hidrantlar, şebekeden gelen suyu, parsel içi elemanlarına iletirler. Hidrantlar, çıkış sayısına, debisine, çalışma basıncına vb. göre değişik özelliklerde imal edilirler. Hidrantların tarla sınırlarına yerleştirilmelerine özen gösterilmelidir. 1 Suyla gelen yabancı maddeler. 2 Üçüncü derece hatlar. 26 Birden fazla parsele hizmet eden çok çıkışlı hidrantların tesisi, su dağıtım ağında boru uzunluğunu, dolayısıyla maliyeti azaltır. Hidrant yerleri seçilirken her tarla için bir hidrant yerleştirmek işletme açısından en doğru yoldur. Ancak, hidrant maliyetlerinin yüksek oluşundan dolayı, hesap edilen teorik parsel (6-10 ha) için bir hidrant konulmaktadır. Parsel içi elemanları, hidrantlardan alınan suyu toprağa püskürtmek amacıyla yağmurlama başlıklarına ileten elemanlar veya bitki köküne suyu damlatan elemanlardır. Bu elemanlar; parsel içi ana borusu, bundan ayrılan lateraller, lateraller de belirli aralıklarla yerleştirilmiş ve yükselticiler üzerine monte edilmiş yağmurlama başlıkları veya damlama elemanlarından oluşur. Lateraller(yan hatlar), bazen çelik olmakla beraber, çoğunlukla PVC veya alimünyum gibi hafif, çabuk sökülüp takılabilen bağlayıcılarla donanmış, genellikle konum değiştirmek ve böylece parsel içinde değişik pozisyonlarda kullanılmak üzere taşınabilir elemanlardır. Parsel içi ana borusu, hakim meyil yönünde, toprak üzerinden veya hendeğe gömülerek yerleştirilebilir. Üzerinde yağmurlama başlığı bulunan lateraller ise olanaklar elverdiğince tesviye eğrilerine parelel yerleştirilmelidir. Lateral boru hatlarının, bayır yukarı eğimde döşenmesine ancak düşük eğimde ve boru hattının kısa olması koşulunda izin verilebilir. Lateral boru hatları zorunlu kalınmadıkça 250 m’yi geçmemelidir. Lateral boyunca basınç değişimi, işletme basıncının %20'sini geçmemelidir, aksi halde üniform bir su dağılımı yapılmamış olur. Lateral boylarının kısa tutulması, yer değişimi anında zamandan tasarruf edilmesi açısından önemlidir. Lateraller, hakim rüzgar yönüne dik bir düzen içerisinde yerleştirilmelidir. Basınç düzenlemelerinde kolaylık sağlaması amacıyla boru çaplarında değişim, parsel içi ana borusunda yapılmalıdır. 27 4. ÖNERİLEN KABLOSUZ SENSÖR AĞI SİSTEMİNİN ELEMANLARI VE ÇALIŞMA DETAYLARI 4.1 Kullanılan Donanımlar Projede TelosB düğümler kullanılarak KSA oluşturulmuştur. Basıncı ölçmek için Freescale firması tarafından üretilen Mp3v5050gp basınç sensörü kullanılmıştır. Bu bölümde kullandığımız donanımlar ile ilgili bilgi verilecektir. 4.1.1 TelosB Telos deneysel çalışmalar ve araştırmalar için geliştirilmiş, düşük güçlü bir KSA düğümüdür (Şekil 4.1). Telos 3 ana özelliğe sahiptir: Düşük enerji tüketimi, kolay kullanım ve artırılmış donanım ve yazılım dayanıklılığı. Güç tüketimi önceki düğümlerim nerdeyse onda biri kadardır ve evrensel seri veri yolu (Universal Serial Bus, USB) arayüzüne sahiptir. Telos’un tasarımı düşük çalışmalı döngüye dayanmaktadır (Polastre et al., 2004). Zamanın çoğunu uykuda geçir, hızlı bir şekilde uyan, işlemi yap ve tekrar uyu. Düşük güç tüketimi için uyku akımı ve uyanma zamanı düşürülmelidir. Telos’un bütünleşik tasarımı araştırmacılara daha fonksiyonel ve dayanıklı sistemler geliştirme fırsatı verir. Şekil 4.1 Telos düğüm. 28 Mevcut KSA platformları piyasada bulunan (Commercial Off-The-Shelf, COTS) elemanlardan inşa edilirler. Telos da donanım hızlandırıcılarına sahip COTS elemanlardan oluşur. Telos 1.8 V ile çalışan ve mevcut ürünler arasında en düşük uyku ve aktif durum enerji tüketimine sahip MSP430 mikro kontrolör kullanır. İki seri AA tip pillinde kesme gerilimi, çalışma gerilimi gibi 1.8 V’tur. MSP430, 6 µs’den fazla olmayan hızlı uyanma zamanına ve ana kontrol ünitesi (Main Control Unit, MCU) çekirdeğinin yükünü azaltan, dolayısıyla enerji tüketimini azaltıp performansı artıran doğrudan bellek erişim (Direct Memory Access, DMA) kontrolörüne sahiptir. Daha büyük flaş belleğe ve dahili rastgele erişimle hafızaya (Random Access Memory, RAM) sahiptir. IEEE 802.15.4 standardında, 2.4 GHz bandında çalışan, 250 kbps hızında düz sıralı dağınık spektrumlu (Direct Sequence Spread Spectrum, DSSS) ofset karesel faz kaydırma anahtarlamalı (Offset quadrature phase-shift keying, O-QPSK) modülasyona sahip Chipcon CC2420 radyo seçilmiştir. Başlama zamanını düşürmek için 16 MHz düşük eşdeğer dirençli (Equivalent Series Resistance, ESR) kristal kullanılmıştır. Donanım hızlandırıcılar MCU yerine radyoya eklenmiştir. Bu nedenle hızlandırıcılar genel amaçla kullanılamazlar. Bütünleşik tasarım, dayanıklılığı artırarak, kullanımı kolaylaştırmaktadır. Telos, baskı devreye monte edilmiş, 2.4 GHz düzlemsel ters F anten (Planar Inverted F-Antenna, PIFA) kullanmaktadır. Telos dahili USB portu üzerinden programlanır ve harici belleği için donanımsal yazma korumasına sahiptir. USB portuna takılınca yazma koruması kaldırılır. Pille çalışırken koruma aktif hale gelir. Bütün donanımlar izole edilmiştir. Devrelere giden güç bağımsız olarak açılıp kapatılabilir. Herhangi bir arıza durumunda hatalı ünite devre dışı bırakılabilir. IEEE 802.15.4 protokolü 64 bitlik adreslemeye sahiptir. Kullanılan 48 bitlik seri silikon kimlik yongası ile yazmaya karşı korumalı bellekte tutulan üreticinin IEEE organizasyon adresi (Organizationally Unique Identifier, OUI) birleştirilerek, kullanıcıya 64 bitlik tekil MAC adresi sağlanmış olur. MAC adresi sistem ve ağ kontrolü için kullanışlıdır. Ayrıca kesin düğüm tanımlamasını sağlar. Daha öncede belirttiğimiz gibi Telos düşük akım tüketimine, balama zamanına ve çalışma gerilimine sahiptir (Çizelge 4.1). Telos düşük güçlü flaş ve 29 mikro denetleyici kullanmaktadır. Bu nedenle mevcut düğümlerden daha uzun ömre sahip olabilir. %1’lik çalışma döngüsünde Telos 3 yıl çalışabilirken, Mica2 düğümü 1.5 yıl, MicaZ düğümü ise 1 yıl çalışabilmektedir (Polastre et al., 2004). Çizelge 4.1 Telos, Mica2, MicaZ akım tüketim miktarları. Telos düşük güç tüketimi yerine getirebileceği fonksiyonların azalmasına sebep olmaz. Günümüzde mikro denetleyiciler güçlü mikro işlemcilerle birlikte gelmektedir. Ayrıca DMA; MCU uyku durumundayken radyoya veri alıp verme, sayısaldan analoga çevirme, analogdan sayısala çevirme gibi görevleri yerine getirerek MCU’nun rahatsız edilmesini engeller. Böylece MCU daha fazla uykuda kalmış olur. Dahili anten çoğunlukla çok yönlü bir yayılıma sahiptir (Bkz. Ek 1). Deneysel çalışmalarda mesafenin LQI, alınan sinyal gücüne (Received Signal Strength, RSSI) ve paket başarı oranına etkileri test edilmiştir. Şekil 4.2 ortalama paket başarısını, LQI ve RSSI değerlerini göstermektedir. Paket başarı oranı ile LQI nerdeyse çakışmaktadır. RSSI değeri ise paket başarı oranı yüksekken üstel olarak, mesafe 19 m olduğunda ise sinyal gücü zayıfladığından hızlı bir şekilde azalmaktadır. TinyOS, kablosuz sistemler üzerine yapılan araştırmalara uygun elemanlara ayrılmış bir işletim sistemidir (Levis et al.,2005). Bu ayrışma araştırmacılar istenilen seviyede çalışma olanağı sağlamaktadır. MSP430, TinyOS ile kullanılan mikro denetleyicilerden farklı bir mimariye sahiptir. Bu nedenle TinyOS 2.0 versiyonu üç katmanlı olarak yeniden tasarlanmıştır. Bu tasarım donanımdan bağımsız çıkarım sağlamaktadır (Handziski et al.,2005). Donanım uygulama katmanı, donanım çıkarım katmanı ve donanım bağımsız katmanı TinyOS içine 30 eklenmiştir. Ayrıca CC2420 için platform bağımsız radyo yığını TinyOS içine gömülmüştür. a) Paket başarı oranı ve hat kalitesi b) Alınan sinyal gücü Şekil 4.2 Telos test ölçümleri (Polastre et al., 2005). Sonuç olarak Telos dayanıklı bir yapıya, düşük güç tüketimine ve mevcut sistemlerden daha yüksek performansa sahiptir. USB portu ile araştırma ve geliştirme çalışmalarını kolaylaştırmaktadır 31 4.1.2 Freescale Mp3v5050gp basınç sensörü Basınç algılayıcılar, her türlü kuvvet ve basınç değişimini algılayan ve bu değişimi elektriksel sinyale çeviren elemanlardır. Basınç sensörleri, çalışma prensibine göre dört grupta incelenebilir. Bunlar: - Kapasitif basınç ölçme sensörleri - Uzama ölçmeli basınç sensörleri - Yük hücresi basınç sensörleri - Piezoelektrik özellikli basınç ölçme sensörleri Bir proseste kullanılacak basınç algılayıcı seçimini yaparken aşağıdaki sorulara verilecek yanıt, kullanılacak ürünün tespit edilmesinde etken faktörlerdendir. - Sensör diyaframı ile temas eden akışkan nedir? - Bu akışkanlar hangi sıcaklıkta donar? - Çalışılmayan durumlarda bir asitli ortam söz konusu mudur? Bu tip problemlerden kurtulmak için ortam yalıtım diyaframlı basınç sensörleri özellikle gıda endüstrisinde ve sensörün yapısına zarar verebilecek sıvıların basıncının ölçümünde kullanılmaktadır. Algılayıcı membran dış ortamdan uzak, basıncı ölçülecek olan sıvı veya eriyik malzeme ile temas eden yüzey ise paslanmaz yapıda olmalıdır. Örneğin mazot, fuel oil veya su gibi içinde parçacık barındırabilecek ve hızlı donabilen maddelerin basıncının ölçümünde ortam yalıtım diyaframlı basınç sensörleri standart tiplerin yerine tercih edilmektedir. 32 Bu projede, yapmış olduğumuz tez düzeneğinde Freescale firmasının üretmiş olduğu silikon gerilme ölçer tipi MP3V5050GP basınç sensörünü kullandık. Test düzeneğimizi hava ile çalıştıracağımızdan dolayı suya dayanıklı bir basınç algılayıcı üzerinde durmadık. Suya dayanıklı sensörler maliyeti de artırdığı için havayla çalışan test düzeneği fikri cazip gelmiştir. Temel olarak gerilim ölçme sensörleri esneyebilen bir tabaka üzerine ince bir telin veya şeridin çok kuvvetli bir yapıştırıcı ile yapıştırılmasından oluşmuştur. Üzerindeki basıncın etkisinden dolayı tabakanın esnemesi ile birlikte iletken şeridin de gerilerek uzamasına sebep olacaktır. Bu uzama esnasında telin boyu uzayarak kesiti azalacaktır. Bilindiği gibi iletkenlerin kesiti azaldıkça dirençleri artacağından uygulanan kuvvete bağlı olarak iletkenin direncinde değişme olacaktır. Bu direnç değişimine bağlı olarak uygulanan kuvvetin miktarı tespit edilebilir. Mp3v5050 algılayıcılar, yüksek çıkış sinyali ve sıcaklık dengeleme sağlamak için iki kutuplu işlemsel kuvvetlendirici devreyi ve ince film direnç ağını tek yonga üzerinde birleştirmektedir (Şekil 4.4). Bu sensör, gelişmiş mikro makine tekniklerini, ince film metal kaplamayı ve çift kutuplu yarı iletken işlemeyi bir araya getirmektedir. (Şekil 4.3) Bu sayede uygulanan basınca bağlı olarak hassas ve yüksek seviyede çıkış sinyali sağlar (Bkz. Ek 2). Şekil 4.3 Algılayıcının tümleşik blok şeması. 33 Tipik çalışma gerilimi 3 V, besleme akımı 7 mA civarındadır. 0.12 V ile 2.8 V arasında 54 mV/kPa hassasiyette analog çıkış vermektedir. Bu çalışma aralığı Telos düğümü ile çalışmaya uygundur. Şekil 4.4 Mp3v5050 basınç sensörü. Basınç aralığı 0 ile 50 kPa arasındadır. Basınç transfer fonksiyonu aşağıda verilmiştir. Vout = Vs (P × 0.018 + 0.04) ± (PE × TF × 0.018 × Vs ) Eşitlik 4.1 4.2 Kullanılan Yazılımlar Düğümler TinyOS işletim sistemi ile programlanmıştır. TinyOs işletim sistemini seçme nedenimiz açık kaynak kodlu olması ve üzerinde yapılmış birçok uygulama olasıdır. İzleme için Moteiv firması tarafından sağlanan Trawler programından faydalanılmıştır. 4.2.1 TinyOS işletim sistemi Kablosuz sensör ağları için uygulama geliştirme, düğümlerin kaynak kısıtları nedeniyle geleneksel yöntemlerden farklı bir şekilde yapılmalıdır. TinyOS, algılayıcı düğümlerinin kaynak kısıtları gözetilerek verimli bir şekilde programlanmasını amaçlar. TinyOS C diline benzer bir dil olan nesC ile yazılmıştır ve uygulamaların da bu dille geliştirilmesine olanak kılar. Bir sensör 34 ağındaki düğümler ve merkezi düğüm, Şekil 4.5'da görüldüğü gibi TinyOS işletim sistemi ve nesC dili kullanılarak programlanırlar. Şekil 4.5 Kablosuz sensör ağının programlanması. TinyOS kablosuz iletişim yapan gömülü sistemler için düşük güç kullanarak dışsal olayları yöneten uygulamaları daha kolay geliştirmeyi amaçlayan bir işletim sistemidir. TinyOS birçok bileşen içermektedir ve bu bileşenler uygulamaların ihtiyacına göre eklenip çıkarılabilmektedirler. TinyOS bu özelliği sayesinde gömülü sistemler için geliştirilmiş diğer işletim sistemlerinden ayrılmaktadır. Uygulamalar işletim sisteminin sunduğu sabit servislere göre şekilleneceğine, işletim sistemi uygulamanın ihtiyaçlarına göre eklenen ya da çıkarılan bileşenler ile yapılandırılır. TinyOS işletim sistemi yeniden kullanılabilir birçok bileşen ve kablosuz sensör ağları uygulamaları için iyi tasarlanmış birçok programlama arayüzü içermektedir. Kablosuz sensör ağları düşük kaynaklara (örneğin sadece 4KB ana bellek) ve çok kısıtlı enerji bütçelerine sahip sistemler oldukları için, uygulama geliştiriciler uygulamanın ihtiyaçlarına göre aynı servisin birçok sürümünü yazmak zorundadırlar. Bu yöntem geliştirilen uygulamanın sistem kaynakları en verimli şekilde kullanması sonucunu doğururken uygulamanın ihtiyaçlarını karşılayan servislerin yeniden kullanılabilir olmasını engellemektedir. TinyOS'un bileşen tabanlı mimarisi kablosuz duyarga ağlarının kaynak kısıtları göz önüne alınarak geliştirilmiştir. TinyOS üzerinde uygulama geliştirirken kullanılan dil, TinyOS'un da geliştirildiği nesC dilidir. Bileşen tabanlı bir dil olan nesC olay tabanlı bir işletim mekanizmasına sahip olan kablosuz sensör ağları için uygun bir programlama dilidir. nesC dilindeki bileşenler nesneye dayalı programlama paradigmasındaki nesnelere benzemektedirler: Bileşenler bir durum bilgisi ve o 35 durum bilgisini işleyen işlevselliği barındırmaktadırlar. Bileşenler birbirleri ile arayüzler aracılığıyla etkileşim kurmaktadırlar. Kablosuz sensör ağlarının kısıtlı bellek kaynağına sahip olmalarından ötürü, nesneye yönelik programlama dillerinin sunduğu dinamikliğin aksine, bileşenlerin sayısı ve bileşenler arası etkileşim uygulamanın derleme anında belirlidir. TinyOS'un sunduğu özelliklerden belki de en önemlisi süreçler arası geçiş mekanizmasının bu işletim sisteminde ortadan kaldırılmış olmasıdır. Geleneksel işletim sistemlerinde süreçlerin her biri ayrı adres sahalarına ve ayrı bir çalışma içeriğine sahiptirler. İşletim sistemi, işlemci yönetimi kapsamında bir süreçten diğerine geçiş yaparak birçok sürecin aynı anda çalışmasını sağlamaktadır. Bu geçiş mekanizmasında işletim sistemi o an çalışmakta olan sürecin durumunu saklar. Ek olarak, hafif süreçler olarak nitelendirilebilen iş parçacıkları da aynı adres sahasında çalışmalarına rağmen kendi durumlarının işletim sistemi tarafından saklanabilmesi için ayrı yığıt çerçevelerine gereksinim duyarlar. Bir iş parçacığından diğerine geçiş, o an çalışmakta olan iş parçacığının durumunun kendi yığıt çerçevesinde saklanmasını gerektirir. İşletimi soyutlayan süreç ve iş parçacığı kavramları, işletim sistemine ek yük getirmekte ve geçiş mekanizması kısıtlı kaynaklara sahip kablosuz sensör düğümleri için uygun görünmemektedir. TinyOS, tek bir yığıt çerçevesi barındırmakta sistem içerisindeki tüm işletim bu yığıt çerçevesi üzerinden gerçekleştirilmektedir. Sistemdeki süreç kavramı aslında basit bir fonksiyon çağırımından farklı bir şey değildir. Fonksiyonlar sonlanıncaya kadar bölünmeden çalıştırılırlar. Bu işletim, süreçler arası geçiş mekanizmasını ortadan kaldırmıştır. TinyOS işletim sistemi, tasarım amaçları açısından geleneksel işletim sistemlerinden ayrılmaktadır. Kullandığı nesC dili, TinyOS ile uygulama geliştirmeyi nesneye yönelik ortamlara benzer bir rahatlıkta yapmayı olanaklı kılar. Ancak TinyOS gereksiz bellek kullanımından ve nesneye yönelik ortamların getirdiği ek katmanların yarattığı verimsizlikten uygulamaları kurtarmayı hedeflemektedir. Bu nedenle TinyOS durağan bir bellek tahsisi mekanizmasını kullanır. Bileşen tabanlı mimarisi sayesinde daha derleme anında uygulamanın bellek gereksinimi belirlidir ve çalışma zamanında dinamik olarak değişmez. Nesneye yönelik bir programlama dili olan C++'taki gibi sanal fonksiyonların getirdiği ek yükler de nesC sayesinde TinyOS'ta yer almaz. TinyOS'ta her şey derleme anında belirlenir ve çalışma süresince sabittir. 36 4.2.2 Moteiv Trawler izleme yazılımı Arayüz olarak moteiv firmasının Trawler yazılımı kullanılmıştır. Şekil 4.6’de düğümler tarafından okunan değerler, Şekil 4.7’de ise ağ yapısı görülmektedir. Şekil 4.6 Trawler algılanan değer grafik ekranı Şekil 4.7 Trawler ağ mimarisi ekranı 37 4.3 Sistemin Çalışma Prensibi DSİ tarafından uygulanmakta olan Uşak ili Sivaslı ilçesi Eldeniz köyü sulama projesi temel alınarak sistem gereksinimleri tanımlanmıştır. Sistemin doğru ve düzgün çalışabilmesi için gerekli donanım, şartlar ve ağ mimarisi ortaya konmuştur. Eldeki donanım imkanları doğrultusunda gerçek sisteme en yakın fiziksel koşulları sağlayan test düzeneği kurulmuştur. Aynı şekilde sistemin ihtiyacını karşılayacak bir ağ protokolü oluşturulmuştur. Ağ protokolu tasarlanırken hem iletim hemde kontrol performansının en iyi seviyede olması düşünülmüştür. Bu nedenle statik ağaç yapısına su hattı kontrol protokolü yazılmıştır. Şekil 4.8 Gerçek bir sulama sistemi projesi 4.3.1 Sistemin tanımı Şekil 4.8’de DSİ tarafından uygulanmakta olan bir sulama sistemi projesi görülmektedir. Örnek olarak bu proje ele alınmıştır. Sistemde 14 adet su alma yapısı ve 3 adet dallanma bulunmaktadır. Hattın basıncının ölçülebilmesi için bütün su alma yapılarına ve dallanma noktalarına algılayıcı düğümler yerleştirilmesi düşünülmüştür. Basınç ölçülmek istenilen nokta 17 adettir. 38 Noktalar arası mesafe 303 m ile 95 m arasında değişmektedir. Fakat TelosB düğümlerin açık alanda 100 m menzile sahip olduğunu düşünürsek yaklaşık 33 adet düğüme ihtiyaç vardır. Bir düğümde kontrol merkezinde toplayıcı düğüm olarak kullanılacaktır. Elimizde bulunan 20 adet basınç sensörü ile sulama sisteminin gerçekci bir şekilde benzetimini yapabileceğiz. 4.3.2 Su hattı kontrol protokolü Ağ yapısı olarak boru sistemin sabit bir yapıya sahip olması nedeniyle statik ağaç yapısı kullanılması öngörülmüştür. Düğümleri boru sisteminde daha önceden belirleyeceğimiz yerlere yerleştireceğimizden tamamen boru sisteminin aynısı bir ağ yapısı oluşturacağız. Su sistemde toplayıcı düğümden, yani hattın başlangıcından sonuna doğru akarken, basınç bilgisi de ters yönde hattın sonundan toplayıcı düğüme doğru akacaktır. Şekil 4.9’da veri akış algotirması görülmektedir. Şekil 4.9 Veri akış diyagramı. 39 Elde edilen basınç bilgisi hem sistemin gözlemlenmesinde hem de pompaların kontrol edilmesinde kullanılacaktır. Statik ağaç topolojisi sulama hatlarının kontrolü için uygundur. Hangi düğümü nereye koyduğumuzu bildiğimiz için hiyerarşik bir yapı, kontrolü daha iyi yapmamızı sağlayacaktır. Şekil 4.10’da görüldüğü gibi bir düğüm içi veri kontrolü yapılarak enerji tasarrufu sağlanacaktır. Düğümler okunan her basınç değerini göndermeyecektir. 10 okuma yapıldıktan sonra son okunan basınç değerinin gönderilmesi enerji tüketimi ve ağ yükü açısından bir avantaj sağlayacaktır. Okunan değer 18 kPa ile 22 kPa arasında kaldığı sürece 10 okuma zamanı sonunda alınan son veri gönderilecektir. Okuma sayısı bir sayaç yardımıyla kontrol edilecektir. Basınç değeri sınır değerlerin dışına çıktığında düğüm veriyi hemen gönderecektir. Şekil 4.10 Düğüm veri kontrolü çalışma diyagramı. Basınç bilgisi kuyruğa yazıldıktan sonra sayaç sıfırlanacaktır. Bu algoritma bütün düğümler için aynı şekilde çalışacaktır. Kuyruk büyüklüğü 2 paket olarak ayarlanmıştır. Son noktadaki düğümler (End Motes) ile üst düğümler (Parent Motes) ve toplatıcı düğüm rolündeki düğüm arasındaki fark veri gönderme algoritmasında ortaya çıkmaktadır. Hattın son noktasındaki düğümler basınç bilgisini okuyup bir üst düğüme (Parent Mote) göndermekle sorumludurlar. Gerekli iletim şartları 40 sağlandığında algılayıcıdan aldıkları basınç bilgisini kuyruğun sonuna yazarak, veri paketinin radyo aracılığı ile bir üst düğüme geçişini sağlarlar (Şekil 4.11). Şekil 4.11 Son düğümler için veri gönderme diyagramı. Son düğümler ile toplayıcı düğüm arasında bulunan üst düğümler ise çocuklarından aldıkları bilgiyi hemen kuyruklarına ekleyip, kendilerinin bir üstündeki noktaya iletimini sağlayacaklardır(Şekil 4.13). Şekil 4.12 Ara düğümler için veri gönderme diyagramı. 41 Şekil 4.13 Ara düğümler için veri gönderme diyagramı. Şekil 4.14 Toplayıcı düğüm için veri gönderme diyagramı. Aynı kuyruğu hem kendi verileri, hem de çocuklarından gelen veriler için kullanacaklardır. Veri kontrol algoritması hem çocuk hem de üst düğümlerde (Parent Motes) için geçerli olduğundan üst düğümler tarafından verinin niceliğinin denetlenmesi yapılmayacaktır. Çünkü eğer veri alt düğümden (Child Motes) 42 geldiyse zaten bir üst düğüme (Parent Motes) gönderilmesi gerekmektedir. Bu da ağın hızını artırarak gecikmeleri engelleyecektir. Toplayıcı düğüm ise doğrudan bilgisayara bağlı olduğu için bütün çocuklarından topladığı veriyi USB arayüz üzerinden bilgisayara aktaracaktır (Şekil 4.14). 4.4 Test Düzeneği TelosB düğümler pille çalıştırılacak, herhangi ekstra güç kaynağı kullanılmayacaktır. Çok sayıda sayısal ve analog çıkışa sahip algılayıcı incelenmiştir. Sayısal algılayıcıların daha çok barometrik ölçüm yapması sebebiyle ve boru hatlarına bağlamaya uygun portları olmadığından kullanılamamıştır. Yine düşük çalışma gerilimine sahip, basınç aralığı 0-2 bar olan ve suya dayanıklı algılayıcı temin edilememiştir. Sensörlerin maliyeti yüksek olduğundan, besleme gerilimi 3 V olan Freescale mp3v5050gp basınç sensörleriyle çalışılmıştır. Algılayıcılar yurtdışından 20 adet örnek olarak temin edilmiştir. Şekil 4.15 Test düzeneği şematik gösterimi. 43 Freescale mp3v5050gp basınç sensörlerinin suya dayanıklı olmaması nedeniyle test düzeneğinde hava ile çalışılmıştır. Hava kaynağı olarak düşük çıkış basıncına sahip bir hava motoru kullanılacaktır. Düşük çıkış basıncı seçilmesinin nedeni sensörün 0-50 kPa (0-0.5 Bar) ölçüm aralığına sahip olmasıdır. Elimizde 20 adet sensör bulunduğu için 20 adet ölçüm düğümü,1 adet toplayıcı düğüm, 1 adet hava motoru ve poliüretan borulardan oluşan küçük bir test düzeneği kurulacaktır. Borular birbirlerine t bağlantı elemanları ve vanalar yardımıyla bağlanacaktır. Şekil 4.15’te kurulan test düzeneğinin şeması görülmektedir. Şekil 4.15’te de görüldüğü gibi 16 adet vana, 34 adet t bağlantı elamanı kullanılmıştır. Mavi renk ile gösterilen a ve b vanaları ana hat üzerine kaçak benzetimi yapmak amacıyla konulmuştur. Diğer vanalar normal kullanıcı su alma noktalarını göstermektedir. Basınç sensörlerinin düğümlere bağlantısının yapılabilmesi için baskı devre kart tasarlanmıştır. Baskı devre kartın üzerinde alçak geçiren filtre bulunmaktadır. Filtrenin amacı ek noktalarındaki taşıyıcıların düzensiz akışından meydana gelen gürültü sinyalinin etkisini azaltmaktır. TelosB bağlantısı 10 bacaklı genişleme yuvası kullanılarak yapılmıştır. Basınç sensörünün üzerinde bulunduğu baskı devre uygun konnektör ve kablo ile TelosB düğümüne bağlanmıştır. Şekil 4.16’de test düzeneğinin bağlantı diyagramı gözükmektedir. Basınç Sensörü Basınç Sensörü Basınç Sensörü Telosb –Toplayıcı Düğüm TelosB Basınç Basınç Sensörü TelosB Basınç Basınç Sensörü TelosB Basınç Sensörü TelosB Basınç TelosB Alıcı Basınç USB Basınç SerialForwarder PC Trawler Uygulaması TelosB Basınç Şekil 4.16 Test düzeneği bağlantı diyagramı. 44 Gerçek sistemlerde ara mesafeler 100 m’ye kadar çıkmaktadır. Test düzeneğinde düğümler arasında mesafe 1.5 m olarak ayarlanmıştır. Test düzeneğimiz 15 m x 10 m genişliğinde bir alanı kaplamaktadır. Gerçek bir sulama sisteminde bu ölçü 1000 m x 700 m genişliğinde bir alana denk gelmektedir. Bu ölçülere sahip bir sistemle yaklaşık 70 hektarlık bir arazi sulanabilir. Şekil 4.17 Test düzeneğine bağlanmış bir düğüm. Şekil 4.18 Test düzeneğinin görünüşü. 45 Şekil 4.17’da düzeneğe bağlanmış 9 numaralı düğüm ve vana gözükmektedir. Şekil 4.18’de sistemin iki değişik dalı fotoğraflanmıştır. Şekil 4.19’de Seiko firması tarafından üretilmiş hava pompası ve ona en yakın düğüm olan 1 numaralı düğüm görülmektedir. Şekil 4.19 Hava pompası ve 1 numaralı düğüm. 46 5. TESTLER VE ÖLÇÜMLER Test düzeneği üzerinde yaptığımız ölçümleri 3 grupta inceleyebiliriz. İlk olarak kalibrasyon ölçümleri yapılmıştır. Bu ölçümün amacı sistem tarafından okunan değerlerin doğruluğunu kontrol etmektir. Onun hemen ardından son kullanıcıya yönelik ölçümler gerçekleştirilmiştir. En son olarak da ağın performansını izlemeye yönelik ölçümler yapılmıştır. Kurulan ağın yönlendirme yapısı Şekil 5.1’de verilmiştir. Kırmızı daireler düğümleri, bilgisayar resmi toplayıcı düğümü, düğümler arasındaki oklar ise veri akış yollarını temsil etmektedir. Statik, hiyerarşik ağaç yapısında bir yönlendirme sağlanmıştır. Şekil 5.1 Trawler izleme yazılımının ağ mimarisi ekranından alınmıştır. Şekil 5.1’in geniş hali Ek 4’de verilmiştir. İstenildiği gibi düğümler verilerini kendilerinin bir üst düğümüne iletmektedirler. Dallardan gelen bilgi ana ebeveyn düğüm (Main Parent) tarafından toplayıcı düğüm görevindeki bilgisayara bağlı düğüme iletilmektedir. Toplayıcı düğümün adresi “0” olarak, ana ebeveyn düğümün adresi ”1” olarak tanımlanmıştır. Diğer düğümlerin adresleri ise bunlara bağlı olarak verilmiştir. Şekil 5.1 Test düzeneği ağ yapısı. 5.1 Kalibrasyon Ölçümleri Deneye başlamadan önce basınç sensörünü ve ölçümleme doğruluğunu test etmek amacıyla analog manometre ile karşılaştırmalı ölçüm yapılmıştır. Şekil 47 5.2’de görülen değerler elde edilmiştir. Basınç sensörünün ölçüm grafiği ile manometrenin ölçüm grafiği çakışmaktadır. Bütün eğri boyunca ortalama 3 kPa’lık sapma meydana gelmektedir. Bu değişim manometrenin kalibrasyonundan veya analog oluşundan kaynaklanabilir. Meydana gelen sapma, doğrusal olduğu ve küçük olduğu için göz ardı edilebilir. Kalibrasyon Ölçümleri 50 45 40 Basınç(kPa) 35 30 25 20 15 10 5 0 1 2 3 4 5 Manometre 50 41 29 20 10 Freescale mp3v5050 47 39 25 17 7 Ölçüm no Şekil 5.2 Kalibrasyon ölçüm değerleri. 5.2 Basınç Bilgisinin Okunmasına Yönelik Ölçümler Bu ölçümler dizisi ile sistemin genel performansının gözlemlenmesi amaçlanmıştır. Sistemdeki basınç vanalar yardımıyla değiştirilerek sensörlerin bu değişime verdikleri tepki kullanıcı ara yüzünden izlenmiştir. Sistemin belirlenen eşik değer içinde ve dışında çalışması sağlanmıştır. Sistemde bir kaçak etkisi yaratılarak kaçağın yerinin tespit edilip edilemeyeceğine yönelik testler yapılmıştır. Bu bölümdeki ölçümler daha çok son kullanıcıya ve sistemin kontrol edilmesine yöneliktir. 5.3 Ağ Performansını İzlemeye Yönelik Ölçümler Kablosuz sensör ağının performansını izlemeye yönelik testler yapılmıştır. Ağın paket kayıp oranları çalışma döngüsü, kuyruk uzunluğu, mesafe ve yük yoğunluğu değiştirilerek ölçülmüştür. Böylece ağın performansı hakkında bilgi elde edilmiştir. 48 Ayrıca ağ ömrünü tespit etmek amacıyla güç tüketiminin çalışma döngüsü, mesafe ve yük yoğunluğuna bağlı değişimi izlenmiştir. Düğümlerin pil tüketimleri değişen koşullarda ölçülerek ağ ömrü hesaplanmış ve enerji kritik düğümler belirlenmiştir. Paket başına düşen güç tüketimi ölçülmüştür. Yukarıda yapılan testler sayesinde yönlendirme protokolünün performansı hakkında gerekli bilgilere ulaşılmıştır. 49 6. SONUÇ VE DEĞERLENDİRME Yapılan testlerin sonuçları da iki kısımda incelenmiştir. Bunlar basınç ölçümleri ve ağ performans ölçümleridir. Sistem basıncının ölçülmesine, basınç değişimlerinin fark edilmesine yönelik testler bunlardan ilkidir. Basınç değişim ölçümleri hem eşik değer aralığında hem de eşik değer dışında yapılarak düğüm içi veri kontrol algoritması test edilmiştir. Yine kaçak benzetimi yapılarak sistemin verdiği tepki izlenmiştir. Diğer grup testler ise ağ iletim performansının ölçülmesine ilişkin sonuçlardır. Sırasıyla paket kayıp oranının ve pilerin gerilim azalma miktarlarının çalışma döngüsüne bağlı değişimleri incelenmiştir. Daha sonra paket kayıp oranının ve pil gerilim azalma miktarının örnekleme periyoduna göre değişimi gözlemlenmiştir. Yapılan diğer bir ölçüm %100’lük çalışma döngüsünde, 5 sn’lik örnekleme periyodunda yapılan paket kayıp oranın kuyruk büyüklüğüne göre değişimidir. Son olarak düğümler arası mesafenin paket kaybına etkisi izlenmiştir. 6.1 Basınç Bilgisinin Okunması Test düzeneğinin çalıştırılmasıyla sistemin basınç değeri bilgisayar üzerinden okunmuştur. Şekil 6.1’de Trawler yazılımından alınan basınç değişim grafiği görülmektedir. Sistem üzerindeki vanalar açılıp kapatılarak basınç değiştirilmiş ve bu değişim aynen izlenmiştir. Şekil 6.1 Basınç değişim grafiği. 50 Her bir ayrı renk farklı bir düğüm verisini temsil etmektedir. Basınç hava ile sağlandığından basınç değişimleri ani olmakta ve bütün sistemi kısa bir sürede etkilemektedir. Okunan değerler birleştirilmeden de noktasal olarak izlenmiştir. Bu sayede eşik değer içindeki veri okuma sıklığı ile dışındaki veri okuma sıklığı karşılaştırılmıştır. Şekil 6.2’de eşik değer içi ve dışı noktasal okumalar görülmektedir. Basınç değeri eşik aralığında ise okumalar seyrekleşmekte, değilse sıklaşmaktadır. Eşik değer içinde veri gönderme aralığı 50 sn iken, dışında 5 saniyedir. Bu da istenilen bir sonuçtur. Çünkü düğüm içi veri kontrolüne göre eşik değer içinde her 10 okuma sonucundaki son değer gönderilecektir. Eşik değer dışında gönderilen veri Eşik değer içinde gönderilen veri Şekil 6.2 Noktasal basınç değişim grafiği. Kaçak benzetimi için sitemin birbirine en uzak iki düğümü olan 10 ve 20 numaralı düğümler seçilmiştir. Bunun nedeni hava basıncındaki değişimin bütün sistemi çok kısa bir sürede etkilemesidir. 10 numaralı düğüm yakınındaki vana açılarak bir kaçak benzetimi yapılmıştır. Şekil 6.3’de görüldüğü gibi basınç değişimine, mavi renkli eğriye sahip 10 numaralı düğüm sarı renkli grafiğe sahip 20 numaralı düğümden Δt zamanı kadar daha erken tepki vermiştir. İki düğüm verisi arasında Δp kadar basınç farkı oluşmuştur. Bu sonuç kaçağın yani açık vananın 10. düğüme daha yakın olduğu bilgisini vermektedir. Büyük ölçekli ve su gibi basınç değişimi daha durağan olan bir materyal ile çalışan gerçek sulama şebekelerinde daha net bir sonuca ulaşılacağı kesindir. Yine küçük boyutlardaki test düzeneği için yeterli bir sonuca ulaşılmış, kaçağın yeri tespit edilmiştir. 51 Δt Δp Şekil 6.3 Kaçak benzetim grafiği. Yukarıda yapılan deneylerden sistemin sulama şebekesinin kontrolü için başarıyla kullanılabileceği sonucuna ulaşılmıştır. Şebekenin basınç bilgisi anlık olarak gözlemlenebileceği gibi veriler kayıt altına da alına bilmektedir. Bu veriler şebekenin genel durumu hakkında zamana bağlı bilgi vermektedir. Aynı zamanda otomasyon sistemine aktarılan basınç bilgisi sayesinde pompaların devri değiştirilerek şebekenin istenilen basınca ulaşması sağlanabilir veya sisteme bağlanacak bir modem vasıtasıyla sorumlular kontrol merkezinde olmasa bile uyarılabilir. 6.2 Ağ Performansının Değerlendirilmesi İlk olarak paket kayıp oranlarının çalışma döngüsüne (Duty Cycle) göre değişimi ölçülmüştür. Paket kaybı iletim sırasında hedefe ulaşamayan veya yanlış ulaşan paket sayısının toplam gönderilen paket sayısına oranı olarak hesaplanmıştır. Çalışma döngü oranı ise belirlenen bir zaman aralığı içersinde düğümün aktif olduğu zaman aralığının belirlenen zamana oranı olarak verilmiştir. Kuyruk büyüklüğü 7, örnekleme periyodu 90 sn’dir. Kuyruk büyüklüğü, düğümün aynı anda tutabileceği paket sayısı olarak verilmektedir. Kuyrukta depolanan veriler iletim için sıra beklemektedir. Örnekleme periyodu ise düğümün okuduğu iki basınç verisi arasında geçen zamandır. Deney sırasında 20 adet düğüm aynı anda çalıştırılmıştır. Düğümler %100 çalışma döngüsü ile çalıştırılarak paket kayıpları ölçülmüştür. Daha sonra %20 Çalışma döngüsü ile çalıştırılarak paket kayıpları ölçülmüştür. Şekil 6.4’te görüldüğü gibi paket kayıp oranı %100’lük döngüde %0,013 gibi küçük bir oran çıkmıştır. Fakat çalışma döngüsü %20’ye düşürüldüğünde oran %6’lara kadar çıkmıştır. Düğümlerimiz tam anlamıyla senkron çalışmadığı için çalışma aralıkları ebeveyn düğümler(parent motes) ile çakışmayan alt 52 düğümlerin(child motes) verileri kaybolmuş ve paket kayıp oranının artmasına neden olmuştur. İkinci olarak pillerin gerilim düşümlerinin çalışma döngüsüne bağlı değişimleri ölçülmüştür. Test 5 sn örnekleme periyodu ile yapılmıştır ve eşik değer kontrolü yapılmadan alınan her veri gönderilmiştir. Pil gerilimleri testten önce ve sonra ölçülerek, harcanan enerji hakkında bilgi sahibi olunmaya çalışılmıştır. Test süresi 3 gündür. Şekil 6.5’de düğüm bazında çalışma döngüsüne göre gerilim düşümü sonuçları görülmektedir. En kritik düğüm olan 1 numaralı düğümde en fazla gerilim düşümü meydana gelirken son düğümlerde (leaf motes) daha küçük gerilim düşümü meydana gelmiştir. Bu fark %100’lük döngüde bazı düğümlerde 0,05 V olarak ölçülmüştür. Şekil 6.5’te görüldüğü gibi %100’lük çalışma ile %20’lik çalışma arasında yaklaşık 5 kat fark vardır. %20’lik döngüde düğümler ömürlerinin çoğunu uykuda geçirdiklerinden gerilim azalması da 5 kat daha az olmuştur. İleride yapılacak çalışmalarda deney sayısının artırılması istatiksel açıdan uygun olacaktır. 6% 5,698% 5% Paket kayıp Oranı (%) 4% 3% 2% 1% 0,013% 0% 100% 20% Çalışma Döngü Oranı (Duty Cycle) Şekil 6.4 Paket kayıp oranının çalışma döngüsüne göre değişim grafiği. 53 0,12 Gerilim Azalma Miktarı (V) 0,1 0,08 0,06 0,04 0,02 0 1 2 3 4 5 6 8000 3200 2800 2400 1200 800 7 8 9 400 1200 800 10 11 12 13 14 15 400 4000 1200 2400 2000 800 19 20 400 1600 1200 800 16 17 18 400 Düğüm Numaraları ve İletilen Paket Sayısı %100 Çalışma Döngüsü(Duty Cycle) %20 Çalışma Döngüsü(Duty Cycle) Şekil 6.5 Pillerdeki gerilim kaybının düğümlere ve çalışma döngüsüne göre değişimi. Üçüncü olarak paket kayıp oranının ve pil gerilim düşümünün örnekleme periyoduna göre değişimi gözlemlenmiştir. Örnekleme periyodu değişimi aynı zamanda ağ yükü değişimini ifade etmektedir. Periyot artıkça ağ yükü azalmaktadır. Bir paket büyüklüğünün 28 byte olduğunu ve sistemde 20 adet düğüm olduğunu ele alırsak bütün sistemin yükü 28*20=560 byte olmaktadır. Bunu örnekleme periyoduna bölerek saniyedeki yük yoğunluğu bulabiliriz. 1 sn’lik örnekleme için ağın toplam yük yoğunluğu 560 byte/sn olurken, 60 sn’lik örnekleme periyodu için ağın yükü 560/60= 9,3 byte/sn olmaktadır. 0,40% 0,38% 0,35% Paket Kayıp Oranı (%) 0,30% 0,25% 0,20% 0,15% 0,15% 0,10% 0,08% 0,05% 0,05% 0,03% 0,00% 0 10 20 30 40 50 Örnekleme Periyodu (sn) Şekil 6.6 Paket kayıp oranının örnekleme periyoduna göre değişimi. 60 54 Şekil 6.6’da paket kayıp oranının örnekleme periyoduna göre değişimi görülmektedir. Çalışma döngüsü %100, kuyruk büyüklüğü 2’dir. Beklenildiği gibi örnekleme periyodu artıkça ağın yükü azalmakta ve paket kayıp oranı azalmaktadır. Şekil 6.7’de sistemin toplam pil gerilimindeki düşüşün örnekleme periyoduna göre değişimi görülmektedir. Örnekleme periyodu artıkça radyo ve MCU daha az çalıştığından tüketilen enerji ters orantılı olarak azalmaktadır. 0,4 0,36 Toplam Gerilim Azalma Miktarı (V) 0,35 0,3 0,25 0,2 0,157 0,136 0,15 0,1 0,05 0,0445 0,0182 0,00073 0 0 5 10 15 20 25 30 35 40 45 50 55 60 Örnekleme Periyodu (sn) Şekil 6.7 Toplam pil geriliminin örnekleme periyoduna göre değişimi. 0,00010 0,00009 Gerilim Azalma Miktarı (V) 0,00008 0,00007 0,00006 0,00005 0,00004 0,00003 0,00002 0,00001 0,00000 1 2 3 4 5 3000 1350 1200 1050 450 6 7 8 9 300 150 450 300 10 11 12 150 1500 450 13 14 15 16 17 18 19 20 900 850 300 150 600 450 300 150 Düğümler Numaraları ve İletilen Paket Sayısı Şekil 6.8 Pil gerilim düşümünün 60 sn’lik örnekleme periyodunda düğümlere göre dağılımı. 55 Şekil 6.8’de pil gerilim düşümünün 60 sn’lik örnekleme periyodunda düğümlere değişimi görülmektedir. 30 dakikalık ölçüm süresinde en kritik düğüm olan 1 numaralı düğümde meydana gelen gerilim düşümü 0,0001 V olarak ölçülmüştür. TelosB’nin en düşük çalışma gerilimi 2,1 V’tur. Pilin ilk gücünün 3 V olduğunu düşünürsek 3-2,1=0,9 V’luk gerilim düşümü olabilir. 0,9/0,0001=9000/ 48=187,5 gün etmektedir. Yani TelosB dakikada bir örnek alarak 190 gün çalışabilecektir. Yapılan diğer bir ölçüm %100’lük çalışma döngüsünde, 5 sn’lik örnekleme periyodunda yapılan paket kayıp oranın kuyruk büyüklüğüne göre değişimidir. Şekil 6.9’da testin sonuçları görülmektedir. Kuyruk büyüklüğü 1’den 9’a artırılarak ağın toplam kayıp oranı ölçülmüştür. Kuyruk sayısı artıkça kayıp oranı azalmaktadır. Fakat kuyruk sayısı 7’yi geçince paket kayıp oranının tekrar artığı görülmüştür. 7 büyüklüğündeki kuyrukta kayıp oranı % 0,017 iken, 8 kuyruk büyüklüğünde bu oran 0,029’a, 9 kuyruk büyüklüğünde ise 0,043’e çıkmıştır. 0,250% 0,217% 0,195% Paket Kayıp Oranı 0,200% 0,150% 0,100% 0,100% 0,083% 0,040% 0,050% 0,043% 0,033% 0,029% 0,017% 0,000% 1 2 3 4 5 6 7 8 9 Kuyruk Büyüklüğü Şekil 6.9 Paket kayıp oranının kuyruk büyüklüğüne göre değişimi. Son olarak düğümler arası mesafenin paket kaybına etkisi izlenmiştir. TelosB’nin dış ortamda 125 m iletim menzilene sahip olduğu bilinmektedir. Testler açık alanda yapılmıştır. Paket kayıp oranının mesafeye göre değişimi Şekil 6.10’da verilmiştir. Ön görüldüğü gibi paket kayıp oranı mesafe artıkça artmaktadır. Düğümler arası mesafe 126 metreye açıldığında paket kayıp oranı %60’ı bulmaktadır. Mesafe daha da artırıldığında düğümler arası iletişim 56 kopmuştur. Yine bu teste düğümlerin yerindeki ufak bir oynamanın bile veri iletişimini etkilediği görülmüştür. Bu da çevresel faktörlerden kaynaklanan bir etkidir. Aynı zaman da yayılım deseni de böyle bir etkiye neden olmuş olabilir. Yukarıda yapılan bütün testler sırasında düğüm içi veri kontrolü iptal edilmiştir. Düğümler basınç sensöründen okudukları veriyi kontrol etmeden doğrudan kuyruklarına yazıp, bir üst düğüme iletmektedirler. 58,25 60 49,35 Paket Kayıp Oranı (%) 50 40 30 22,66 20 11,32 10 0,25 0,33 0,45 0,52 0,76 0,97 20 30 40 1,23 1,75 2,45 50 60 70 3,67 5,81 7,78 0 0 10 80 90 100 110 120 130 Düğümler Arası Mesafe (m) Şekil 6.10 Paket kayıp oranının düğümler arası mesafeye göre değişimi. 6.3 Sonuçlar Bu çalışmayla su iletim hatlarının basınç bilgisi yapılan benzetim ile gerçek sistemlere uygun olarak ölçülmüştür. Hem teorik hem de deneysel katkılar sağlanmıştır. Teorik olarak yapılan çalışmada, su iletim hatların calisma prensibi uygun olarak ve efektif calisabilecek bir KSA yönlendirme protokolü oluşturulmuştur. Ayrıca veri kontrolü yapılarak ağ yükü azaltılmıştır. Oluşturulan yönlendirme protokolünün ve kontrol mekanizmasının denenebilmesi için gerçeğe yakın bir test düzeneği kurulmuştur. Bu test düzeneği üzerinde yapılan testler ile de protokolün ve sistemin performansı gözlemlenmiştir. Yapılan katkılar su hattı kontrol protokolü yazılması, test düzeneği kurulması ve performans deneyleri olarak üç ana başlıkta sıralanabilir. Mevcut sistemler incelenerek, gerçek çalışma şartlarını sağlayan bir test düzeneği kurulmuştur. Devlet Su İşleri tarafından yapımı gerçekleştirilen Uşak ili Sivaslı ilçesi Eldeniz köyü sulama şebekesinin küçük boyutlarda bir örneği 57 hazırlanmıştır. Hava pompası ile sisteme basınç uygulanmış ve gerekli ölçümler yapılmıştır. Yine sistemin kontrolünü kolaylaştıracak ve iyi bir iletişim performansı sağlayacak statik ağaç yapısında su hattı kontrol protokölü tasarlanmıştır. Genellikle kablosuz sensör ağlarında düğümler rasgele olarak dağıtılır ve yıldız ağ mimarisi kullanılır. Ağın kurulması için belirli bir zamana ihtiyaç vardır. Kurulan statik ağaç yapısında ise böyle bir süreye ihtiyaç duyulmamaktadır. Ayrıca dinamik adreslemenin ağa getirdiği ek yükler de devre dışı bırakılmıştır. Sulama sistemi değişmeyen bir yapıya sahip olduğu için düğümlerin sabit yönlendirme protokolü ile belirli yerlere konumlandırılması iletim hattının kontrolünü daha kolay hale getirmiştir. Ayrıca düğüm içi veri kontrolü yapılması sağlanmıştır. Böylece ağdaki trafik yükü azaltılmıştır. Kurulan düzenek üzerinde basınç kontrol ve haberleşme testleri yapılmıştır. NesC ile TinyOS ortamında hazırlanan işletim sistemi düğümlere yüklenerek kablosuz sensör ağı oluşturulmuştur. Oluşturulan ağın performansı hem kontrol yönünden hem de haberleşme yönünden incelenmiştir. Gerek kontrol gerekse ağ performansı üzerine yapılan testler olumlu sonuçlar vermiştir. Kablosuz sensör ağının basınç değişimlerine verdiği hızlı tepki böyle bir sistemin su iletim hatlarının kontrolünde kullanılabileceğini göstermiştir. Ayrıca paket kayıp oranları, güç tüketim miktarı ve düğümler arası haberleşme mesafesi üzerine yapılan ölçümler ağın gerekli parametreleri sağladığını göstermektedir. GPS cihazına ihtiyaç duyulmadan kontrol noktaları mevcut sulama projesi üzerine işlenebilir. Sisteme bağlanacak bir modem vasıtası ile kullanıcılar kontrol merkezinde olmasa bile uyarılabilir. İleri çalışma olarak su ve düğümler ile çalışmaya uygun bir basınç algılayıcı ile gerçek bir sistem üzerinde testler yapılabilir. Ayrıca çalışma döngüsü düşürüldüğünde meydana gelen yüksek kayıp oranı düğümler tam olarak senkronize edilerek azaltılabilir. Deney sayısını artırılması ve istatistiksel değerlendirmelere yer verilmesi ilerde yapılacak çalışmalar için gereklidir. 58 Sonuç olarak bu çalışma, su iletim hatlarında kablosuz sensör ağlarının rahatlıkla ve güvenle kullanılabileceğini göstermiş ve ileride yapılacak çalışmalara zemin hazırlamıştır. 59 KAYNAKLAR DİZİNİ Al-Karaki, J.N. Ul-Mustafa, R. and Kamal, A.E., 2004, Data Aggregation in Wireless Sensor Networks - Exact and Approximate Algorithms, Proceedings of IEEE Workshop on High Performance Switching and Routing (HPSR), Phoenix. Akyıldız, I.F. and Wang, X., 2005, A survey on wireless mesh Networks, IEEE Communications Magazine, 43(9):23-30 pp. Cui, S., 2005, Cross-layer optimization in energy-constrained Networks, MSc Thesis, Department of Electrical Engineering, Stanford University (unpublished). Doorenbos, J. And Kassam, A.H., 1988, Yield Response to Water, FAO Irr. Drain. Paper 33,Rome. Handziski, V. Polastre, J. Hauer, H. Sharp, C. Wolisz, A. and Culler, D., 2005, Flexible hardware abstraction for wireless sensor Networks, ,” in Proceedings of the Second European Workshop on Wireless Sensor Networks(EWSN). Heinzelman, W. Chandrakasan, A. and Balakrishnan, H., 2000, EnergyEfficient Communication Protocol for Wireless Microsensor Networks, Proceedings of the 33rd Hawaii International Conference on System Sciences. Howell, T.A. Evet, S.R. and Tolk, J.A., 2001, Irrigation Systems and Management to Meet Future Food Fiber Needs and to Enhance Water Use Efficiency, USDA-ARS Water Management User Unit, Bushland. Levis, P. Madden, S. Polastre, J. Szewczyk, R. Whitehouse, K. Woo, A. Gay, D. Hill, J. Welsh, M. Brewer, E. and Culler, D., 2005, TinyOS: An operating system for wireless sensor networks, in Ambient Intelligence, Springer-Verlag. Lin, C.R. and Gerla, M., 1997, Adaptive clustering for mobile wireless networks, IEEE Journal on Selected Areas in Communications, 15 (7), 1265–1275 pp. Lin, M. Wu, Y. And Wassell, I., 2008, Wireless sensor network: Water distribution monitoring system, IEEE Radio and Wireless Symposium. Lindsey, S. Raghavendra, C.S. and Sivalingam, K., 2001, Data gathering in sensor networks using the energy*delay metric, Proceedings of the IPDPS Workshop on Issues in Wireless Networks and Mobile Computing, San Francisco. Lindsey, S. and Raghavendra, C., 2002, PEGASIS: Power-Efficient Gathering in Sensor Information Systems, IEEE Aerospace Conference Proceedings, 9-16 pp. 60 KAYNAKLAR DİZİNİ(devam) Manieshwar, A. and Agrawal, D.P., 2001, TEEN: a protocol for enhanced efficiency in wireless sensor networks, Proceedings of the 1st International Workshop on Parallel and Distributed Computing Issues in Wireless Networks and Mobile Computing, San Francisco. Manieshwar, A. and Agrawal, D.P., 2002, APTEEN: a hybrid protocol for efficient routing and comprehensive information retrieval in wireless sensor networks, Proceedings of the 2nd International Workshop on Parallel and Distributed Computing Issues in Wireless Networks and Mobile computing, Ft. Lauderdale. Pehlivan, E. ve Töre, G., 2010 Güvenli Bölge Erişim Takip ve Kontrol Sistemi, Bitirme Projesi, Elektrik-Elektronik Mühendisliği Bölümü, Ege Ünivrsitesi(Yayınlanmamış). Polastre, J. Szewczyk, R. Sharp, C. and Culler, D., 2004, The mote revolution: Low power wireless sensor networks, in Proceedings of the 16th Symposium on High Performance Chips (HotChips). Polastre, J. Szewczyk, R. and Culler, D., 2005, Telos:Enabling Ultra-Low Power Wireless Research, in Proceedings of the 4th International Symposium on Information Processing in Sensor Networks. Postel, S.L. Daily, C.D. and Erlich, P.R., 1996, Human Appropriation of Renewable Fresh Water Science, American Association for the Advencement of Science, No. 5250. Issue 9, 795-799 pp. Stoianov, I. Nachman, L. And Madden, S., 2007, PIPENET: A Wireless Sensor Network for Pipeline Monitoring, In Information Processing in Sensor Networks (IPSN). Xu, Y. Heidemann, J. and Estrin, D., 2001, Geography-informed Energy Conservation for Ad-hoc Routing, In Proceedings of the Seventh Annual ACM/IEEE International Conference on Mobile Computing and Networking, 70-84 pp. Ye, F. Chen, A. Liu, S. and Zhang, L., 2001, A scalable solution to minimum cost forwarding in large sensor Networks, Proceedings of the tenth International Conference on Computer Communications and Networks (ICCCN), 304-309 pp. 61 ÖZGEÇMİŞ Fahrettin Demirel, 1980 yılında Ankara’da doğdu. İlköğretimini Bodrum Turgutreis İlköğretim okulunda tamamladı. Ortaöğretimine başladığı Bodrum Lisesi’nden 1998 yılında mezun oldu. 1998 yılında girdiği Ege Üniversitesi, Mühendislik Fakültesi, ElektrikElektronik Mühendisliği Bölümü’nü 2003 yılında tamamladı. 2003-2004 yılları arasında Vestel Elektronik AŞ.’de çalıştı. 2004-2007 yılları arasında DSİ Genel Müdürlüğünde çalıştı. Bu dönemde askerlik hizmetini yedek subay olarak tamamladı. 2007 yılı başından beri DSİ 2. Bölge Müdürlüğünde çalışmaktadır. EGE ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ (YÜKSEK LİSANS TEZİ) SU İLETİM HATLARI BASINÇ BİLGİLERİNİN DENEYSEL BİR ORTAMDA KABLOSUZ SENSÖR AĞI İLE TOPLANMASI EKLER Ek 1 Ek 2 Ek 3 Ek 4 Ek 5 TmoteSky Bilgi Kitapçığı Freescale MP3V5050 Basınç Sensörü Bilgi Kitapçığı Okenseiko Rolling Hava Pompası Bilgi Kitapçığı Ağ Mimarisi Kodlar Bornova-İZMİR 2010 Ek 1 TmoteSky Bilgi Kitapçığı 70 Ek 2 Freescale MP3V5050 Basınç Sensörü Bilgi Kitapçığı Ek 3 Okenseiko Rolling Pump Bilgi Kitapcığı Ek 4 Ağ Mimarisi Ek 5 Kodlar Delta.nc bileşen dosyası #include "Delta.h" configuration Delta { } implementation { components Main; components MultiHop , DeltaM as Impl , TimerC , LedsC , PressureSensorC , CalibrationPSensorC ; Main.StdControl Main.StdControl Main.StdControl Main.StdControl Main.StdControl -> -> -> -> -> MultiHop; TimerC; PressureSensorC; CalibrationPSensorC; Impl; // periodically sample a sensor Impl.Timer -> TimerC.Timer[unique("Timer")]; Impl.TimerBlink -> TimerC.Timer[unique("Timer")]; Impl.TimerCalibration -> TimerC.Timer[unique("Timer")]; // Impl.ADCbasinc -> PressureSensorC; Impl.ADCcalib -> CalibrationPSensorC; // send data messages Impl.SendDeltaMsg -> MultiHop.Send[AM_DELTAMSG]; // monitor traffic being forwarded Impl.SnoopDeltaMsg -> MultiHop.Intercept[AM_DELTAMSG]; // get statistics about current operation Impl.RouteControl -> MultiHop; Impl.RouteStatistics -> MultiHop; // pretty LEDs Impl.Leds -> LedsC; } DeltaM.nc uygulama dosyası #include "Delta.h" #include "circularQueue.h" module DeltaM { provides { interface StdControl; } uses { interface Send as SendDeltaMsg; interface Intercept as SnoopDeltaMsg; interface RouteControl; interface RouteStatistics; interface ADC as ADCbasinc; interface ADC as ADCcalib; interface Timer; interface Timer as TimerBlink; interface Timer as TimerCalibration; interface Leds; } } implementation { /************************* VARIABLES *******************************/ uint16_t uint16_t uint32_t uint32_t m_adc; calib_adc; m_seqno; b_segno; TOS_Msg msg[DELTA_QUEUE_SIZE]; CircularQueue_t queue; /************************* HELPER FUNCTIONS ************************/ task void sendData() { uint16_t _length; int i; uint16_t neighbors[MHOP_PARENT_SIZE]; uint16_t quality[MHOP_PARENT_SIZE]; if (cqueue_pushBack( &queue ) == SUCCESS) { DeltaMsg* dmsg = (DeltaMsg*)call SendDeltaMsg.getBuffer(&msg[queue.back], &_length); atomic dmsg->reading = m_adc; dmsg->parent = call RouteControl.getParent(); call RouteStatistics.getNeighbors(neighbors, MHOP_PARENT_SIZE); call RouteStatistics.getNeighborQuality(quality, MHOP_PARENT_SIZE); for (i = 0; i < MHOP_PARENT_SIZE; i++) { dmsg->neighbors[i] = neighbors[i]; dmsg->quality[i] = quality[i]; } dmsg->neighborsize = MHOP_PARENT_SIZE; dmsg->retransmissions = call RouteStatistics.getRetransmissions(); dmsg->seqno = m_seqno; if (call SendDeltaMsg.send( &msg[queue.back], sizeof(DeltaMsg) ) == SUCCESS) { call Leds.redOn(); } else { // remove from queue cqueue_popBack( &queue ); } } // always increase seqno. gives a better idea of how many packets // really have been dropped m_seqno++; } void blinkBlue() { call Leds.yellowOn(); call TimerBlink.start(TIMER_ONE_SHOT, 20); } /************************* STD CONTROL *****************************/ command result_t StdControl.init() { cqueue_init( &queue, DELTA_QUEUE_SIZE ); return SUCCESS; } command result_t StdControl.start() { call TimerCalibration.start(TIMER_ONE_SHOT, 2000); call Timer.start( TIMER_REPEAT, DELTA_TIME ); return SUCCESS; } command result_t StdControl.stop() { return SUCCESS; } /************************* TIMER ***********************************/ event result_t TimerCalibration.fired() { call ADCcalib.getData(); return SUCCESS; } event result_t Timer.fired() { call ADCbasinc.getData(); return SUCCESS; } event result_t TimerBlink.fired() { call Leds.yellowOff(); return SUCCESS; } /************************* ADC *************************************/ async event result_t ADCcalib.dataReady(uint16_t data1) { calib_adc = data1 ; return SUCCESS; } async event result_t ADCbasinc.dataReady(uint16_t data) { // m_adc = 50 baz istasyonu için senkronizasyon için; m_adc = (data)/73; //m_adc = data; if (b_segno<10){ if ((m_adc > 14) || ( m_adc < 10)){ b_segno=0; post sendData(); return SUCCESS; } else { b_segno++; return SUCCESS; } } } else { b_segno=0; post sendData(); return SUCCESS; } /************************* SEND ************************************/ event result_t SendDeltaMsg.sendDone(TOS_MsgPtr _msg, result_t _success) { cqueue_popFront( &queue ); if (cqueue_isEmpty( &queue )) { call Leds.redOff(); } return SUCCESS; } /************************* SEND ************************************/ event result_t SnoopDeltaMsg.intercept(TOS_MsgPtr _msg, void* payload, uint16_t payloadLen) { blinkBlue(); return SUCCESS; } } MultiHopLQIM.nc uygulama dosyası module MultiHopLQIM { provides { interface interface interface interface } StdControl; RouteSelect; RouteControl; RouteStatistics; uses { interface interface interface interface interface } SPSend; ReceiveMsg; Detect as BaseStation; Random; Timer as RouteTimer; } implementation { enum { MHOP_INVALID_PARENT = TOS_BCAST_ADDR, MHOP_INVALID_COST = 0x7FFF, MHOP_INVALID_HOPCOUNT = 0xFF, }; /***************************** VARIABLES *****************************/ uint16_t m_updateInterval; (in sec) TOS_Msg m_routemsg; sp_message_t m_spmsg; bool m_ispending; // time between route updates // route beacon message // is a message send pending? // keep a list of parents, switch between them when acks fail ParentEntry parents[MHOP_PARENT_SIZE]; uint8_t m_parent; uint16_t m_seqNo; void sendRouteUpdate(); void insert(TOS_Msg* _msg, TOS_MHopMsg* _mhopmsg, BeaconMsg* _bmsg); void evict(int number); void nullify(int number); int find(uint16_t addr); void selectParent(); uint16_t electNextHop(uint8_t _retries, TOS_MsgPtr _msg); /***************************** HELPER FUNCTIONS **********************/ uint16_t correlation(uint8_t v) { uint16_t c = (80 - (v - 40)); c = (((c * c) >> 3) * c) >> 3; return c; } void sendRouteUpdate() { int i; TOS_MHopMsg* _mhopmsg = (TOS_MHopMsg*)&m_routemsg.data[0]; BeaconMsg* _bmsg = (BeaconMsg*)&_mhopmsg->data[0]; if (m_ispending == TRUE) return; // update all parents, evict parents that have timed out for (i = 0; i < MHOP_PARENT_SIZE; i++) { if (parents[i].addr != MHOP_INVALID_PARENT) { // time out parents if we haven't heard from them in a while parents[i].lastheard++; // evict parents if they exceed a timeout if (parents[i].lastheard > MHOP_BEACON_TIMEOUT) { evict(i); } } } // update our parent selection selectParent(); atomic { _mhopmsg->sourceaddr = _mhopmsg->originaddr = TOS_LOCAL_ADDRESS; _mhopmsg->ttl = 1; _bmsg->hopcount = parents[m_parent].hopcount; _bmsg->parent = parents[m_parent].addr; _bmsg->cost = parents[m_parent].cost + parents[m_parent].estimate; _mhopmsg->originseqno = m_seqNo; _mhopmsg->seqno = m_seqNo++; } if (!m_ispending) { if (call SPSend.send( &m_spmsg, m_spmsg.msg, TOS_BCAST_ADDR, offsetof(TOS_MHopMsg,data) + sizeof(BeaconMsg) ) == SUCCESS) { m_ispending = TRUE; } } } void nullify(int _parent) { parents[_parent].addr = MHOP_INVALID_PARENT; parents[_parent].cost = MHOP_INVALID_COST; parents[_parent].estimate = MHOP_INVALID_COST; parents[_parent].hopcount = MHOP_INVALID_HOPCOUNT; } void evict(int _parent) { // if we're currently connected to the base station // keep the parent active if (((TOS_LOCAL_ADDRESS == MHOP_BASE_STATION_ADDR) || (call BaseStation.isConnected())) && (parents[_parent].addr == TOS_UART_ADDR)) { // don't nullify a parent if they're the current base station } parents[_parent].lastheard = 0; } else { // this parent may be nullified nullify(_parent); } int find(uint16_t addr) { int i; for (i = 0; i < MHOP_PARENT_SIZE; i++) { if (parents[i].addr == addr) return i; } return -1; } void insert(TOS_Msg* _msg, TOS_MHopMsg* _mhopmsg, BeaconMsg* _bmsg) { int i; bool found = FALSE; bool changes = FALSE; // update if in our parent list for (i = 0; i < MHOP_PARENT_SIZE; i++) { if (_mhopmsg->sourceaddr == parents[i].addr) { // don't allow a cycle to form or use a bad parent found = TRUE; if (_bmsg->hopcount == MHOP_INVALID_HOPCOUNT) { evict(i); changes = TRUE; } else if (_bmsg->parent == TOS_LOCAL_ADDRESS) { // weaken the neighbor because it has set us as its parent parents[i].cost = parents[i].cost + (parents[i].cost >> 2); } else { parents[i].lastheard = 0; parents[i].cost = _bmsg->cost; parents[i].estimate = correlation(_msg->lqi); parents[i].hopcount = _bmsg->hopcount + 1; } } } // if this parent is currently not in our table, // find out if they are better than our current options if (!found) { // if the neighbor has no parent, don't consider them if ((_bmsg->hopcount == MHOP_INVALID_HOPCOUNT) || (_bmsg->parent == TOS_LOCAL_ADDRESS) || (TOS_LOCAL_ADDRESS == MHOP_BASE_STATION_ADDR) || (call BaseStation.isConnected())) { } else { for (i = 0; i < MHOP_PARENT_SIZE; i++) { // make sure you don't pick a parent that creates a cycle if (((uint32_t) _bmsg->cost + (uint32_t) correlation(_msg->lqi) < ((uint32_t) parents[i].cost + (uint32_t) parents[i].estimate) - (((uint32_t) parents[i].cost + (uint32_t) parents[i].estimate) >> 2))) { evict(i); changes = TRUE; parents[i].lastheard = 0; parents[i].addr = _mhopmsg->sourceaddr; parents[i].cost = _bmsg->cost; parents[i].estimate = correlation(_msg->lqi); parents[i].hopcount = _bmsg->hopcount + 1; break; } } } } } if (changes) selectParent(); void selectParent() { int i; int newparent = m_parent; uint16_t parentestimate = parents[m_parent].cost + parents[m_parent].estimate; // if our parent is invalid, pick the best parent if (parents[m_parent].addr == MHOP_INVALID_PARENT) { for (i = 0; i < MHOP_PARENT_SIZE; i++) { if (parents[i].cost + parents[i].estimate < parentestimate) { newparent = i; parentestimate = parents[i].cost + parents[i].estimate; } } } // if we have a parent, don't switch unless they're worthwhile else { for (i = 0; i < MHOP_PARENT_SIZE; i++) { if (((uint32_t) parents[i].cost + (uint32_t) parents[i].estimate) < ((uint32_t) parentestimate) (((uint32_t) parentestimate) >> 2)) { newparent = i; parentestimate = parents[i].cost + parents[i].estimate; } } } m_parent = newparent; } // select the next hop parent based on the number of retries /************************* DETECT (BASE STATION) *********************/ void setBaseStation() { int i; parents[0].addr = TOS_UART_ADDR; parents[0].cost = 0; parents[0].estimate = 0; parents[0].hopcount = 0; } for (i = 1; i < MHOP_PARENT_SIZE; i++) nullify(i); event void BaseStation.connected() { setBaseStation(); } event void BaseStation.disconnected() { if (TOS_LOCAL_ADDRESS != 0) nullify(0); } /***************************** STDCONTROL ****************************/ command result_t StdControl.init() { int i; m_updateInterval = MHOP_BEACON_PERIOD; for (i = 0; i < MHOP_PARENT_SIZE; i++) { nullify(i); } if ((TOS_LOCAL_ADDRESS == MHOP_BASE_STATION_ADDR) || (call BaseStation.isConnected())) { setBaseStation(); } call Random.init(); return SUCCESS; } command result_t StdControl.start() { call RouteTimer.start(TIMER_ONE_SHOT, ((call Random.rand() & 0x3f) << 2) + ((uint32_t)m_updateInterval << 10)); return SUCCESS; } command result_t StdControl.stop() { return SUCCESS; } /***************************** ROUTE TIMER ***************************/ task void fireNextTimer() { call RouteTimer.start(TIMER_ONE_SHOT, ((uint32_t)m_updateInterval << 10) + 1 ); } event result_t RouteTimer.fired() { post fireNextTimer(); sendRouteUpdate(); return SUCCESS; } /***************************** SENDMSG (Route Updates) ***************/ event void SPSend.sendDone(sp_message_t* msg, sp_message_flags_t flags, sp_error_t success) { if (msg->msg == &m_routemsg) { m_ispending = FALSE; } } /***************************** ROUTE SELECT **************************/ command bool RouteSelect.isActive() { return (parents[m_parent].addr != MHOP_INVALID_PARENT); } command bool RouteSelect.isDuplicate(TOS_MsgPtr _msg, uint8_t id) { TOS_MHopMsg* _mhopmsg = (TOS_MHopMsg*)_msg->data; if ((TOS_LOCAL_ADDRESS != MHOP_BASE_STATION_ADDR) && (!(call BaseStation.isConnected()))) { if (_mhopmsg->ttl == 0) return TRUE; } return FALSE; } command result_t RouteSelect.selectRoute(TOS_MsgPtr _msg, uint8_t _type, uint8_t _retries) { TOS_MHopMsg* _mhopmsg = (TOS_MHopMsg*)_msg->data; // if the message was a broadcast and we have no parent, return fail // or if the message has timed out in the system (ttl == 0) if ((TOS_LOCAL_ADDRESS != MHOP_BASE_STATION_ADDR) && (!(call BaseStation.isConnected()))) { if (((_msg->addr == TOS_BCAST_ADDR) && (parents[m_parent].addr == TOS_BCAST_ADDR)) || (_mhopmsg->ttl == 0)) { return FAIL; } } // was the message a local message or a forwarded message if ((_retries == 0) && (_mhopmsg->originaddr != TOS_LOCAL_ADDRESS)) { _mhopmsg->seqno = m_seqNo++; if (_mhopmsg->ttl > 0) _mhopmsg->ttl--; } //parent ne olması isteniyorsa buraya yazılacak if (TOS_LOCAL_ADDRESS==0){ _msg->addr = TOS_UART_ADDR; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==1){ _msg->addr = 0; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==2){ _msg->addr = 1; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==3){ _msg->addr = 2; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==4){ _msg->addr = 3; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==5){ _msg->addr = 4; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==6){ _msg->addr = 5; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==7){ _msg->addr = 6; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==8){ _msg->addr = 4; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==9){ _msg->addr = 8; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==10){ _msg->addr = 9; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==11){ _msg->addr = 1; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==12){ _msg->addr = 11; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==13){ _msg->addr = 11; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==14){ _msg->addr = 13; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==15){ _msg->addr = 12; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==16){ _msg->addr = 15; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==17){ _msg->addr = 14; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==18){ _msg->addr = 17; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==19){ _msg->addr = 18; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } if (TOS_LOCAL_ADDRESS==20){ _msg->addr = 19; _mhopmsg->sourceaddr = TOS_LOCAL_ADDRESS; } return SUCCESS; } command result_t RouteSelect.initializeFields(TOS_MsgPtr _msg, uint8_t _type) { TOS_MHopMsg* _mhopmsg = (TOS_MHopMsg*)_msg->data; _msg->addr = 0; // initialize local message to no particular parent _mhopmsg->sourceaddr = _mhopmsg ->originaddr = TOS_LOCAL_ADDRESS; _mhopmsg->originseqno = _mhopmsg->seqno = m_seqNo++; _mhopmsg->ttl = 10; return SUCCESS; } command uint8_t* RouteSelect.getBuffer(TOS_MsgPtr _msg, uint16_t* _length) { TOS_MHopMsg* _mhopmsg = (TOS_MHopMsg*)(_msg->data); *_length = TOSH_DATA_LENGTH - offsetof(TOS_MHopMsg,data); return _mhopmsg->data; } /***************************** ROUTE CONTROL *************************/ command uint16_t RouteControl.getParent() { // parent ne olması isteniyorsa buraya yazılacak if (TOS_LOCAL_ADDRESS==0){ return TOS_UART_ADDR; } if (TOS_LOCAL_ADDRESS==1){ return 0; } if (TOS_LOCAL_ADDRESS==2){ return 1; } if (TOS_LOCAL_ADDRESS==3){ return 2; } if (TOS_LOCAL_ADDRESS==4){ return 3; } if (TOS_LOCAL_ADDRESS==5){ return 4; } if (TOS_LOCAL_ADDRESS==6){ return 5; } if (TOS_LOCAL_ADDRESS==7){ return 6; } if (TOS_LOCAL_ADDRESS==8){ return 4; } if (TOS_LOCAL_ADDRESS==9){ return 8; } if (TOS_LOCAL_ADDRESS==10){ return 9; } if (TOS_LOCAL_ADDRESS==11){ return 1; } if (TOS_LOCAL_ADDRESS==12){ return 11; } if (TOS_LOCAL_ADDRESS==13){ return 11; } if (TOS_LOCAL_ADDRESS==14){ return 13; } if (TOS_LOCAL_ADDRESS==15){ return 12; } if (TOS_LOCAL_ADDRESS==16){ return 15; } if (TOS_LOCAL_ADDRESS==17){ return 14; } if (TOS_LOCAL_ADDRESS==18){ return 17; } if (TOS_LOCAL_ADDRESS==19){ return 18; } if (TOS_LOCAL_ADDRESS==20){ return 19; } return -1; } command uint8_t RouteControl.getQuality() { return 255 - (parents[m_parent].estimate >> 5); } command uint8_t RouteControl.getDepth() { return parents[m_parent].hopcount; } command uint8_t RouteControl.getOccupancy() { return 0; } command uint16_t RouteControl.getSender(TOS_MsgPtr _msg) { TOS_MHopMsg* _mhopmsg = (TOS_MHopMsg*)_msg->data; return _mhopmsg->sourceaddr; } command result_t RouteControl.setUpdateInterval(uint16_t _interval) { m_updateInterval = _interval; return SUCCESS; } command result_t RouteControl.manualUpdate() { sendRouteUpdate(); return SUCCESS; } /***************************** RECEIVEMSG (Route Update) *************/ event TOS_MsgPtr ReceiveMsg.receive(TOS_MsgPtr _msg) { TOS_MHopMsg* _mhopmsg = (TOS_MHopMsg*)_msg->data; BeaconMsg* _bmsg = (BeaconMsg*)_mhopmsg->data; insert(_msg, _mhopmsg, _bmsg); return _msg; } /***************************** RECEIVEMSG (Route Update) *************/ command uint8_t RouteStatistics.getNeighborSize() { return MHOP_PARENT_SIZE; } command void RouteStatistics.getNeighbors(uint16_t* neighbors, uint8_t length) { int i; for (i = 0; (i < MHOP_PARENT_SIZE) || (i < length); i++) { neighbors[i] = parents[i].addr; } } command void RouteStatistics.getNeighborQuality(uint16_t* quality, uint8_t length) { int i; if (TOS_LOCAL_ADDRESS==1){ parents[1].addr = 0; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==2){ parents[1].addr = 1; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==3){ parents[1].addr = 2; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==4){ parents[1].addr = 3; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==5){ parents[1].addr = 4; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==6){ parents[1].addr = 5; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==7){ parents[1].addr = 6; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==8){ parents[1].addr = 4; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==9){ parents[1].addr = 8; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==10){ parents[1].addr = 9; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==11){ parents[1].addr = 1; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==12){ parents[1].addr = 11; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==13){ parents[1].addr = 11; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==14){ parents[1].addr = 13; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==15){ parents[1].addr = 12; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==16){ parents[1].addr = 15; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==17){ parents[1].addr = 14; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==18){ parents[1].addr = 17; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==19){ parents[1].addr = 18; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } if (TOS_LOCAL_ADDRESS==20){ parents[1].addr = 19; parents[1].cost = 1; parents[1].estimate = 1; parents[1].hopcount = 1; parents[1].lastheard = 0; } for (i = 0; (i < MHOP_PARENT_SIZE) || (i < length); i++) { quality[i] = parents[i].estimate; } } command uint8_t RouteStatistics.getRetransmissions() { return 0; } } command void RouteStatistics.resetRetransmissions() { }