Ana Sayfa Arduino Konuşma Engelliler İçin El Hareketlerini Yazıya ve Sese Çeviren Eldiven

Konuşma Engelliler İçin El Hareketlerini Yazıya ve Sese Çeviren Eldiven

13 min read
2
1
3,157

Merhaba Arkadaşlar bu yazımda sizlere Sakarya Üniversitesi Mekatronik Mühendisliği Bitirme Tezi olan projemi anlatacağım.Türkiye’de ve Dünya’da engellilerin sahip oldukları fiziksel işlev bozuklukları nedeniyle topluma tam anlamıyla katılmalarında sorunlar oluşmaktadır. Gerek günlük hayatta gerekse iş hayatına sınırlı ölçüde katılabilen engellilerin sınırları aşması, iletişimlerini ve hayatlarını kolaylaştırması için ’El Hareketlerini Yazıya ve Sese Çeviren Eldiven’  projesi yapılması amaçlanmıştır.Bu proje yapılırken işaret dili model alınmıştır. İşaret dili, işitme engellilerin kendi aralarında iletişim kurarken, el hareketlerini ve yüz mimiklerini kullanarak oluşturdukları görsel bir dildir.

 

Proje’de bir G/Ç kartı ve Processing/Wiring dilinin bir uygulamasını içeren geliştirme ortamından oluşan fiziksel programlama platformu olan Arduino Mega kartı kullanılmıştır. Arduino’nun bu proje’de tercih edilmesini sağlayan en önemli nedeni mikrodenetleyici konusunda detaylı bilgi sahibi olmayı gerektirmeden herkesin programlama yapabilmesini sağlayan Arduino kütüphaneleridir.Proje’de bir çok farklı arduino kütüphanesi kullanılmıştır.Projemiz iki kısımdan oluşmaktadır.

ekran_arduino_mega

 

İlk kısım elimize giyeceğimiz eldivendir.Eldivenin üzerinde her parmak için ayrı ayrı Flex(esneklik) sensörleri bulunmaktadır.Flex(esneklik) sensörleri esnedikçe sensör üzerindeki dirençte artmaktadır.Flex sensörünün direnci metal pedler kıvrımın dışında olduğunda değişmektedir.Eldivenin üzerinde ayrıca bir adet eldivenin sağa,sola,aşağı,yukarı gibi konum değişikliklerinin ayırt edilmesi amacıyla IMU sensörünü de bulunmaktadır.Flex sensör ve IMU’dan alınan ortak verilere göre elimizin hareketi bir kelime olarak ikinci kısım olan Ekran ve Hoparlöre aktarılır.Kelime ekranda yazı olarak , hoparlörden ise ses olarak karşıdaki insana aktarılır.

akıllı_Eldiven

 

Projenin ikinci kısmı Ekran ve Hoparlörden oluşmaktadır. Birinci kısımdaki sensörlerden gelen bilgilere göre bu kısımda çıkış işlemleri yapılmaktadır.Kelimeler ekranda yazı olarak,Hoparlörden ise ses olarak çıkmaktadır.Ses çıkarma işlemini yapabilmek için Sd Karta ihtiyacımız bulunmaktadır.Sd Karta kayıt ettiğimiz  .Wav uzantılı dosyalar sesnsörlerden gelen verilere göre çıkış vermektedir.

eldiven_sayfa

 

Proje Maliyet Hesabı

Konuşma Engelliler İçin El Hareketlerini Yazıya ve Sese Çeviren Eldiven projesinde temelde  sensörler ve mikroişlemci olmak üzere birçok araç ve gereç kullanılmıştır.Bu elemanlar kullanılırken maliyet minumum seviyede tutulmak istenmiştir.Aşağıda Projenin maliyet hesabı gösterilmiştir.

maliyet

 

Ptojenin kodlarını aklınızda bir fikir olması açısından aşağıda paylaştım.Fikir ve sorularınzı çekinmeden sorabilirsiniz.Bir dahaki yazıda görüşmek üzere:)


#include <UTFT.h> // TFT Ekran Kütüphanesi
#include<Wire.h> // I2C fonksiyonlarını kullanabilmek için Wire.h kütüphanesi
#include <SD.h> // SD Card Kütüphanesi
#include <TMRpcm.h> // Hopörlörü Kullanbilmek için gerekli kütüphane
#include <SPI.h> // SPI fonksiyonlarını kullanabilmek için SPI.h kütüphanesi

#define CSpin 4
TMRpcm tmrpcm;

const int MPU=0x68;//MPU-6050'nin I2C haberleşme adresi
int AcZ_value;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;// IMU'dan alınacak değerlerin kaydedileceği değişkenler

int sensor1,sensor2,sensor3,sensor4,sensor5; // Her bir parmak için kullanılacak olan flex sensorlerin değerlerinin okunacağı değişkenler

extern uint8_t SmallFont[]; //Kullanilan UTFT ekrani icin gerekli tanimlamalar
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
UTFT myGLCD (ITDB32S,38,39,40,41);

void setup(){

Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
Wire.write(0); // MPU-6050 çalıştırıldı
Wire.endTransmission(true);
// I2C haberleşmesi başlatıldı ve MPU-6050'nin ilk ayarları yapıldı

tmrpcm.speakerPin = 11; //Eğer arduino uno kullanıyorsanız 9, mega ise 11 yazın
Serial.begin(9600); // serial açılıyor

if (!SD.begin(CSpin)) { //kart başlatılamazsa
Serial.println("SD Kart yok yada baglanti basarisiz");
return; // programı sonlandırır
}
Serial.println("SD Kart baglandi");
tmrpcm.volume(1); // 1 açık, 0 kapalı (Mute)
tmrpcm.setVolume(7); // Ses düzeyi 0-7 arası olabilir.

myGLCD.InitLCD();
myGLCD.clrScr();

}

