3D yazıcılar

3D Yazıcılar (Bölüm-2)

Bu yazı dizisinin bir önceki bölümüne buradan ulaşabilirsiniz.

Barnes & Noble Arligton Washington’dayim. İlgimi çeken kitap ve dergileri topladım kitapçının içindeki Sturbucks’dan kahvemi aldım Ipadimle bu yazıyı hazırlıyorum. Nasıl hızlı bir teknolojik değişim yaşadığımıza inanamıyorum. Tarım çağı endüstriyel devrim derken devrimler birbirini takip ediyor. Bu devrimlerin birbiri arkasına gelmesi ve artık aradaki zamanın kısalması asıl ürpertici olan. Siz de bu yazıyı Ipadinizden tuvalette okuyorsanız hatırlatayım sifonlu tuvalet icat olunalı sadece 150 yıl oldu. (Not: Kralice Victoria ilk sifonlu tuvaleti kullanan kişidir.) Teknolojinin inanılmaz hızda ilerlemesine verilen örneklerden en beğendiğim bir tanesi de bugün elimizde tutuğumuz akıllı telefonlar NASA aya ilk insanı gönderdiğinde sahip olduğu bilgisayar gücünün toplamından daha fazla hesaplama gücüne sahip olduğu ile ilgilidir. Aynı şekilde Xbox oyun konsolu ilk tanıtıldığında o günün en kuvvetli askeri bilgisayarından daha hızlı hesaplama gücüne sahipti. Bazı ülkelere satışında sınırlamalar vardı.

Bu baş döndürücü teknolojik ilerlemelerden konuyu tabiki 3D yazıcılara getireceğim. Bir sonraki endüstriyel devrim olarak 3D yazıcıların görülmesi biraz da geçmişe bakıldığında daha doğru geliyor. Bir deja-vu bu aslında. Futuristler online satın alınan dataları evde 3D yazıcılar ile basacağımızı artık dükkanlara gitmek gerekmeyeceğinden bahsediyorlar. Eminim ki bu da olacak. Beni 3D yazıcılarda heyecanlandıran aklıma gelen bir tasarımı bilgisayarda tasarlayıp elime alabildiğim hatta projemde direkt kullanabildiğim bir parçaya, bir dişliye veya bir kutuya çevirebilmem. Benim gibi birisi için beklenen endüstriyel devrim zaten gerçekleşti!

Chuck Hull ilk 3D yazıcıyı 1984 de stereolithography denen bir teknikle yaparak bu icadın babası oldu. Latincede stereo kati, litho tas ve graphien de yazmak anlamlarına gelmektedir. Stereolithography bilimsel bir isimlendirme olsa da genel olarak bu teknolojilere hızlı prototipleme ve eklemeli üretim gibi isimler verilmektedir.

Bu gün tüm 3D yazıcılar aynı temel prensip ile çalışmaktadır. Yüzlerce çeşidi olmasına karşın temel işleyiş hep aynıdır. Bu temel mantıktan birazdan bahsedeceğim.

3D Yazıcılar Nasıl Çalışır?

3D Yazıcıdan bir çıktı almadan önce sahip olmanız gereken şey bilgisayar ortamında bir 3D modeldir. 3D modelleme yapabilmek için sayısız program mevcuttur. Mesela bazı mühendislik tasarım yazılımları olan Autocad, Autodesk Inventor, SolidWorks veya Solid Edge gibi. Bu binlerce dolarlık mühendislik yazılımlarının yanında bedava olan yazılımlar da var. Mesela Autodesk123 ya da Blender gibi. Ve hatta web browser üzerinden hiç bir yazılım yüklemenize gerek kalmadan online kullanabileceğiniz hizmetler de mevcut. Buna örnek olarak da Tinkercad‘i verebiliriz. Benim hayranlık duyduğum bir diğer modelleme aracı da yazılım geliştiricilerin seveceği türden. Yazılım geliştirir gibi kodlarla 3D model oluşturabiliyorsunuz. OpenSCAD tam da kodlama yaparak 3D model üretmenize olanak sağlıyor. Opengl motorunun başarılı bir kullanımı. Kesinlikle bu alanda daha fazla çalışmalar yapılmalı ve teknik altyapısı olmayan insanların da modelleme yapabilmesi sağlanmalı. Bu bence 3D yazıcıların önündeki en büyük engel. Gnexlanb olarak bu konuda bazı fikirlerimiz var. Çalışmak için sabırsızlanıyorum.

