3D yazıcılar, Haber, Uygulama

lazer 3d printer

merhaba 3d yazıcılara 4 seneden beridir ilgim vardır gece gündüz araştırarak ve Nuri beyinde bilgilerinden yararlanarak daha çok ilgi göstermeye başladım tasarım ve prototip imalatından sonra sonunda lazer ile kürle-şen ham maddesi reçine olan 3d yazıcıyı yaptım ve hayalimi gerçekleştirdim size şunu söyleyeyim yapılamayacak hiç bir şey yoktur ye terki inanın ve çaba gösterin.teşekkürler
özgür KINAY.IMG_20150320_075148_1 b+-y+-k IMG_20140629_050414 IMG_20141101_154658 IMG_20141204_211710 IMG_20141204_224918 IMG_20150118_182017 IMG_20150226_201926 IMG_20150307_000413 IMG_20150315_015839 IMG_20150315_020139 IMG_20150315_114427 IMG_20150315_174019 IMG_20150315_174039 IMG_20150315_174136 IMG_20150315_174151 IMG_20150318_091153 IMG_20150318_091225

3D yazıcılar, Uygulama

Yeni Bir Delta Yapımı

 

“Merhabalar,

Kızlarımla deneyler yapmak her zaman çok hoşuma gitmiştir. 11 yaşında olan büyük kızım Fen Bilgisi konularına çok fazla ilgi duyuyor. Onun bu ilgisi meraka dönüşüyor ve sonuçta eve sürekli deney seti alıyoruz. Ben bir çocuğun dünyayı değiştirebileceğine inanan biriyim. Bu nedenle bu tarzdaki isteklerini kırmamaya çalışıyorum. İnanıyorum; kızlarımda bir gün dünyayı değiştirecek.

Makine Mühendisi olduğumdan alışılmamış imalat teknikleri hep ilgimi çekti. Bu sayede 3d yazıcılarla tanışma imkanı buldum. Ancak ilk çıktıklarında çok pahalı olduklarından herhangi bir şey ürettirme şansım olmamıştı. Geçen sene sonlarına doğru bir arkadaşıma yardım maksatlı 3d yazıcılarla ilgili araştırma yaparken sistemin oldukça yaygınlaştığını fark ettim. Artık 3d yazıcılar evlere girmeye başlamıştı.

Nisan ayı başında arkadaşım Facebook’tan bir video paylaştı. Genelde bakmam. Ancak bu seferki video çok ilgimi çekti, izledim. Videoda Easton LaChappelle isimli 17 yaşındaki gencin 3d yazıcı ile protez bir kol yapması, daha önemlisi yaptığı tasarımı herkesle paylaşması anlatılıyordu. Açıkçası çok etkilendim ve çocuklarımın da bir gün bu genç gibi başarılara imza atmasını diledim. Ve sonra evde bir 3d yazıcı olmasının iyi olacağına karar verdim.

Araştırırken gnexlab.com’u keşfettim ve Nuri Bey ile tanıştım. Kendisi beni cesaretlendirdi ve işte buradayım. Amacım bir delta tipi 3d yazıcı yapmak. Ve bunu düşük bir maliyetle gerçekleştirmek. Tasarımı SolidWorks ile yapacağım. Yaptığım araştırma sonucu bulduğum modellerden ve fotoğraflardan faydalanacağım. Özellikle 3dMetri, Rostock ve Kossel faydalacağım tasarımlar arasında olacak.

Geçtiğim aşamaları buradan paylaşacak, Nuri Bey’in fikirlerini alacağım. Umarım herkes için güzel bir tasarım doküman olur.”

H.Kemal

Uygulama

Dağıtık Versiyon Kontrol Sistemi ve GIT

