BAĞLAN

Arduino ve Visual Basic İle Rf Üzerinden Sıcaklık Nem Ölçümü

  • Görüntülenme 5631
  • PAYLAŞ
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  

    Arduino ile 433mhz rf kullanarak visual basic ile yapacağımız programda sıcaklık ve nem değerlerini anlık olarak ekranda görebileceğiz.Projemizde önce sıcaklık ve nem ölçümü ile başlayalım daha sonra visual basic ile arayüz programımızı yapalım.Rf Üzerinden Sıcaklık Nem Ölçümü projemize başlıyoruz.

    Malzemeler:

    1. 2 Adet Arduino ( model farketmez nano yeterli olacaktır.)
    2. 433 Mhz Rf Modül ( Bu projede 433 Mhz kullandık.Farklı frekanslardaki modülleri de kullanabilirsiniz)
    3. Sıcaklık Nem Ölçer Modül

    Elektronik Kısım:

    Verici Devresi:

    Verici devresi ile sıcaklık ve nem değerleri alıcı devresine gönderilecek.

    Devrenin pin bağlantıları:

    Tx sinyal pin >> Arduino Dijital 3.pin

    Sıcaklık-Nem Sensör Data Pin >> Arduino Dijital 2.pin

    Alıcı Devresi:

    Alıcı devremiz vericiden gelen dataları alarak bilgisayara aktaracak.

    Devre Bağlantıları:

    Rx sinyal pin >> Arduino Dijital 11.pin

    Alıcı ve verici devremizi tamamladık.Şimdi visual basic ile arayüz programımızı yazmaya başlayalım.

    Visual Basic Arayüz Programı:

    Formun tasarımını aşağıdaki gibi yapabilirsiniz.

    Formumuz İçin Gerekli Araçlar:

    1. 3 Adet Buton
    2. 2 Adet Combobox
    3. 2 Adet Progressbar
    4. 11 Adet Label
    5. 2 Adet Picturebox
    6. 1 Adet SerialPort
    7. 1 Adet Timer

    Formun Yazılım Kısmı:

    • Sistem kütüphanelerini ekleyelim.
    Imports System
    Imports System.ComponentModel
    Imports System.Threading
    Imports System.IO.Ports
    • SerialPort nesnemizi tanımlayalım.
    Dim myPort As Array 'port ismi tanımlama
    Delegate Sub SetTextCallback(ByVal
     
    <pre>1</pre>
     
    As String)
    • Formun Load Kısmına tanımlamalarımızı yapalım.
     myPort = IO.Ports.SerialPort.GetPortNames()
    ComboBox2.Items.Add(9600)
    ComboBox2.Items.Add(19200)
    ComboBox2.Items.Add(38400)
    ComboBox2.Items.Add(57600)
    ComboBox2.Items.Add(115200)
    For i = 0 To UBound(myPort)
    ComboBox1.Items.Add(myPort(i))
    Next
    ComboBox1.Text = ComboBox1.Items.Item(0)
    ComboBox2.Text = ComboBox2.Items.Item(0)
    Button2.Enabled = False
    • Veri almamız için porta bağlanmamızı sağlayacak butonumuza gerekli tanımlamaları yapalım.
    Timer1.Start()
    SerialPort1.PortName = ComboBox1.Text
    SerialPort1.BaudRate = ComboBox2.Text
    SerialPort1.Parity = IO.Ports.Parity.None
    SerialPort1.StopBits = IO.Ports.StopBits.One
    SerialPort1.DataBits = 8
    SerialPort1.Open()
    Label10.Text = "Sensöre Bağlanıldı"
    Button1.Enabled = False
    Button2.Enabled = True
    TextBox4.ForeColor = Color.Green
    Label11.Text = "Veri Alınıyor..."
    • Veri alımını durdurmak için bağlantıyı kes butonumuza gerekli tanımlamaları yapalım.
    Timer1.Stop()
    SerialPort1.Close()
    Button1.Enabled = True
    Button2.Enabled = False
    TextBox3.ForeColor = Color.Red
    Label10.Text = "Bağlantı Kesildi."
    Label11.Text = "Veri Durduruldu."
    • Portu seçmemiz için comboboxların birine tanımlamamızı yapalım.
    If SerialPort1.IsOpen = False Then
    SerialPort1.PortName = ComboBox1.Text
    Else
    MsgBox("Port açıkken değiştirilemez", vbCritical)
    End If
    • Baud rate değerini seçmemiz için gerekli tanımlamamızı yapalım.
    If SerialPort1.IsOpen = False Then
    SerialPort1.BaudRate = ComboBox2.Text
    Else
    MsgBox("Port açıkken değiştirilemez", vbCritical)
    End If
    • Son olarak serialden veri almamızı sağlayacak timer kısmına gerekli tanımlamamızı yapalım.
     Dim str As String
    str = "1"
    SerialPort1.Write(str)
     
    Dim receiveddata As Integer = SerialPort1.ReadLine() 'serial portu okuma ve datayı yazdırma
    Label7.Text = receiveddata
    If receiveddata < 0 Then
    ProgressBar1.Value = -receiveddata
     
    Else
    ProgressBar1.Value = receiveddata
     
    End If
     
    System.Threading.Thread.Sleep(500)
    Dim receiveddata2 As Integer = SerialPort1.ReadLine()
    Label8.Text = receiveddata2
     
    ProgressBar2.Value = receiveddata2
     
    System.Threading.Thread.Sleep(500)

    Visual Basic İle Programımızı yazdık.Şimdi Arduino Yazılımına geçebiliriz.

     

    Arduino Yazılımı:

    Verici Yazılımı:

    // Yazılım Geliştirme By ROBİMEK - 2015</pre>
     
    #include <VirtualWire.h>
    #include <dht11.h> // dht11 kütüphanesini ekliyoruz.
    #define DHT11PIN 2 // DHT11PIN olarak Dijital 2'yi belirliyoruz.
     
    dht11 DHT11;
    char msg[6];
     
    void setup() {
     
     vw_setup(2400);
     vw_set_tx_pin(3);
     
    }
     
    void loop() {
     int chk = DHT11.read(DHT11PIN);
     int sicaklik =DHT11.temperature;
     int nem = DHT11.humidity;
     sprintf(msg, "%d,%d", sicaklik, nem);
     
     vw_send((uint8_t *)msg, strlen(msg));
     
     vw_wait_tx();
     delay(1000);
     
    }
    

    Alıcı Yazılımı:

    // Yazılım Geliştirme By ROBİMEK - 2015
    #include <VirtualWire.h>
    int sicaklik;
    int nem;
     
    int i;
     
    char x;
    char StringReceived[6];
    void setup(){
     
    Serial.begin(115200);
     
    vw_set_rx_pin(11);
    vw_setup(2400);
    vw_rx_start();
     
    }
     
    void loop(){
     
    if(Serial.available()>0)
    x=Serial.read();
     
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    if(x=='1')
    {
    if( vw_get_message(buf, &buflen) )
     
    {
    for (i = 0; i < buflen; i++)
     
    {
    StringReceived[i] = char(buf[i]);
    }
    sscanf(StringReceived, "%d,%d",&sicaklik, &nem);
    Serial.println(sicaklik);
    delay(500);
    Serial.println(nem);
    delay(500);
    memset( StringReceived, 0, sizeof( StringReceived));
    }
     
    }
    }

    Projenin videosunda hc-05 ile hc-06 bluetooth modülleri haberleştirerek sıcaklık ve nem ölçümünü yaptık.İki bluetooth un nasıl haberleştiğini de yakın zamanda yayınlayacağım.Diğer bir yöntem de bilgisayarınıza  arduinoya bağlı bluetooth modülünü tanıtarak haberleştirmeyi sağlayabilirsiniz.

    Buradan hc-05 ile hc-06 haberleşmesine bakabilirsiniz. >> hc-05 ile hc-06 haberleşmesi

    Bluetooth ile haberleşme arduino kodunu aşağıdaki linkten indirebilirsiniz.

    Bluetooth sıcaklık nem ölçümü

    Rf ile haberleşmesi videosunu ilerleyen günlerde yayınlayacağım.

    Yazılımda 500 milisaniye gecikme ile veri alımı gerçekleşiyor.

    Bu değeri değiştirecekseniz formun timer kısmındaki System.Threading.Thread.Sleep(500) değerini de değiştirmelisiniz.Aksi halde yanlış değerler alırsınız.

    Visual basic ve arduino yazılımını aşağıdaki linkten indirebilirsiniz.

    SICAKLIK NEM KONTROL

     


    PAYLAŞ
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    Sezgin GÜL

    Sezgin GÜL

    Makine Mühendisi, Girişimci, Maker

    Kimler Neler Demiş?

    13 Yorum - "Arduino ve Visual Basic İle Rf Üzerinden Sıcaklık Nem Ölçümü"

    avatar
    Sıralama:   En Yeniler | Eskiler | Beğenilenler
    ms
    Ziyaretçi

    iyi çalışmalar ben anlayamadım yazının başında rf alıcı verici ile başlanıyo sonra bluetooth modül kullanılıyo iletişim nasıl sağlanıyor bluetoothla mı rf modülle mi

    ERDEM
    Ziyaretçi

    yaptım sonun mega kullanmıştım bmp180i a5 ve a4 pinlerine bağladığımda değer alamadım mega nın kendi scl sda pinlerini kullanınca oldu

    ERDEM
    Ziyaretçi

    kodu yazamadım bi yardımcı olurmusunuz bmp 180 i eklediğimde değerler donuyor

    ERDEM
    Ziyaretçi

    IS VE NEM DEĞERLERİNİ EKRAN YAZDIRDIM SONUNDA AMA BASINÇ DEĞERİNİ OKUYUP BİR DEĞİŞKENE ATAYAMIYORUM NASIL BİR KOD KULLANMAM LAZIM

    ERDEM
    Ziyaretçi

    dediklerinizi yaptım ancak ekrana yazdıramıyorum yardımcı olabilirmisiniz

    ERDEM
    Ziyaretçi
    bu kodu derleyemiyorum DHT.H KÜTÜPHANESİNDE sıkıntı var gibi kütüphaneleri ekledim yinede derlenmiyor //Including Libs #include #include “DHT.h” #include #include //Pressure sensor //Defining Pins #define DHTPIN 11 #define DHTTYPE DHT11 #define BMP085_ADDRESS 0x68 // I2C address of BMP085 //Pressure sensor DHT dht(DHTPIN, DHTTYPE); Adafruit_BMP085 bmp; //Seting up void setup() { Wire.begin(); if (!bmp.begin()) { Serial.println(“Could not find a valid BMP085 sensor, check wiring!”); while (1) {} } //For Debug Serial.begin(9600); Serial.println(“Setup”); dht.begin(); //Pressure sensor // Setup transmit pin vw_set_tx_pin(12); vw_setup(2000); // //For Debug Serial.println(“Start Pressure”); } //Main Loop void loop() { Serial.println(“\n”); float h = dht.readHumidity(); float t = dht.readTemperature(); float… Daha Fazla »
    ERDEM
    Ziyaretçi

    merhaba arduino ile dht11 ve bmp180 sensörlerini kullanarak rf ile lcd ekrana sıcaklık basınç ve nem değerlerini yazdırmam lazım çok uğraştım ancak olmadı yardımcı olabilirmisiniz?

    wpDiscuz

    Yeni Projeler More

    • 16 Şubat 2017
      1 hafta ÖNCE 2 Yorum

      Öğrenme Fonksiyonuna Sahip Hareket Kopyalayan Robot Kol Yapımı

      Bu projede öğrenme yoluyla hareket kopyalayan robot kol yapımından bahsedeceğim. Endüstride kullanılan robot kollar, her zaman aynı hareketleri yapmaya odaklıdır. Örneğin ürün bandından bir nesneyi alıp başka bir banda aktarımını yapan robot kollar sürekli aynı hareketi yapmaktadır. Bu hareketler önceden öğretilerek robot kola aktarılır. Burada da aynı mantıkla robot ...

    • 11 Şubat 2017
      2 hafta ÖNCE 3 Yorum

      Arduino İle Labirent Çözen Robot Yapımı

      Kendi robotunu yap projelerimizin bu bölümünde arduino ile labirent çözen robot yapacağız. Labirent çözen robot özellikle robot yarışmalarında yer almaktadır. Bir labirentin çözüm yolunu bulmak aslında tek bir etkene bağlıdır. Bu etken sağ veya sol taraftaki herhangi bir duvarı takip ettirmektir. Bu etkenden yola çıkarak robot sol veya sağ ...

    • 07 Şubat 2017
      2 hafta ÖNCE Yorum Yok

      Arduino ile MLX90614 Kızılötesi Sıcaklık Sensörü Kullanımı

      Cisme temas etmeden, cismin sıcaklığını ölçen MLX90614 kızılötesi sıcaklık sensöründen bahsedeceğim. Dahili bir 17-bit ADC ve güçlü bir DSP, MLX90614'ün ölçümlerinde yüksek doğruluk ve çözünürlük verir. Vücut sıcaklığı ölçmek için uygundur. Ayrıca hareket algılamada da kullanabilirsiniz. MLX90614 Özellikler: Ortam sıcaklığı ölçme aralığı -40 ile + 125 ° C Nesne ...

    • 05 Şubat 2017
      3 hafta ÖNCE Yorum Yok

      Arduino ile Yazıyı Sese Dönüştüren Emic 2 Modülü Kullanımı

      Robotunuzu konuşturmak ve neler olup bittiğini söyletmek ister misiniz ? Emic 2 yazıyı sese çeviren modülle kolaylıkla projeleriniz konuşabilir. Emic-2, Parallax tarafından, ses sentezini tamamen zahmetsiz kılmak için Grand Idea Studio ile birlikte tasarlanmıştır.

    • 31 Ocak 2017
      3 hafta ÖNCE 7 Yorum

      Arduino ile DHT22 Sıcaklık Nem Sensörü Kullanımı

      DHT sensörleri, kapasitif nem sensörü ve bir termistör olmak üzere iki parçadan oluşur. DHT11 ve DHT22 olan iki DHT modelini ele alalım. Görünüm ve pin yapısı olarak benzer görünmelerine rağmen farklı ölçüm hassasiyetlerine sahiptirler. Aşağıda iki modelin karşılaştırmasına bakalım.

    Bizi Takip Et

    Son Yorumlar

    Sezgin GÜL
    Sezgin GÜL 2017-02-23 19:53:34
    I2Cdev.h MPU6050 kütüphanesinin içinde bulunuyor ayrı indirmenize gerek yok.
    mahmut 2017-02-23 18:25:28
    iyi günler ı2cdev.h kutuphanesını nerden bulabılırım
    Sezgin GÜL
    Sezgin GÜL 2017-02-23 15:27:37
    Arduino Uno
    mustafa 2017-02-23 15:02:27
    abi yukarida paylaştıgın videodaki arduino çeşidini yazarmisin aynısından alacağimda
    Sezgin GÜL
    Sezgin GÜL 2017-02-23 13:23:12
    İndirdiğin eklentiyi aç.Klasör içine gir. 3 dosya bir klasör olacak. Onların hepsini yukarıda belirtiğim konuma ekle. Önceki eklediğini sil. Programı.....
    mustafa 2017-02-23 13:06:37
    abi bütün yazilimi 1 sekmeyemi ekliyoruz
    Sezgin GÜL
    Sezgin GÜL 2017-02-22 13:37:41
    Eklentiyi yanlış yere kurmuş olduğunuz için görünmüyor.Attığınız konumu tekrar kontrol edin.
    enver 2017-02-22 13:17:45
    iyi günler ben inkspace 0.48,5 kurdum anacak içine linkini verdiğiniz gcode dosyasını belirrttiğiniz adrese atmama rağmen gcode dosyası olarak kaydedemiyorum......