9 Ağustos 2014 Cumartesi

Arduino - Android Arayüzünden Bluetooth Haberleşmesi


Kablosuz haberleşme neden bilmiyorum diğer haberleşmelere göre daha heyecan verici geliyor bana. Özellikle son zamanlarda kullandığımız akıllı telefonları Arduino ile haberleştirebilmek gerçekten büyük zevk. Zaten basit bir uygulama olsa bile bu yazımdaki uygulamayı yaptığınızda ne demek istediğimi daha iyi anlayacaksınız :). 




Yazılımdaki mantık C# uygulamasındaki mantık ile aynı. 3 adet butonumuz var, 1 tanesi ile bluetooth haberleşmesi ile mikrodenetleyicimize bağlanıyoruz. 2.buton ile led yakıyor, 3.buton ile led söndürüyoruz.

Bu uygulamayı ilerleterek android kontrollü bir araba, akıllı ev uygulamaları vb. projeler gerçekleştirebilirsiniz. Tabii android bilmekte gerçekten büyük fayda var. Size mutlaka + katkıda bulunacaktır.


Eclipse öğrenmeye başladım fakat henüz başlangıç aşamasındayım. Buradaki kullanacağıız programı Selim Erkan OĞUZ arkadaşımın yardımıyla Google'ın App Inventor isimli programı yardımıyla yaptık. İster kendiniz oluşturursunuz isterseniz vereceğim link ile programı direkt android telefonunuza yükleyerek uygulamayı gerçekleştirebilirsiniz.



Yukardaki resimde uygulamanın kodlarını yazabildiğimiz bir arayüz var. Sağ taraftaki resimde de uygulamamızın basit bir arayüzü var. 

İndirme linki burda ; arduinotooth indirme linki









HC-06/07 BLUETOOTH MODÜLÜ
Anrdoid telefonumuzla Arduino'muz arasındaki haberleşmeyi HC-06 modülümüz sayesinde gerçekleştireceğiz.Bu sayede istediğimiz dataları Arduino'ya gönderip ışık yakıp söndüreceğiz.

Bluetooth'un RXD pinini Arduino'da TXD'ye, Bluetooth TXT pinini, Arduino RXD'sine takacağız.


Uyglamayı çalıştırmadan önce telefonunuzu Bluetooth modülü ile eşleştirmeniz gerekiyor. HC-06 veya HC-07 diye ekranda gözükecek. Modülün şifresi 1234. Eşleştirme yaptıktan sonra arayüzü açıp bağlan butonuna tıklayarak bir kez daha bağlanacağız. Bağlantı sağlandıktan sonra modülün üzerinde yanıp sönen ışık sürekli yanmaya başlayacak. Bu da komutlar için bluetooth haberleşmesinin sağlandığını, Arduino'nun komut almaya hazır olduğunu gösterir.

Arduino kodlarımız hemen hemen benzer kodlar C# uygulamasındaki kodlarla. Buyrun;

int data;
int led=7;
void setup() {
  pinMode(led,OUTPUT);  
  Serial.begin(9600);
}
void loop() { 
  {
  if (Serial.available()){
   int data = Serial.read();
   delay(100);
   if(data=='1'){
     digitalWrite(led,1);
   }
      if(data=='0'){
     digitalWrite(led,0);
   }
   delay(100);
  }}}

Videomuz da burda :) Türk Usülü Çay Bardağımız da bize eşlik etmiş :p







Arduino'da ölçülen analog veriyi android program ile okuma yazılımı için aşağıdaki linke tıklayın.
http://arduinotik.blogspot.com/2015/06/arduino-bluetooth-ile-android.html

4 Ağustos 2014 Pazartesi

Arduino - Processing Arayüzü ile RGB Led Sürme

Merhabalar,
Bu yazıda Processing üzerinden oluşturduğumuz arayüz ile Arduino'ya bağlı RGB ledi süreceğiz.