Birlikte çalışabilirlik için en önemli kural bir versiyon kontrol sistemi kullanmaktır. Nedir versiyon kontrol sistemi ve neye yarar. Genelde yazılımcıların kullandığı bu teknoloji büyük ve kapsamlı projeler gerçekleştirmek için olmazsa olmaz bir araçtır. Bir dosya üzerinde birden fazla kişinin çalıştığını düşünelim. İki taraf da dosya üzerinde değişiklik yapmış olsun. Dosyayı son kaydedenin diğerinin üzerine yazması büyük kayıp olur ve karışıklığa neden olur. Yapılan iki değişikliğin de birleştirilmesi gerekir. Versiyon kontrol sistemlerinin birinci işe yaradığı yer burasıdır. Bir dosya ya da proje üzerinde birden çok kişi çalışabilir ve yapılan tüm değişiklikler birleştirilir. Bir diğer can alıcı özellik Zaman Kapsülü özelliğidir. Dosya üzerinde yapılan değişiklikleri tarih kronolojisi ile takip etmek mümkün olur. İstenilen bir anda geriye dönmek ve oradan devam etmek mümkündür. Dağıtık mimarili versiyon kontrol sistemlerinde çalışılan projenin tam bir kopyası her katılımcının elinde olur. Merkezi bir servera herkes yaptığı değişiklikleri gönderir ve böylece tüm katılımcıların katkısı birleştirilir. Kimin ne katkı yaptığı görülebilir (Gnexlab’ta tam da aradığımız şey). Bunun dışında riskli bir çalışma yaptığınızı düşünüyorsanız dosyaları ayrı bir dala taşıyarak master dalı bozmadan yan dallarda değişik çalışmalar yürütebilirsiniz. Gnexlab’ta beraber bir takım işler gerçekleştireceksek, herkesin versiyon kontrol sistemine hakim olması gerekli. Biz burada en yagın versiyon kontrol sistemi olan GIT kullanacağız. GIT linux’u geliştiren Linus Torvalds ‘ın bir eseridir. Linux işletim sistemini geliştirirken oluşturduğu bu versiyon kontrol sisteminden bugün bütün dünya yararlanıyor.

GIT indirmek için buraya bakabilirsiniz. Ayrıca detaylarını öğrenmek için dokumantasyona bakabilirsiniz.

Ben temel kullanımı ve bazı yaygın komutlara burada değinerek bu teknolojinin neye yaradığından bahsedeceğim.

GIT için GUI yazılımlar olsa da ben size command line kullanmanızı öneriyorum. Bu yüzden GIT’i command line indirip hemen başlayalım.

GIT kurulduktan sonra komut penceresinden

$ git help

yazarak yardıma ulaşabilirsiniz. Ayrıca komut ile ilgili detay istiyorsanız

$ git help komut

işinize yarayacaktır.

Şimdi mkdir ile bir dizin yaratıp içine girelim

$ mkdir store

$ cd store

şimdi store dizini içindeyiz burada

$ git init

komutu ile boş dizinde git versiyon kontrol sistemini oluşturalım. GIT kendisi bir takım gizli dizinler oluşturarak tüm işleri halledecek. Sizin bu dizinlerle bir işiniz olmayacak kurcalamamakta fayda var 🙂

Şimdi sizin local makinanızda bir repositoryniz var. Yani bir depolama alanınız. Bir text dosyası oluşturup (readme.txt) bu alana kopyalayın. Daha sonra

$ git status

komutu ile her zaman bir önceki adıma göre nelerin değiştiğini öğrenebilirsiniz. Bu aşamada  bu komutu kullanırsak yeni eklediğimiz dosyanın untracked olduğunu yani takip edilmediğini görürüz. Bu dosyanın takip edilmesini ve versiyon kontrol sistemine dahil olmasını istiyorsak

$ git add readme.txt

bu komut ile readme dosyasını staging area denen bölgeye almış oluruz. Kafalar hiç karışmasın bu dosyanın bir resminin çekildiğini düşünebilirsiniz. şimdi bu daosyanın zaman kapsülünde bir yer edinmesi ve ana dala (master branch) dahil olması için aşağıdaki komutu kullanalım.

$ git commit -m ‘commit açıklaması cok önemlidir’

bu komut ile staging alanındaki dosya master bracha geçmiş ve herkes tarafından ulaşılabilir olmuştur.

Yapılan değişiklikleri

$ git log

komutu ile görebiliriz.

Buraya kadar olan işlemler hep lokal bilgisayarımızda gerçekleşti. Şimdi merkezi bir server ile çalışıp dosyalarımızı local repository den internet üstünde bir repository ye alalım. Böylece diğer katılımcılarında bu dosyalara erişimini sağlayalım. En yaygın kullanılan repository github dır. Burası açık kaynak yazılımlar için ücretsiz kapalı kaynak kullanacaksanız ücretli bir sitedir.  Bir account oluşturup new repository ile kendinize bir proje açın. Burada dikkat edilecek kısım içeride dosya olmayan bir repository oluşturmak bu yüzden readme file istermisiniz kısmını işaretlemeyin.

 

 Screen Shot 2014-10-06 at 11.02.34 PM