3D modeli kendiniz bu programlarla oluşturabileceğiniz gibi internet sitelerinden de bedava çok çeşitli model bulmanız mümkün. Size model aramada kullanabileceğiniz bir arama motoru olan 3dbility.com‘u öneririm. Bir gnexlab projesidir kendisi. Yakında yeni bir yaklaşım getirmeye hazırlanıyoruz. En ünlü hazır model bulabileceğiniz sitelerden birisi de makerbotun thingiverse sitesi. İnsan oğlunun ne kadar yaratıcı bir varlık olduğunu anlamamız ve görmemiz için bu siteye bakmamız yeterli. 3D yazıcı meraklıları yaptıklarını burada sergiliyor ve diğer insanlarla paylaşıyor.

Artık bir 3D modelimizin var olduğunu düşünelim. Bu modeli gerçeğe dönüştürmenin vakti geldi. Bunun için bir 3D printera ihtiyacınız olacak. Kendi 3D yazıcınız yoksa çıktı hizmeti veren bazı sitelerden de burada bahsetmek yerinde olur sanırım. 3D modelinizi siteye yükleyip hangi hassasiyette ve hangi malzemeden üretilmesini istediğinizi söylüyor ve parasını ödüyorsunuz. Bir kaç hafta içinde modeliniz posta ile size ulaşıyor. İşte bu hizmeti veren bazı siteler;

– http://www.shapeways.com/

– http://i.materialise.com/

– http://www.sculpteo.com/en/

http://www.ponoko.com/3d-printing

 

Şimdi 3D yazıcılar hangi temel mantıkla çalışıyor ondan bahsedelim. Tüm yazıcılar 3D modeli alıp, 2D düzlemsel bir çizim haline getirip, bu 2D çizimleri üst üste mümkün olduğunca ince katmanlar halinde dizerek 3D modeli oluşturuyorlar. Ne tür olursa olsun aslında matematiksel bir integral almaktan başka bir şey değil bu.

 

 

Objeyi 2D katmanlara ayırdığınızda objenin ne kadar karmaşık olduğunun da bir önemi kalmıyor.  3D modelinizi bir dilimleme yazılımı alıyor ve o modeli baştan aşağı saç telinin kalınlığında (yaklaşık 100 mikron tabi bu kalınlığı siz belirliyorsunuz istediğiniz kalınlıkta dilimleme yapabilirsiniz) ilerleyerek 2D kesitini çıkarıyor. Bu 2D kesitler daha sonra 3D yazıcının kontrolünde kullanılan G-code denilen komutlara çevriliyor. 3D yazıcılar bu G-codlara göre hareket ederek 3D objeyi 2D dilimleri üst üste çizerek oluşturuyor. Umarım anlaşılır bir anlatım olmuştur.

3D Yazıcı Türleri

Daha önce de söylediğim gibi yüzlerce çesit 3D yazıcı var. Ben bunları 3 grupta toplayarak özetlemek istiyorum. Bahsedemediğim değişik çeşitlerdeki yazıcılar hakkında bilgiyi buradan bulabilirsiniz.

Fused deposition modeling (FDM)

Bu teknolojide plastik ham madde filament şeklinde yazıcıya gelir ve ergime sıcaklığında ısıtılır. Plastik, 2D çizimin yüzeye yapılmasında malzeme olarak kullanılır. Sistem, bu 2D çizimleri plastikden üst üste dizerek 3D modeli oluşturur. Çıkan ürün plastik olduğundan direkt olarak projede kullanılabilir. En yaygın kullanılan yazıcı teknolojilerinden bir FDM’dir.

Stereolithography (SLA)

UV ışığa duyarlı bir reçine katmanlar halinde katılaştırılarak 3D model oluşturulur. UV ışık bir lazer kaynağı olabileceği gibi DLP bir projeksiyon makinesi de olabilir. Hassasiyeti FDM yazıcılardan yüksek olduğu için özellikle kuyumculuk sektöründe kullanılmaktadır. Reçineler döküme uygun olduğundan Lost Wax Casting yöntemi ile üretime çok uygundurlar.

Selective Laser Sintering (SLS)

Toz bağlama teknolojilerinden biri olan bu sistemde, toz parçacıklar lazer gücü ile bir birlerine sinterlenir. Prosesin gerçekleştiği kapalı ortam toz malzemenin ergime sıcaklığından biraz az bir noktada tutulur. Böylece lazer ışının geldiği bölgenin sıcaklığı lazer enerjisi ile toz malzemenin ergime sıcaklığına yükseltilir. Bu yöntemin avantajı destek malzemesi kullanılmasına gerek olmadan parçaları bir toz havuzunda oluşturulmasıdır.

 

 

 

 

 

 

 

 

 

 

 

