Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

1 Mayıs 2021 Cumartesi

Arduino Kullanarak HC-06 Bluetooth ile DC motor hız ve yön kontrolü

 

Arduino Kullanarak Bluetooth ile DC motor hız ve yön kontrolü 


Arduino kullanarak Bluetooth tabanlı dc motor hız ve yön kontrolü, Bu gömülü sistemler projesinde motorları HC-06 Bluetooth cihazı ve android uygulaması ile kontrol edeceğiz Android uygulamasında düğmeye her basıldığında, Arduino verileri seri iletişim yoluyla alacak ve bu verileri önceden kaydedilmiş verilerle karşılaştıracaktır. Veriler eşleşirse, o fonksiyonun içinde yazılan kod çalıştırılacak ve motorlar buna göre çalışacaktır. Kullanacağımız uygulama bluetermdir
Bluetooth ve Arduino donanımı kullanarak motorları kontrol etmeBu proje için gerekli bileşenler aşağıdaki gibidir
  • Arduino Uno
  • HC-06 Bluetooth cihazı
  • L293D Motor Kontrolörü IC
  • DC Motorlar
  • 9V pil
  • Bağlantı telleri
  • Breadboard

Bluetooth tabanlı dc motor hız ve yön kontrolünün Devre ŞemasıBluetooth ve Arduino donanımı kullanarak motorları kontrol etme

Öncelikle L293D IC'yi Arduino ile bağlayacağız. L293D motor kontrolörü IC'nin Arduino ile bağlantıları aşağıdaki gibidir.

  • Arduino'nun 5V pini ile L293D IC'nin 1, 9, 16 numaralı pinleri.
  • L293D IC'nin Pin 2'si Giriş pinidir; Arduino'nun 6 numaralı pinine bağlayın.
  • L293D IC'nin 3 numaralı pini motorun bir ucuna ve motorun diğer ucunu L293D'nin 6 numaralı pimine bağlayın.
  • 4, 5, 12 ve 13 numaralı pinler, L293D IC'nin GND pinleridir; bunları Arduino'nun GND'sine bağlayın.
  • L293D IC'nin Pin 7'si Giriş pinidir; Arduino'nun 5 numaralı pinine bağlayın.
  • Pin 8, L293D IC'nin VCC pinidir, bunu akünün pozitif ucuna ve akünün negatif ucunu Toprağa bağlayın.
  • L293D IC'nin Pin 10'u, ikinci motor için Giriş pinidir; Arduino'nun 9 numaralı pinine bağlayın.
  • L293D'nin 11 numaralı pini motorun bir ucuna ve motorun ikinci ucunu L293D'nin 14 numaralı pimine bağlayın.
  • L293D'nin Pin 15'i, ikinci motor için ikinci Giriş pinidir; Arduino'nun 10 numaralı pinine bağlayın.

Daha sonra HC-06 Bluetooth cihazının bağlantılarını Arduino ile yapın. Bluetooth cihazı HC-06'nın Arduino ile bağlantıları aşağıdaki gibidir

  • HC-06'nın VCC'sinden Arduino'nun 5V'una
  • HC-06'nın GND'sinden Arduino'nun GND'sine
  • HC-06'nın TX'sini Arduino'nun RX pinine
  • HC-06'nın RX pinini Arduino'nun TX pinine

Bluetooth tabanlı dc motor hız ve yön kontrolünün çalışması

HC-06 Bluetooth modülü, Arduino ile seri iletişim yoluyla çalışır, bu da Arduino'nun verileri Seri yoluyla gönderip alacağı anlamına gelir.Uygulamadan bilgi göndermek için önce onu yüklememiz gerekir. Şunlar arasından App yükleyebilirsiniz burada . APP'yi kurduktan sonra, onu ve seçeneklerden açın ve Bluetooth modülüne bağlayın. Bluetooth modülüne bağladıktan sonra size mavi boş ekran gösterecektir. Şimdi, oraya '1' yazacağınız zaman, sol motor hareket etmeye başlayacak ve '2' yazacağınız zaman, sağ motor hareket etmeye başlayacak ve benzer şekilde '3' yazarak her iki motor da dönecektir. saat yönünde ve '4' yazıldığında, her iki motor da saat yönünün tersine dönecektir. '0' yazıldığında, her iki motor da hareket etmeyi durduracaktır.

Bluetooth tabanlı dc motor hız ve yön kontrolü kodu 

