17 Mayıs 2016 Salı

Intel Galileo Gen 2 ile İnternet Üzerinden Çekilen Hava Durumu Datasının LCD’de Gösterimi

T.C.
Marmara Üniversitesi
Mekatronik Mühendisliği
İlişik Sistemler Proje Çalışması - 2




Intel Galileo Gen 2 ile İnternet Üzerinden Çekilen Hava Durumu Datasının LCD’de Gösterimi





























Proje Yürütücüsü: Caner EZEROĞLU

GENEL BİLGİLER


1.1. PROJE BAŞLIĞI:

Intel Galileo Gen 2 ile İnternet Üzerinden Çekilen Hava Durumu Datasının LCD’de Gösterimi


1.2. PROJE YÜRÜTÜCÜSÜ:

Adı ve Soyadı
Caner Ezeroğlu
Üniversite
Marmara Üniversitesi
Fakülte, Enstitü veya Y.O.
Teknoloji Fakültesi
Bölümü
Mekatronik Mühendisliği



1.3. PROJENİN TEMATİK ALANI

Internet of Things


2.       MOTİVASYON


2.1.Projenin Amacı




Şekil 1: Ürün Görünümü

İnsanlar günlük aktivitelerini yerine getirmeden önce planlama yapmaları gerekmektedir. Ama her ne kadar günlük planlarımız detaylı bir şekilde düşünülmüş olsa da gün içindeki ani değişmelerle planlananlar etkilenebilir. Planların değişimi genelde dış etmenlerden dolayı gerçekleşir. Bu dış etmenlerden biri de gün içinde ani değişimlere uğrayabilen hava durumu değişiklikleridir. Günlük hayatın rahat bir şekilde devam edip düşünülen planlamaları daha kolay gerçekleştirebilmek amacıyla geliştirdiğim projemde kişilerin bu ani değişiklere uygun davranabilmesini sağlamak amaçlanmıştır. Günümüzde iş yaşamında iletişimin çok üst seviyelerde kullanılmasıyla, çalışanlar gün içinde seyahat etmesi önemli bir ihtiyaç halini almıştır. İş insanları satış, antlaşma, reklam gibi işlemlerini yerine getirebilmeleri kimi zaman hava durumunun ani değişimleri nedeniyle zor bir duruma girebilmektedir. Akıllı sistemlerle entegre edilerek oluşturulmuş bu projemde, kişilerin kendilerinin rahat bir şekilde sosyal yaşamlarını sürdürebilmesini sağlayacaktır. Bu ürünlerde kullanılan elektronik parçalar, sistemi karmaşık ve pahalı bir yapı haline getirirler. Bu nedenle yabancı kaynaklı firmalardan çok pahalıya bulabildiğimiz bu hava durumu ölçerleri, ülkemizde kendi imkanlarımızla üretim çalışmalarını gerçekleştirilmesi istenmektedir.

 Oluşturacağımız hava durumu ölçer kolay kontrol edilebilir, hafif ve maliyeti düşük olacaktır. Sistem karmaşıklığı en aza indirilecektir.














2.2.Çalışma Adımları



Şekil 2: Sistem Blok Diyagramı


Bu proje mekanik, elektronik, kontrol ve yazılım disiplinlerinin bir arada içerdiğinden projenin izleyebileceği bir plan oluşturulmuştur. Proje de giriş ve çıkışların Galileo üzerinde belirtilmesinin ardından,

·         Hava durumunu alabilmek için yapılması gereken hava durumu datasının bir adresten çekilmesi,
·         Galileoda bulunan Arduino alt yapısı ile cihaza IP atayarak sistemin kolay bir şekilde teşhis edilmesinin sağlanması,
·         Hava durumu datasını çekebilmemiz için gerekli olan algoritmaların belirlenmesi,

  İşlemleri gerçekleştirilecektir. Bu süreçte yapılan sistem tasarımının ardından,

·         Projenin isterlerine ve Galileo alt sistemine uygun LCD ekranın belirlenmesi,
·         Galileo için LCD bağlantısının karta uygun şekilde gerçekleştirilmesi, Arduino ve Galileo arasındaki entegrasyonun sağlanması,
·         Kontrol ve data işleme algoritmasının çıkartılması,
·         Kontrol ve data işleme algoritmasının Galileo işlemcisine entegre edilmesi,

  Gömülü sistemin oluşturulması sürecinin ardından, mekanik sistemin tasarlanması ve kontrolcünün gömülü sistemle entegrasyonun gerçekleşmesi gerekmektedir. Bu süreçte,

·         Projenin isterlerini karşılayan pinlerin belirlenmesi,
·         Pinlerle uyumlu çalışan algoritmanın yazılması
·         Elektronik ve mekanik sistem entegrasyonunun tamamlanıp kontrolcünün dataya ve butona verdiği tepkilerin doğrulanması,
·         Mekanik ve elektronik sistemin uyum içinde çalışmasının ardından denemeler yapılması ve parametrelerin iyileştirilmesi,



3.      PROJENİN İÇERDİĞİ YENİLİK UNSURU


 Bu proje kapsamında gerçekleştirilecek akıllı kontrol sisteminin kullanımını araştırmak için kullanılabilecek hem de çeşitli sensörler kullanılarak kontrolcü tasarımlarının denemelerinin internet üzerinden yapılabileceği bir sistem olacaktır.

