Blog

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 (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…

 

 

 

 

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)

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.

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.