arduino etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Arduino Tanıtım

Arduino Nedir?



Bildiğiniz üzere İtalyan elektronikciler'in 
ürettiği Arduino elektronik dünyasına
 farklı bir tat getirdi.

Elektronik sektöründe büyük 
yankı getiren bu elektronik
 kart şimdiden elektronik ile ilgilenenlerin ve hobi tutkunlarının ilgisini çekmişe benziyor.







Peki Nedir Bu Arduino ?

Arduino; Bir giriş çıkış kartı ve Processing/Wiring dilinin
bir uygulamasını içeren geliştirme platformudur.Açık kaynak
kodlu olup,orta düzey bir C programlama dili ile programlanabilir
Atmega çipine sahiptir.Arduino ile interaktif projeler
yapmak kolay ve bir o kadar da eğlencelidir.
Arduino'nun kullanım amaçlarına göre çeşitleri vardır.
Örneğin;breakboard üzerinde kullanmak istiyorsanız
'Arduino Nano',biraz daha ileri seviye kullanıcılar için
'Arduino Pro' ,hobi amaçlı projeleriniz için
'Arduino Uno' tercih edilebilir.Bunların yanısıra


Arduino'nun daha bir çok çeşiti mevcuttur.

Arduino Nasıl Çalışır?

Arduino'nun çalışabilmesi için diğer mikrodenetleyiciler 
gibi uygun çalışma ortamını sağlamak gerekir.Bu koşullar için gerekli
 olan malzemeler şunlardır;

1- Arduino Kartınız (UNO, PRO Mini, Mega, Leonardo.. gibi)
2- Standart USB yazıcı kablosu
3- https://www.arduino.cc/ sitesinde açık kaynak olarak yaymlanan
 Arduino Geliştirme Programı
4- Bu özelliklere uyum sağlayacak bir bilgisayar.


Arduino Kurulumu

İndirmiş olduğunuz Arduino IDM programını
bilgisayarınıza kurdukdan 
sonra standart USB yazıcı kablosu ile
bilgisayarınıza bağlayın.
USB kablosunu bilgisayarınıza bağladıkdan
sonra bilgisayarda 
sürücü dosyalarını manuel olarak seçin
driver dosyaları 
otomatik olarak yüklenecektir.

Eğer bilgisayarınız Arduinoyu bilinmeyen
agıt olarak görüyorsa 
'Windows Aygıt Yöneticisi' nde
okuduğunuz "COM" numarası 
ile Arduino IDM geliştirme
ortamında ki "COM" 
numarasının aynı olduguna dikkat etmeliyiz.




Örneğin Windows Aygıt Yöneticisinde 
görüldüğü gibi COM5 
yazıyor ise Arduino IDM programında da 
COM5 seçili olmalıdır.

Arduino Geliştirme Ortamında COM 
değişikliği yapmak için ; "ARAÇLAR"menüsünden
 PORT ayarlarını değiştirebiliriz.







Arduino ile Yapabileceğimiz Bazı Projeler


Mesafe Park Sensörü Projesi

Ultrasonik Mesafe Park Sensörünü
geliştirme ortamı olan Arduino'da
kullandık.Bu proje otomotiv
sektöründe kullanılacağı gibi
günlük hayat da kısa mesafeleri
 ölçmek içinde kullanılabilir




Robot Kol Projesi

Arduino Robot Kol Projemiz
 3D printer teknolojisine 
dayanmaktadır. Çok esnek 
ve hızlı programlamaya 
uygundur. Arduino programlama 
konusunda bildiğiniz birçok yöntemin 
uygulama alanı olarak kullanabileceğiniz 
çok fonksiyonlu bir robottur.






Engel Algılayan Robot
Arduino Uno R3,
Adafruit Motor Shield
 ve Pololu QTR-8RC 
line sensör kullanarak 
yapılan Çizgi Takip Eden
 Robot yapabilirsiniz










Çizgi İzleyen Robot Projesi


Arduino Uno R3,
Adafruit Motor Shield ve 
Pololu QTR-8RC 
line sensör kullanarak 
yapılan Çizgi Takip 
Eden Robot yapabilirsniz.








Röle çıkışına ihtiyacınız var, ancak arduino sadece 5V çıkış verebiliyor ne yapacakasınız?

Optokupler imdadınıza yetişecek

Optokupler girişinde düşük bir gerilim uygulandığında içerisinde bulunan ledi yakar ve karşılığında bulunan ışığa duyarlı ransistör sayesinde karşı tarafta akım akmasını sağlar.Avantajı nedir? Giriş ve çıkış arasında bir bağ olmadığından izolasyonu sağlar.

Bizde optokuplerin bu özelliğinden faydalanacağız.Yukarıdaki şekilde görüleceği üzere arduinodan gelecek olan 5 v sinyal 220 ohm direnç üzerinden geçerek optokuplerimizin ledini yakacak ve sonrasında Vcc ve ground arasında bir bağ oluşacak.Burada biz Vcc yerine 24Vdc kaynak ve internal ground yerine yine o kaynağın groundunu girdiğimizde output avr kısmında rölemizin kontak ucunu alabilir ve arduinomuzun ilgili çıkışına her dijital 1 uyguladığımızda rölemizi çekmesini sağlayabiliriz.