Bundan sonra bu repositoryinin URL sini kopyalayın. Ve aşağıdaki kodları sıra ile makinanızda çalıştırın.

$ git remote add origin <copyaladığınız url>

$ git remote -v

$ git push origin master

Size username pasword soracak ve sonrada lokaldeki dosyalarınızın bir kopyasını github üzerine alacaktır. Bundan sonra diğer katılımcılar kendi local repositorilerine bu doayaları çekip üzerinde çalışıp tekrar commit ederek katkılarını birleştireceklerdir. Uzak repository den dosya çekmek için pull komutunu kullanabilirsiniz.

$ git pull

Hepsi tabiki bukadar değil GIT de daha derinlere dalmak mümkün şimdilik bunları denemeler yaparak sindirelim.

Uygulama

Spark Core push notifications

Bir Internet of Things (IoT) yazısı daha yazmak galiba yerinde olacak. İlk yazıdan bu yana pek bi süre geçmedi ama bu konuda yaptığım çalısmalar bir yazı yazabilecek kadar daha yol kat etti. ilk yazıda Spark Core wifi sıcaklık ölçer yapıp değerleri google docs a kaydedip bir grafik çizmiştik. Bu yazıda bir sensorden bilgi aldığımızda bir olayı nasıl tetikleyeceğimizi anlatmaya çalışacağım. Yine sensörümüz Spark Core‘a bağlı olacak. Burada da IoT olarak Spark Core kullanıyoruz. İleride çok fazla seçenek olacağını düşünüyorum. Bu modüllerin fiyatları 5-6 Dolara düşüyor. Yeni çıkan bir modülden sipariş verdim (fiyatı 6 Dolar) gelince sizlerle burada paylaşacağım.

Push Notification bir olay olduğunda bize bilgi gelmesi olarak özetlenebilir. Yani biz sensör değerini sorgulayıp cevap almıyoruz. Sensör değeri değiştiğinde bize otomatik bilgi geliyor. Bunu gerçek uygulama olarak bu yazıda şöyle örneklemek istiyorum. Ev kapısının açıldığını iphone’umdan olay olduğu an görmek istediğimizi düşünelim. Ben bunu bana temizlik için yardıma gelen Selda ablanın eve ne zaman girip ne zaman çıktığından haberdar olmak için kullanacağım. Bunu bir güvenlik sistemi olarak da düşünüp kullanabilirsiniz. Ayrıca hareket sensörleri oldukca ucuzladı aynı mantıkla kapı sensörü yerine hareket sensörü de sisteme bağlanabilir. PIR Sensörü olarak bilinen bu sensörü alıp testlerimde kullanıcam. IoT PIR sensörleri piyasaya cıktımı bilmiyorum ama güvenlik sistemleri satan arkadaşlar için ciddi bir fark yaratma fırsatı ticari olarak açıkca görünmekte. Ev wifi ağına bağlanan kapı pencere ve hareket sensörlerinden cep telefonunuza gelen uyarı sistemleri. Bunu bizde gnexlab’da düşünmeliyiz. Bu yazı da ilk proof of concept olsun.

Artık projeye geçelim isterseniz.

Bu yazıda notification sağlamak amacıyla  http://www.pushingbox.com/ sitesini kullanmak ve sizlere tanıtmak istiyorum. Pushingbox IoT cihazlar için bir notification center (Yani tam aradığımız şey. IoT de oluşan durumu bize uyarı ile haber veriyor.) Durumu size eposta, tweet, iphone notification gibi bir çok yolla haberdar ediyor. Üyelikle başlıyoruz. Daha sonra My Services den bir prowl servisi yaratıyoruz.

prowl’u iphone app store dan satın alıyoruz fiyatı 2.99 Dolar 🙁