Proje konusu ülkemizde üretimi ve kullanımı olmaması sebebiyle ulusal yenilik kategorisine girmektedir. Çalışan insan sayısının fazla olması, global yaşamın getirdiği sorunlar güncel bir problem olması sebebiyle proje konusunun ülkemiz adına katkısı ortadadır.

Projede geliştirilecek sistem ve yöntemler birçok yeniliği beraberinde getireceğinden üretilecek sistemin faydalı model alma potansiyeli yüksektir.



4.      PROJEDE SEÇİLEN KONTROLÖR



Şekil 3: Galileo Gen 2

Intel® Galileo Gen 2, üzerinde yüksek işlem gücüne sahip 32-bit Pentium® sınıfından, Intel®'in Quark SoC X1000 barındıran Arduino platformlarını ve çeşitli Arduino shieldlerini destekleyen bir geliştirme platformudur. ARM temelli yüksek işlem kapasitesine sahip Raspberry Pi, BeagleBone gibi kartlara alternatif olarak Intel ve Arduino iş birliği ile ortaya çıkarılan Galileo elektronik, robotik, Ar-Ge ve hobi uygulamalarında rahatlıkla kullanılabilir. 

Galileo, düşük işlem kapasitesine sahip, ancak çevre birimleri bakımından oldukça zengin olan Arduino platformunu bir üst sınıfa taşıyarak 32-bitlik işlem gücüne kavuşturmuştur. Pin yapısı Arduino Uno R3 pin yapısı ile aynı olan Galileo üzerinde 14 adet giriş/çıkış pini bulunmaktadır. Bu pinlerin 6 tanesi PWM çıkışı olarak kullanabilmektedir. 6 tane ise analog giriş pini bulunmaktadır. Pinlerle ilgili ayrıntılı bilgiye dokümanlar kısmından ulaşılabilir.

İşletim sistemi farketmeksizin bilgisayarınıza kuracak olduğunuz Arduino IDE'si ile tüm giriş/çıkışları kontrol edebilecek, microSD kart yuvası ile karta çeşitli datalar yazılıp okunabilecek, ethernet girişi ile internet bağlantısı sağlanabilecektir. Bu özelliklerin yanında USB host ve USB Client portları da bulunmaktadır. 

Galileo üzerindeki Quark SoC X1000 Intel tarafından geliştirilmiş olan tek çekirdekli, 400 MHz hızında, 32-bit ve 16 KB'lık ön belleği bulunan yüksek işlem kapasitesine sahip bir işlemcidir. Bununla beraber kart üzerinde 256 Mb'lık SRAM ve 8 Mb'lık SPI flash bulunmaktadır.  


5.      PROJEDE KULLANILAN DISPLAY

LCD(Liquid Crystal Display) yazı ve sayıları görüntülemek için kullanabileceğiniz bir sistemdir. LCD ekranın bağlantı kabloları dikkatlice takılmalıdır. Genellikle LCD uygulamalarında yapılan en büyük hata yanlış veya eksik takılan kablolardır. LCD üzerindeki pin sıralaması üretici firmaya göre değişiklik gösterebilir. Bu yüzden devre kurulumundan sonra LCD bağlantıları bir kere daha kontrol edilmelidir.
LCD ekran 5 volt ile çalışmaktadır. VCC ve GND bağlantıları buna göre yapılmalıdır. LCD'nin Vo bağlantısı, ekran üzerinde oluşacak karakterlerin görünürlüğünü ayarlamaktadır. Bu ayar ortama ve üretici firmaya göre değiştiği için Vo pini potansiyometreye bağlanır. Potansiyometrenin diğer iki ucu 5 volt ve GND'ye bağlanır. Böylece potansiyometre ile yazıların görünürlüğü ayarlanabilir. Eğer bu bağlantı düzgün bir şekilde yapılmaz ise ekran üzerinde görüntü oluşmayacaktır.
1) GND
2)5V
3) Potansiyometrenin orta bacağı
4) Dijital pin 12
5) GND
 6) Dijital pin 11
7) Bağlantı yok
8) Bağlantı yok
9) Bağlantı yok
10) Bağlantı yok
11) dijital pin 5
12) dijital pin 4
13) dijital pin 3
14) dijital pin 2
15) 5V
16) GND
Şekil 4: Bağlantı Şeması
Yukarıdaki şemaya göre devrenizi dikkatlice kurduktan sonra programlama kısmına geçebilirsiniz. LCD ekrana yazı yazabilmeniz için kullanacağınız karakterler, daha önce Arduino geliştiricileri tarafından tanımlanmıştır. Tanımlanmış karakterleri kullanabilmeniz için öncelikle LCD kütüphanesini 'LiquidCrystal.h' projenize eklemelisiniz. Kütüphane eklendikten sonra LCD'ye bağlanan Arduino pinleri programda belirtilmelidir. Setup fonksiyonu içerisinde LCD türünü de belirttikten sonra LCD ekran kullanıma hazırdır.


6.      PROJE ALGORİTMASI


Projede amacımız bir butona basıldığında Galileo'nun internette bulunan bir siteye bağlanarak bugünün hava durumunun çekilmesi ve sonrasında LCD ekrana yazılmasıdır.