Her gün yeni bir teknik için patent savaşları 3D yazıcılar dünyasında sürmektedir. Sizler de aklınıza gelen yöntemleri bu yazı altında tartışabilirsiniz. Gnexlab olarak reçineli bir sistemin uluslararası patentini almak için çalışmalar yapıyoruz.

3D yazıcıların Avantajları ve Dezavantajları

3D yazıcılar bu kadar konuşulduğuna göre gerçekten fayda sağlıyor olmaları gerek. İşte 3D yazıcıların bazı avantaj ve dezavantajları;

– Masa üstünde yer alacak kadar ucuz olamaları en önemli avantajları. Bu teknoloji 15 yıldan fazladır var ama ancak kitlelerce ulaşılabilir oldu.

– Bir çok mühendislik plastiği üretim malzemesi olarak kullanılabilmekte. Bu sayede gerçekten güçlü, projede direkt kullanabileceğiniz parçalar basabilmek mümkün. Malzeme maliyeti nispeten ucuz.

– Oldukça hassas çıktılar alınabilmekte. Çıktıdan sonra bir işlem yapmanıza gerek kalmayacak kadar düzgün ürünler üretilebilmekte.

Dezavantajları

– Çıktı süreleri saatlerle ifade ediliyor. Malzemenin karmaşıklığı çok etkilemese de büyüklüğü çıktı süresini olumsuz yönde etkiliyor.

– Altı boş olan bir yapı basmak için destek malzemesi planlanması gerekiyor. Overhang denilen bir kavram var. Şöyle tariflenebilir: Mesela bir su bardağı basacaksınız. Bardağın açık ağzı yukarı gelecek şekilde baskı almanız gerek. Ters kapatılmış bir bardak basamazsınız. Çünkü en sonda bardağın kapalı kısmını basarken altında destek malzemesi olmayacaktır. FDM türündeki printerlarla çıkan plastiği bir fan yardımı ile çıkar çıkmaz soğutuyor ve bazı overhang durumlarıın üstesinden gelebiliyoruz. Bu kavrama köprüleme bridging deniliyor.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bölüm-2 de biraz anlatım içerikli oldu. Umarım Bölüm 3 de daha teknik detaylara geçebiliriz. Yazı dizilerini kendi 3D yazıcısını yapmak isteyenlere yardımcı olacak kadar teknik detaylarda anlatmaya çalışacağım.

 

 

Haber

En basit şekilde GPS ile çalışma

Selamlar

malum GPS teknolojileri “lokasyona bağlı” çözümler için çok önem kazandı. Malum, bu işin 2 boyutu var.. Birincisi, elektronik kısmı.. Diğeri ise yazılım açısından bu verileri kullanmak. Ben, GPS konusuna nasıl başladığımı paylaşmak istiyorum. Nedeni de, “biraz bilgi sahibi olduktan sonra, kendi istek ve ihtiyaçlarınıza uygun kullanabilmeniz” için, bir parça da olsa bilgi paylaşımı..

 

1) Elektronik kısmı:

Elektronik konusunda, çok bilgili olmadığım için, dostlarımın önerisi ile GTOP PA6B modulu ile başladım.. Sanırım, çok isabetli bir başlangıç, zira GPS le rile oynadığım bu 2 sene için de “daha beni yarı yolda bıraktığı” yada “alternatif bakma” ihtiyacı hissetmedim (belki de benim ihtiyaçlarım çok kısıtlı idi).. Türkiye piyasasında da bulunuyor bildiğim. Bu ürünün en iyi tarafı hem USB hem de UART çıkışı var..

 

USB çıkışının önemi:

Eğer, GPS, NMEA cümlesi, reception konularını merak edip, ama devre ile uğraşmak istemiyorsanız harika bir çözüm. Zira tek yapmak gereken (ben de bazen devrelerimden şüphelendiğim de yaptığım) .. Modülün + , – , USB+/- bacaklarını bağlamanız ve ilav eolarak VBackup bacağına + vermeniz yeterli.. Zaten bunların hepsi USB portundan sağlanabiliyor. Benim “test” kit’imin fotografını paylaştım..1024_IMG_5443 1024_IMG_5444

USB bağlantı için detay
USB bağlantı için detay

Bu bağlantıları “doğru” yaptığınız takdir de, makinanızda bir “serial port” olarak görünecektir.