int first_motor_pin1 = 11;

int first_motor_pin2 = 10;

int second_motor_pin1 = 9;

int second_motor_pin2 = 8;

int state;

int flag = 0;       

void setup ( ) {

  Serial.begin (9600);

  pinMode (first_motor_pin1, OUTPUT);

  pinMode (first_motor_pin2, OUTPUT);

  pinMode (second_motor_pin1, OUTPUT);

  pinMode (second_motor_pin2, OUTPUT);

}

void loop ( ) {

if(Serial.available( ) > 0){    

      state = Serial.read( );  

      flag = 0;

    }  

    if (state == '1') {

       digitalWrite (first_motor_pin1, LOW);

      digitalWrite (first_motor_pin2, HIGH);

      digitalWrite (second_motor_pin1, HIGH);

      digitalWrite (second_motor_pin2, HIGH);

          if(flag == 0){

          Serial.println("Left Motor ON");

          flag = 1;

        }

    }  

    else if (state == '2') {

        digitalWrite (first_motor_pin1, HIGH);

      digitalWrite (first_motor_pin2, HIGH);

      digitalWrite (second_motor_pin1, HIGH);

      digitalWrite (second_motor_pin2, LOW);

        if(flag == 0){

          Serial.println("Right Motor ON");

          flag = 1;

    }

    }

    else if (state == '3') {

        digitalWrite (first_motor_pin1, LOW);

      digitalWrite (first_motor_pin2, HIGH);

      digitalWrite (second_motor_pin1, HIGH);

      digitalWrite (second_motor_pin2, LOW);

          if(flag == 0){

          Serial.println("Both Motors Clockwise");

          flag = 1;

        }

    }

     else if (state == '4') {

         digitalWrite (first_motor_pin1, HIGH);

      digitalWrite (first_motor_pin2, LOW);

      digitalWrite (second_motor_pin1, LOW);

      digitalWrite (second_motor_pin2, HIGH);

        if(flag == 0){

          Serial.println("Both Motors Anti-clockwise");

          flag = 1;

        }

    }

    else if (state == '0') {

         digitalWrite (first_motor_pin1, LOW);

      digitalWrite (first_motor_pin2, LOW);

      digitalWrite (second_motor_pin1, LOW);

      digitalWrite (second_motor_pin2, LOW);

        if(flag == 0){

          Serial.println("Both Motors OFF");

          flag = 1;

        }

    }

}

Kod Açıklama

Öncelikle motorları kontrol etmek için olan koddaki pinleri başlattık. Dört pini başlattık, ikisi birinci motoru kontrol etmek için ve diğer ikisi ikinci motoru kontrol etmek içindir. Başlattığımız durum değişkeni, Bluetooth cihazından gelecek çıkışı depolamak içindir. Başlatılan bayrak değişkeni, dizinin yalnızca durumdan sonra yazdırılmasını sağlar.

int first_motor_pin1 = 11;

int first_motor_pin2 = 10;

int second_motor_pin1 = 9;

int second_motor_pin2 = 8;

int state;

int flag = 0;

Daha sonra setup fonksiyonunda tüm pinleri çıkış pinleri olarak ilan ettik çünkü çıkışı bu pinlerden L293D motor kontrol cihazına vereceğiz. Arduino'dan gelen bu çıktı, L293D motor kontrolörü IC'nin girişi olacaktır.

  pinMode (first_motor_pin1, OUTPUT);
  pinMode (first_motor_pin2, OUTPUT);

  pinMode (second_motor_pin1, OUTPUT);

  pinMode (second_motor_pin2, OUTPUT);

Daha sonra döngü fonksiyonunda verinin mevcut olup olmadığını veya android uygulamasındaki butona basılı olup olmadığını kontrol ettik. Veriler mevcut olacaksa, durum değişkeninde saklanacaktır. Ardından bu verileri kodumuzda önceden kaydedilmiş verilerle karşılaştıracağız. Veriler eşleşirse, o zaman yazılan kod çalıştırılır ve motor buna göre çalışır.

if(Serial.available( ) > 0){    

      state = Serial.read( );  

      flag = 0;

    }  

    if (state == '1') {

       digitalWrite (first_motor_pin1, LOW);

      digitalWrite (first_motor_pin2, HIGH);

      digitalWrite (second_motor_pin1, HIGH);

      digitalWrite (second_motor_pin2, HIGH);

          if(flag == 0){

          Serial.println("Left Motor ON");

          flag = 1;

        }

    }

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Arduino ve MPU-6050 Deprem Dedektörü

 