Yazdığımız C kodunun setup ve loop adında iki methodu bulunuyor. Bu methodlardan "setup" kodun ilk çalışması anında çalıştırılırken "loop" methodu setup sonrası sürekli olarak çalıştırılmaktadır. Genel olarak "setup" methodunda internet ve bağlantı ayarlarını yaparken, loop methodunda butona basılma sonrası siteye bağlanma ve LCD'ye veriyi yazma işlemlerini gerçekleştireceğiz.

## SETUP

"setup" methodunda öncelikle seri porta bağlantıyı gerçekleştiriyoruz. Bunu yapma amacımız kodun ilerleyen bölümlerinde seri porta logları yazarak kodun çalışırlığını kontrol etmek.

  Serial.begin(9600);

Seri porta bağlantı sonrası network ayarlarını yapıyoruz.

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Serial.println("Attempting to configure Ethernet using Static IP");
    Ethernet.begin(mac, ip);

  }
  system("telnetd -l /bin/sh");
  system("ifconfig eth0 192.168.1.30 netmask 255.255.0.0 up");

Yukarıdaki kodlar sayesinde Galileo'nun network erişimi aktif hale getirerek eth0 interfaceine 192.168.1.30 ip'sini veriyoruz. Aynı zamanda Galileo içinde bulunan ssh sunucusunu da aktif hale getiriyoruz, bu sayede cihazımıza puty gibi bir ssh aracıyla da ulaşarak komutlar yazabiliyoruz.

  system("route add default gw 192.168.1.1 eth0");
  system("echo \"nameserver 8.8.8.8\" > /etc/resolv.conf");

Galileo'unun ip alması internete bağlanması için yeterli değildir. Galileonun internete bağlanıp hava durumu bilgisini alabilmesi için bir default route ve bir dns kaydı gerekmektedir. "Default route" cihaz bulunduğu network dışında herhangi bir networke erişmek istediğinde çıkış kapısı olarak kullanılacak makineyi göstermektedir. DNS ise alan adından ip dönüşümünü sağlayan sunucunun bilgisidir. Biz çalışmamızda google dns'i kullandık ( 8.8.8.8 ).

## LOOP

Loop methodu içinde öncelikle LiquidCrystal kütüphanesinde bulunan digitalRead methodu yardımıyla butonun mevcut state'ini okuyoruz. Buton 0 ya da 1 değerlerini alabiliyor.

  int buttonState = digitalRead(pushButton);