void loop(){

verileriOku();//IMU'dan değerler okundu

Serial.print("ivmeX = ");
Serial.print(AcX);
Serial.print(" | ivmeY = ");
Serial.print(AcY);
Serial.print(" | ivmeZ = ");
Serial.print(AcZ);
Serial.print(" | GyroX = ");
Serial.print(GyX);
Serial.print(" | GyroY = ");
Serial.print(GyY);
Serial.print(" | GyroZ = ");
Serial.println(GyZ);

AcZ_value = map(AcZ, 0, 17000, 0,255);
Serial.print(" | AcZ_value = ");
Serial.println( AcZ_value);

sensor1= analogRead(0);
sensor1=map(sensor1, 700, 900, 0,255);
Serial.print("analog input1: ");
Serial.print(sensor1,DEC);

sensor2= analogRead(1);
sensor2=map(sensor2, 700, 900, 0,255);
Serial.print("analog input2: ");
Serial.print(sensor2,DEC);

sensor3= analogRead(2);
sensor3=map(sensor3, 700, 900, 0,255);
Serial.print("analog input3: ");
Serial.print(sensor3,DEC);

sensor4= analogRead(3);
sensor4=map(sensor4, 700, 900, 0,255);
Serial.print("analog input4: ");
Serial.print(sensor4,DEC);

sensor5= analogRead(4);
sensor5=map(sensor5, 700, 900, 0,255);
Serial.print("analog input5: ");
Serial.print(sensor5,DEC);

delay(1000);

//Sensorlerden okunan değerlere göre ekrana yazılar yazılıp,Sd Card'a kayıtlı ses dosyaları yürütülmektedir.

if (sensor1>150){

myGLCD.clrScr();
myGLCD.setColor(65,255,0);
myGLCD.setBackColor(125,35,50);
myGLCD.fillScr(30,60,120);
myGLCD.setFont(BigFont);
myGLCD.print("MERHABA",CENTER,90);
tmrpcm.play("merhaba.wav"); // Wav dosyasını yürüt
delay(1000);
}

else if ((sensor2 > 112) && (AcZ_value < 100) ){

myGLCD.clrScr();
myGLCD.setColor(65,255,0);
myGLCD.setBackColor(125,35,50);
myGLCD.fillScr(30,60,120);
myGLCD.setFont(BigFont);
myGLCD.print("NASILSIN",CENTER,90);
tmrpcm.play("nasilsin.wav"); // Wav dosyasını yürüt
delay(1000);
}
else if (sensor3 > 112) {

myGLCD.clrScr();
myGLCD.setColor(65,255,0);
myGLCD.setBackColor(125,35,50);
myGLCD.fillScr(30,60,120);
myGLCD.setFont(BigFont);
myGLCD.print("IYIYIM",CENTER,90);
tmrpcm.play("iyiyim.wav"); // Wav dosyasını yürüt
delay(1000);
}
else if (sensor4 > 100 ){

myGLCD.clrScr();
myGLCD.setColor(65,255,0);
myGLCD.setBackColor(125,35,50);
myGLCD.fillScr(30,60,120);
myGLCD.setFont(BigFont);
myGLCD.print("IYI GUNLER",CENTER,90);
tmrpcm.play("iyignler.wav"); // Wav dosyasını yürüt
delay(1000);
}
else{
Serial.println("boş");
}
}
void verileriOku(){

Wire.beginTransmission(MPU);
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(MPU,14,true);

/*
* Sırası ile okunan her iki byte birleştirilerek sırası ile değişkenlere yazdırıldı
* Böylece IMU'dan tüm değerler okunmuş oldu
* 0X3B adresi imu değerlerinden ilk sensörün değerine denk gelmektedir.
* IMU'dan tüm değerlerin okunabilmesi için bu adresten başlandı
*/

AcX=Wire.read()<<8|Wire.read();
AcY=Wire.read()<<8|Wire.read();
AcZ=Wire.read()<<8|Wire.read();
Tmp=Wire.read()<<8|Wire.read();
GyX=Wire.read()<<8|Wire.read();
GyY=Wire.read()<<8|Wire.read();
GyZ=Wire.read()<<8|Wire.read();

}
Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Muhammet Özcan
Daha Fazla Göster -  Arduino

2 Yorumlar

  1. Emre

    24 Nisan 2017 at 10:28

    Selam ben namik kemal unuversitesinde elektronik bolumunde ogrenim gormekteyim.bzimde bi bitirme projesine ihtiyac duymakyatim ve bircok proje arastirdim ve olmadi ya hocam kabul etmedi yada ben yapamadim bana onerebileceginiz bi proje varmidir acaba cokk acill ihtiyacim var:-(

    Reply

    • Bilal Kaya

      Bilal Kaya

      24 Nisan 2017 at 14:17

      merhabalar Emre,

      iot konuları ile alakalı bir proje yapabilirsiniz aslında.Akıllı buzdolabı,akıllı otopark gibi projeler olabilir mesela 🙂

      Reply

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Beyin Bilgisayar Arayüzü ile Hayvan Hareketinin Kontrolü

2009 yılında vizyona giren Bilimkurgu filmi olan Avatar’da bir insan uzaylıyı kontrol ediy…