Diğer seçenek ise, modulun üzerindeki UART portuna devre bağlayarak (zira TTL level, convert etmek gerek) , NMEA bilgilerini okuyarak (9600bps) siteminize Lokasyon algılama yeteneği ekleyebilirsiniz..

2) Yazılım kısmı
Makinanız daki bu yeni serial porta herhangi bir telnet programı ile bu port’a bağlandığınızda (9600bps, no parity, 8 bit, no stop) NMEA verilerinin aktığını göreceksiniz. Telnet ekran görüntüsünü paylaşıyorum..

Telnet ekranın da NMEA bilgileri
Telnet ekranın da NMEA bilgileri

Seçenek A: yazacağınız bir yazılım ile bu bilgileri parce edip kullanabilirsiniz
Seçenek B: net de bulunabilen “minigps” benzeri bir uygulama ile verilere (gördüğü uydu sayısı, hassaiyet, lokasyon vs.) görebilirsiniz. (ekran goruntusunu paylaşıyorum)

minigps yazilimi ile NMEA verilerinin goruntulenmesi
minigps yazilimi ile NMEA verilerinin goruntulenmesi

Arduino Özel: ben Arduino kartları ile çalıştığım için, ilave bilgi vermek isterim.. Modulun UART çıkışını, Arduino’nun herhangi bir Digital portuna bağlayarak (diyelim D4) , ve softserial türü bir kütüphane kullanarak (D4 bacağını da, soft serial Rx bacağı olarak belirleyerek) , NMEA kelimelerini buradan da okuyabilirsiniz..

umarım, GPS lere hızlı bir başlangıç için faydası olur bu bilgilerin.. reha

3D yazıcılar

3D Yazıcılar (Bölüm-1)

Gnexlab’ın ana faaliyet alanlarından birisi de 3D yazıcılar. Ben kişisel olarak yaklaşık 7 yıldır bu teknoloji ile yakından ilgileniyor ve 3D yazıcılar üretiyorum. Bu teknoloji den haberdar olma yıllarım ise üniversite yılları yani yaklaşık 15 sene önce. Hiç unutmuyorum Arçelik firmasında staj yaparken yabancı süreli yayınları kütüphanede bulmak mümkün oluyordu. Orada okuduğum bir dergide sterolithograpy denilen yöntemle çalışan 3D yazıcılardan söz ediliyordu. Teknoloji beni çok etkiledi ve bu konuya olan ilgim hiç azalmadan yıllarca devam etti.

Gnexlab olarak biz, 3D yazıcı çalışmalarımızı büyük bir grupla birlikte iyi mali kaynaklarla gerçekleştirme şansına sahibiz. Bizim yazıcılarımızı alanlara destek vermek amacı ile bir iletişim network’ü oluşturmanın yanında bu platformda daha az kaynağı ama çok zamanı olan ve bu teknolojileri kendi yaptığı makinalar ile denemek isteyenlere de yardımcı olmak amacındayız. Ana eksen her zaman bilginin paylaşılması olmalı. Bu ekseni kaybetmeden önemli işler yapacağımıza eminim.

Aslında on onbeş yıldır 3D yazıcı teknoloji mevcut. Büyük üreticilerin pahalı makinaları bir çok sektörde kullanılmakta. ABD’de bazı 3D yazıcı patentlerinin sona ermesi ile, bu teknolojinin ucuzlaması ve herkez tarafından ulaşılır olması dikkatleri bu teknoloji üzerine çekti. İnsanlar bu makinaları daha ucuza üretebileceklerini fark ettiler. Ve çalışmalara başladılar. Bu çalışmaların ilki Adrian Bowyer tarafından yürütüldü. Adrian Bowyer University of Bath da bir hoca. REPRAP olarak bilinen açık kaynak 3D yazıcıların da babası. Yaptığı çalışmalar uzun yıllar aldı ama sonunda bu çihazların uygun maliyetlerde yeterli kalitede çıktı üretir haline gelmesini başardı. Kendi yazıcısını yapmak isteyenler için en önemli kaynak olarak reprap’ı göstermek istiyorum. Bir çok açık kaynak 3D yazıcı yapımı ile ilgili bilgi bu sitelerde mevcut. Malesef hepsi ingilizce ve çok fazla dokuman, çok fazla bilgi var. Bu yazı dizilerinde amacımız 3D yazıcı konusunu bir süzgeçten geçirerek daha anlaşılır hale getirmek. Yüzlerce yaptığımız deneme yanılmalardan edindiğimiz tecrübeleri sizlere aktarmak. Bu konuda ilgili olan insanları bir araya getirerek bir topluluk oluşturmak. Herkesin edindiği teçrübeleri burada paylaşması zaman kaybını ve harcanan paraları azaltacaktır diye düşünüyorum.

