Etiketler

18 Haziran 2017 Pazar

Beyin-Bilgisayar Arayüzü

Beyin-Bilgisayar Arayüzü

Merhaba


Bu yazımda sizlere daha önce bir araştırma kapsamında yaptığım beyin-bilgisayar arayüzü (brain-computer interfaces) incelemesinden bahsetmek istiyorum.






İnsan Beyni

  • İnsan beyninde yaklaşık 100 milyar nöron bulunmaktadır. 
  • Beyindeki bir nöronun sinyal iletim hızı saniyede 50 metre ila 120 metre arasından değişmektedir.
  • Beyindeki tüm nöronlar birbiriyle iletişim halindedir. Mesela insan vücudunun ortalama 170cm olduğu düşünülürse, ayak parmaklarınızdan beyninize ulaşacak bir sinyal birkaç milisaniyede iletilebilir.





BEYİN-BİLGİSAYAR ARAYÜZLERİ

  • İnsanların bilgisayar gibi elektronik cihazlarla iletişim kurmasına imkan veren bir teknolojidir.
  • İnsanların dış dünyaya gönderdikleri iletilerin ve komutların oluşturdukları elektirk akımının ölçülmesi ve bilgisayar tarafından yorumlanması temeline dayanmaktadır.
  • Genellikle insanların bilişsel yada duyusal motor fonksiyonlarına yardımcı olmak veya hasarlı kısımların düzeltilmesinde kullanılmaktadır.

BEYİN-BİLGİSAYAR ARAYÜZÜ ÇALIŞMA PRENSİBİ

Bu sistemler belirli bir temele dayanmaz, kullanıcının eğilimlerine dayanmaktadır. 
Bir beyin-insan arayüzü sisteminin temel bileşenleri olarak :
  • Sinyal toplama
  • Sinyal işleme : Özellik çıkarma
  • Sinyal işleme : Dönüştürme Algoritması
  • Çıktı cihazı
  • İşletme Protokolü sıralanabilir.



KULLANICI ile ETKİLEŞİM TÜRLERİ



NeuroSurgery beyinde belirlenen bölgeye direk olarak nöro çipin ve bağlantı sağlanacak aparatörün ameliyatla beyne yerleştirilmesidir.













ECoG beyinde oluşan sinyalleri kaydeder ve kablosuz ağ aracılıyla bilgisayara gönderir.








En kolay yöntemlerden birisi, EEG(Elektroensefalografi) kullanımıdır. Bir cihaz aracılığla bağlanan elektrotlar, beyin sinyallerini bilgisayar ekranına aktarmaktadır.







MEG (Magnetoencephalography); aktiviteler sırasında beyinde meydana gelen değişiklikleri, hangi nöronların ve beyne ait hangi bölgenin çalıştığını görüntüleyen teknolojidir. Manyetik rezonans teknikleri ile çalışır.



fMRI (functional mrı) cihazı ile, hangi nöronun ne tür bir tepki verdiği anlaşılamaz. Ve yine fMRI ile çalışma anında, nöronların aktivasyonu öyle bir zamana denk gelir ki, fMRI ile görüntü alındığı anda nöron bir aktivasyon göstermezken, fMRI cihazının görüntü almadığı zamanda nöron aktive olmuş olabilir. Bir başka deyişle, fMRI cihazının arka arkaya çektiği görüntülerden bazılarına, o nöron grubunun aktive oldukları zaman (an) denk gelmemiş ve dolayısıyla görüntülere yansımamış olabilir. Bu nedenlerden dolayı, belli zaman aralığında çekilen görüntüler tek tek ele alınarak işlenmek yerine bu görüntülere ait değerlerin ortalamaları alınarak tek bir görüntü elde edilir. Şu halde fMRI ile çekildiğini düşündüğümüz tek bir görüntü, aslında yüzlerce görüntünün ortalamasıdır. (Resimdeki dokuz görüntünün her biri, yüzlerce görüntünün ortalamasından elde edilmiştir.)


