dominoFiber     domiRobot     Blog

 
Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

İletileri Göster

Bu özellik size üyenin attığı tüm iletileri gösterme olanağı sağlayacaktır . Not sadece size izin verilen bölümlerdeki iletilerini görebilirsiniz


Mesajlar - Hasan ERTURK

Sayfa: [1] 2 3 ... 6
1
Projeleriniz / Ynt: Step motor uygulaması
« : Temmuz 22, 2019, 06:50:23 ÖS »
Merhaba. Devrede sensör yok. Sensörden gelen bilgiye göre de farklı senaryolarda hareket sağlanabilir.

3
Bu satın aldığınız sonoff ürününü kullanırken bir mesafe problemi var mı? Yani telefonunuzla ürün arasındaki iletişim mesafesini sınırlayan bir durum söz konusu mu?

4
Ürünleri domiRobottan alırsanız yardımcı olmaya çalışırım.

5
Satın almış olduğunuz ürün ile sadece 1 tane cihazı aç kapa yapabilirsiniz. Daha fazla cihazı aç kapa yapabilmek için çıkış sayısı daha fazla olan bir ürün almanız gerekir.

Alternatif olarak satın almış ürünle 4 farklı cihazı aç kapa yapabilmek için aşağıdaki ürünleri satın almanız ve ürünler arasındaki kablo bağlantılarını yaptıktan sonra arduino kartına uygun bir program atmanız gerekir.

Sonra daha önce satın almış olduğunuz sonoff ürünüyle 4 cihazı aç kapa yapabilirsiniz. 4 cihazın açık ya da kapalı olma durumuna göre 16 değişik durum söz konusudur. Sonoff cihazınızla her aç kapa işleminden sonra birbirinden farklı 16 değişik durum sırayla gerçekleştirilebilir. Değişimler sırayla olacaktır. Arada atlama yapamazsınız.

6
Satın almak istediğiniz ürüne ait domirobot linkini verrirseniz bakalım.

7
domiRobot projeleri / Boy ölçer
« : Mart 23, 2019, 11:48:00 ÖÖ »
Arduino Boy Ölçer Uygulaması
Bu projemizde HC SR-04 mesafe sensörü kullanarak boy ölçer yapacağız. Boy bilgisi 16x2 lcd ekranda görüntülenecektir.

Amaç
Boy ölçer yapma becerisi kazanmak.

Seviye:
Orta seviye


Şema 1: Boy ölçer fritzing devre şeması

Arduino kodları
Kod: [Seç]
#include <LiquidCrystal.h>                // likid kristal kutuphanesi eklendi
LiquidCrystal lcd(8,9,4,5,6,7);           // likid kristal pinleri
#define echoPin 2                         // eko pini D2
#define trigPin 3                         // tetik pini D3
#define buton 13                          // buton pini D13
long sure, kalibre_mesafesi, cisim_ile_sensor_arasindaki_mesafe, boy;

void setup()
{
  pinMode(echoPin, INPUT);
  pinMode(trigPin,OUTPUT);
  acilis_iletisi();
  kalibre_et();
}

void loop()
{
  olcumu_baslat();
  if(digitalRead(buton) == 1)
  {
    olcum_yap();
    sure_hesapla();
    cisim_ile_sensor_arasindaki_mesafeyi_hesapla();
    boy_hesapla();   
  }
}

void acilis_iletisi()
{
  lcd.begin(16,2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("BOY OLCER       ");
  lcd.setCursor(0,1);
  lcd.print("4006 BiLiM FUARI");
  delay(1500); 
}

void kalibre_et()
{
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin,LOW);
  sure = pulseIn(echoPin, HIGH);
  kalibre_mesafesi = sure / 29.1 / 2;
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("KALiBRASYON");
  lcd.setCursor(0,1);
  lcd.print("YAPILDI");
  delay(1000);
}

void olcumu_baslat()
{
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("BOYUNUZU OLCMEK");
  lcd.setCursor(0,1);
  lcd.print("iCiN BUTON BASIN");
  delay(200);   
}


void olcum_yap()
{
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("BOYUNUZ");
    lcd.setCursor(0,1);
    lcd.print("OLCULUYOR");   
    delay(1000); 
    digitalWrite(trigPin, LOW);
    delayMicroseconds(5);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin,LOW);       
}


void sure_hesapla()
{
  sure = pulseIn(echoPin, HIGH);                          // Eko pini 5V gelmesinden itibaren süre ölç sure degiskenine kaydet
}