prowl web sitesinden de bir uyelik yapıyor ve API Key ürettiriyoruz. Bu Keyi Pushingbox da yarattığımız servise girip kaydediyoruz. Bundan sonra yine Pushingbox da bir senaryo yaratıyoruz. Gerekli bilgileri girip bu senaryo ya action olarak tanımladığımız Prowl servisini ekliyoruz. Dilerseniz başka servislerde ekleyebilirsiniz. Olay olduğunda hem eposta alabilir hem de bir tween yayımlayabilirsiniz. Birden fazla servis aktive edilebilir.

Devre bu şekilde:

 

 

spark_kapi

 

resmide böyle:

photo (10)

 

Aşağıdaki kodu Spark Core a yüklüyoruz. Bunu https://www.spark.io/build üzerinden yaptığınızı daha önce anlatmıştık.

////
//
// General code from http://www.pushingbox.com for Spark Core v1.0
//

const char * DEVID1 = "Sizin DEVID niz";         // Scenario: "The mailbox is open"


const char * serverName = "api.pushingbox.com";   // PushingBox API URL
             // Save the last state of the Pin for DEVID1
TCPClient client;
boolean pinDevid1State = false; 

void setup() {
              // Start the USB Serial
   pinMode(D4, INPUT); 
  

   
}

void loop() {

  
     
      if (digitalRead(D4)) {
           sendToPushingBox(DEVID1);
           delay(2000);
      }
      
    
}

void sendToPushingBox(const char * devid)
{
   
   
    client.stop();
  
    if (client.connect(serverName, 80)) {
       
        client.print("GET /pushingbox?devid=");
        client.print(devid);
        client.println(" HTTP/1.1");
        client.print("Host: ");
        client.println(serverName);
        client.println("User-Agent: Spark");
        //client.println("Connection: close");
        client.println();
        client.flush();
                
    } 
    else{
       
    }
}

Artık Ev kapısı açıldığında cep telefonunuza uyarı gelecektir. Pushbox.com adresinde de tarihsel bir history tutuluyor. Tarih saat bilgisini oradan görebilirsiniz.

 

 

 

Uygulama

Internet of Things (IoT)

Gelecek vadeden bir teknoloji halkkında bilgi edinmek ve sizleri bilgilendirmek istiyorum. Iot internet of things genelde wifi bağlantısına sahip mikro işlemcilerdir. Bu teknoloji, düşük hesap hapasiteleri ve işlem güçleri olan mikroişlemcileri internete bağlayarak cloud denilen çok yüksek veri depolama ve işlem gücü olan makinaların kabiliyetlerinden yararlandırılması prensibi ne dayanmaktadır. Cloud daki bilgisayarlara bilgi gönderen ucuz ve az enerji tüketen bu minik cihazların çıktılarına başka makinalardan tabletlerden ve cep telefonlarından ulaşmak mümkün olmaktadır.

 

cloud-and-things

 

Bu teknoloji ile sınırsız uygulamalar yapmak mümkün aslında. En değerli olan işte bu kısım. Yani bir teknolojinin ne işe yaradığını anlamak ve bunu kimsenin düşünmediği bir şekilde kullanarak bir sorunu çözmek ve değer yaratmak. Gnexlab genel yaklaşımı tüm teknolojiler için bu şekilde işlemektedir. Teknolojinin nasıl işlediğini anlamak için basitde olsa bir uygulama yapmak gerekli en iyi öğrenme yolu bu. Daha sonra bu teknoloji aklımızda iken günlük hayatta bizim yada çevremizdekilerin yaşantısında bu teknolojiyi nasıl kullanabileceğimizi düşünmemiz gerekli. Aklınıza gelen fikirleri gnexlab proje gruplarında hayata geçirebilir ve bir iş modeline kadar projenizi götürebilirsiniz.

 

Bu yazıda Spark Core olarak bilinen bir IoT ile basit bir uygulama yapmaya çalışacağım. Spark Core bir kickstarter projesi