UYGULAMALAR

  • Felçli insanlar çevreleri ile iletişim kurmasını, bazı çevresel varlıkları hareket ettirmeleri 
  • Engelli insanların tekerlekli sandalye, robotik kol gibi kullandıkları cihazları kontrol edebilmeleri Bilgisayar oyunlarının kontrol edilebilmesi 
  • Hayatı kolaylaştırmak için geliştirilen akıllı cihazlarda


UYGULAMALAR-TARİHSEL GELİŞİM

  • 1924, Hans Berger, Alman nörolog ilk defa insan beynin aktivitelerini EEG ile kayıt edebileceğini keşfetmiştir. 
  • 1970, İlk beyin-bilgisayar arayüzü çalışmaları NSA ve DARPA desteği ile Kaliforniya Üniversitesinde başlamıştır. 
  • 1978’de ilk prototip denemesi görme engelli bir insanda yapılmıştır. 
  • 1990'lu yıllara kadar insan ve hayvan deneylerine devam edilmiştir.
  • 2005 yılında ilk beyin-bilgisayar etkileşimi sistemi ile boyundan itibaren felçi olan Mattew Nagle’da denendi.
 I can't put it into words. It's just—I use my brain. I just thought it. I said, "Cursor go up to the top right." And it did, and now I can control it all over the screen. It will give me a sense of independence. — Matthew Nagle, "Brain Gain"




Beyin kontrolü ile çalışan robotik kol çalışması. Beyne ameliyat ile yerleştirilen mikroçip sayesinde düşünce ile oluşturulan sinyaller bilgisayar tarafından yorumlanıp, kol için hareket sağlıyor.








Kayıtlardaki ilk biyonik bilim adamı





Kablosuz ağ ile veri ile veri iletimi sağlayan kullanıcı sistemleri







Sonuç olarak; 

  • Yıllardır süregelen insan beynini analiz etme, beyin okuma kavramları, gelişen teknoloji ile mümkün hale gelmektedir. Geliştirilen cihazlar ile beyinde meydana gelen elektrik sinyalleri tespit edilip okunabilmekte, ve analiz edilerek yorumlanabilmektedir. 
  • Öncelikle hareket yeteneğini kaybeden insanlar için umut kaynağı olan sistemler, robotik kismi protezler ve insanların hayatını kolaylaştıran robotların düşünce gücüyle çalışması, sistemler ile etkileşime giren kullanıcıları memnun etmektedir. 
  • Kanser tedavilerinde ve kanser hastalarında da kullanılması planlanmaktadır. 
  • Çalışmalar hem medikal hem de teknolojik alanlarda devam etmektedir.
Bu yazımda beyin-bilgisayar arayüzü sistemlerinden özetle bahsetmeye çalıştım. 
Daha sonraki yazımlarımda görüşmek üzere... 




13 Haziran 2017 Salı

Arduino ile Toprak Nem Sensörü Kullanımı



 Merhabalar


Bu yazımda sizlere Arduino toprak nem sensörü ile ölçüm yapmaktan bahsedeceğim.

Ben bu projelerimde keyestudio'nun UNO R3 kartını (Arduino UNO R3 ile aynıdır) ve  keyestudio sensörlerlerini kullanacağım.

Gerekli Malzemeler : 

  • Arduino Uno
  • Toprak Nem Sensörü
  • Jumper kablo (3 adet dişi-erkek)



Kullandığınız sensörün markasına göre sensörün bağlanma şekillerinde değişiklik gözlenebilmektedir. Keyestudio Moisture Sensor'ün de 'S', '+' ve '-' olmak üzere 3 adet pin bulunmaktadır. 'S' pini sinyali aldığımız pin olup Analog pin olan 'A0' a bağlanmakta, '+' pin güç olacağımız '5V' pinine ve '-' pin ise topraklama pini olan GND'ye bağlanmaktadır.





