1Sheeld+ - Akıllı telefon ile çok yönlü Arduino Shield

Kodla Büyü
bir an 1sheeld aparatı olmadan sadece arduino ve bluetooth ile 1sheeld uygulamasını yükleyerek bu işi yapacağımı sandım :) yıkıldım.
yok mu acaba aparatını almadan bu işleri yaptırtacak uygulama. mesela ben arduinoyu telefondan sesle kontrol etmek istiyorum
 
Proje: 6
OneSheeldPlus yüz algılama sistemiyle açılan kapı.

FaceDetector_bb.jpg

Kod:

Kod:
#define CUSTOM_SETTINGS
#define INCLUDE_FACE_DETECTOR_SHIELD
#define INCLUDE_TERMINAL_SHIELD

/* Servo kütüphanesini projeye dahil ediyoruz. */
#include <Servo.h>
/* OneSheeld kütüphanesini projeye dahil ediyoruz. */
#include <OneSheeld.h>

/* Ledin bağlı olduğu pini tanımlıyoruz. */
int ledPin = 13;

/* Göz kırpma sayacına bir isim veriyoruz. */
int counter = 0;

Servo servom ;
void setup()
{
  /* İletişimi başlatıyoruz. */
  OneSheeld.begin();
  /* ledin bağlı olduğu pini çıkış pini olarak ayarlıyoruz. */
  pinMode(ledPin,OUTPUT);
  /* Servo motorumuzu tanımlıyoruz. */
  servom.attach(12) ;
}

void loop()
{
/* Sürekli terminal ekranına değeri göndermesini sağlıyoruz kalibre ederken işinize yarayacak */
  Terminal.println(FaceDetector.getVisibleFace(0).getLeftEyeOpenProbability());
/* Alttaki değerleri kalibre etmeniz gerekebilir -1 değeri kalsın yüz algılanmadığı zaman dönen değer bu diğer değer 0 (tamamen kapalı) ile 100 (tamamen açık) arası değişiyor. */
/* İlk yüz verisini al ve göz kırpıp kırpmadığını kontrol et. */
  if(FaceDetector.getVisibleFace(0).getLeftEyeOpenProbability() < 40 and FaceDetector.getVisibleFace(0).getLeftEyeOpenProbability()> -1)
  {
    /*Göz kırpılmışsa ledi yak. */
    digitalWrite(ledPin,HIGH);
    /* Göz kırpmayı say. */
    counter++;
    /* 1 saniye bekle. */
    OneSheeld.delay(5000);
  }else
  {
    /* Göz kırpılmamışsa ledi söndür. */
    digitalWrite(ledPin,LOW);
  }

  /* Göz kırpmayı say. */
  if(counter == 3)
  {
    /* 3 kere göz kırpılmışsa ekrana Kapi Acildi yazdır. */
    Terminal.println("Kapi Acildi");
    digitalWrite(ledPin,HIGH);
    /* Kapıyı aç. */
    servom.write(90);
    /* 5 saniye bekle */
    OneSheeld.delay(5000);
    /* Kapıyı kapat */
    servom.write(1);
    digitalWrite(ledPin,LOW);
    Terminal.println("Kapi Kapandi");
    counter=0;
  }
}

 

Ekli dosyalar

  • FaceDetector.zip
    498.5 KB · Görüntüleme: 8
Proje: 7
OneSheeldPlus GamePad uygulaması.

GamePad_bb.jpg

Kod:
Kod:
#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_SHIELD

/* OneSheeld kütüphanesi projeye dahil ediliyor. */
#include <OneSheeld.h>