Yazar:Caner ÇAKAR
Sektörde analog çıkış olarak genel olarak kullanılan sistemler 0-10V,0-5V ya da 4-20ma çıkışlar olarak göze çarpmaktadır.

Peki arduino ile bir analog çıkış vermek istesek nasıl olurdu ?

Bilindiği üzere arduino üzerinde analog çıkış bulunmamaktadır.Ancak arduino programlama kısmına bakıldığında ise bize analogWrite(); komutu ile pwm çıkışı verebilmektedir.

Nedir bu PWM?

Pulse width modulation yani değişken genlik voltajı anlamını taşır.Biz belirli frekanslarda sabit voltaj uyguluyoruz.Bunu nasıl yapıyor?


Yukarıda resimde arduino üzerinden gelen pwm grafiklerini görüyoruz.Her bir pulse yani genliğimiz 5Vdc.Duty cycle ise bizim frekans yoğunluğumuz.

Peki arduino tarafında biz bu dalgaları nasıl sağlarız?

analogWrite(pin_numarası,duty cycle); olarak kodluyoruz.Pin numarasını init kısmında çıkış olarak belirtiyoruz ve seçtiğimiz pinin pwm özelliği taşıyan bir pin olmasına dikkat ediyoruz.Duty cycle ayarlarken dikkat etmemiz gereken husus ise vereceğimiz değer 0-255 arasında olacak ve 0-255 arasındaki her katman bize yüzde olarak 0-100 frekans yoğunluğu olarak dönecek.

Örneğin 50 cycle bir pwm elde etmek istiyoruz ve 7 numaralı pini kullanacağız.
İlk olarak pinMode(7,OUT); 7 nolu pini çıkış olarak atıyoruz.

Sonrasında bizim %50 miz nereye denk geliyor
0------0
100---255 ise :)
50 -123 civarına denk gelir

analogWrite(7,123); bize 5V genliğinde %50 yoğunlukta bir pwm sinyali verir

Peki gelelim biz bunu nasıl 0-10V sinyale çeviririz?



Yukarıdaki devrede pwm sinyalimizin frekans yoğunluğunu ne kadar yükseltirsek kapasitörün sarj deşarj süresini düşürürüz ve çıkışta 10Vdc ye yaklaşırız.Frekansımızı ne kadar düşürürsekte 0Vdc ye doğru yol alırız.

Burada dikkat etmemiz gereken 4,7k direncimiz ve 47micro farat kapasitörümüz bizim filtremiz bu kısmı bozmadan 2k lık dirençlerle  oynayarak kazancı arttırabilir çıkışta daha yüksek voltaj elde edebilirsiniz.

Yazar: Caner ÇAKAR
Merhabalar,
Uzun bir süredir arduino ve ethernet shield kullanımı ile ilgili sorular almaktayız.Bu yazımızda arduino ethernet kütüphanesi nasıl kullanacağımızdan ve bunu c# tarafında nasıl okuyabileceğimizden bahsedeceğiz

Arduino IDE yi açtığınızda yukarıdaki file menusunu sırası ile examples + ethernet + chatserver olarak ilerleyin.Aşağıdaki programı göreceksiniz.



#include <SPI.h>
#include <Ethernet.h>


byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177); //ip adresimiz



// 80 portu açıldı
EthernetServer server(80);
boolean alreadyConnected = false; //bağlı bir client varmı yok mu ?

void setup() {
  // ethernet bağlatısını sağlıyoruz
  Ethernet.begin(mac, ip);
  // bilgisayarı C# tarafından dinliyoruz
  server.begin();
 // Seri haberleşme başlatıldı.
  Serial.begin(9600);
  Serial.print("Chat server address:"); //Serial consola server adresi yazıldı
  Serial.println(Ethernet.localIP());
}

void loop() {
  // client için bekleniyor
  EthernetClient client = server.available();

  //eger ki clienttan haber gelirse merhaba de
  if (client) {
    if (!alreadyConnected) {
      // inputu temizle
      client.flush();    
      Serial.println("We have a new client");
      client.println("Hello, client!"); 
      alreadyConnected = true;
    } 

    if (client.available() > 0) {
      // clienttan gelen verileri oku
      char thisChar = client.read();
      //clienttan ne geliyorsa aynısı geri ilet
      server.write(thisChar);
      
      // clienttan gelen veriyi aynı şekilde seri consola yaz.
      Serial.write(thisChar);
    }
  }
}

Peki biz ne gibi bir değişiklik yaparak C# tarafında arduinodan gelen verileri okuruz?.Örnek olarak 1 nolu analog pinimizde bir potansiyometre bağlı olsun ve ADC den (analog - dijital çevirici ) gelen 0-1023 bilgi aralığındaki değeri C# a gönderelim.

Yukarıdaki örnek kodumuzdaki

  if (client.available() > 0) {
      // clienttan gelen verileri oku
      char thisChar = client.read();
      //clienttan ne geliyorsa aynısı geri ilet
      server.write(thisChar);
      
      // clienttan gelen veriyi aynı şekilde seri consola yaz.
      Serial.write(thisChar);
    }

