2 aylık bir aranın ardından tekrardan merhaba :).
Bu yazımda, MIT App Inventor 2 aracılığı ile oluşturduğum android programdan bahsedeceğim. Aslında programı ben oluşturmadım,internet üzerinden araştırırken buldum, görünümünde bir kaç değişiklik yaptım göze daha hoş gelmesi için.
Android programımız ,arduino ile herhangi bir sensörden ölçtüğümüz değeri HC-06 bluetooth modülüne bağlanarak görmemizi sağlıyor. Bu modül ile ilgili daha önceki uygulamamız ve yazılım için buraya tıklayınız.
Arduino yazılımınızı oluştururken, android bağlantısı için ayrıca bir kod yazmanıza gerek yok. Sadece HC-06 Bluetooth modülünüzü Arduino'ya bağlamanız ve görmek istediğiniz sensör ya da herhangi değeri, Arduino IDE'deki "Serial Monitör" de görmek ister gibi yazmanız yeterli.
Bunun için bildiğiniz üzere "Serial.println();" komutunu kullanıyoruz.
ÖNEMLİ !!!
Arduino yazılımını oluştururken okunan verinin ekranda gösterilme sıklığını yüksek tutmanız( 1000 ms ve fazlası) ya da okunan değeri integer olarak gösterirseniz sıkıntı yaşamazsınız. Diğer türlü bazı okuma sıkıntıları oluşabiliyor android programda.
LM35 ile sıcaklık ölçümü yaptım, %100 olmasa bile başarılı.
APP Inventor komutları;
Proje dosyalarına aşağıdaki linkten ulaşabilirsiniz.Hem App Inventor 2 'de kendinize göre düzenlemeniz için .aia uzantılı proje dosyasını, hem de telefonunuza kendi hazırlamış olduğum programı direkt yükleyip kullanmanız için .apk uzantılı andorid programı da attım.
https://drive.google.com/file/d/0B7Iv2kkg1He_SnB1WHpJckswQUk/view?usp=sharing
Serial Communication etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Serial Communication etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
19 Haziran 2015 Cuma
Arduino - Android Arayüzünden Bluetooth ile Veri Okuma
21 Mart 2015 Cumartesi
Arduino - C# Arayüzü ile Veri Okuma
Merhaba.
Arduino'dan okuduğumuz verileri direkt Serial Monitör'den ya da LCD'den okuyabiliyorduk. Fakat bu okunan veriler için bir tasarrufumuz olmuyordu.
Bu yazıda Arduino'dan okuduğumuz veriyi C# da gösterip, istediğimiz değerleri listbox'a kaydettiğim arayüzden bahsedeceğim. Bu arayüzü oluşturmamda yardımcı olan Necmettin Zengin arkadaşıma teşekkür ederim.
Resimde de görüldüğü gibi arayüzde 4 buton, 2 combobox, 2 label ve 1 tane de listbox bulunmakta. 0 yazan yerde ölçülen analog değer gösterilecek ve ekle butonuna bastığımızda okunan değer listbox a eklenecek. C# da hazırlanan bu arayüz için ayrıca bir arduino yazılımına ihtiyaç bulunmamakta. Serial Monitör'de veri okuyacakmış gibi yazılımınızı oluşturmanız yeterli.
RS232 vb. seri port haberleşmesinde deneme şansım olmadı, en yakın zamanda PIC için deneyip sonucunu burada yazarım.
C# kodlarına geçecek olursak ki yakın zamanda bununla alakalı bir video çekmeyi de planlıyorum;
Arayüz oluşturma vidyom. Aynı arayüz değil :)
Microsoft Visual Basic Form şeklinde ve exe olarak aşağıdaki linkten programa ulaşabilirsiniz.
İndirme Linki
Burda da aynı arayüz programına Serial.ReadLine() methodu ile devam ederek veri okumayı daha stabil daha işlenebilir hale getirdim.
Arduino'dan okuduğumuz verileri direkt Serial Monitör'den ya da LCD'den okuyabiliyorduk. Fakat bu okunan veriler için bir tasarrufumuz olmuyordu.
Bu yazıda Arduino'dan okuduğumuz veriyi C# da gösterip, istediğimiz değerleri listbox'a kaydettiğim arayüzden bahsedeceğim. Bu arayüzü oluşturmamda yardımcı olan Necmettin Zengin arkadaşıma teşekkür ederim.
Resimde de görüldüğü gibi arayüzde 4 buton, 2 combobox, 2 label ve 1 tane de listbox bulunmakta. 0 yazan yerde ölçülen analog değer gösterilecek ve ekle butonuna bastığımızda okunan değer listbox a eklenecek. C# da hazırlanan bu arayüz için ayrıca bir arduino yazılımına ihtiyaç bulunmamakta. Serial Monitör'de veri okuyacakmış gibi yazılımınızı oluşturmanız yeterli.
RS232 vb. seri port haberleşmesinde deneme şansım olmadı, en yakın zamanda PIC için deneyip sonucunu burada yazarım.
C# kodlarına geçecek olursak ki yakın zamanda bununla alakalı bir video çekmeyi de planlıyorum;
1 | using System; |
Arayüz oluşturma vidyom. Aynı arayüz değil :)
Microsoft Visual Basic Form şeklinde ve exe olarak aşağıdaki linkten programa ulaşabilirsiniz.
İndirme Linki
Burda da aynı arayüz programına Serial.ReadLine() methodu ile devam ederek veri okumayı daha stabil daha işlenebilir hale getirdim.
Etiketler:
ADC,
Analog Veri Okuma,
Arayüz,
Arduino,
Arduino Projeleri,
Arduino Tutorial,
Baudrate,
C#,
C# Interface,
Listbox,
Microsoft Visual Studio,
Necmettin Zengin,
Sensör,
Seri Haberleşme,
Serial Communication
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,
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,
11 Temmuz 2014 Cuma
Arduino - C# Arayüzü ile Led Yakma
Bu yazımda C# ile oluşturduğumuz arayüz ile Arduino'nun dijital çıkışlarına hükmetmeyi öğreneceğiz. Uygulamamız 2 aşamadan oluşmakta. Önce Arduino'ya yükleyeceğimiz programda hangi çıkışımızı yani ledi ON ve OFF duruma getirecek datayı belirleyeceğiz. Daha sonra da C# arayüzünden önce Port'lara bağlanmayı ve butonlara bastığımızda hangi datayı göndereceğimizi kararlaştıracağız.
C# ile ilgilenmenizi öneririm çünkü her defasında LCD bağlamak veya Serial Monitör kullanamayacağımız projeler olabilir. Tüm verileri tek arayüz üzerinden göndermek veya almak zorunda kalabilirsiniz. İnternet üzerinden C# üzerine projeleri veya arayüzü öğrenmeniz size fayda sağlar. Lafı fazla uzatmadan önce Arduino kodlarımızı vermek istiyorum;
int led = 13; // Hali hazırda bulunan ledi kullanacağım.
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
if(Serial.available()) //Eğer seri haberleşme açık olursa alttaki komutlar işleyecek.
{int a=Serial.read(); //Seri haberleşme ile okunan verimize a integer değerini verdik.
if(a=='1')
{ digitalWrite(led, HIGH);} // a, 1 olursa yanacak.
else if (a == '0') // a, 0 olursa sönecek.
{digitalWrite(led, LOW);}
}
}
C# kısmımızda Toolbox'dan aldığımız nesneler, ComboBox, 3 Buton, 1 Label.
Led Yak = Buton 3
Led Söndür = Buton 2
Bağla = Buton 1
Programımıza bakarsanız daha bu kısım daha iyi anlaşılacaktır.
Arayüzü oluşturduktan sonra Components kısmından SerialPort nesnesini arayüzün üzerine atıyoruz.
Amacımız önce programı yüklemiş olduğumuz Arduino'nun portuna, bu arayüz ile bağlanarak LED YAK ve LED SÖNDÜR komutlarını kullanmak :)
C# komutlarımız ;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace ArduinoSerial
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = SerialPort.GetPortNames();
}
private void button2_Click(object sender, EventArgs e)
{
serialPort1.Write("0");
label1.Text = "LED KAPALI";
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.Write("1");
label1.Text = "LED AÇIK";
}
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
}
}
}
Programın çalışabilmesi için Bilgisayarınızda Framework yüklü olması gerekmektedir.
Tüm Dosyaları İndirmek İçin Tıklayın (File>Download)
(Exe dosyası ArduinoSerial\ArduinoSerial\bin\Debug klasörünün içinde.)
Bu da C# arayüz oluşturma videomuz ve çalıştırma videomuz ;
Kolay gelsin :)...
C# ile ilgilenmenizi öneririm çünkü her defasında LCD bağlamak veya Serial Monitör kullanamayacağımız projeler olabilir. Tüm verileri tek arayüz üzerinden göndermek veya almak zorunda kalabilirsiniz. İnternet üzerinden C# üzerine projeleri veya arayüzü öğrenmeniz size fayda sağlar. Lafı fazla uzatmadan önce Arduino kodlarımızı vermek istiyorum;
int led = 13; // Hali hazırda bulunan ledi kullanacağım.
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
if(Serial.available()) //Eğer seri haberleşme açık olursa alttaki komutlar işleyecek.
{int a=Serial.read(); //Seri haberleşme ile okunan verimize a integer değerini verdik.
if(a=='1')
{ digitalWrite(led, HIGH);} // a, 1 olursa yanacak.
else if (a == '0') // a, 0 olursa sönecek.
{digitalWrite(led, LOW);}
}
}
C# kısmımızda Toolbox'dan aldığımız nesneler, ComboBox, 3 Buton, 1 Label.
Led Yak = Buton 3
Led Söndür = Buton 2
Bağla = Buton 1
Programımıza bakarsanız daha bu kısım daha iyi anlaşılacaktır.
Arayüzü oluşturduktan sonra Components kısmından SerialPort nesnesini arayüzün üzerine atıyoruz.
Amacımız önce programı yüklemiş olduğumuz Arduino'nun portuna, bu arayüz ile bağlanarak LED YAK ve LED SÖNDÜR komutlarını kullanmak :)
C# komutlarımız ;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace ArduinoSerial
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = SerialPort.GetPortNames();
}
private void button2_Click(object sender, EventArgs e)
{
serialPort1.Write("0");
label1.Text = "LED KAPALI";
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.Write("1");
label1.Text = "LED AÇIK";
}
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
}
}
}
Programın çalışabilmesi için Bilgisayarınızda Framework yüklü olması gerekmektedir.
Tüm Dosyaları İndirmek İçin Tıklayın (File>Download)
(Exe dosyası ArduinoSerial\ArduinoSerial\bin\Debug klasörünün içinde.)
Bu da C# arayüz oluşturma videomuz ve çalıştırma videomuz ;
Kolay gelsin :)...
Kaydol:
Kayıtlar (Atom)