Eğer sensörününüz üst taraftaki gibi bir modele sahipse sensörde bulunan 2li pini 2 adet dişi-dişi jumper kablo kullanarak karta bağlamanız gerekmektedir. Ardından karta bulunan 4 çıkış pininden A0 pini sensöre gelen veriyi analog olarak okumak için, D0 pini ise potansiyometre ile ayarlananan değere göre digital çıkış almak için kullanılabilmektedir. Buradaki devrede 1.pini A0 pinine, 3.pini GND pinine ve VCC yi ise 5V pinine bağlamanız yeterlidir. [*] 


**Arduino kartımızı bilgisayara bağladıktan ve port ayarlarını yaptıktan sonra,
Arduino kartta kullancağımız kod :

void setup() {
  // put your setup code here, to run once:
  Serial.begin(57600); //serial monitorda kullancağımız hız

}

void loop() {
  // put your main code here, to run repeatedly:

Serial.print ("Moisture Sensor Value:");
Serial .println(analogRead(0)); //sensörden okuduğumuz değer
delay(1000); //sensörden gelen verileri aralıklarla okumak için delay kullanıyoruz
}

Kodumuzu karta upload ettikten sonra serial monitor'u açıyor ve 56K hızında veri alışverişe başlıyoruz.


Serial monitor'de gözlemlenen 0 değerleri, sensörünüz herhangi bir değer almadığında kuru ortamda okuduğu değerlerdir. Sensörünüzü bir miktar su bulunan bardağın içine koyarsanız şekildeki gibi değerleri okuyabilirsiniz.


Bu arada editor olarak bilgisayarınıza Arduino indirebileceğiniz gibi online web editörü de kullanabilirsiniz. Arduino'nun Amazon üzerinden PaaS hizmeti vererek hazır kodlama ortamı sunmasını ben beğendim, tavsiye ederim.

Bu yazımda Arduino ile toprak nem sensörü ile basit bir proje yapılmasını anlattım. Daha sonraki yazılarımda görüşmek üzere...

Kaynaklar :

[*]Bu tip sensörle yapılan proje için @ZaferAyan' ı takip edebilirsiniz.
http://www.keyestudio.cc/h-nd-79.html
https://www.youtube.com/watch?v=PSWdu3rJL5M&index=18&list=PL2K0ws7Tl3rFnvxQYDugxgnl5M3E4GTlZ

11 Haziran 2017 Pazar

Raspberry Pi DHT11 Sıcaklık ve Nem Sensörü ile Termometre

Merhabalar

Bu yazımda Raspberry Pi kullanarak DHT11 sensörü ile sıcaklık ve nem  ölçümünden bahsetmek istiyorum.