void cisim_ile_sensor_arasindaki_mesafeyi_hesapla()
{
  cisim_ile_sensor_arasindaki_mesafe = sure / 29.1 / 2;       
}


void boy_hesapla()
{
  boy = kalibre_mesafesi - cisim_ile_sensor_arasindaki_mesafe;
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("BOYUNUZ ");
  lcd.print(boy);
  lcd.print(" cm ");
  lcd.setCursor(0,1);
  lcd.print("OLARAK OLCULDU  ");   
  delay(5000);       
}

Malzeme listesi

Download
İhtiyaç duyulması halinde projeye ait dosyaları buraya tıklayıp indirebilirsiniz.

8
Mekatronik / RTC I2C tarih saat güncelleme
« : Mart 10, 2019, 09:24:11 ÖÖ »
 

İşlem Basamakları:
1. RTC bağlantısı yukarıdaki resimde görüldüğü gibi yapılır.
2. RTC kütüphanesi eklenir.
3. Aşağıdaki kodlamada bulunan 25. satırdaki tarih ve saat bilgisi güncellenerek kodlar yüklenir.
Kod: [Seç]
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

void setup () {
  Serial.begin(9600);
#ifdef AVR
  Wire.begin();
#else
  Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
  rtc.begin();

 // if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    Serial.println((__DATE__, __TIME__));
    // following line sets the RTC to the date & time this sketch was compiled
   // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
   rtc.adjust(DateTime(__DATE__, __TIME__)); //yes - I want it to adjust to compile time
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
     rtc.adjust(DateTime(2019, 3, 10, 9, 54, 0));
// }
}

void loop () {
    DateTime now = rtc.now();
   
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
   
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
   
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
   
    Serial.println();
    delay(3000);
}

9
Projeleriniz / Ynt: Sensörlü sistem yardım
« : Mart 08, 2019, 08:21:13 ÖÖ »


Gereksinimler:

1. Kulllanılacak sensör HC SR04. Alternatif olarak alınan verime göre farklımesafe sensörleri kullanılabilir.

2. Arduino uno. Projenizin özellkiklerine göre farklı arduino modelleri kullanılabilir.

3. Jumper kablolar.

4. Adaptör

5. LCD sheeld. Farklı lcd modelleri tercih edilebilir.

6. Kullandığınız motora uygun motor sürücü

Malzemeler temin edildikten sonra yukarıdaki görselde tarif ettiğim çalışma prensibine uygun olarak kodlama ve devrenin montajı yapılarak sonuca ulaşılır.

10
Projeleriniz / Ynt: Sensörlü sistem yardım
« : Mart 06, 2019, 09:45:30 ÖÖ »
Sensörlerle neyin varlığı ya da yokluğu algılanacak? Ölçülecek olan büyüklük nedir?

11
Arduino / Arduino ide dark tema
« : Ocak 03, 2019, 10:01:57 ÖÖ »
Arduino idesinin göz yorucu temasından sıkılanlar için bir alternatif.

Kurulum için işlem basamakları:
1. github.com sitesinden ya da konu ekinden temayı indirin.

2. Arduinonun default (varsayılan) teması C:\Program Files (x86)\Arduino\lib yolunda theme isimli klasörde bulunur. Bu klasörün ismini değiştirin. örneğin theme_eski gibi.

3. İndirmiş olduğunuz zipli dosyayı masa üstüne çıkarın. DarkArduinoTheme-master isimli klasörün içindeki theme isimli klasörü C:\Program Files (x86)\Arduino\lib içerine bırakın.

Tema değişimi tamamlandı. Güle güle kullanın.

 

12
Çocuklar için / 3. S4A led buton uygulaması
« : Ekim 18, 2018, 09:44:50 ÖÖ »
Bu projemizde dijital 2 pinine bağlı butona basıldığında dijital 10. pine bağlı ledi yakan devreyi yapacağız. Buton bırakıldığında led sönecektir.

Devre şeması:

Fritzing devre şeması

Kod blokları

S4A kod blokları

Malzeme listesi


13
Çocuklar için / 2. S4A Blink
« : Ekim 16, 2018, 06:28:57 ÖS »
Bu devreyi tamamladığınızda video 1'de görüldüğü gibi 2 adet ledin 0,5 saniye aralıklarla sırayla yanıp söndüğünü gözlemleyeceksiniz.