Arduino ve MPU-6050 Deprem Dedektörü


Arduino ve MPU6050 sensörünü kullanan Deprem Dedektörü: Deprem dedektörü, deprem şoklarını algılayan bir cihazdır. Araştırmaya göre bir yılda yaklaşık 800.000 deprem meydana gelir ve bu kadar çok can ölür ve binaları tahrip eder. Projemiz, deprem nedeniyle oluşan kaybın üstesinden gelmek için küçük bir çabadır. Bu dedektör, küçük şokları algılayabilir ve güvenli bir yere tahliye etmeniz için sizi uyarabilir. Bu dedektörün en önemli bileşeni daha sonra konuşacağımız MPU 6050 modülüdür. Arduino bu dedektörün beynidir, mesaj göstermek için LCD , gösterge olarak Led ve zil kullanılır.

Arduino kullanarak Blok Diyagram Deprem Dedektörü Arduino blok şemasını kullanan Deprem Dedektörü

Gerekli Bileşenler

  • ArduinoUno: Ucuz olduğu için Arduino Uno kullandık ve iki analog pime ve sekiz dijital pime ihtiyacımız olduğundan bu proje için mükemmel uyuyor. Programlaması kolaydır ve programı saklamak için hafıza kaybı vardır.
  • MPU6050: MPU6050, 6 Eksenli İvmeölçer ve jiroskoptur. Genellikle bir hareket takip cihazıdır. Aynı zamanda sıcaklığı ölçebilir. Daha az güç tüketir ve fiyatı çok ucuzdur.

İşte bazı MPU6050 özellikleri

  • Jiroskop çalışma akımı: 3.6mA.
  • İvmeölçer normal çalışma akımı: 500µA.
  • Bekleme akımı: 5µA.
  • Çalışma voltajları 2,37v ila 3,46v arasındadır
  • Geliştirilmiş düşük frekanslı gürültü performansı.
  • Dijital çıkışlı sıcaklık sensörü.

MPU6050 modülünün pin açıklaması:

  1. Vcc: Bu pime 3.3 besleme gerilimi.
  2. GND: Bu pin toprağa bağlı.
  3. SCL: I 2 C Seri Saat Pimi.
  4. SDA: I 2 C Seri Veri Pimi.
  5. XDA: I 2 C Harici bir sensör için Ana Veri pini.
  6. XCL: I 2 C Harici bir sensör için Ana Saat pimi.
  7. AD0: I 2 C Slave Adresi LSB.
  8. INT: Dijital çıkış pinini kes.
  • 16 × 2 LCD : LCD, alfasayısal karakterleri göstermek için kullanılır. Toplam 16 pimi vardır. LCD'nin kontrastını ayarlamak için üçüncü pim ile bir 10K ohm potansiyometre bağlanır. Ayrıca bir arka ışık LED'i içerir. Bu projede kullandığımız LCD 16 × 2 dir, yani 16 karakteri iki satırda görüntüleyebiliriz. Bu projede şokların tespit edilip edilmediğini göstermek için LCD kullanılmaktadır.
  • Led : Deprem şoklarının algılandığını ve kırmızı rengin de tehlikeyi temsil ettiğini belirtmek için kırmızı bir led kullanılır.
  • Buzzer: Bir zil, deprem şoklarının algılandığı kişilere alarm veren yüksek bir ses üretir.
  • Direnç ve bazı jumper kabloları

Arduino kullanan Deprem Dedektörünün Devre Şeması Arduino devre şemasını kullanan Deprem Dedektörü

Deprem Dedektörünün Arduino blok şemasını kullanarak çalışması

Arduino her şeyden önce MPU 6050'yi başlatır. Uyku modunu ve modülden bir saat sinyalini kontrol edin ve ardından değerleri okumaya başlayın. Kontrol ettiği kodda maksimum ve minimum değerler belirtilir, değerin istenilen değerden büyük veya küçük olup olmadığı daha sonra sesli uyarıyı çalıştırır, led ve LCD'de “*** Deprem ***” mesajını gösterir. Değerler normalse hiçbir şey yapmaz.

Arduino ile Deprem Dedektörünün Uygulanması

Arduino kullanan deprem dedektörü