Bu camiada adından söz edilmesi gereken bir diğer kişi de Bre Pettis. Makerbot’un kurucularından. Makerbot açık kaynak olarak başladığı 3D yazıcı serüvenini, yollarını 3D systems ile birleştirerek kapalı kaynak ve ticari bir şirkete dönüşerek tamamladı. Tamamladı diyorum çünkü açık kaynak iken bizler onların çalışmalarından çok fazla şey öğreniyor ve teknolojilerini takip ediyorduk. Artık iyi makinalar yapsalar da benim ilgi alanımda değiller. Bre ile bu konuda twitter da biraz da sert geçen bir konuşmamız olmuştu. Yoluna açık kaynak olarak devam eden şirketler de var. Bunların en önemlilerinden bir tanesi Ultimaker. Bu güzel yazıcılar açık kaynak. Ülkemizde satışını çok güzel bir konsept mağza ile 3dörtgen yapmakta. İstanbulda mutlaka ziyaret edilmesi gerkli mekanlardan birisi. Gidip 3D yazıcıları çalışırken orada görebilirsiniz.

3D yazıcıların ABD de bu kadar ses getirmesinin bir nedeni daha var. Maker hareketi. Bu hareket gerçekten incelenmesi gereken bir konu. Merak edenler için şiddetle tafsiye edeceğim kitap Chris Anderson tarafından yazılan Makers: The New Industrial Revolution

 

Bu kitapda da anlatılan maker hareketi kısaca; üretim yöntemlerinin 3D yazıcılar sayesinde demokratikleşerek herkesin ulaşabileceği bir hal alması ile bunun yeni bir ekonomik modele dönşerek geleceğimizi şekillendirecek olması olarak özetlenebilir. Koca kitabı bir cümle ile özetleyecek değilim tabi ki. Başka bir yazıda bu kitap hakkında uzun uzun yazmak isterim. 3D yazıcılara dönersek elinizde hayal ettiğiniz bir parçayı, bir tasarımınızı, bir buluşunuz için gerekli bir mekanizmayı gerçeğe dönüştürebileceğiniz bir makina var. Dikkat ettiyseniz bir araçtan bahsediyorum. Bir fikriniz bir çalışmanız bir tasarımınız yoksa 3D yazıcılarda oyuncak yada sevgilinize kalp basarsınız. İlk olarak ihtiyacınız olan şey 3D yazıcı değil iyi bir fikir. Bu fikri hayata geçirirken 3D yazıcınız imdadınıza yetişecek. Bugün ABD de üretimle uğraşan ilk yüz şirketin üç te ikisi 3d yazıcı kullanıyormuş. (kaynak) Ülkemizde bu teknolojiyi tanıtmak, kullanımını sağlamak ve hatta kendileri bu makinadan yapmak isteyenlere bilgi ve malzeme sağlamak amacı ile bu yola çıkmış bulunuyoruz. Bu yazı dizisinde 3D yazıcılar ile ilgili bir çok merak edilen konuyu masaya yatıracağız.

Bu ilk yazı kısa olsun bir sonraki yazılarda daha teknik detaylara girmek dileği ile…

 

 

 

 

Haber

Yeni nesnelerin interneti çiplerimiz geldi

photo (2)

WiFi Serial Transceiver Module w/ ESP8266

Yeni nesnelerin interneti çiplerimiz elimize ulaştı. Bu çipler uygun fiyatları yüzünden ilgimizi çekmişti ($6). Bakalım performansları nasıl? Çalışmalarımızdan sizleri haberdar edeceğiz. Bu çiple ilgili detaylar:

Teknik bilgiler için buraya bakabilirsiniz.

 

 

 

Specifications

  • 802.11 b/g/n
  • Wi-Fi Direct (P2P), soft-AP
  • Integrated TCP/IP protocol stack
  • Integrated TR switch, balun, LNA, power amplifier and matching network
  • Integrated PLLs, regulators, DCXO and power management units
  • +19.5dBm output power in 802.11b mode
  • Power down leakage current of <10uA
  • Integrated low power 32-bit CPU could be used as application processor
  • SDIO 1.1/2.0, SPI, UART
  • STBC, 1×1 MIMO, 2×1 MIMO
  • A-MPDU & A-MSDU aggregation & 0.4ms guard interval
  • Wake up and transmit packets in < 2ms
  • Standby power consumption of < 1.0mW (DTIM3)
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.