Arduino Kullanarak Körler İçin Akıllı Çubuk Nasıl Yapılır?
Helen Keller'in şu sözlerine güçlü bir şekilde inanıyorum: "Kör olmaktan daha kötü olan tek şey, görme yetisine sahip olmakla birlikte görmemek". Teknoloji, engellilerin diğer insanlar gibi normal bir yaşam sürmelerine yardımcı olabilir. Herkes adındaki Hintli kızı bilir Arunima Sinha Bir tren kazasında bacağını kaybeden ve hayatının geri kalanında protez bacaklar üzerinde yürümek zorunda kalan kadın. Kazadan sonra, Everest Dağı'na protez ayaklarla tırmanmaya karar verdi ve bu nedenle, en son teknoloji hayalini gerçekleştirmesinin yolunu açtı.
Teknoloji gerçekten de insan engelliliğini etkisiz hale getirebilir; bunu aklımızda tutarak gücümüzü kullanalım Kör adamın sopası yapmak için arduino ve basit sensörler görme engelli kişiler için cankurtaran olabilir. Bir kişinin herhangi bir engelden uzaklığını algılayacak bir çubuğa bir Ultrasonik sensör, ışık koşullarını algılamak için bir LDR ve kör adamın çubuğunu uzaktan bulmak için kullanabileceği bir RF uzaktan kumanda yerleştirilecektir. Kör adama bir Buzzer ile tüm talimatlar verilecektir. Buzzer yerine vibratör motoru kullanabilir ve yaratıcılığımızı kullanarak çok daha ileriye gidebiliriz.
Devre Tasarımında Arduino Nasıl Kullanılır?
Artık projenin özetini bildiğimize göre, ilerleyelim ve çalışmaya başlamak için farklı bilgiler toplayalım. Önce bileşenlerin bir listesini çıkaracağız, sonra bunları kısaca inceleyeceğiz, ardından tüm bileşenleri bir araya getirerek çalışan bir sistem oluşturacağız.
Adım 1: Gerekli Bileşenler (Donanım)
Adım 2: Kullanılan Bileşenler (Yazılım)
3. Adım: Bileşenlerin İncelenmesi
Şimdi, bu projede kullanacağımız tüm bileşenlerin bir listesini çıkardık. Bir adım daha ileri gidelim ve tüm ana bileşenlerin kısa bir incelemesine geçelim.
- Arduino Nano: Arduino nano, bir devredeki farklı görevleri kontrol etmek veya gerçekleştirmek için kullanılan bir mikrodenetleyici kartıdır. Biz yakarız C Kodu Arduino Nano'da mikrodenetleyici kartına nasıl ve hangi işlemlerin gerçekleştirileceğini anlatın. Arduino Nano, Arduino Uno ile tamamen aynı işlevselliğe sahiptir, ancak oldukça küçük bir boyuttadır. Arduino Nano kartındaki mikrodenetleyici, ATmega328p.
- Ultrasonik Sensör HC-SR04: HC-SR04 kartı, iki nesne arasındaki mesafeyi belirlemek için kullanılan ultrasonik bir sensördür. Bir verici ve bir alıcıdan oluşur. Verici, elektrik sinyalini bir ultrasonik sinyale dönüştürür ve alıcı, ultrasonik sinyali tekrar elektrik sinyaline dönüştürür. Verici bir ultrasonik dalga gönderdiğinde, belirli bir nesneyle çarpıştıktan sonra yansır. Mesafe, ultrasonik sinyalin vericiden alıp alıcıya geri dönmesi için geçen süre kullanılarak hesaplanır.
- 433 mhz RF verici ve alıcı: 433MHz'lik belirli bir frekansta çalışır. Piyasada pek çok başka radyo frekansı cihazı mevcuttur ve bunlara kıyasla bir RF modülünün performansı, vericinin gücünü artırdığımız zaman büyük bir iletişim mesafesi elde edilecek gibi birkaç faktöre bağlı olacaktır. Verici cihazda yüksek bir elektrik gücü tüketimine neden olur ve bu da pille çalışan cihazların daha kısa bir çalışma ömrüne neden olur. Bu cihazı daha yüksek iletim gücünde kullanırsak, cihaz diğer RF cihazlarıyla parazit oluşturacaktır.
- 7805 Voltaj regülatörü:Elektrik devrelerinde voltaj regülatörleri çok önemlidir. Giriş voltajında dalgalanma olsa bile, bu voltaj regülatörü sabit bir çıkış voltajı sağlar. Projelerin çoğunda 7805 IC'nin uygulamasını bulabiliriz. 7805 adı iki anlamı ifade eder, "78" pozitif voltaj regülatörü ve "05" çıkış olarak 5V sağladığı anlamına gelir. Dolayısıyla voltaj regülatörümüz + 5V çıkış voltajı sağlayacaktır. Bu IC, 1.5A civarında akımı idare edebilir. Daha fazla akım tüketen projeler için bir Soğutucu tavsiye edilir. Örneğin, giriş voltajı 12V ise ve 1A tüketiyorsanız, (12-5) * 1 = 7W. Bu 7 Watt ısı olarak dağıtılacaktır.
Adım 4: Devrenin Montajı
Bu proje için iki devre tasarlamamız gerekecek. İlk devre kör bir adamın sopasında uygun bir yere yerleştirilecek ve ikincisi bir RF verici devre ve ana devreyi bulmak için kullanılacaktır. Devreyi Proteus üzerinde tasarlamadan önce, yazılıma RF alıcısının proteus kitaplığını dahil etmemiz gerekir. Kütüphaneyi buradan indirebilirsiniz ve indirdikten sonra kütüphaneyi açabilirsiniz. Kütüphane klasör ve kopyala MODULO_RF.LIB dosyasını açın ve Proteus'un Kitaplık klasörüne yapıştırın. Kitaplık klasörünü bulamazsanız, (C: \ Program Files (x86) \ Labcenter Electronics \ Proteus 8 Professional \ LIBRARY) üzerine tıklayın. Bu açık MODELS klasörünü yaptıktan sonra RX.MDF'yi kopyalayıp proteus MODELS klasörüne yapıştırın. Modeller klasörünü bulamazsanız, (C: \ Program Files (x86) \ Labcenter Electronics \ Proteus 8 Professional \ MODELS) seçeneğine tıklayın.
Devredeki tüm sensörleri kontrol etmek için kullanılacak mikrodenetleyici, Arduino Nano. Devrenin çalışması için kullanılan güç kaynağı 9V pildir ve bu 9V voltaj, bir 7805 Voltaj regülatörü. Devrede görülebileceği gibi Ultrasonik sensör voltaj regülatörünün Vout'u tarafından desteklenmektedir. Sensörün tetik ve yankı pinleri sırasıyla Arduino'nun 3. ve 2. pinlerine bağlanır. Hafif Bağımlı Direnç (LDR), 10k değerindeki potansiyometreye bağlanır ve Analogdan Dijitale Arduino'nun A1 dönüşüm pini, voltaj farkını not etmek için bu noktaya bağlanır. RF alıcısı tarafından yayılan sinyali bilmemiz gerekir, böylece RF alıcısından gelen sinyali okumak için ADC pini A0'a bağladık. Tüm devrenin çıkışı tarafından verilir zil böylece buzzerin pozitif pini Arduino'nun pim 12'sine bağlanır ve negatif pini ultrasonik sensörün toprağına bağlanır.
RF vericiyi donanım üzerine ayrı olarak monte edeceğimiz için devre şemamıza dahil etmedik. 433 MHz süperheterodin verici ve alıcı kullandığımızda, bunlarla arayüz oluşturacak bir mikrodenetleyiciye ihtiyacımız var, ancak bu projede alıcıya sinyal göndermek için tek vericiye ihtiyacımız var, bu nedenle vericinin veri pinini Vcc ile bağladık. Alıcının veri pini RC filtresinden geçirilir ve ardından sırasıyla Arduino'nun A0 veri pinine bağlanır. Verici üzerinde bulunan butona tekrar tekrar basacağız ve butona basıldığında alıcı çıkış olarak herhangi bir sabit değer verecektir.
Adım 5: Donanımın Montajı
Simülasyonu çalıştırdığımıza göre, hayır, bir prototip yapacak konumdayız. Perf kartındaki bileşenleri lehimlerken Arduino Nano'nun pinlerine özellikle dikkat edin. pinlerin birbirine değmediğinden emin olun, aksi takdirde Arduino zarar görebilir. Evinizde bir çubuk bulun ve üzerine Arduino ve RF alıcıdan oluşan devreyi takın. Devreyi çubuğa takmak için Sıcak tutkal tabancasını kullanabilirsiniz ve pozitif ve negatif terminallere biraz yapıştırıcı sürmek daha iyidir, böylece çubuk yere sıkıca vurulursa güç kaynağının kabloları çıkarılmayabilir.
6. Adım: Arduino'ya Başlarken
Daha önce Arduino IDE'ye aşina değilseniz endişelenmeyin çünkü aşağıda Arduino IDE'yi kullanarak mikrodenetleyici kartında kod yazma işlemlerinin net adımlarını görebilirsiniz. Arduino IDE'nin son sürümünü buradan indirebilir ve aşağıdaki adımları takip edebilirsiniz:
- Arduino kartı PC'nize bağlandığında, "Kontrol paneli" ni açın ve "Donanım ve Ses" e tıklayın. Ardından "Aygıtlar ve Yazıcılar" a tıklayın. Arduino kartınızın bağlı olduğu bağlantı noktasının adını bulun. Benim durumumda "COM14" ama sizin PC'nizde farklı olabilir.
- Araç menüsünü tıklayın. ve tahtayı ayarlayın Arduino Nano açılır menüden.
- Aynı Araç menüsünde, bağlantı noktasını daha önce görüntülemede gözlemlediğiniz bağlantı noktası numarasına ayarlayın. Cihazlar ve yazıcılar.
- Aynı Araç menüsünde İşlemciyi ATmega328P (Eski Önyükleyici).
- Aşağıda ekli kodu indirin ve Arduino IDE'nize yapıştırın. Tıkla yükle mikrodenetleyici panonuzdaki kodu yazmak için düğmeye basın.
Kodu indirmek için burayı tıklayın.
7. Adım: Kodu Anlama
Kod iyi yorumlanmış ve kendinden açıklamalıdır. Ancak yine de aşağıda açıklanmıştır:
- Kodun başlangıcında, Arduino Nano kartının ultrasonik sensöre ve RF modülüne bağlı olan tüm pinleri başlatılır.
const int tetikleyici = 3; // 1. Sensörün tetik pini const int echo = 2; // 1. Sensörün yankı pini const int Buzz = 13; // Buzzer'ı bağlamak için pin const int Remote = A0; const int Işık = A1; long time_taken; int dist; int Signal; int Intens; int Similar_count;
2. geçersiz kurulum () kullanılan tüm pimleri ayarlamak için kullanılan bir işlevdir. GİRİŞ ve ÇIKTI.Baud Hızı bu işlevde tanımlanır. Baud Hızı, mikro denetleyici kartının kendisiyle entegre sensörlerle iletişim kurduğu iletişim hızıdır.
geçersiz kurulum () {Serial.begin (9600); pinMode (Buzz, OUTPUT); digitalWrite (Buzz, DÜŞÜK); pinMode (tetikleyici, ÇIKIŞ); pinMode (echo, INPUT); }
3. Şimdi mesafeyi hesaplayacak bir fonksiyon oluşturacağız.
void calculate_distance (int tetikleyici, int echo) {digitalWrite (tetikleyici, DÜŞÜK); gecikme Mikrosaniye (2); digitalWrite (tetikleyici, YÜKSEK); gecikme Mikrosaniye (10); digitalWrite(tetik, DÜŞÜK); time_taken = pulseIn (eko, YÜKSEK); dist = alınan zaman * 0,034 / 2; eğer (dist> 300) dist = 300; }
4.geçersiz döngü () bir döngüde tekrar tekrar çalışan bir işlevdir. Bu fonksiyonda mikrodenetleyici kuruluna nasıl ve hangi işlemlerin yapılacağını anlatıyoruz. Ana döngüde sensörlerin verilerini okuyacağız. Burada ilk önce tetik pimi yankı pini tarafından algılanacak bir sinyal gönderecek şekilde ayarlanır. Belirli bir mesafede bir nesne algılanırsa, sesli uyarıyı sürekli olarak çalmak için bazı koşullar uygulanır. Buzzer, karanlık algılarsa küçük bir kesinti ile bip sesi çıkaracak ve parlak algılarsa biraz daha büyük bir aralık ile bipleyecektir.
void döngü () {// sonsuz döngü hesaplama_ uzaklığı (tetikleyici, yankı); Sinyal = analogRead (Uzaktan); Intens = analogRead (Light); // Remote'a basılmış mı kontrol edin int temp = analogRead (Remote); benzer_say = 0; while (Signal == temp) {Signal = analogRead (Remote); Similar_count ++; } // Uzaktan basılırsa if (Similar_count <100) {Serial.print (Similar_count); Serial.println ("Uzaktan Basıldı"); digitalWrite(Buzz,HIGH);delay(3000);digitalWrite(Buzz,LOW); } // Çok koyu ise if (Intens <200) {Serial.print (Intens); Serial.println ("Parlak Işık"); digitalWrite (Buzz, HIGH); gecikme (200); digitalWrite (Buzz, LOW); gecikme (200); digitalWrite (Buzz, HIGH); gecikme (200); digitalWrite (Buzz, DÜŞÜK); gecikme (200); gecikme (500); } // Çok parlaksa if (Intens> 800) {Serial.print (Intens); Serial.println ("Düşük Işık"); digitalWrite (Buzz, HIGH); gecikme (500); digitalWrite (Buzz, LOW); gecikme (500); digitalWrite (Buzz, HIGH); gecikme (500); digitalWrite (Buzz, DÜŞÜK); gecikme (500); } if (dist <50) {Serial.print (dist); Serial.println ("Nesne Uyarısı"); digitalWrite (Buzz, YÜKSEK); için (int i = dist; i> 0; i--) gecikme (10); digitalWrite (Buzz, DÜŞÜK); (int i=dist; i>0; i--) gecikme(10); } //Serial.print("dist= "); //Serial.println(dist); //Serial.print("Similar_count= "); //Serial.println(similar_count); //Serial.print("Intens= "); //Serial.println(Intens); }
8. Adım: Test Etme
Kodu anladığımız, mikrodenetleyiciye yüklediğimiz ve donanımı da monte ettiğimiz için şimdi projemizi test etme zamanı. Test etmeden önce, bağlantıların doğru yapıldığından emin olun ve Dijital Çoklu Metre'yi kullanarak devrenin sürekliliğini doğrulayın. Çevirmek için AÇIK her iki devre de 9V pil kullanır. Test ettiğiniz yüzeye bir nesne yerleştirin ve Ultrasonik sensörü önüne hareket ettirin ve sensör nesneye yaklaştıkça zil sesinin arttığı fark edilir. LDR'nin üzeri karanlıksa veya güneş ışığında test ediyorsanız iki olasılık vardır. RF vericideki basma düğmesine basılırsa, sesli uyarı uzun bir süre bip sesi çıkaracaktır. Sesli uyarı uzun süre bip sesi çıkarmaya devam ederse bu, alarmın yanlış şekilde tetiklendiği anlamına gelir. Bu tür bir hatayla karşılaşıyorsanız, Arduino IDE'nin seri monitörünü açın ve bu tür bir soruna neden olan parametreleri kontrol edin.
Bu, Arduino'yu kullanan kör insanlar için akıllı bir çubuk yapmanın en basit yoluydu. Yukarıda belirtilen tüm adımları izleyin ve projenin başarılı bir şekilde test edilmesinden sonra engelli bir kişi arayın ve hayatını kolaylaştırmak için ona bu projeyi teklif edin.