Arduino kullanan Deprem Dedektörü için Seri Plotter

plotter

Arduino kullanarak Deprem Dedektörü Kodu

#include <LiquidCrystal.h>

#include <Wire.h>

#include <MPU6050.h>

#define minval -5

#define maxval 3

MPU6050 mpu;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()

{   lcd.begin(16, 2);

    Serial.begin(115200);

    pinMode(7,OUTPUT);

    pinMode(8,OUTPUT);

    lcd.print("   EarthQuake ");

    lcd.setCursor(0, 1);

    lcd.print("   Detector");

    delay (2000);

    lcd.clear();

  // Initialize MPU6050

  Serial.println("Initialize MPU6050");

  while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))

  { Serial.println("Could not find a valid MPU6050 sensor, check wiring!");

    delay(500);}

  mpu.setThreshold(3); 

  // Check settings

  checkSettings();

}



void checkSettings()

{

  Serial.println();



  Serial.print(" * Sleep Mode:        ");

  Serial.println(mpu.getSleepEnabled() ? "Enabled" : "Disabled");

  Serial.print(" * Clock Source:      ");

  switch(mpu.getClockSource())

  {case MPU6050_CLOCK_KEEP_RESET:     Serial.println("Stops the clock and keeps the timing generator in reset"); break;

    case MPU6050_CLOCK_EXTERNAL_19MHZ: Serial.println("PLL with external 19.2MHz reference"); break;

    case MPU6050_CLOCK_EXTERNAL_32KHZ: Serial.println("PLL with external 32.768kHz reference"); break;

    case MPU6050_CLOCK_PLL_ZGYRO:      Serial.println("PLL with Z axis gyroscope reference"); break;

    case MPU6050_CLOCK_PLL_YGYRO:      Serial.println("PLL with Y axis gyroscope reference"); break;

    case MPU6050_CLOCK_PLL_XGYRO:      Serial.println("PLL with X axis gyroscope reference"); break;

    case MPU6050_CLOCK_INTERNAL_8MHZ:  Serial.println("Internal 8MHz oscillator"); break;

  }

  Serial.print(" * Gyroscope:         ");

  switch(mpu.getScale())

  {case MPU6050_SCALE_2000DPS:        Serial.println("2000 dps"); break;

    case MPU6050_SCALE_1000DPS:        Serial.println("1000 dps"); break;

    case MPU6050_SCALE_500DPS:         Serial.println("500 dps"); break;

    case MPU6050_SCALE_250DPS:         Serial.println("250 dps"); break:}

  Serial.print(" * Gyroscope offsets: ");

  Serial.print(mpu.getGyroOffsetX());

  Serial.print(" / ");

  Serial.print(mpu.getGyroOffsetY());

  Serial.print(" / ");

  Serial.println(mpu.getGyroOffsetZ());

  Serial.println();}

void loop()

{   Vector rawGyro = mpu.readRawGyro();

  Vector normGyro = mpu.readNormalizeGyro();

  Serial.print(" Xraw = ");

  Serial.print(rawGyro.XAxis);

  Serial.print(" Yraw = ");

  Serial.print(rawGyro.YAxis);

  Serial.print(" Zraw = ");

  Serial.println(rawGyro.ZAxis); 

if(normGyro.XAxis > maxval || normGyro.XAxis < minval && normGyro.YAxis > maxval || normGyro.YAxis  < minval && normGyro.ZAxis > maxval || normGyro.ZAxis  < minval)

{ digitalWrite(7,HIGH);

  digitalWrite(8,HIGH);

  delay(300);

  digitalWrite(7,HIGH);

  digitalWrite(8,HIGH);

  delay(300);

  lcd.clear();

  lcd.print("***EarthQuake***");

  delay (1000);

  lcd.clear();}

 else{digitalWrite(7,LOW);

 digitalWrite(8,LOW);}

  Serial.print(" Xnorm = ");

  Serial.print(normGyro.XAxis);

  Serial.print(" Ynorm = ");

  Serial.print(normGyro.YAxis);

  Serial.print(" Znorm = ");

  Serial.println(normGyro.ZAxis);

  delay(10);}

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Arduino Kullanarak PC Tabanlı Ev Otomasyonu

 

Arduino Kullanarak PC Tabanlı ev Otomasyonu