Öncelikle Processing ile ilgili bilgi vereceğim ama şunu belirtmek istiyorum ki Processing ilgilenmek ve öğrenmek istediğim bir dil fakat ne yazık ki çok bir bilgim yok. O yüzden bu uygulamam Coşkun TAŞDEMİR'in Arduino Uygulama kitabından hoşuma giden ve sizinle paylaşmak istediğim bir uygulama. Şayet hoşunuza giderse (ki gidecek :D) Processing ile ilgilenmek isteyebilirsiniz.Arduino Uygulama Kitabı burda imdadınıza yetişebilecek nitelikte. En azından başlangıç için. 






PROCESSING NEDİR ?
Processing açık kaynaklı görsel bir yazılım programıdır. Kodlarla dijital sanat icra edebilir veya da mikrodenetleyiciler ile seri haberleşme sağlayarak onları yönetebilirsiniz.

Download linki Processing İndir

RGB LED
RGB Led ortak anot ve ortak katot olmak üzere 2 çeşidi bulunan bir led türüdür. Çalışma mantığı sağ tarafta bulunan Venn şemasıdır. Kırmızı Mavi Yeşil tonları 8 bitte karıştırırak (0-255) diğer doğal renklerin elektronik ortamda oluşturulmasını sağlar.
Processing ile de bu programı oluşturacağız ve Arduino'ya bağladığımız RGB ledi süreceğiz.

RGB Ledi dirençsiz sürmek istiyorsanız ki ben öyle yaptım, Arduino'nun 3,3V pini ile besleyin. Ben ortak anot kullandım ve RGB ledin uzun bacağını 3,3 V'a bağladım. Ayrıca ledler standart değil renkleri teker teker deneyin !!!



Processing'e yazılımı yazmadan önce Sketch>Import Library bölümünden CONTROLP5 kütüphanesini indiriyoruz.Böylelikle renk seçimi yapabileceğiz. 

Çok bir bilgim yok tüm kodlar hakkında buyrun;

import controlP5.*;
import processing.serial.*;

ControlP5 controlP5;
Serial seriPort;
ColorPicker cp;

int kirmizi;
int yesil;
int mavi;

void setup () {
  size(400,100);
  controlP5=new ControlP5(this);
  cp = controlP5.addColorPicker("renksecici",0,0,255,20);
  seriPort = new Serial(this,"COM30",9600); // COM30 yerine kendi seriportunuzu yazın.
}

void draw() {
  background(cp.getColorValue());
  
  kirmizi=int(red(cp.getColorValue()));
  yesil=int(green(cp.getColorValue()));
  mavi=int(blue(cp.getColorValue()));
  delay(50);
}

void renksecici(int renk){
  println("KIRMIZI" +kirmizi + "YEŞİL" +yesil + "MAVİ" +mavi);
  RenkGonder();
}

void RenkGonder() {
  seriPort.write('R');
  seriPort.write(kirmizi);
  seriPort.write(yesil);
  seriPort.write(mavi);

}

Bu da Arduino kodumuz ;

const int kirmizipin=11;
const int yesilpin=10;
const int mavipin=9;
int kirmizi=0;
int mavi=0;
int yesil=0;

int durum=1;
byte gelen = 0;

void setup(){
Serial.begin(9600);
}
void loop() {
while(Serial.available()>0)
{
  gelen =Serial.read(); 
  switch(durum)
  {
    case 1:
    if(gelen=='R')
    {durum=2;}
    break;
    
    case 2:
    kirmizi=gelen;
    durum=3;
    break;
    
    case 3:
    yesil=gelen;
    durum=4;
    break;
    
    case 4:
    mavi=gelen;
    durum =1;
    break;
  }}
  
  analogWrite(kirmizipin,255-kirmizi);
  analogWrite(yesilpin,255-yesil);
  analogWrite(mavipin,255-mavi);
  
  delay(20);
}

Şayet Processing programınız yok ,fakat yine de denemek istiyorsanız buyrun program linki.
https://drive.google.com/file/d/0B7Iv2kkg1He_blQ1ZUJUX1lmWkE/edit?usp=sharing

Bu da videomuz,