<a href="http://www.youtube.com/watch?v=IFhCvwcWqYg" target="_blank">http://www.youtube.com/watch?v=IFhCvwcWqYg</a>
Video 1: S4A Blink

Devremizi fotoğraf 1 ve şema 1'de görüldüğü gibi kuruyoruz.


Şema 1: Frtitzing devre şeması


Fotoğraf 1: Devrenin tamamlanmış hali

Program blogları resim 1'de görüldüğü gibi S4A programını kullanarak hazırlanır.

 
Resim 1: S4A blokları

Malzeme listesi


14
Çocuklar için / 1. Kod yazmadan arduino programlayın
« : Ekim 16, 2018, 06:25:08 ÖS »
Herhangi bir programlama dili bilmeden tamamen görsel olarak Arduino programlayabilirsiniz. programlamaya başlamadan önce bir ön hazırlığımız olacak. Aşağıdaki açıklamaları takip ederek ön bilgilenmeyi tamamladıktan sonra kod yazmadan arduino programlamaya başlayabilirsiniz.

Scracth Nedir?

Scratch yazılım geliştirme platformu ve programlama dili çocukların bilgisayar programlamaya ilk adımları atmalarını sağlamak amacıyla geliştirilmiştir.


S4A Nedir?
S4A programı Scratch tabanlı bir programlama dilidir. İçerisinde Arduino’yu kontrol etmemizi sağlayan bazı programlama blokları bulunur. Bu program blokları sayesinde kod yazmadan tamamen görsel olarak Arduino’yu programlayabilirsiniz. Programınızı bloklar halinde yazıyor olmanız dışında S4A’nın Türkçe dil desteğinin olması programlamaya ayrı bir kolaylık getiriyor.

Programın avantajlarından birisi ise yalnızca bilgisayardan veri gönderme değil aynı zamanda Arduino’dan gelen verileri de okuyabiliyorsunuz. Bu sayede daha zengin programlar yazabilirsiniz.


Öncelikle buraya tıklayarak Arduino’nun yazılımını indirmelisiniz.

Ardından aşağıdaki kodları bir defaya mahsus arduinoya yüklemeniz gerekiyor.

Kod: [Seç]
typedef enum {
  input, servomotor, pwm, digital }
pinType;

typedef struct pin {
  pinType type;       //Type of pin
  int state;         //State of an output
  //byte value;       //Value of an input. Not used by now. TODO
};

pin arduinoPins[14];  //Array of struct holding 0-13 pins information

unsigned long lastDataReceivedTime = millis();

void setup()
{
  Serial.begin(38400);
  Serial.flush();
  configurePins();
  resetPins();
}

void loop()
{
  static unsigned long timerCheckUpdate = millis();

  if (millis()-timerCheckUpdate>=20)
  {
    sendUpdateServomotors();
    sendSensorValues();
    timerCheckUpdate=millis();
  }

  readSerialPort();
}

void configurePins()
{
  arduinoPins[0].type=input;
  arduinoPins[1].type=input;
  arduinoPins[2].type=input;
  arduinoPins[3].type=input;
  arduinoPins[4].type=servomotor;
  arduinoPins[5].type=pwm;
  arduinoPins[6].type=pwm;
  arduinoPins[7].type=servomotor;
  arduinoPins[8].type=servomotor;
  arduinoPins[9].type=pwm;
  arduinoPins[10].type=digital;
  arduinoPins[11].type=digital;
  arduinoPins[12].type=digital;
  arduinoPins[13].type=digital;
}

void resetPins() {
  for (byte index=0; index <=13; index++)
  {
    if (arduinoPins[index].type!=input)
    {
      pinMode(index, OUTPUT);
      if (arduinoPins[index].type==servomotor)
      {
        arduinoPins[index].state = 255;
        servo (index, 255);
      }
      else
      {
        arduinoPins[index].state=0;
        digitalWrite(index,LOW);
      }
    }
  }
}

void sendSensorValues()
{
  unsigned int sensorValues[6], readings[5];
  byte sensorIndex;

  for (sensorIndex = 0; sensorIndex < 6; sensorIndex++) //for analog sensors, calculate the median of 5 sensor readings in order to avoid variability and power surges
  {
    for (byte p = 0; p < 5; p++)
      readings[p] = analogRead(sensorIndex);
    insertionSort(readings, 5); //sort readings
    sensorValues[sensorIndex] = readings[2]; //select median reading
  }

  //send analog sensor values
  for (sensorIndex = 0; sensorIndex < 6; sensorIndex++)
    ScratchBoardSensorReport(sensorIndex, sensorValues[sensorIndex]);

  //send digital sensor values
  ScratchBoardSensorReport(6, digitalRead(2)?1023:0);
  ScratchBoardSensorReport(7, digitalRead(3)?1023:0);
}

