Faydalı Linkler

momentumBu başlık altında internette ilgimi çeken teknik ve diğer konularla ilgili makale, video, web sayfaları v.b. içerikleri paylaşacağım.  Bu başlığı sabit tutup sürekli güncellemeyi düşünüyorum.

Bu yazının geri kalanını okuyun

Gömülü Sistemlerde Cihazlar Arası Haberleşme: Kendi İletişim Protokolümüzü Geliştiriyoruz

communicationBu yazıda gömülü sistemlerde önemli bir sorun olan, bir verinin bir mikrodenetleyiciden bir diğerine veya başka bir platforma aktarılması konusunu irdeleyeceğiz. Özellikle mikrodenetleyici programlamaya yeni başlayanlar için büyük bir soru işareti olan seri iletişim ile bilgi transferi konusuna detaylıca değineceğim. Bunun için kendi protokol yapımız oluşturacağız. Elbette anlatılanlar sadece seri iletişimi değil tüm fiziksel iletişim katmanlarında kullanılabilir olacaktır.

Bu yazının geri kalanını okuyun

ARM Dünyasına Giriş; STM32F0, Systick ve LED Blink

cortex-mGün geçmiyor ki bir üretici ARM çekirdekli bir ürün duyurmasın. MCU barındıran yeni ürünlerin bir çoğunda artık ARM Cortex-M çekirdeği yer alıyor. 8 bit mcu’lar yer yer hala fiyat/performans açısından galip gelseler de çok yakın bir gelecekte artık onları konuşmuyor olacağız. Gelişmiş komut setleri, debug özellikleri, esnek çevre birimi yönetimi, gelişmiş kesme yönetimi v.s gibi pek çok konuda tartışmasız lider olan Cortex-M mimarisi her geçen gün daha da gelişiyor. Ben bu yazıyı yazarken Cortex-M7 mimarisinin güncellenmiş versiyonu yakın zaman önce duyuruldu. Yüzlerce Mhz çalışma hızları, megabayt seviyelerinde ROM, yüzlerce kilobayt RAM ile birlikte günümüzü ve yakın geleceği domine edeceği şüphesiz. Bir müddettir bende ARM çekirdekli mcu lar ile çalışıyorum. Bir iş için ucuz bir mcu aramaya başladım ve ST’nin Cortex-M0 ailesinden STM32f030f4p6 karşıma çıktı.

Bu yazının geri kalanını okuyun

NMEA 0183 Protokolü ve GPS Verisi Ayıklama

gps NMA 0183 protokolü “ABD Ulusal Denizcilik Elektroniği Birliği (National Marine Electronics Association)” tarafından geliştirilen ve GPS cihazlarında kullanılan seri iletişim tabanlı bir protokoldür. Bu standartta iletişim ASCII tabalı gerçekleştirilir. NMA 0183 standardı iletişimi paketler üzerinden gerçekleştirir. Konu Aşağıda örnek bir paket görülmektedir.

Bu yazının geri kalanını okuyun

IEC 62056-21 Protokolü ve Elektrik Sayacından Veri Okuma

sayac okumaIEC 62056-21, International Electrotechnical Commission (IEC) tarafından 2002 yılında elektrik sayaçları ile haberleşmek için duyurulan bir iletişim protokolü standardıdır. Ülkemizde de elektrik sayaçlarında bu protokol kullanılmaktadır. Protokolün fiziksel iletişim katmanı optik port üzerinden seri iletişimdir ve half-dublex gerçekleştirilir. Gelişen teknoloji ve ihtiyaçlarla birlikte protokol RS-232, RS-485 ve GSM/GPRS gibi iletişim metotlarında da kullanılmaktadır. Protokol paket yapısı ile çalışmaktadır. Master cihaz (server) iletişimi başlatır, sorgu sorar ve iletişimi sonlandırır. Tüm bu veri trafiği belirli bir paket yapısına göre yapılır. Bu paketlere OBİS adı verilir ve yaklaşık 150 civarında tanımlı OBİS bulunmaktadır. Elektrik sayacı slave cihaz (client) konumundadır, yani iletişim başlatamaz. Protokol iletişimi ASCII tabanlı yürütür ve bu durum hız açısından oldukça sıkıntı yaratır. Standart, sayaç üreticilerinin kendileri için tanımlı özel OBİS kodları geliştirmesine de imkan vermektedir.

Bu yazının geri kalanını okuyun

MCP355x 22 Bit ADC Uygulaması

Elektroniklarge-icon sistemlerin gelişmesiyle birlikte endüstride, ev elektroniğinde, otomobillerde vb. pek çok alanda sıcaklık, basınç, nem, ağırlık, iletkenlik, ses, ışık, vs. gibi fiziksel değerlerin ölçülmesi, bunların kontrol edilmesi veya bunlara bağlı başka işlemlerin işletilmesi ihtiyacı doğmuştur. Fiziksel büyüklükler “transducer” aracılığı ile analog bilgi sinyaline dönüştürülürler. Dijital sistemlerin (cpu, mcu, fpga, …) hayatımıza girmesiyle birlikte fiziksel büyüklüklerin dijital sistemlerde işlenmesi, yani analog sinyale çevrilen büyüklüklerin sayısal bilgiye dönüştürülmesi ve işlenmesi ihtiyacı doğmuştur.
Bu yazının geri kalanını okuyun