void setup()
{
  /* İletişim başlatılıyor. */
  OneSheeld.begin();
  /* Ledlerin bağlı olduğu pinler çıkış olarak tanımlanıyor. */
  pinMode(13,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(10,OUTPUT);
 
}

void loop()
{
  /* Sürekli GamePad düğmelerine basılıp basılmadığı kontrol ediliyor. */
  if (GamePad.isUpPressed())
  {
    /* Yukarı düğmesi basılı ise 13 nolu pine bağlı olan ledi yakıyoruz. */
    digitalWrite(13,HIGH);
    /* Diğerlerini söndürüyoruz. */
    digitalWrite(12,LOW);
    digitalWrite(11,LOW);
    digitalWrite(10,LOW);
  }
 if(GamePad.isDownPressed())
  {
    /* Aşağı düğmesi basılı ise 10 nolu pine bağlı olan ledi yakıyoruz. */
    digitalWrite(10,HIGH);
    /* Diğerlerini söndürüyoruz. */
    digitalWrite(11,LOW);
    digitalWrite(12,LOW);
    digitalWrite(13,LOW);
  }
 if (GamePad.isUpPressed()&&GamePad.isOrangePressed())
  {
    /* Yukarı ve Turuncu düğmesine beraber basılırsa 12 nolu pine bağlı olan ledi yakıyoruz. */
    digitalWrite(12,HIGH);
    /* Diğerlerini söndürüyoruz. */
    digitalWrite(13,LOW);
    digitalWrite(10,LOW);
    digitalWrite(11,LOW);
  }
 if (GamePad.isDownPressed()&&GamePad.isRedPressed())
  {
    /* Aşağı ve Kırmızı düğmesine beraber basılırsa 11 nolu pine bağlı olan ledi yakıyoruz. */
    digitalWrite(11,HIGH);
    /* Diğerlerini söndürüyoruz. */
    digitalWrite(12,LOW);
    digitalWrite(13,LOW);
    digitalWrite(10,LOW);
  }
}
 

Ekli dosyalar

  • GamePad.zip
    737.9 KB · Görüntüleme: 6
Proje: 8
Akıllı telefonumuzun ivme ölçer sensörünü kullanarak trafik kazasını, sms ve e-posta yoluyla kazanın koordinatlarını, daha önceden belirlenen mesajı ve kaza yeri fotoğrafını gönderen güvenlik sistemi. Darbe algılanınca 10 saniye içinde düğmeye basılmazsa sistem devreye giriyor.

security.jpg

Kod:
Kod:
#include <OneSheeld.h>
boolean stopGettingReadings = false;
unsigned long lastTimeTaken = 0;
unsigned long currentTime = 0;

float x, y, z;
float lat ;
float lon ;
char charlat [30];
char charlon [30];
char readings [150];
int magnitudeThreshold = 30;
int buttonPin = 12;
void setup()
{
  pinMode(buttonPin,INPUT);
  OneSheeld.begin();
}
void loop()
{
  charlat[0] = 0;
  charlon[0] = 0;
  readings [0] = 0;
  if (!stopGettingReadings)
  {
    x = AccelerometerSensor.getX();
    y = AccelerometerSensor.getY();
    z = AccelerometerSensor.getZ();
  }
  if (sqrt((x * x) + (y * y) + (z * z)) > magnitudeThreshold)
  {
    stopGettingReadings = true;
    Buzzer.buzzOn();
    if (!lastTimeTaken)
    {
      lastTimeTaken = millis();
      currentTime = lastTimeTaken;
    }
    if (currentTime - lastTimeTaken > 10000 && !digitalRead(buttonPin) == HIGH)
    {
      lat = GPS.getLatitude();
      lon = GPS.getLongitude();
      dtostrf(lat, 3, 7, charlat);
      dtostrf(lon, 3, 7, charlon);
      strcat(readings, "Belirtilen Konumda Trafik Kazasi Yaptim!:\n");
      strcat(readings, "Yardima Ihtiyacim var.\n");
      strcat(readings, "http://maps.google.com/maps?q=");
      strcat (readings, charlat);
      strcat(readings, ",");
      strcat (readings, charlon);
      SMS.send("11111111111", readings);
      Camera.rearCapture();
      OneSheeld.delay(1000);
      Email.send("adsoyad@servis.com", "Guvenlik Mesaji", readings);
      OneSheeld.delay(10000);
      Email.attachLastPicture("adsoyad@servis.com", "Guvenlik Mesaji", "Trafik Kazasi Bildirimi");
      OneSheeld.delay(1000);
      resetSystem();
    }
    else
    {
      if (digitalRead(buttonPin) == HIGH)
      {
        resetSystem();
        Terminal.println("Bildirim Iptal Edildi.");
      }
      else currentTime = millis();
    }
  }
}

void resetSystem()
{
  Buzzer.buzzOff();
  stopGettingReadings = false;
  lastTimeTaken = 0;
  currentTime = 0;
}
 

Ekli dosyalar

  • security.zip
    489.3 KB · Görüntüleme: 26
Proje: 9
Trafik verisine göre RGB ledi yakmak.

Traffic_Indicator_bb.jpg

googlemaps.PNG

googlemapsapi.PNG

Kod:
Kod:
/*
 
Trafik Göstergesi

http talebine verilen sabit noktalara (başlangıç, hedef) kadar (tahmini varış zamanı) hesaplamamıza yardımcı olan proje
Trafik koşullarına göre varış zamanını yansıtmaktadır.

Bölgesel saat diliminin doğru olmasına dikkat etmeniz gerekir
*/

#define CUSTOM_SETTINGS
#define INCLUDE_INTERNET_SHIELD
#define INCLUDE_TERMINAL_SHIELD

/* 1Sheeld kütüphanesini dahil edin. */
#include <OneSheeld.h>
/* Discatncematrix api url ile bir Http talebi oluşturun. */
/* Burada küresel bir nesne olarak oluşturulması önemlidir. */
HttpRequest request("https://maps.googleapis.com/maps/api/distancematrix/json?origins=37.889469,41.129196&destinations=37.787733,41.065436&departure_time=now&key=AIzaSyDYnaUa0sz6CNVgyIrwKmEiF7jIbv4i6kI");

/* 11,10 ve 9 numaralı pinlerde bir RGB LED tanımlayın. */
int red = 9;
int green = 10;
int blue = 11;

void setup()
{
  /* İletişimi başlat. */
  OneSheeld.begin();
  /* Talebin başarılı olup olmadığını takip et. */
  request.setOnSuccess(&onSuccess);
  /* json değerlerini takip et. */
  request.getResponse().setOnJsonResponse(&onJsonReply);
  /* Yanıt hatalarını takip et. */
  request.getResponse().setOnError(&onResponseError);
  /* İnternet hatalarını takip et. */
  Internet.setOnError(&onInternetError);
  /* Led pinlerini çıkış olarak ayarla.*/
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(blue, OUTPUT);
}

void loop()
{
  /* Talebi gerçekleştir. */
  Internet.performGet(request);
  /* 5 dk bekle. */
  OneSheeld.delay(60000*5);
}

void onSuccess(HttpResponse & response)
{
  /* Json dizisini gerekli değere kadar sorgulamak için yanıtı kullanın. */
  response["rows"][0]["elements"][0]["duration_in_traffic"]["value"].query();
}

void onJsonReply(JsonKeyChain & hell,char * output)
{
  /* Değerleri al ve tamsayıya dönüştür. */
  int eta = atoi(output);
  int mins = eta/60;

  /* Varış zamanını kontrol et. */
  if(mins>=25)
  {
    redLightsOn();
  }
  else if(mins<25)
  {
    greenLightsOn();delay(1000);lightsOff();delay(1000);
    greenLightsOn();delay(1000);lightsOff();delay(1000);
    greenLightsOn();delay(1000);lightsOff();delay(1000);
    greenLightsOn();
  }
  /*Hataları görmek için terminal ekranını kullan. */
  Terminal.println(eta/60);
}

void greenLightsOn()
{
  digitalWrite(red,LOW);digitalWrite(blue,LOW);digitalWrite(green,HIGH);
}

void redLightsOn()
{
  digitalWrite(red,HIGH);digitalWrite(blue,LOW);digitalWrite(green,LOW);
}

void lightsOff()
{
  digitalWrite(red,LOW);digitalWrite(blue,LOW);digitalWrite(green,LOW);
}

/* Fonksiyonlar işlenirken hata oluşursa. */
void onResponseError(int errorNumber)
{
  /* Hata numarasını yazdır.*/
  Terminal.print("Response error:");
  switch(errorNumber)
  {
    case INDEX_OUT_OF_BOUNDS: Terminal.println("INDEX_OUT_OF_BOUNDS");break;
    case RESPONSE_CAN_NOT_BE_FOUND: Terminal.println("RESPONSE_CAN_NOT_BE_FOUND");break;
    case HEADER_CAN_NOT_BE_FOUND: Terminal.println("HEADER_CAN_NOT_BE_FOUND");break;
    case NO_ENOUGH_BYTES: Terminal.println("NO_ENOUGH_BYTES");break;
    case REQUEST_HAS_NO_RESPONSE: Terminal.println("REQUEST_HAS_NO_RESPONSE");break;
    case SIZE_OF_REQUEST_CAN_NOT_BE_ZERO: Terminal.println("SIZE_OF_REQUEST_CAN_NOT_BE_ZERO");break;
    case UNSUPPORTED_HTTP_ENTITY: Terminal.println("UNSUPPORTED_HTTP_ENTITY");break;
    case JSON_KEYCHAIN_IS_WRONG: Terminal.println("JSON_KEYCHAIN_IS_WRONG");break;
  }
}

void onInternetError(int requestId, int errorNumber)
{
  /*  Hata numarasını yazdır.*/
  Terminal.print("Request id:");
  Terminal.println(requestId);
  Terminal.print("Internet error:");
  switch(errorNumber)
  {
    case REQUEST_CAN_NOT_BE_FOUND: Terminal.println("REQUEST_CAN_NOT_BE_FOUND");break;
    case NOT_CONNECTED_TO_NETWORK: Terminal.println("NOT_CONNECTED_TO_NETWORK");break;
    case URL_IS_NOT_FOUND: Terminal.println("URL_IS_NOT_FOUND");break;
    case ALREADY_EXECUTING_REQUEST: Terminal.println("ALREADY_EXECUTING_REQUEST");break;
    case URL_IS_WRONG: Terminal.println("URL_IS_WRONG");break;
  }
}
 

Ekli dosyalar

  • Traffic_Indicator.zip
    1.1 MB · Görüntüleme: 6
Geri
Üst