(https://www.kickstarter.com/projects/sparkdevices/spark-core-wi-fi-for-everything-arduino-compatible) arkasında eski makerbotun kurucularından (şimdi ayrıldı ve kendisi çinde yaşıyor) Zach Hoeken var. Çok başarılı ve örnek aldığım bir makerdır 🙂

kickstarterda 550.000 Dolardan fazla kaynak toplayınca bu güzel ve başarılı çalışma ortaya çıktı. Zach dan aldığım son e-postada bir yatırım grubu kendilerine 14 milyon dolar yatırım yapmış. Çok yakında büyük gelişmeler olacağını düşünüyorum. Bu mebla bize bu teknolojinin bir sonraki büyük şey (Next Big Thing) olabileceği izlemini veriyor. O zaman çalışmaya değer bir konu. Hadi Başlayalım!!!

 

46e46bdc7e2640ff5eecaa335992046e_large

 

Spark Core böyle birşey.

Temel olarak aslında wifi olanağına sahip bir Arduino. Ne var ki bunda çok gördük bunlardan demeyin. Spark Core donanım olarak basit görünse de arkasındaki yazılım gücü ve mimari ile fark yaratıyor. Spark Core’u aldıktan sonra (Ben kickstarter kampanyasına destek olmuştum ilk üretilenlerden bana bir tane geldi) Spark.io adresinden bir account oluşturuyorsunuz. Daha sonra cihazı ev wifi si ile tanıştırmanız gerekiyor. Ben bu kısımda Saprk Coru un iphone uygulamasını kullandım ve ev networkunun bilgilerini girdim. Cihaz üzerindeki çok renkli led bir çok renge büründü ve sonunda yeşil yanıp sönmeye başladı. Cihaz artık internetteydi. Buraya kadar olan kısımları için yapılacaklar burada ayrıntıları ile bahsediliyor. Problemlerle karşılaşan arkadaşlar olursa bu kısımı daha açık anlatabiliriz.

Yapmak istediğim basit proje evde bir oadanın sıcaklığını devamlı ölçerek belli aralıklarla bu değerleri kaydetmek ve nasıl seyrettiğini gözlemlemek. Bir fabrikada bir kazanın yada önemli bir ekipmanın ısısını takip etmek çok daha önemli olabilir. Ama bunların hiç biri bir Öldürücü Uygulama (Killer Application) değil. Sizleri beyin fırtınası ile iot ların ne amaçla kullanılabileceğini düşünmeye davet ediyorum. Dediğim gibi bu teknolojiyi anlama projesi.

Isıyı ölçmek için öncelikle bir ısı sensörümüzün olması gerekli bunlar thermistör yada thermocouple türü komponentler olabilir. Ben 3D yazıcılarda çok ca kullandığım thermistör kullanmak istiyorum (Elimde hazır var biraz da ondan) siz başka komponentler kullanabilirsiniz. Thermistörlerin direnci ısı ile değişmektedir. Elemanın direncini ölçerek ve bu ölçümü bir hesaplamadan geçirerek sıcaklığı bulabiliriz. Direnç ölçmek için Spark Core’un analog bacaklarından birini seçip voltaj okuyacağız. Thermistörümüz bu bacağa bağlı olacak. Direncin ısı ile ilişkisini bir matamatiksel logaritma işlemi ile derece santigrat a dönüştüreceğiz. Böylece sıcaklık değerini bulacağız.

Spark Core ile ilgili anlatılması gereken bir diğer önemli husus da “Access Token”. İnternete bağlı bir cihaza herkesin ulaşmasını engellemek gerekecektir. Spark Core’u internete bağladınız diye herkesin buna ulacağı anlamı çıkarmamak lazım. Spark Core iletişim izinleri için bir standart olan OAuth2 kullanmakta. Spark Core ile konuşurken “Access Token” ınızı da göndermeniz gerekli.  “Access Token” ınızı https://www.spark.io/build/ sayfasına login olduksan sonra settings kısmında bulabilirsiniz.

Donanım:

temp

 

 

 

 

 

Devre şamamız bu şekilde. TEMP yazan yerden Spark Core un A0 analog bacağına bağlantı yapacağız.

 

photo (9)

 

Benim Setupım bu şekilde

 

Aşağıdaki kodu Spark Core içine yuklemek için yine https://www.spark.io/build/ adresindeki IDE yi kullanabiliriz. Create new app düğmesine basıp temp isminde bir uygulama oluşturdum. ve aşağıdaki kodu içeri yapıştırdım. Flash dedim ve kod internet üzerinden Spark Core uma yüklendi. Spark Core üzerindeki led magenta renginde kalp atışı yanıp söndüğünde yükleme işleminin başarı ile gerçekleştiğini anlıyoruz.

 

 

// Read temperature
// -----------------
#include "math.h"
// Create a variable that will store the temperature value
double temperature = 0.0;

void setup()
{
  // Register a Spark variable here
  Spark.variable("temperature", &temperature, DOUBLE);

  // Connect the temperature sensor to A0 and configure it
  // to be an input
  pinMode(A0, INPUT);


}

void loop()
{
  const float Rinf = 0.0173; // thermistor constants for 100k thermistor
  const float B = 4573.5;
  const float Rup = 100000.0; // pullup resistor value
  
  float reading = 0.0;
  
  reading = analogRead(A0);
  
  temperature = B / log(Rup * reading/(4096 - reading)/Rinf) - 273;


}

 

Yükleme işlemi başarılı olduktan sonra Spark Core a ve sensör değerimize Http üzerinden ulaşabiliriz. Şu şekilde:

curl “https://api.spark.io/v1/devices/{Sizin Device ID niz}/temperature?access_token={SizinAccess Token ininz}”

{parentezler yok}

Gelen Cevap:

{

  “cmd”: “VarReturn”,

  “name”: “temperature”,

  “result”: 20.296923598751448,

  “coreInfo”: {

    “last_app”: “”,

    “last_heard”: “2014-10-02T17:02:47.349Z”,

    “connected”: true,

    “deviceID”: “48ff6c065067555023502387”

  }

bir json formatlı bilgi. result kısmında oda sıcaklığı yazıyor. Bu degeri yani sıcaklığı daha hasas ve doğru alma ihtiyacınız olursa thermistor kullanmamanız daha doğru olur. Bu tür bir uygulama yapmak istiyenler temasa geçebilir. Zira thermistör de hata payı olmaktadır.

Ben Macintosh kullandığım için terminalden direkt olarak curl komutunu kullanabiliyorum. Windows kullanıcıları için curl ün executable burada mevcut http://curl.haxx.se/dlwiz/?type=bin&os=Win64

win64 için bunu kurup curl komutunu kullanabilirsiniz. Buna aslında kontrol amaçlı ihtiyacımız olacak. Çok şart değil. Amacım bir google spreadsheet oluşturup sıcaklık değerlerini ona okutup dosyada saklamak. Server kurmak yerine mevcut bedava kaynakları kullanalım 🙂 kaybetme maliyetini düşük tutmak lazım.

Sensörümüzden bilgi aldığımıza göre artık bu değerleri belli aralıklarla okuyup saklamak kısmına geçebiliriz. Dediğim gibi goolge docs bu iş için biçilmiş kaftan. Google App Engine (https://cloud.google.com/appengine/) yine üzerinde durulması gereken bir başka teknoloji artık başka bir yazıda inşallah.

 

Google Docs dan yeni bir spreadsheet oluşturup aşağıdaki adımları yapalım.

  • Create -> Spreadsheet
  • Tools -> Script Editor
  • Aşağıdaki kodu buraya yapıştıralım
  • Resources -> Current Project’s Triggers
  • collectData  foksyonunu her saatte bir çağıralım (siz istediğiniz sıklıkta ayarlayabilirsiniz dokumanın cok buyumemesine dıkkat edin)

 

function collectData() {
  var  sheet = SpreadsheetApp.getActiveSheet();
  var sensor = UrlFetchApp.fetch("https://api.spark.io/v1/devices/{Sizin Device ID niz}/temperature?access_token={SizinAccess Token ininz}");
  // parse the JSON the Core API created
  var sensor = JSON.parse(sensor.getContentText()); 
  // you'll need to unescape before your parse as JSON
  var sensor_result = unescape(sensor.result); 
  // create a time stamp
  var d = new Date();
  // append data to spreadsheet
  sheet.appendRow([d, sensor_result]);
}

Sonuç:

 

excel_spark_temp

 

Ben bu testi yaparken dakikada bir fonksiyonu çağırdım. 3. sıradaki tepe yapan değer sensoru elimle tutup ısıttığım an okunan değer. Çalıştığından emin olabilirsiniz.

Umarım yaralı olmuştur. Spark Core satın almak isteyen arkadaşlar mesaj atabilir. Bu teknoloji ile ilgili fikir ve önerileinizi bekliyorum.