C dilinde Union Yapısı

Bir program yazarken pek çok değişkene ihtiyaç duyarız. Algoritmamızın ihtiyacına göre farklı tipte değişkenler tanımlarız. Bu değişkenler platformların belirledikleri boyut kadar bellekte farklı yerlere derleyici tarafından otomatik olarak yerleştirilirler. Diziler ise bellekte sıralı şekilde tanımlanırlar. Yani dizinin elemanları bellekte sıralı şekildedirler.
Örneğin;
Uint8_t a[4]; gibi bir dizi tanımlanırsa değişken için bellekte aşağıdaki gibi bir yer tahsis edilir.

Bu yazının geri kalanını okuyun

C Format Belirteci (Output Format Specifiers)

helloworldPrintf fonksiyonu özellikle mikrodenetleyicileri hedef alan derleyicilerde özellikleri kısıtlanan bir kütüphane fonksiyonu. Barındırdığı pek çok kabiliyet sebebiyle hafıza sorunlarına yol açtığı için kimi derleyicide float sayı desteğinden yoksunken bazı derleyicilerde de özellikleri seçime bağlı olarak kapatılıp açılabilen bir yapı geliştirilmiş.
Bu yazının geri kalanını okuyun

Pilli Cep Telefonu Şarj Cihazı

battery

Kullanıcıların eski yıllarda bir cep telefonundan en büyük beklentileri uzun batarya ömrü iken artık günümüzde internete girmek, oyun oynamak, video izlemek gibi kullanım senaryoları ile istekler büyük değişiklik gösterdi. Bu uygulamaların kullanımı yüksek güç tüketimi gerektirmesi ile birlikte mobil cihazlar batarya ömürleri açısından bir günü dahi çıkartmayacak duruma geldiler. Artık yanımızda telefon bataryası, şarj cihazı taşır duruma geldik. Bu açığı gören firmalar şarj edilebilir harici şarj cihazlarını piyasaya sürdüler. Aslında bu cihazlar bilinenin aksine çok önceleri de piyasada mevcuttu. Markasını hatırlamasam da 2002 veya 2003 yılında bu tarz bir şarj cihazını demek için satın almıştım. İki adet kalem pille çalışan şarj aleti oldukça kullanışlıydı. Fakat son yılların aksine o dönemlerde batarya ömürleri birkaç günü rahatlıkla çıkardığı için pek kullanım gereği hissetmemiştim. Benzer durumdan olsa gerek ki piyasada da bu tarz ürünler pek olmazdı.

Bu yazının geri kalanını okuyun

ACS712 Akım sensörü ve DC/AC Akım Ölçümü

magnetfieldshapeACS712 Allegro firmasının akım ölçmek için geliştirdiği Hall-Effect prensibine göre çalışan bir IC’dir. 5, 20 ve 30 Amperlik 3 farklı versiyonu bulunmaktadır. Sensörün çalışması için 5V’luk besleme yeterlidir. Çıkış sinyalinin filtrelenmesi için birde filtre kapasitesi kullanılmaktadır. Bu kapasite değeri ayrıca çıkış tazeleme frekansını da etkilemektedir.

 

Bu yazının geri kalanını okuyun

Bit ANGLE (Code) Modülasyonu (BAM) ve LED Dimming

maxresdefaultBir LED’in yaydığı ışık miktarının değiştirilmesi olayına dim etmek (dimming) denir. Standart bir LED’den 20-25 mA akım akması istenir. Bu esnada LED normal çalışma şartları altında en yüksek parlaklıkta ışıldar. LED’in parlaklığının ayarlanması için LED üzerinden akan akımın ayarlanabilir olması gerekmektedir. Bu da bir ayarlı akım kaynağı ile LED’in sürülmesi ile mümkündür. Piyasada bu iş için çok kanallı entegre devre çözümler geliştirilmiştir.

Bu yazıda bir mikrodenetleyici ile LED parlaklığının ayarlanmasına değinilmiştir. LED parlaklığının ayarlanması için LED akımının ayarlanması gerekliydi. Dijital bir sistemde bu işlem PWM sinyali ile elde edilebilir. PWM sinyalinin görev peryodu (duty cycle) değiştiğinde LED’den geçen ortalama akımda değişmekte ve LED parlaklığı ayarlanabilmektedir. PWM sinyalinin 100Hz civarında olması da LED’in yanıp sönerkenki geçişlerinin gözle algılanamaması için yeterlidir.

Bu yazının geri kalanını okuyun

Pozitif Gerilimden Negatif Gerilim Dönüşümü (DC/DC Converter)