Aralığında oynamalar yapacağız nasıl mı ?

  if (client.available() > 0) {
      // cleinttan gelen sensör okuma isteğini al
      char thisChar = client.read();
      if(thisCaher=="1") //1. analog pin okuma isteği geldi
      {
         server.write(analoRead(1));
      }
    }

Yukarıdaki kırmızı alanlar değiştirdiğimiz kısımlar.C# tarafında neler yapmamız gerekiyor.Socket programming ile tcp bir bağlantı sağlayacağız ve C# tarafında tcp client oluşturmamız gerekiyor.Bunu oluşturduktan sonra server olan arduinomuz ve client olan ve pc mizde çalışan C#programımız arasında tcp bağlatısı yardımı ile veri aktarımı sağlayacağız.

Özetlersek:

arduino ve bilgisayar programı arasında haberleşmeyi harfler yardımı ile sağlayacağız 1-1nolu analog pin,2-2nolu analog pin oku gibi

Yine digital çıkışlarımıza değer verdirebiliriz."A" gönder 1 nolu dijital 1 high olsun, "a" gönder 1 nolu dijital pin low konumuna geçsin gibi.

Bir sonraki yazımızda işin C# tarafına ve socket programlamaya değineceğiz .

Yazar:Caner ÇAKAR


Merhabalar bu bölümde henüz tamamlanmamış olan bir projemden bahsetmek istiyorum

Arduino ve C# kullanarak basit bir kullanıcı arayüzlü ve verileri log tutabilen bir sistem yaratmaya çalışıyorum
Nedir bu sistemin alt yapısı

Arduino ile birlikte ethernet shield
dht11 sıcaklık ve nem sensoru
c# kullanıcı arayuzu ve log olusturma

yazılımda neler kullanıldı ya da kullanılacak

socket programming ethernet üzerinden haberlesme için
loglar için sql database











Günümüz teknolojileri artık giyilebilir uygulamalar olarak önü açık sekilde ilerlemekte

google gozlukleri ve akıllı saatler derken ilerleyen teknoloji ile birlikte giyilebilir teknolojiler ya da teknolojik aksesuarlar ilerleyen yıllarda hayatımızın bir parcası olma yolunda

bizde buna kayıtsız kalmayalım dedik ve giyilebilir bir proje üretmenize olanak saglayacak bir ürünü karsınıza cıkarıyoruz

MicroView

artık hemen hemen herkesin duydugu ve markalasmıs olan arduinodan da bu beklenirdi

sadece bir cip buyuklugundeki arduino uzerinde oled ekranla birlikte geliyor Firma ilk cıkardıgında ilk bir kac gunluk satıs hedefi olarak 25bin$ hedeflemis ancak bu rakan %823 fazlası ile gerceklesmis ve 204bin$ üzerinde bir satıs basarısı yakalamıs

olayın guzelligi içerisinde oled ekranı kullanabilecegimiz kutuphaneleri ile birlikte geliyor buda bizim istegimiz grafigi ya da animasyonu ekrana yansıtmamızı kolaylastırıyor











bu ornekte ısık siddeti ölçümü yapılarak ekrana yansıtılmıs








bu örnekte ise sıcaklık ölçer yani termometre dijital ekran üzerinde olusturulmus









bu örnekte ise hava durumu uygulaması gerceklestirilmis




cihaz özellikleri:




64x48 oled ekran
atmega 328p işlemci
çalışma voltajı 5Vdc

12 adet dijital giriş cıkıs bunlardan 3 ü pwm olarak da kullanılabilir

6 adet analog pin
32kb flash hafıza
2kb sram
clock speed 16Mhz


bugün arduino ve ethernet shieldın biraz daha uzerine giderek internet uzerinden röle kontrolü yazılımımıza dth11 nem ve sıcaklık sensoru ilave ettik




peki neler kullandık?

öncelikle c# ile kullanıcı arayüzü olusturduk

arkasından arduino ile internet uzerinden haberlesmek için socket programımızı yazdık internet üzerinden socket programming olarak arattıgınızda karsınıza bircok örnek cıkacaktır arkadaslar gonul rahatlıgı ile kullanabilir takıldıgınız yerde sorabilirsiniz

akabinde arduino tarafına gectik arduinoyu ethernet kutuphanesinden cagırdıgımız server komutları ile server olarak ayarladık ve gonderdigimiz komutlara verecegi cevapları işledik bunların yanında dht11 kutuphanesini import ederek oradan da sıcaklık nem gibi degerleri cekebilir duruma geldik

halihazırda programımız vasıtası ile kendi yaptıgımız bir röle kartı uzerinden bir lambayı acıp kapatabilir odamızın sıcaklık ve nem degerini kendi kullanıcı arayuzumuzden internet uzerinden okuyabilir duruma geldik
ELEKTRO BLOGGER A HOŞGELDINIZ

ARAMA YAP

EN COK OKUNANLAR

- Copyright © ELEKTRO-BLOGGER Blogger