void insertionSort(unsigned int* array, unsigned int n)
{
  for (int i = 1; i < n; i++)
    for (int j = i; (j > 0) && ( array[j] < array[j-1] ); j--)
      swap( array, j, j-1 );
}

void swap(unsigned int* array, unsigned int a, unsigned int b)
{
  unsigned int temp = array[a];
  array[a] = array[b];
  array[b] = temp;
}

void ScratchBoardSensorReport(byte sensor, int value) //PicoBoard protocol, 2 bytes per sensor
{
  Serial.write( B10000000
    | ((sensor & B1111)<<3)
    | ((value>>7) & B111));
  Serial.write( value & B1111111);
}

void readSerialPort()
{
  byte pin;
  int newVal;
  static byte actuatorHighByte, actuatorLowByte;
  static byte readingSM = 0;

  if (Serial.available())
  {
    if (readingSM == 0)
    {
      actuatorHighByte = Serial.read();
      if (actuatorHighByte >= 128) readingSM = 1;
    }
    else if (readingSM == 1)
    {
      actuatorLowByte = Serial.read();
      if (actuatorLowByte < 128) readingSM = 2;
      else readingSM = 0;
    }

    if (readingSM == 2)
    {
      lastDataReceivedTime = millis();   
      pin = ((actuatorHighByte >> 3) & 0x0F);
      newVal = ((actuatorHighByte & 0x07) << 7) | (actuatorLowByte & 0x7F);

      if(arduinoPins[pin].state != newVal)
      {
        arduinoPins[pin].state = newVal;
        updateActuator(pin);
      }
      readingSM = 0;
    }
  }
  else checkScratchDisconnection();
}

void reset() //with xbee module, we need to simulate the setup execution that occurs when a usb connection is opened or closed without this module
{
  resetPins();        // reset pins
  sendSensorValues(); // protocol handshaking
  lastDataReceivedTime = millis();
}

void updateActuator(byte pinNumber)
{
  if (arduinoPins[pinNumber].type==digital) digitalWrite(pinNumber, arduinoPins[pinNumber].state);
  else if (arduinoPins[pinNumber].type==pwm) analogWrite(pinNumber, arduinoPins[pinNumber].state);
}

void sendUpdateServomotors()
{
  for (byte p = 0; p < 10; p++)
    if (arduinoPins[p].type == servomotor) servo(p, arduinoPins[p].state);
}

void servo (byte pinNumber, byte angle)
{
  if (angle != 255)
    pulse(pinNumber, (angle * 10) + 600);
}

void pulse (byte pinNumber, unsigned int pulseWidth)
{
  digitalWrite(pinNumber, HIGH);
  delayMicroseconds(pulseWidth);
  digitalWrite(pinNumber, LOW);
}

void checkScratchDisconnection() //the reset is necessary when using an wireless arduino board (because we need to ensure that arduino isn't waiting the actuators state from Scratch) or when scratch isn't sending information (because is how serial port close is detected)
{
  if (millis() - lastDataReceivedTime > 1000) reset(); //reset state if actuators reception timeout = one second
}



Bu sayede S4A programı ile Arduino arasında ilk haberleşmeyi sağlayacaksınız. S4A programının Arduino’nuzu tanıması için S4AFirmware16 isimli programı Arduino’ya atmanız gerekiyor. Sonrasında bu işlemi tekrarlamanıza gerek yok.

S4A’yı buraya tıklayarak indirebilirsiniz. S4A programının kurduktan sonra aşağıda ki görüntü ile karşılaşacaksınız.


Sol tarafta ki program bloklarını kullanarak programınızı oluşturabilir ve Arduino’da çalışmasını sağlayabilirsiniz. S4A ile programlamaya hemen başlayın !

15
Projeleriniz / Ynt: temassız termometre
« : Eylül 18, 2018, 09:13:13 ÖS »
Pro mininin 5 Voltluk olanından kullanmak gerek. Söz konusu sensör 5 Volt besleme gerektirmekte. 4.0 BLE Modül ile daha önce çalışmadım. Malzemeleri alıp gönderirseniz yapmaya çalışırım.

Sayfa: [1] 2 3 ... 6