Arduino kullanan PC tabanlı Ev Otomasyon Sistemi : Modern çağda, herkes daha az zorluk ile yaşam kolaylığı istiyor. Evet, teknolojinin bizi tembelleştirdiği doğru ama bir yandan da hayatın her alanını iyileştiriyor. Artık bir günlük Ev otomasyonu veya Akıllı evler yaşam standartlarını iyileştiriyor. Bize herhangi bir cihazı veya cihazı kolay ve verimli bir şekilde açma ve kapatma erişimi sağladı. IR uzaktan kumanda , GSM modülü , Bluetooth , Wifi gibi cihazlarla ve seri iletişim yoluyla iletişim kurmanın çeşitli yolları vardır. bilgisayar ile. Bu projede kullandığımız yöntem bilgisayar ile seri iletişimdir. Arduino IDE'nin seri monitörü komut göndermek için kullanılır. Ayrıca wifi ve pic mikrodenetleyiciyi kullanarak ev otomasyonunu kontrol etmek isteyebilirsiniz 

Arduino kullanarak PC tabanlı ev otomasyonunun Blok Şeması 

Arduino Uno, projenin beyni olarak kullanılmıştır Mesajları göstermek için 16 × 2 LCD kullanılır. Cihazları açıp kapatmak için kanal röle modülü kullanılır. Arduino ile seri haberleşme yapmak için bir bilgisayar kullanılır. Cihazlar yerine AC ampuller kullanıyoruz. Ancak istediğiniz herhangi bir cihazı kullanabilirsiniz. Demo amaçlı olarak üç adet AC lamba kullandık. Bu cihazları açmak ve kapatmak için bilgisayardan Arduino'ya komutlar göndereceğiz. Arduino kullanan pc tabanlı ev otomasyon sisteminin blok diyagramı

Bilgisayar tabanlı ev otomasyonu için gerekli bileşenler

  • Arduino Uno: Sadeliğinden dolayı Arduino kullanıyoruz ve aynı zamanda LCD ve röle modülü ile arayüze çok fazla dijital pin sağlıyor Herhangi bir projenin prototipini oluştururken çok kolay.
  • 4 Kanal Röle Modülleri: Bu projede kullandığımız modül HL-54S'dir. Arduino'dan gelen 5v mantıksal sinyali kullanarak açılır ve kapanır. 250VAC ve 10A'ya kadar işleyebilir. Bu modüllerin 4 rölesi vardır, böylece 4 AC cihazı veya cihazı kontrol edebiliriz.
  • 16 × 2 LCD: LCD, proje adını, girilebilen komutların listesini görüntülemek için kullanılır, daha sonra herhangi bir komut vermek ve girilen komutun durumunu göstermek ister. 16 × 2 LCD kullanıyoruz çünkü Arduino ile arayüz kolay ve fiyatı çok ucuz. Ekranın kontrastını kontrol etmek için 10k potansiyometre kullanılır
  • Tutuculu AC ampuller: AC ampuller, cihazları ve cihazları temsil etmek için kullanılır. Çünkü herhangi bir AC projesinin prototipini oluştururken kullanımı kolaydır ve çok kullanışlıdır. Nihai üründe, kontrol etmek için sadece AC soketiyle değiştirin.
  • Fişli AC kablosu: Daha yüksek voltajlarla çalışırken kaliteli kablo kullanmanızı tavsiye ederim. Bağlantıları kapatmak için elektrik bandı kullanmak her zaman iyidir.
  • Harici 5 Volt besleme: Röleyi açıp kapatmak için 5 voltluk dc besleme gereklidir. Aksi takdirde işe yaramadı. Ayrıca, Arduino'dan 5v vermeyin.

Arduino kullanarak PC tabanlı ev otomasyonunun Devre Şeması arduino kullanan pc tabanlı ev otomasyon sisteminin devre şeması

Bağlantılar:

16 × 2 LCD:

  • SS toprağa.
  • DD , besleme gerilimi için.
  • O , 10k potansiyometrenin pimini ayarlamak için.
  • RS'den Pin 8'e.
  • RW toprağa.
  • Pin 9'u etkinleştirin.
  • LCD D4 ile Pin 10 arası.
  • LCD D5 - Pin 11.
  • LCD D6'dan Pin 12'ye.
  • LCD D7'den Pin 13'e.
  • Potansiyometrenin bir ucunu ve LCD arka ışığının katotunu topraklayın.
  • Potansiyometrenin diğer ucuna ve LCD arka ışığının anotuna 5v.