Butonun mevcut statüsünü ve bir önceki statüsünü buttonState ve prevState adlı iki değişkende tutuyoruz. Bu sayede digitalRead ile state'i her okuduğumuzda bir önceki state ile karşılaştırarak butona basıldığını ya da butondan el çekildiğini anlayabiliyoruz.

  if ( buttonState != prevState) {
    if ( buttonState == 0 ) {
      prevState = buttonState ;
      lcd.setCursor(0, 0);

      lcd.print("Buton kaldirildi");
      delay(1);
    } else {
      // butona basıldığında bu else bloğuna girilir. Bizim internete bağlanacağımız kodu buraya yazacağız.
    }

Butona basıldığında weather.gov sitesine bağlarak ABD'de yer alan Raleigh-Durham için hava durumu bilgisini alacağız.


      client.println("GET /xml/current_obs/KRDU.xml HTTP/1.1");
      client.println("Host: w1.weather.gov");
      client.println("User-Agent: arduino-ethernet");
      client.println("Connection: close");
      client.println();

Hava durumu bilgisini alabilmek için EthernetClient ile ilgili host'a get requesti yapıyoruz (yukarıda). Get requestinin başarılı olabilmesi için user-agent bilgisi de gerekiyor, bu yüzden arduino-ethernet olarak da user-agent bilgisini giriyoruz.

Bu aşamadan sonra client.available() methoduyla client'ın durumunu kontrol ediyoruz. Elimizde hala düzgün bir client olduğu için get requestinin cevabını serialEvent() methodu içinde okumak üzere ilgili methodu çağırıyoruz.

      while (client.available()) {

        serialEvent();
      }

serialEvent methodunda client.read ile gelen cevaptaki herbir karakteri teker teker okuyoruz. Dönen sonuç xml formatında olduğu için xml'i anlamlandırmamız gerekiyor. Bu yüzden ilk karakterden itibaren karakterleri okuyoruz; "<" karakterini gördüğümüzde gelecek karakterler bir tag'in parçası olacaktırı belirtmek için tagFlag'i true'ya set ediyoruz. Bu aşamadan sonra ">" karakterini görene kadarki tüm karakterleri tag'e ekleyerek gidiyoruz. Bu sayede "<" ve ">" arasındaki tag'i bulmuş oluyoruz.

void serialEvent() {
     char inChar = client.read();

  if (inChar == '<') {
     addChar(inChar, tmpStr);
     tagFlag = true;
     dataFlag = false;

  } else if (inChar == '>') {
     addChar(inChar, tmpStr);

     if (tagFlag) {     
        strncpy(tagStr, tmpStr, strlen(tmpStr)+1);
     }

     clearStr(tmpStr);

     tagFlag = false;
     dataFlag = true;     
    
  } else if (inChar != 10) {
     if (tagFlag) {
        addChar(inChar, tmpStr);
        if ( tagFlag && strcmp(tmpStr, endTag) == 0 ) {
           clearStr(tmpStr);
           tagFlag = false;
           dataFlag = false;
        }
     }
    
     if (dataFlag) {
        // Add data char to string
        addChar(inChar, dataStr);
     }
 

Bizim ihtiyacımız olan sıcaklık bilgisi <temp_c> taginde bulunuyor. Bu yüzden temp_c bulunduğunda ilgili veriyi LCD ekranına yazdırıyoruz. LCD'ye yazdırmak için LiquidCrystal'ın lcd methodunu kullanıyoruz. Öncelike lcd.clear ile ekranı temizliyoruz; sonra cursor'ü yani yazının yazılacağı yeri belirten belirteci 0. satır ve 0. sütuna getiriyoruz lcd.setCursor(0,0) ile; lcd.print("Hava Sicakligi") methodunu kullanarak ilk satıra "Hava Sicakligi" yazıyoruz. Benzer şekilde lcd.setCursor(0,1) yaparak belirteçi 2. satıra geçiriyoruz ve bu satıra sıcaklığı yazıyoruz.


  if (inChar == 10 ) {
     if (matchTag("<temp_c>")) {
        Serial.print(dataStr);
      lcd.clear();     
      lcd.setCursor(0, 0);
      lcd.print("Hava Sicakligi");
      lcd.setCursor(0, 1);
      lcd.print(dataStr);

     }

     clearStr(tmpStr);
     clearStr(tagStr);
     clearStr(dataStr);

     // Clear Flags
     tagFlag = false;
     dataFlag = false;
  }



LİTERATÜR TARAMASI

Bu çalışma sırasında Google, IEEE explore, Science Direct ve YÖK Tez Arşivi veri tabanlarında çeşitli anahtar kelimelerle arama yapılmıştır,

·         Stackoverflow

·         Geleceği Yazanlar LCD

·         Weather Data

·         Intel Galileo Gen 2

·         Instructables

·         Putty

·         Galileoo Gen 2 Gpio Control Using Linux


Bu çalışmada; internet ile iletişimini kurduğumuz Galileo Gen 2’yi kullanarak hava durumu datasına sahip verinin LCD ekrandan gösterilmesi amaçlanmıştır. Tasarlanan  sistem hava durumunu doğru göstermekle birlikte maliyeti de düşürülecektir.

7.      




19 Şubat 2016 Cuma

2209-B Sanayi Odaklı Lisans Bitirme Tezi Destekleme Programı Sağlamış Projem; Elektromiyografi Kontrollü Robotik Ön Kol Protez Tasarımı ve Gerçeklemesi


                                                                                                               

                                                                                                               
           
 2209-B - Sanayi Odaklı Lisans Bitirme Tezi Destekleme Programı
Proje Öneri Formu


Elektromiyografi Kontrollü Robotik Ön Kol Protez Tasarımı ve Gerçeklemesi












Tematik Alan:                                               Ortopedik Teknoloji, Protez
Proje Yürütücüsü:                                        Caner EZEROĞLU
Danışman Öğretim Üyesi:                            Yrd. Doç. Dr. İsmail TEMİZ
Proje Çıktılarını Kullanmaya Talip Kuruluş: Bia Teknoloji Tıbbi Cihazlar Arge Müh. San. ve Tic. Ltd. Şti.

GENEL BİLGİLER


1.1. PROJE BAŞLIĞI:

Elektromiyografi Kontrollü Robotik Ön Kol Protez Tasarımı ve Gerçeklemesi


1.2. PROJE YÜRÜTÜCÜSÜ:


Adı ve Soyadı
Caner Ezeroğlu
Üniversite
Marmara Üniversitesi
Fakülte, Enstitü veya Y.O.
Teknoloji Fakültesi
Bölümü
Mekatronik Mühendisliği
E-Posta Adresi
caner.ezeroglu@gmail.com

1.      PROJE HAKKINDA BİLGİLER


Projenin Özeti:


Projede kolun dirsekten ele doğru olan kısmını kaybetmiş hastanın elektromiyografi  (EMG) kontrollü üst uzuv robotik protez kol tasarımı ve kontrolü gerçekleştirilecektir. Protez kol hastanın hayatını daha kolay yaşamasına yardımcı olacaktır.

 El, ayak ve benzeri organ ya da vücut parçasının kaybı durumunda, bu organ ve vücut parçasının işlevlerini kısmen de olsa yerine getirecek olan organlara protez ismi verilir. Uzvunu kaybeden kişilerin günlük hayatta karşılaştıkları zorlukların yanında, psikolojik rahatsızlıklarda duyarlar. Oluşturulan protezler, yaşanılan zorlukları düşük düzeyde tutabilmeye yarar.

 Günümüzde prototip olmasının yanı sıra ürün seviyesinde de yer alan modern robotik protezler, üzerinde çalışılması gereken yeni teknolojilerdendir. Ülkemizde EMG tabanlı protez çalışmaları çok sınırlı düzeydedir. İleri teknoloji ürünü olan bu protezler farklı disiplinlerin ortak çalışmasını gerektiren bir konudur.




Şekil 1: EMG (Kas Hareketi Ölçüm Modülü)

 EMG sinyalleri, kas kasılması sonucu ortaya çıkan biyopotansiyel sinyallerdir (Şekil 1). EMG sinyalleri stokastik (rastlantısal) bir yapı gösterir. Sinyalin genliği 0 ile 10mV (tepe noktaları arası) ya da 0 ile 1.5mv (rms) arasında değişebilmektedir. Kullanılabilen sinyal 50 ile 500 Hz frekans aralığında yer almaktadır [1]. Yüzey elektrotlarıyla yapılan ölçümlerde kas grubu veya grupları ölçülebilir. Yüzeysel alınan elektronik sinyaller Ataletsel Ölçü Birimi (IMU) kullanılarak sistemin hassasiyeti arttırılıp hız, konum ve ivme bilgisi elde edilir. Protezin hareketi için bu sayede kapalı çevrim oluşturma ve kontrolcü parametrelerinin ayarlanması daha hassas biçimde yapılabilmektedir.
Şekil 2: IMU (Ataletsel Ölçü Birimi)

 IMU çalışma sisteminde dönüölçer,  ivmeölçer ve manyetometre yer almaktadır (Şekil 2). Bu algılayıcıların birleşmesiyle sistem hareketinde yönelim, hız ve göreceli pozisyon gibi ölçümler tek bir ünite üzerinden gerçekleştirilmektedir. İvmeölçerler üzerine düşen statik (yerçekimi) ve dinamik ivmeleri ölçebilmektedir. İvmeölçerlerin bu özelliği hem bağlı olduğu kısmın eğimini yer eksenine göre ölçmesi, hem de hareket algılayıcısı olarak kullanılmasına imkan tanımaktadır. Bu sistemde elektronik dönüölçer kullanılmaktadır. Elektronik dönüölçerler, mekanik dönüölçerler gibi ivmeye bağlı değildir. Ataletsel ölçü birimlerinde genellikle bulunan manyetometreler ise algılayıcının hassasiyetini arttırmak ve zamanla artan ölçüm hatalarını düşürmek amacıyla da kullanılabilmektedir [2]. Sisteme Kalman filtresi gibi çeşitli aktif filtreler de dahil edilebilir. Bu filtrelerin kullanılma düşüncesi ataletsel algılayıcıların yapıları gereği zamanla artan ölçüm hatalarına sebep olabilmesi ve EMG den alınan sinyallerin düzgünleştirmesine olan gereksinimden gelmektedir. Bu filtreler ataletsel ölçü birimindeki algılayıcıları ile birlikte kullanılarak zamanla artan dönüdeki ve ötelenmedeki ölçüm hatalarını en düşük seviyeye çekebilmektedir. EMG de ise algılanan işaretin protez kolu kontrol edebilmesi için anlamlı işaretlere dönüştürülmesi gerekmektedir. Bu aşamada Kalman filtresi gibi aktif filtreler kullanılarak sinyaller düzgünleştirilir [3].


Şekil 3: EMG Sensörünün Kolda Çalışma Yapısı

        EMG den alınan işaretlerin genliği çok düşük seviyelerde olduğundan dış kaynaklı gürültülere oldukça açık durumdadır. Sinyal gürültüsünü düşük seviyelerde tutmak ve SNR değerini arttırmak amacıyla diferansiyel yükselteçler (fark yükselteçleri) kullanılmaktadır. EMG çalışmasında sinyallerin algılanması iki ayrı noktadan yapılmaktadır (Şekil 3).  EMG sinyal işleme aşamasında bir fark yükseltici, bant geçiren filtre ve sinyal doğrultucu kullanılır.  Günümüz teknolojisinde uygulayacağımız sinyal çıkartma işleminin yapımı çok güçtür. Fark yükselteçlerinin çıkartma doğruluğu CMRR (ortak fark reddetme oranı) ile belirlenmektedir. Koldan elektrotlarla alınan EMG sinyalleri fark yükseltici ile belirli bir kazanç oranında yükseltilerek bant geçiren filtreden geçirilir. Bant geçiren filtre ile elektronik devre elemanlarından, kol hareketinden ya da çeşitli çevresel etkilerden kaynaklanan gürültü büyük oranda yok edilir. Elde edilen analog sinyaller doğrultularak işlemcinin ADC ayrık zamanlı sinyallere çevrilir. Mikrokontrolör gibi sinyal işleme kapasitesine sahip işlemcilerle anlamlı sinyaller elde edilip kontrol döngüleri ve deyimleri kullanılarak eyleyicilere hareket bilgileri iletilir. Protezin hareketi bu şekilde sağlanır. 




Şekil 4: Vücut Yüzeyleri

        Proje de dirsek üzerinden ampute kişiye protez kol tasarımı gerçekleştirilecektir. Hastanın güdük kısmında kalan biseps ve triseps kasları üzerinden EMG sinyalleri ile veri alınacaktır. İki kasın ölçümü için iki kanal yüzeysel EMG probu kullanılacaktır [4]. Bisepsin kasılmasıyla birlikte birinci EMG sensörü tetiklenir.  Bu sensörden alınan veri ile sagital düzlem üzerinde dirsek ekleminin dönüşü sağlanır. Böylece hasta protez kolun sagital düzlem üzerinde yukarı ve aşağı hareketlerini gerçekleştirebilecektir.  Protez kol bileği trisepsin kasılmasıyla da birlikte Coronal düzlem üzerinde bir dönme işlemi gerçekleştirecektir.

 Ülkemizde üretimi bulunmayan bu protezlerin dünya çapında kullanımına başlanmıştır. Ülkemizde de etkin olarak kullanılması gereken bu teknolojinin prototip uygulaması, projede gerçekleştirilecektir.

Anahtar Kelimeler:  Üst Uzuv Robotik Protez Kol, EMG, IMU


















































































































































2. MOTİVASYON


2.1.Projenin Amacı

 Uzuv kaybı yaşamış insanlar günlük aktivitelerini yerine getirirken güçlükler yaşar ve başka bireylere ihtiyaç duyarlar. Bu nedenle özgürlükleri kısıtlanarak toplumdan kendilerini soyutlarlar. Günümüzde kullanılan robotik olmayan protezler, insan uzvunun işlevlerini yerine getirebilmekten çok uzaktırlar. Akıllı sistemlerle entegre edilerek oluşturulacak bu protezler, kişilerin kendilerinin rahat bir şekilde sosyal yaşamlarını sürdürebilmesini sağlayacaktır. Bu ürünlerde kullanılan elektronik parçalar, sistemi karmaşık ve pahalı bir yapı haline getirirler. Bu nedenle yabancı kaynaklı firmalardan çok pahalıya bulabildiğimiz bu robotik protez kolları, ülkemizde kendi imkanlarımızla üretim çalışmalarını gerçekleştirilmesi istenmektedir.

 Oluşturacağımız robotik kol kolay kontrol edilebilir, hafif ve maliyeti düşük olacaktır. Sistem karmaşıklığı en aza indirilecektir. Konum algılayıcıları ve eyleyicilerle kontrol edilen, değişken hasta parametrelerine uyum sağlayarak geniş hasta kitlelerine ulaşan bir sistem oluşturulacaktır.




















2.2.Çalışma Adımları



 Bu proje mekanik, elektronik, kontrol ve yazılım disiplinlerinin bir arada içerdiğinden projenin izleyebileceği bir plan oluşturulmuştur. Proje de iki serbestlik derecesine sahip sistemin çalışma isterlerinin belirlenmesinin ardından,

·         EMG için yapılması gereken analog işaret manipülasyonlarının belirlenmesi,
·         EMG için analog filtre ve ADC kartının hazırlanması,
·         EMG için gerekli sayısal işaretleme algoritmalarının belirlenmesi,

  İşlemleri gerçekleştirilecektir. Bu süreçte yapılan EMG kartının tasarımının ardından,

·         Projenin isterlerine ve EMG alt sistemine uygun işlemcinin belirlenmesi,
·         İşlemci için IMU ve EMG entegrasyonun sağlanması,
·         Kontrol ve sinyal işleme algoritmasının çıkartılması,
·         Kontrol ve sinyal işleme algoritmasının seçilen işlemciye entegre edilmesi,

  Gömülü sistemin oluşturulması sürecinin ardından, mekanik sistemin tasarlanması ve kontrolcünün gömülü sistemle entegrasyonun gerçekleşmesi gerekmektedir. Bu süreçte,
·         Projenin isterlerini karşılayan eyleyicilerin belirlenmesi,
·         Eyleyiciler ve algılayıcılarla uyumlu kol protezinin tasarlanması
·         Elektronik ve mekanik sistem entegrasyonunun tamamlanıp kontrolcünün sinyallere verdiği tepkilerin doğrulanması,
·         Mekanik ve elektronik sistemin uyum içinde çalışmasının ardından denemeler yapılması ve parametrelerin iyileştirilmesi,



2.3.Proje Çıktısını Kullanmaya Talip Olan Kuruluş


  Bia Teknoloji Tıbbi Cihazlar Arge Müh. San. ve Tic. Ltd. Şti. 2015 yılı Haziran ayında robotik rehabilitasyon sistemleri üreten bir firma olarak faaliyet yürütmek amacıyla Makine Mühendisi Kemal Eren Cengiz ve Makine Mühendisi Hüseyin Ergin önderliğinde Sanayi Bakanlığı’ndan alınan Tekno Girişim Sermaye Desteği ile İstanbul’da kurulmuştur. Şirkette şuan Makine Mühendisi Enes Adanır ve Fizyoterapist Kamil Yılmaz ile birlikte dört kişi çalışmaktadır.
·         Şirketin Vizyonu: Medikal ve Rehabilitasyon teknolojilerini; müşteri odaklı Ar-Ge çalışmaları ile ileriye taşıyarak, dünya çapında bilinen ve yön belirleyen bir firma olmaktır.
·  Şirketin Misyonu:  Medikal ve Rehabilitasyon Teknolojileri alanında müşterilerimizin ihtiyaç ve beklentilerine uygun; uluslararası kalite standartları çerçevesinde ileri teknoloji, ergonomik ve estetik ürünler üretmektir.





















3.3.Proje Çıktısının Şirkete Katkısı

 Bia Teknoloji ile gerçekleştireceğimiz bu proje ile şirket gelecekte ürün yelpazesine katmayı düşündüğü robotik protezlerin ön araştırmasına başlayacaktır. Hastanın kas sinyalleriyle kontrol edeceği protez kolun çalışması incelenecek ve cihazların kullanımının nasıl olacağı tartışılacaktır. EMG ile protez kolun kontrolünün kolaylaştırılması sağlandığında, bu protez sistemlerinin ülkemizde üretilebilmesi, ülkemize katma değer katmasının yanında kullanacak kişilerin topluma kazandırılması, özgüvenlerinin arttırılması gibi olumlu sonuçlarda sağlanacaktır. Kendi araştırma ve imkanlarımızla üretilecek protez ekonomik açıdan daha düşük maliyetlere üretilecektir.


3.      PROJENİN İÇERDİĞİ YENİLİK UNSURU


 Bu proje kapsamında gerçekleştirilecek robotik sistem prototipi, hem EMG kontrollü protez kolların kullanımını araştırmak için kullanılabilecek hem de çeşitli sensörler kullanılarak kontrolcü tasarımlarının denemelerinin yapılabileceği bir sistem olacaktır.

Proje konusu ülkemizde üretimi ve kullanımı olmaması sebebiyle ulusal yenilik kategorisine girmektedir. Uzvunu kaybetmiş insan sayısının fazla olması ve robotik protezlerin araştırma konusu olarak güncel bir problem olması sebebiyle proje konusunun ülkemiz adına katkısı ortadadır.
Projede geliştirilecek sistem ve yöntemler birçok yeniliği beraberinde getireceğinden üretilecek sistemin faydalı model alma potansiyeli yüksektir.















1.      PROJEDE KULLANILAN YÖNTEM VE METODLAR



Şekil 5: Sistem Blok Diyagramı

 Kontrolcü protezin konumuna göre gerekli hareket değerlerini üretir ve geri beslemeyle dönen bilgilerin yönetimini sağlar. Öncelikli olarak antropometrik veriler ışığında ve mevcut sistemler incelenerek gerekli hasta parametreleri belirlenecektir. Prototip sistemin mekanik tasarımı için CAD programı kullanılacaktır ve kavramsal tasarım tamamlandıktan sonra parça malzemeleri bu aşamada belirlenecektir. Projemizde EMG pedlerinden alınacak sinyallerin EMG kartlarına gönderilip işlendikten sonra işlemcide protezin yöneteceği verilere çevrilir [5]. Protez yönetimi IMU’dan gelen verilerle de eşlenip yorumlanarak, istenilen hareketin en iyi şekilde gerçekleştirilmesi sağlanır. Kısaca; kaslardan alınan veriler bu sayede komut olarak algılanır. Alınan komutlar protezin konumuna göre yorumlanarak oluşturulabilecek en iyi protez yönetimi gerçekleştirilir.























1.      LİTERATÜR TARAMASI


Bu çalışma sırasında IEEE explore, Science Direct ve YÖK Tez Arşivi veri tabanlarında çeşitli anahtar kelimelerle arama yapılmıştır,

·         EMG Controlled Prosthetic

·         Surface Electromyography in Biomechanics

·         Recording Electrical Signals from Human Muscle

·         IMU Applications

·         EMG Signal Filter

·         Microsensor Issues for Mechatronics Systems

Bu çalışmada; EMG sinyalinin genliği kullanılarak iki serbestlik derecesine sahip protez kol sisteminin yapılması amaçlanmıştır. Tasarlanan protez hareketleri doğru olarak kontrol edilmekle birlikte maliyeti de düşürülecektir. Sistemimizde kullanılacak olan IMU teknolojisi üreteceğimiz protez kolun diğer protez kollara göre kullanım kolaylığı sağlayacaktır.

Temel protez denetim işlevini ayırt edebilmek için sinyal genliği, EMG frekans karakteristiği, EMG model katsayıları gibi öznitelikler kullanılabilir. Sınıflama amacı ile de doğrusal ayrım analizi, yapay sinir ağları ve bulanık mantık gibi sınıflandırıcılar kullanılabilmektedir. Bu çalışmada, öznitelik olarak EMG sinyal genliği ve karar aşaması için eşik değerliği kullanılacaktır. Bunun nedeni ise mikrokontrolör tabanlı sistemde gerçeklemenin kolay olmasıdır.

2.      KAYNAKÇA


1.       The Use of Surface Electromyography in Biomechanics [1]
 Carlo I. De Luca
 1997 IEEE - Sayfa: 135-163

2.       CMOS A/D Conventer Implementation for IMU Applications [2]
 Ömer Lütfi Nuzumali
 2013 YÖK Tez Arşivi

3.       Optimization of Rule Weights and Membership Functions of Fuzzy Controller Using Extended Kalman Filter  [3]
Nasser ARGHAVANI
2013 YÖK Tez Arşivi

4.      Gesture Based Universal Controller Using EMG Signals [4]
Rishabh Berlia, Shubham Kandoi, Sarthak Dubey, Theja Ram Pingali
2014 IEEE - Sayfa: 166-168
5.      Sensor Technologies and Microsensor Issues for Mechatronics Systems [5]
Ren C. Luo
1996 IEEE - Sayfa: 39-49

15 Nisan 2015 Çarşamba

MSP430 G2553 kontrolörünü kullanarak L293D entegresiyle DC Motor Kontrolü



PWM (Sinyal Genişlik Modülasyonu) Tekniği Nedir?




Modülasyon işlemi gerçekleştiren bu tekniğin asıl amacı cihazlara verilen elektriğin gücünü kontrol altında tutmaktır. Sinyal bilgisinin aktarım için uygun hale çevirilmesi amacının yanı sıra güç kontrolü sağlamak ve elektrik makineleri, güneş pili şarj üniteleri gibi özel devrelere destek olmak amacı da taşır.







ROBOTİKTE SIK KULLANILAN MOTOR SÜRÜCÜ ENTEGRELER







Mikrodenetleyicilerin çıkışları DC motorları veya step motorları direkt olarak kontrol etmek için yetersiz olduğundan motor sürücü devreler kullanılır. Motor sürücü devreler ile mikrodenetleyicilerin çıkışlarından alınan sinyaller yükseltilerek motorların kontrolü sağlanır. Motor sürücü devreler transistörler kullanılarak H köprüsü ve benzeri şekillerde hazırlanabilir. Ancak genellikle kolaylık açısından motor sürücü entegre devreler tercih edilmektedir.




Robotikte en sık kullanılan motor sürücü entegre devreler; DC motor kontrolleri için L293D, L293B, L298 motor sürücü entegrelerdir. Motor sürücü entegre seçiminde temel özellik entegrenin kullanım voltajı ve akım sınırı gibi özellikleridir.




L293D ile DC Motor Kontrolü

Neden?
L293D, denetim kartlarının yüksek voltaj ve akım gereksinimi olan elemanları (motor,röle) kontrol etmesi için kullanılır. Motorun ihtiyaç duyduğu akım, denetim kartının verebileceğinden fazla olduğundan, voltajı ve akımı artırmak için sürücü devreleri kullanılmalıdır, aksi takdirde denetim kartının yanmasına sebep olunabilir.

Özellikler:
- Sağ ve sol tarafının bağımsız çalışması
- 1 adet L293D iki motoru çift yönlü kontrol edebilir



Devrenin kurulması:
- Ilk olarak, 4-5-12-13 nolu bacaklar(entegrenin tam ortasındakiler birleştirilip, toprak olarak kullanılmalıdır.
- Motorlar, 3-6 ve 11-14 nolu bacaklara bağlanır.
- 1-16-9 nolu bacaklara 5 Volt verilir.
- 2 ve 7 nolu bacaklar 1. motoru, 10 ve 15 nolu bacaklar 2. motoru çalıştırır.
- 8 nolu bacaktan, motora uygulanacak voltaj verilir (36 V’dan fazla olmamalıdır).






MSP430 G2553 7 Segment Display Code and Running




#include <msp430.h>

void kucuktenBuyuge(void); // Küçükten büyüğe sayar.
void buyuktenKucuge(void); // Büyükten küçüğe sayar.
void sayiGoster(int); // O anki sayıyı displayde gösterir.
void bekle(void); // Sayılar arası bekleme.
int i;
long int delay;
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  P1DIR = 0xFF; // P1 çıkış olarak ayarlandı.
  P1OUT = 0x3F; // 0 sayısı displaye basıldı.
  P1OUT = 0x00; // 0 sayısı displaye basıldı.
  P1OUT = 0x86; // 0 sayısı displaye basıldı.


  while(1) // Sonsuz döngü.
  {
    kucuktenBuyuge(); // Fonksiyonlar çağrılıyor.
    buyuktenKucuge();
  }
}

void kucuktenBuyuge(void)
{

  for (i = 0 ; i < 9 ; i++) // 0'dan 9'a kadar sayar.
  {
    sayiGoster(i); // O anki sayıyı basması için fonksiyonu çağırır.
    bekle(); // Bir süre bekle.
  }
}

void buyuktenKucuge(void)
{

  for (i = 9 ; i > 0 ; i--) // 9'dan 0'a kadar sayar.
  {
    sayiGoster(i); // Sayının basılması için fonksiyon çağırır.
    bekle(); // Bir süre bekle.
  }
}

void sayiGoster(int sayi)
{
  switch(sayi) // Gelen sayı kaç?
  {
    case 0 : P1OUT = 0x3F; break; // Sayı 0 ise ilgili pinler ayarlanır.
    case 1 : P1OUT = 0x86; break; // 1
    case 2 : P1OUT = 0x5B; break; // 2
    case 3 : P1OUT = 0xCF; break; // 3
    case 4 : P1OUT = 0x66; break; // 4
    case 5 : P1OUT = 0xED; break; // 5
    case 6 : P1OUT = 0xFD; break; // 6
    case 7 : P1OUT = 0x07; break; // 7
    case 8 : P1OUT = 0xFF; break; // 8
    case 9 : P1OUT = 0xE7; break; // 9
    default : P1OUT = 0x0D; break; // Hata oluştu, displayde 'E' harfini göster.
  }
}

void bekle(void)
{

  for(delay = 0 ; delay < 20000 ; delay++); // Hiçbir işlem yapmadan bekle.
}
















Ros2 çalışmaları

 1) Her saniye yazı yazdırma. Eklediğim kod öncelikle Hello Cpp Node yazdıracak ardınca Hello ekleyecek. benim .cpp dosyamın adı my_first_no...