Bende eski modellerden birisi olan Raspberry Pi Model B bulunmakta, işletim sistemini çok uzun zaman önce yüklemiştim. İşletim sistemindeki güncellemelerin çok fazla olmasına bağlı olarak raspberry çöktü. :(




Bu yüzden yeniden kurulum yaptım. İşletim sistemi kurulumu için ben pi için ubuntu sürümü olan raspbianı tercih ediyorum. https://www.raspberrypi.org/downloads/raspbian/ sayfasında bulunan raspbian işletim sistemi indirilmelidir. Daha sonrasında bilgisayarınızda bu işletim sistemini raspberry pi de kullanacağınız hafıza kartına boot'lamanız gerekmektedir. Bunun için macOSX'de  Etcher 'i kullanabilirsiniz. 

Raspberry Pi'nize SSH ile bağlanmak için IP adresini bilmeniz gerekmektedir. Bunun için direk olarak ekran bağlantısı yapmadıysanız nmap kullanarak IP adresine erişmeniz mümkündür. macOSX'e nmap kurulumu ile ilgili blog yazıma ulaşmak tıklayınız.
Raspbian işletim sistemine ait giriş bilgileri default olarak aşağıdaki gibidir.

user : pi
password : raspberry

SSH bağlantısı sırasında 'port 22: connection refused' gibi hata ile karşılaşıyorsanız, raspberry pi'nize klavye ve ekran bağlantılarını yaparak direk olarak içine girmeli ve /etc/ssh/sshd.config dosyasında düzenlemeler yapmalı ve SSH servisini yeniden başlatmanız gerekmektedir. 




Sistemimiz sağlıklı bir şekilde çalışmaya başladıktan sonra çalışmaya başlayabiliriz.







Raspberry Pi üzerinde analog giriş bulunmamaktadır. Bu yüzden analog çıkış veren sensörler kullanılamamaktadır. Onun yerine digital çıkış veren sensörler kullanılmalıdır.


Sensörün yapısını inceleyecek olursak 3 bacaklı ve 4 bacaklı DHT11 bulunmaktadır. Ben bu macerada  4 bacaklı  DHT11 sensörü kullandım.

Gerekli malzemeler:

  • Raspberry Pi
  • Breadboard
  • DHT11 Sıcaklık ve Nem Sensörü
  • 10kΩ direnç (1 adet)
  • Jumper kablo (3 adet dişi-erkek)
Proje için devreyi aşağıdaki şekildeki gibi kuruyoruz.
Sensörün 1. bacağını güç olacağımız 1.pine, 2. bacağını topraklama için kullacağımız 3.pine, 2. bacağı sensörden alacağımız sinyal için 4.pine bağlıyoruz ve 1. ve 2. pine 10ohm luk direnç bağlıyoruz. 3. bacağı kullanmıyoruz.


Ardından Python ile programlama yapmak için

git clone https://github.com/adafruit/Adafruit_Python_DHT.git
kütüphanesini indiriyoruz. Bunun için git'in  yüklü olması gerekmektedir. Eğer yüklü değilse;

sudo apt-get install git-core
sudo apt-get update
şeklinde yüklenebilir.
Daha sonrasında;
cd Adafruit_Python_DHT
komutu ile AdaFruit_Pyhton_DHT klasörüne girilir. Gerekli olan python kurulumu ve python kütüphanelerinin kurulumu için;

sudo apt-get install build-essential python-dev

sudo python setup.py install
komutları çalıştırılır.

/home/pi/Adafruit_Python_DHT/examples klasörü altında bulunan 'AdafruitDHT.py' nı kullanarak SSH ile bağlantı yaptığınız terminal ekranına sıcaklık ve nem ölçüm sonucunu alabilirsiniz.
Bu python dosyasının çalıştırılması için kullanacağınız parametreler bağlantınıza ve sensörünüze göre değişiklik gösterebilir.

python AdafruitDHT.py 11 14

AdafruitDHT.py DHT sensörünün 11, 22 ve 2302 modellerini destekleyecek şekilde tasarlanmıştır bu yüzden hangi model sensör kullanıldığı parametre olarak verilmektedir. 14 ise sensörününüz sinyali aldığı pinin numarasıdır.

İsterseniz mevcut kodu düzenlerek sürekli bir şekilde ölçüm görüntülemesi yapabilirsiniz. Burdan sonra yapacağınız geliştirmeler size kalmıştır. İstediğiniz gibi programala ve düzenleme yapabilirsiniz.


Bu yazımda sizlere Raspberry Pi ve DHT11 kullanarak ortamdaki sıcaklık ve nemi ölçerek terminal ekranında görüntülemekten bahsettim. Arduino ile LM35 sensörü ile benzer sonucu elde edebileceğiniz blog yazıma ulaşmak için tıklayınız.

Daha sonraki yazılarımda görüşmek üzere...

Kaynaklar :

http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-the-raspberry-pi/
http://maker.robotistan.com/raspberry-pi-ile-dht11-sicaklik-nem-sensoru-kullanimi/?utm_source=newsletter3&utm_medium=blog-resim&utm_campaign=devamini-oku

MacOSX'e NMAP Kurulumu


MacOSX'inizde Brew kurulu olmasını kesinlikle tavsiye ederim.

Eğer hala HomeBrew yüklemediyseniz;
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
komutu ile yükleyebilirsiniz.

Nmap'in kurulumu;
brew install nmap
komutu ile gerçekleştirilir.
Aynı zamanda brew de olan nmap i araştırmak isterseniz;
brew search nmap
komutunu kullanabilirsiniz.

Kurulum sırasında;
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/man/de/man1/nmap.1
/usr/local/share/man/de/man1 is not writable.
Error: Could not symlink share/man/de/man1/nmap.1
/usr/local/share/man/de/man1 is not writable.

gibi bir hatalar ile karşılaşabilirsiniz. Buradaki sorun mevcut kullanıcınızın /usr/local altındaki dosyalara yazma hakkı bulunmamaktadır.  Bu yüzden kurulumu yapılmak istenilen nmap indirilmekte ancak kullanım için link kurulamamaktadır. Bunun düzenlenmesi için ise,
sudo chown -R $USER /usr/local
komutunu kullanabilirsiniz.
Daha sonrasında ise nmap kurulumu ile link kurulması için

brew link nmap
komutu çalıştırılmalıdır.

Nmap kurulumu başarılı bir şekilde gerçekleştirilmiştir.



Kaynaklar : 

https://superuser.com/questions/863954/what-is-the-recommended-way-to-get-nmap-on-osx
https://github.com/Homebrew/legacy-homebrew/issues/44938

8 Haziran 2017 Perşembe

MacOSX Python3 Kurulumu


Üzerinde çalıştığınız projelerin aynı kütüphanelerin farklı sürümlerini kullanabilmektedir.
Örneğin bir projeniz Python 2.6+ kullanırken bir başka projeniz Python 3.5+ kullanabilir.
Burada karmaşıklığı önlemek için projeleriniz için sanal çevre kullanmak en etkili çözüm olacaktır.

MacOSX nize Python 3.0+ yüklemek istiyorsanız öncelikler Brew'in kurulu olması gerekmektedir. Eğer geliştirici MacOSX kullanıyorsa Brew'in de aslında kesin yüklü olması gereklidir diyebiliriz.

HomeBrew'i yüklemek için aşağıdaki komut kullanılabilir.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Ardından ~/.bash_profile  dosyasına 

export PATH=/usr/local/bin:$PATH

satırı eklenir. Terminal ekranından

brew search python

komutu çalıştırılır. Brew'de  mevcut python kütüphaneleri listelenir. Burada python3 listelenmesi beklenmektedir.

Aşağıdaki komut kullanılarak python3 kütüphanesi yüklenebilir.

brew install python3

Buradan sonra, sanal bir çevre üzerinde python3 kütüphanesi kurularak projede kullanılılabilir.




Kaynak :

http://www.marinamele.com/2014/07/install-python3-on-mac-os-x-and-use-virtualenv-and-virtualenvwrapper.html

7 Haziran 2017 Çarşamba

macOSX python - pip install error -> 40:498 execution error



Eğer MacOS-X işletim sahip bir bilgisayar kullanıyorsanız programlama yaparken bazı kütüphane yükleme işlemlerinde farklılıklar bulunmaktadır. Python programlama yaparken kullanılacak kütüphanelerin yüklenmesi sırasında problemler yaşanabilmektedir.


Yukarıdaki resimdeki görüldüğü gibi bir, 'pip' ile yüklenmek istenilen kütüphanenin yüklenememesi hatalı bir durumla karşılaşabilirsiniz. Bunun temel sebebi aslında mac tarafından python kütüphanelerinin sadece root yetkisi ile yazılabilir ve değiştirilebilir olmasıdır.  Bu hatanın çözümü için terminal ekranın python kütüphaneleri üzerinde değişiklik yapılabilir ancak her proje için root yetkisi ile kütüphane yüklemeleri çok sağlıklı bir çözüm olmaz. Bu yüzden her projede kullanılacak Interpreter'in sanal çevre üzerinde olması tavsiye edilmektedir.

Alınan hataya karşı etkili ve kolay çözüm olarak projeniz için sanal bir çevre oluşturmak olacaktır.