4 Kanal Röle modülleri:

  • Harici 5 volt'tan JD V CC'ye .
  • Yerden yere.
  • Ini1'den Pin 3'e.
  • Ini2'den Pin 4'e.
  • Ini3'ten Pin5'e.
  • Vcc'den Arduino 5v'ye.
  • Tüm ampullerin bir ucunu normalde açık olan rölelerin terminaline bağlayın.
  • Rölenin tüm ortak terminallerine 220VAC'nin bir ucu ve başka bir ampul terminali ile diğer ucu.

Çalışma: Öncelikle LCD'nin PC mesajını kullanarak Ev Otomasyonunu, ardından girebileceğiniz komut listesini görüntüler. Sonunda, komutun girilmesini ve komutun durumunu göstermesini ister. Arduino IDE'den seri monitörden bir komut girildiğinde, Arduino tanımlananla aynı komut olup olmadığını kontrol eder. Evet ise, ilgili röleyi açar ve kapatır.

Arduino kullanarak PC tabanlı ev otomasyonunun uygulanması Arduino kullanan PC tabanlı ev otomasyon sistemi

Video gösterimi


PC tabanlı ev otomasyon sistemi kodu

#include <LiquidCrystal.h>
#include<string.h>
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
#define light 3
#define fan 4
#define TV 5
char temp;
char str[10];
char i=0;
void setup() 
{
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(light, OUTPUT);
pinMode(fan, OUTPUT);
pinMode(TV, OUTPUT);
digitalWrite(light, HIGH);
digitalWrite(fan, HIGH);
digitalWrite(TV, HIGH);
lcd.print("MICROCONTROLLERS ");
lcd.setCursor(0,1); 
lcd.print(" LAB ");
delay(2000);
lcd.clear();
lcd.print("HOME AUTOMATION ");
lcd.setCursor(0,1);
lcd.print(" USING PC ");
delay(2000);
lcd.clear();
lcd.print("1. LIGHT ON");
lcd.setCursor(0,1);
lcd.print("2. LIGHT OFF");
delay(2000);
lcd.clear();
lcd.print("3. FAN ON");
lcd.setCursor(0,1);
lcd.print("4. FAN OFF");
delay(2000);
lcd.clear();
lcd.print("5. TV ON");
lcd.setCursor(0,1);
lcd.print("6. TV OFF");
delay(2000);
defualt();
delay(1000);
}
void loop() 
{
if(temp==1)
{
if((strncmp(str,"FAN ON", 6))==0)
{
lcd.clear();
digitalWrite(fan, LOW);
lcd.clear();
lcd.print("Fan Turned On");
delay(3000);
defualt();
}

else if(strncmp(str, "FAN OFF", 7)==0)
{
digitalWrite(fan, HIGH);
lcd.clear();
lcd.print("Fan Turned OFF"); 
delay(3000);
defualt();
}

else if(strncmp(str, "LIGHT ON", 8)==0)
{
digitalWrite(light, LOW);
lcd.clear();
lcd.print("Light Turned ON"); 
delay(3000);
defualt();
}

else if(strncmp(str, "LIGHT OFF", 9)==0)
{
digitalWrite(light, HIGH);
lcd.clear();
lcd.print("Light Turned OFF"); 
delay(3000);
defualt();
}

else if(strncmp(str, "TV ON", 5)==0)
{
digitalWrite(TV, LOW);
lcd.clear();
lcd.print("TV Turned ON"); 
delay(3000);
defualt();
}

else if(strncmp(str, "TV OFF", 6)==0)
{
digitalWrite(TV, HIGH);
lcd.clear();
lcd.print("TV Turned OFF"); 
delay(3000);
defualt();
}

else 
{
lcd.clear();
lcd.print(" Invalid Input");
lcd.setCursor(0,1);
lcd.print(" Try Again ");
delay(3000);
defualt();
}
}
}
void serialEvent()
{
while(Serial.available())
{
char Inchar=Serial.read();
str[i]=Inchar;
i++;
lcd.print(Inchar);
delay(50);
if(Inchar == 0x0d)
{
temp=1;
//Inchar=0;
}
}
}
void defualt()
{
lcd.clear();
lcd.print("Enter UR Choice");
lcd.setCursor(0,1);
lcd.cursor();
i=0;
temp=0;
}

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.