Gaziosmanpaşa Üniversitesindeki duyuruları, etkinlikleri, haberleri ve Tokat'taki hava durumunu (hissedilen) takip edebileceğim bir masaüstü uygulama tasarladım. Bunu da sizlere paylaşayım istedim: C# ile görsel programlama yapabilmeniz için öncelikle kodlarınızı yazacağınız bir ortama sahip olmalısınız. Bunun için açık kaynak kodundan da derleyebileceğiniz ve ücretsiz olan SharpDevelop programı üzerinden anlatacağım. Visual Studio benzeri bu program ile başlangıç ve orta seviye programlarınızı kolaylıkla yazabilir ve derleyebilirsiniz. Üstelik çok da hızlı çalışıyor ! Kurulumu yapacaklar için burdan indirme linklerine ulaşabilirsiniz. Notes kısmından
Örnek olması açısından basit bir uygulama ile başlayalım: Yukarıdaki ekrandan proje dosyası oluşturulur. Proje oluştururken C# seçili olmasına dikkat edin. Pencere uygulaması yapacağımız için Windows Application seçiyoruz. Proje ismini ve kaydedileceği konumu da ayarlayarak Create diyoruz. Açılan Design ekranının sol tarafındaki Tools ekranından penceremize Label ve Button öğelerini sürükleyip proje penceremize bırakıyoruz. Button Örnek adlı proje penceremizin içine aktardığımız button1 e çift tıklayarak Source kısmına geçiyoruz. Burada amaç butona tıklandığında çalışacak kodu yazmaktır. Basit olarak button1 buttonuna bastığımızda label1 etiketinde Merhaba Dünya yazdıralım. Bunu yapmak için: Yukarıda bulunan yeşil üçgene tıklayarak yazdığımız kodu çalıştırabiliriz. Programımız açıldığında Button Örnek adlı penceremiz açılacaktır. button1 buttonuna tıkladığımızda ise label1 etiketinin değişerek Merhaba Dünya! yazdığını görebilirsiniz. Eğer yazdığınız kod çalıştıysa kendiniz daha farklı elemanlar ekleyerek kodunuzu zenginleştirebilirsiniz. Örneğin basit bir hesap makinesi yapabilirsiniz: Pencere ekranına ekleyeceğiniz buttonların üzerindeki yazıları değiştirmek için butonu seçin ve ekranın sağ tarafında açılan properties penceresinden butona ait text özelliğini değiştirin. Bu şekilde pencere ekranını seçerek properties ekranından arkaplan rengini mavi yapabilirsiniz. Aynı şekilde buttonlarınızı da renklendirebilirsiniz.
Yukarıdaki Hesap Makinesine ait kodları indirebilirsiniz: Bu konuyla ilgili aslında daha erken bir zamanda yazmak istiyordum ancak geç de olsa sonunda yazabildiğim için mutluyum. Çıktı çıkacak derken uzun bir aranın ardından sonunda Freya'ya kavuştuk. ISIS adıyla planlanan yeni sürümün (Ağustos 2013'te Daniel Foré tarafından duyurulmuştu) daha sonra isim değiştirilerek Freya olarak duyurulmasıyla heyecanlı bekleyiş devam etti. Luna sürümüyle kendisini beğendiren bir dağıtım olmayı başaran ElementaryOS yine oldukça hafif ve hızlı çalışan bir sürümle karşımızda... Öne Çıkan Özellikler1- Hafif ve Hızlı Öncelikle şunu söylemeliyim ki, linux dağıtımlarını usb üzerinden çalıştırıp kendi testimi yapıyorum. Freya açılır açılmaz kendisini hafifliğine hapseden bir dağıtım. Kesilikle siz de kendi testinizi (sanal makina üzerinden de olsa) yapmalısınız. 2- HIG Uzun zamandan beri beklediğim başlık çubuklarındaki düzenleme sonunda yapıldı. Özellikle Lunada kendini hissettiren arayüz tasarımı ve patternler son halini aldı ve bana göre oldukça başarılı oldu. Detaylar: https://elementary.io/docs/human-interface-guidelines/human-interface-guidelines https://developer.gnome.org/hig/stable/patterns.html.en 3- Maya Uygulama anlamında California'ya (türevi olup olmadığı hakkında bilgim yok) benzerliğiyle öne çıkan takvim uygulaması Maya, Vala ile yazılmış ve oldukça da başarılı. Bundan sonra lafı daha fazla uzatmayarak sizi Freya'nın kollarına bırakıyorum... 1. Çizgi İzleyen Robot Nedir? Zemin üzerine çizilmiş bir çizgiyi otonom olarak takip eden robotlardır. Zemin ve çizgi zıt renklerdedir. Genellikle siyah zemin üzerine beyaz çizgi veya beyaz zemin üzerine siyah çizgi çekilir. Merhaba, Çizgi izleyen robot yapacaklar için faydalı olabileceğini düşündüğüm bir belge hazırladım. Bu belgede size fikir verebilecek, kendi tecrübelerimden derlenen detayları bulabilirsiniz. Bu sayfada da robotu yaparken dikkat etmeniz gereken basamaklara adım adım değineceğim. 2. Katılınacak Yarışmaların Belirlenmesi Hangi yarışmalara katılacağınız gerçekten büyük önem taşıyor. Yapacağınız robotun tasarımı katılacağınız yarışmanın kurallarına göre değişecektir. O yüzden robotunuzu tasarlamaya başlamadan önce hangi yarışmaya katılacağınızı belirlemelisiniz. 3. Yarışma Kurallarının İncelenmesi Katılmak istediğiniz yarışmayı belirledikten sonra o yarışmanın kurallarının dikkatli bir şekilde incelenmesi gerekir. Çünkü yapacağınız tasarım ve malzeme seçimleri o yarışmanın kuralları dahilinde olmalıdır. Örn: http://robot.meb.gov.tr/ 4. Tasarım Çizgi izleyen tasarımında dikkat edilecek en önemli nokta motorlar ile sensörler arasındaki mesafe ve lastikten lastiğe genişlik mesafesidir. F1 araçlarının genişlikleri ile boyları arasındaki oran, yol ile araç arasındaki oran baz alınabilir. Bkz: http://www.formula1.com/inside_f1/rules_and_regulations/technical_regulations/8695/ 5. Malzeme Seçimi Malzeme seçimi yaparken özellikle gövde için olabildiğince hafif malzeme seçilmelidir. Malzemeler aşağıdaki ana başlıklar halinde belirlenebilir:
6. Elektronik Kart Tasarımı Malzemeler belirlendikten sonra elektronik kart tasarımı aşaması gelmektedir. Eğer elektronikten pek anlamıyorsanız veya detaylı devre tasarımı sizin için zaman kaybettirecekse baby orangutan kartı ideal bir seçim olacaktır. Bu kart üzerinde regületör, motor sürücü ve mikrodenetleyici bulunmaktadır. 7. Yazılım Eğer pic mikrodenetleyici kullanmışsanız ccs c compiler ile yazdığınız kodları derleyebilirsiniz. Buradan demo indirip ücretsiz deneyebilirsiniz. Ccs c compiler ücretli bir programdır. Ancak bu programı satın almak istemiyorsanız microchip firmasının kendi derleyicilerini de kullanabilirsiniz. Bunun için öncelik microchip mplab ide x indirmeniz gerekmektedir. Bu programı indirdikten sonra assembly dili ile kod yazabilirsiniz. Assembly bilmiyorsanız veya C dili ile kod yazmak istiyorsanız bunun için bir derleyici kurmanız gerekmektedir. Kullanacağınız pic mimarisine göre derleyici seçimi yapmalısınız. Örneğin 8-bit bir pic kullanıyorsanız MPLAB® XC8 Compiler 16-bit pic kullanıyorsanız MPLAB® XC16 Compiler kullanmalısınız. Bu aşamada faydalı olabileceğini düşündüğüm linki de paylaşıyorum. 8. PID Nedir? PID, kapalı çevrim döngülerde ölçülen değer ile olması gereken değer arasındaki farkı ölçümleyerek geri bildirim mekanizmasıyla bu veriyi tekrar kullanan denetleme yöntemidir. PID yi oluşturan 3 ana başlık vardır, bunlar; P: Proportional (Oransal) - O ana ait hatadır. I: Integral (İntegral) - Geçmişe ait hatalar toplamıdır. D: Derivative (Türev) - Gelecekte tahmin edilen hatadır. 8.1. Robot Konumunun Hesaplanması Robotunuzun konumunun hesaplanması şu şekilde olabilir. Diyelim ki beyaz zemin üzerine siyah renkle çizgi çekilmiş bir yol kullanıyorsunuz ve siyah rengi algılayan 5 sensör kullanarak çizgi izleyen robot tasarladınız. Robotunuzun düz bir şekilde gitmesi için ortadaki sensörün (üçüncü) siyah çizgiyi algılamış olması gerekmektedir. İdeal olan durum sizin ortadaki sensörünüzün görme durumudur. Yani 3. sensörünüzün görme durumudur. Peki mikrodenetleyiciniz 3. sensörün gördüğünü nasıl algılar? Bu işlem aslında oldukça basittir. Herbir sensör değerinizi rakamsal değeriyle çarpıp, gören sensörler toplamına böldüğünüzde o anki değeri bulursunuz. Yani, 0x1 (1.sensör görmüyor) 0x2 (2.sensör görmüyor) 1x3 (3.sensör görüyor) 0x4 (4.sensör görmüyor) 0x5 (5.sensör görmüyor) Sensör değerleriniz = 0+0+3+0+0 Toplamda gören sensör sayısı = 0+0+1+0+0 İşleminiz ==> 3 / 1 = 3 olacağından, o anki konumunuzu bulmuş oldunuz. İdeal noktanız da 3 olduğu için 3-3 'ten hatanızın 0 olduğunu buldunuz. Aynı işlemi ortadaki 3 sensörün de gördüğünü varsayarak yapalım: 0x1 (1.sensör görmüyor) 1x2 (2.sensör görüyor) 1x3 (3.sensör görüyor) 1x4 (4.sensör görüyor) 0x5 (5.sensör görmüyor) Sensör değerleriniz = 0+2+3+4+0 Toplamda gören sensör sayısı = 0+1+1+1+0 İşleminiz ==> 9/3=3 olacağından, o anki konumunuzu bulmuş oldunuz. Dikkat ederseniz yine hatanız 0 çıktı. Yani robotunuz olması gereken yerde. 8.2. P Değerinin Hesaplanması Aynı örnek üzerinden gidecek olursak, sensörlerinizin ideal noktası (3), ölçüm anındaki noktadan uzaklaştıkça sizin oransal olarak hızınızı yavaşlatmanız gerekir. Yani 5 sensörlü robotunuz için toplamda 9 adet ara değer vardır. Bunlar; 1. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 1 çıkar) 1. ve 2. sensörün görme durumu (Yukarıdaki hesaplamaya göre 1.5 çıkar) 2. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 2 çıkar) 2. ve 3. sensörün görme durumu (Yukarıdaki hesaplamaya göre 2.5 çıkar) 3. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 3 çıkar) 3. ve 4. sensörün görme durumu (Yukarıdaki hesaplamaya göre 3.5 çıkar) 4. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 4 çıkar) 4. ve 5. sensörün görme durumu (Yukarıdaki hesaplamaya göre 4.5 çıkar) 5. Sensörün görme durumu (Yukarıdaki hesaplamaya göre sonuç 5 çıkar) Bu verilere göre diyelimki motor hızınız ideal konumdayken %100 olduğunu varsayarsak, 3. ve 4. sensörün görme durumunda sağ motor hızının %25 azalması gerekmektedir. 5. Sensörünüz tek başına görüyorken sağ motor tamamen durmuş duruma gelir. Peki biz bu hesaplamayı mikrodenetleyicimize anlatmak için ne yapmalıyız? 5 adet sensör için hesap (9-1) / 2 kadardır. %100 /4 ten %25 değerini buldunuz. Oran bu şekilde belirlenir. Yani 5 farklı hız oranınız vardır; %0, %25, %50, %75, %100. 9 farklı sensör durumlarına göre açıklayacak olursak, 1 1ve2 2 2ve3 3 3ve4 4 4ve5 5 %0, %100, %25,%100, %50,%100, %75,%100, %100,%100, %100,%75, %100,%50, %100,%25, %100,%0 şeklindedir. 8.3. D Değerinin Hesaplanması D değeri aslında türevsel bir değerdir. Yani eğimden ibarettir. Eğer hata değişimi yoksa, yani zamanla sizin hatanız değişmiyorsa eğiminiz sabit olacağından D değeriniz 0 olur. Örneğin t0 anında robot konumu 3 ise (3.sensör görüyorsa), t1 anında da robot konumu 3 ise (3. sensör görüyorsa) eğim 0'dır. Yani yol dümdüz ilerliyordur ve robot hızını değiştirmeye gerek yoktur. Ancak t2 anında robot konumu 3.5 ise (3. ve 4.sensörler görüyorsa), eğim değişeceğinden hızınızın da değişmesi gerekir. t2-t0 kadar geçen süre içerisinde hatanız değişmiştir. Bu demek olur ki t3 anında (yani t2+(t2-t0)) yeni konumunuz 4 olabilir. Bu öngörüye dayanarak hızınızı P+D kadar değiştirmelisiniz. t2-t0 anı kadar %100, %P+D hız uygularsanız robot hatası 0 a inecektir. Eğer eğim fazlaysa (ani bir değişim varsa) bu D değerinizin daha yüksek çıkacağı anlamına gelir. 8.4. I Değerinin Hesaplanmaması I değerinin hesaplanma nedeni aslında geçmiş hataların toplamını bulmaktır. Ancak yapılan denemelerde I eklendiğinde (PID) robotun daha verimsiz çalıştığı görülmüştür. Bu yüzden yazılıma I değeri dahil edilmemiştir. Mostem robotu PD olarak çalışmaktadır. ![]() MT! MT! Android işletim sistemine sahip cihazlar için oluşturulmuş mesajlaşma uygulamasıdır. Ücretsizdir, dosya paylaşımına izin verir ve güvenlidir. MT! Telegram serverlarını kullanır. I used web2py framework on raspberry pi. It was just a test application. It would be developed cuz i didnt plug in any devices. There are just leds to notice if gpios work. Raspberry Pi kredi kartı boyutlarında mini bir bilgisayardır. Sd karta linux isletim sistemi kurularak hard disk gibi calismasi saglanır. Klavye, mouse, hoparlör gibi elemanlar takılabilmektedir. Ayrıca hdmi cikisi bulunmaktadır, bu sayede ekran da baglanabilmektedir. Yaptıgım uygulamada bilgisayarımın ethernetinden raspberry pi'nin ethernetine direk baglantı yaparak haberlesme sagladım. Raspberry pi'ye web server kurup bununla gpio adı verilen giris cıkıs portunun kontrolunu sagladım. Web2py framework ile python tabanlı web arayüzü gelistirdim. Simdilik sadece led kontrolü gerceklesmektedir ancak sistem gelistirilerek cihaz baglanabilir hale getirilebilir. Bu sayede kombi, panjur, kalorifer v We apply "Project based Learning Technique" in MOSTEM. I am a supervisor teacher for line tracer robot project. They might follow a visual line painted or embedded in the floor or ceiling or an electrical wire in the floor. Most of these robots operated a simple "keep the line in the center sensor" algorithm. They could not circumnavigate obstacles; they just stopped and waited when something blocked their path. With the project, we aimed that the students can design the basic electronics circuit and control it, they can know the electronics parts, they can solder on the board, they can build their own algorithms... The algorithms are so important cuz i think "algorithms develop to think and ability to solve the problems". With a beginning of basic algorithm, they develop complex algorithms and up to pid based algorithms.. Part List:
Actually i am still student at Gaziosmanpasa University. So i am postgraduate student on Mechatronics Engineering. The project was a kinda homework. I use Gy-521 board MPU-6050 sensor for accelerometer and it also has gyrometer. It uses I2C protocol for communication. I use Pic18f2550 to control the values from accelerometer. It doesnt need to use external clock. So it makes easy to test it. I also design a board for it. Leds light for positive or negative values. So it would be used on offline applications. I use Ubuntu 14.04 LTS. I should say that i am one of unity lovers. I am just trying to use Dock in this days.. and my desktop: Ubuntu 14.04 LTS kullanıyorum. Kesinlikle söylemeliyim ki aslında unity sevenlerden birisiyim. Ancak bu aralar Dock'u deniyorum. Iste kullandıgım masaüstü görünümü: There is no theme. Default is "Ambiance" and i like it so i didnt change it... Icon theme is "Faenza + Square-Beam". I combined the actions, mimetypes, animations from faenza and apps from square-beam.
Unity default teması olan "Ambiance" kullanıyorum ve hosuma gittigi icin de temayı degistirmedim. Icon teması ise "Faenza + Square-Beam" den olusuyor. New Line - Yeni SatırUzun zamandan beri düsündügüm ancak bir türlü firsat bulamadigim blog sitesini sonunda acmis bulunmaktayim. Bu sayfada yaptigim calismalari ve edindiğim tecrübeleri paylasmak istiyorum.
Paylasimlarimi okuduktan sonra olumlu ya da olumsuz fikir beyan ederseniz cok memnun olurum.. Vakit Ayırdıginiz Icin Teşekkürler.. |
Details
Archives
November 2015
Categories |