ElectricityDijital sistemlerle uğraşırken genellikle negatif gerilime ihtiyaç duymayız. Grafik LCD gibi bazı çevre birimlerinde ise ihtiyaç duyulan negatif gerilim genellikle bu donanım üzerinde üretilir ve biz dışarıdan birkaç komponent kullanarak ilgili donanımı kullanırız. Fakat işin içine analog kısım girince özellikle op-amp larda negatif beslemeye ihtiyaç duyulmaktadır. Özellikle op-amp çıkışının 0V seviyesine çekilmesi gibi işlemlerde birkaç volt da olsa negatif beslemeye ihtiyaç duyarız. Single supply rail to rail op-amp lar olsa da bazen gerek ihtiyaçtan gerek malzeme temininden dolayı bu çözümleri kullanamayız veya istemeyiz. Bu durumda istenilen genellikle negatif bir kaynak tasarlamak yerine pozitif DC gerilimden negatif DC gerilimin elde etmektir. Bu iş DC-DC çevrim olarak isimlendirilmektedir. Bu yazının geri kalanını okuyun

C ile Kısa Notlar

1- Bir sayının ikinin kuvveti olduğunu hesaplama

Elimizdeki bir sayının 2’nin kuvveti olup olmadığını hesaplamak için pek çok algoritma kurulabilir. Burada sadece bitsel işlemler ile bu hesaplamanın çok hızlı bir şekilde yapılışına bakacağız.

Yöntemin mantığı aslında oldukça basit fakat oldukça etkili. Örneğin elimizde 8 sayısı olsun. Bu sayının ikinin kuvveti olduğunu anlamak için öncelikle bu sayıdan 1 çıkartıyoruz. Bu durumda 7 sayısını elde ediyoruz. (8=1000, 7=0111 ) Elde ettiğimiz bu iki sayıyı ve (AND) işlemine tabi tutuyoruz. 8 & 7 –> 1000 & 0111 = 0000. Bu işlemin ardından 0 sayısını elde ederiz.

Şimdide 7 sayısı için bu işlemleri yapalım. 7-1=6  ve  7=111, 6=101 olarak hesaplanır. Buradan 111&101 = 101 elde edilir. Bu durumda hesaplanacak sayıya x dersek;

x&(x-1) işlemi  sıfıra eşitse x sayısı ikinin kuvveti, aksi durumda ikinin kuvveti değil sonucu çıkmaktadır. Bunu bir fonksiyon olarak yazalım.

 Bu yazının geri kalanını okuyun 

XC16 Compiler Kurulum ve İlk Uygulama

SW006022-1Microchip firmasının 16 bitlik mikrodenetleyicileri için geliştirilen xc16 derleyicisi PIC24 serisi ve DsPIC serisi mikrodenetleyicileri desteklemekte. Bu yazıda xc16 derleyicisinin kurulumunu yapıp LED Blink uygulaması yapacağız.

Öncelikle buradan XC16 derleyicimizi indiriyoruz. Sistemimizde Mplab-X IDE sinin yüklü değilse öncelikle buradan indirip kuruyoruz.

Bu yazının geri kalanını okuyun

IBM Yazılım Akademisi Ardından

ya2013_logo

Başlık yarışma ile ilgili bir yazı olacak gibi dursa da yazının konusu sunum.

Birkaç gün önce IBM yazılım akademisi yarışmasına ekip olarak katıldık. Daha önceki sunum ve yarışmalardan edindiğim tecrübelerin bu sefer işe yaradığını gördüm. İlk yarışma sunumumda projenin çok fazla teknik detayına girmiş sunduğu çözümlere çok fazla değinmemiştim. Daha sonraları çeşitli yarışma/destek programları için yaptığım sunumlardan sonra artık sunum mantığı tam olarak kafamda şekillendiğini düşünüyorum. Son olarak IBM yazılım akademisinde proje ekibimizle birlikte güzel bir sunum yaptık. Bu yazının amacı bir yarışma v.b bir sunumda bence olması gerekenler. Bence bir sunumda en önemli parça video. Konu ile ilgili sizin hazırlayacağınız bir video hem amacın anlaşılması için hem de projeye olan inanç için çok önemli bir faktör. Birkaç dakikalık sistemin nasıl işleyeceğini anlatan sizin çektiğiniz bir video, bir sokak röportajı jüri üzerinde etki bırakmak için bire bir. Sunumda, ele aldığınız problemin tanımı ve sizin bu soruna getirdiğiniz çözümü sözlü olarak kısa bir şekilde ifade ettikten sonra ardından videoya geçin. Video olayı gözünüzü korkutmasın, basit amatörce fakat amaca uygun bir video iş görecektir.

Bu yazının geri kalanını okuyun

Kalman Filtresi

kalman2Kalman filtresi başta havacılık alanında olmak üzere pek çok alanda sıklıkla kullanılan bir yöntem. Aslında filtre olarak isimlendirilmiş olsa da mevcut ve önceki durumlara göre bir sonraki durumu tahmin eden bir algoritma. Kalman filtresi, Amerikan Apollo uzay programının da temel taşlarındanmış. Genel olarak kalman filtresi, gürültülü veriler üzerinden sistemin gelecek durumu hakkında tahminde bulunur.

Bu yazının geri kalanını okuyun