Fikir Rüzgarı

Ezgileri söylemek bir marifet evet fakat sadece dilden dökülen sözler yetmeyecek bu alemde bir hoş seda bırakmaya. Kalp ile söylemek lazım veya kalbe söyletmek bu ezgileri. Söylemeye başlar ise kalp o güzel ezgileri; hamken pişmiştir yürekler, zihinler anlamıştır asıl olanı.

Peki ama tamam mıdır şimdi oldu mu insan? Mutlu mu? Huzurlu mu? Tevekülde zirvede mi? Ferden belki diyor zihnim, fakat yürekler birlikte atmadıkça ezgiler birlikte söylenmedikçe fertler mükemmel ezgileri güzel söyleseler ne olur ki !

Açık kaynak Yazılımlar

Linux

Media yayınları için Gstreamer:
https://gstreamer.freedesktop.org/

PCB çizim için KiCAT:
http://kicad-pcb.org

GNU Octave : Matlab Alternatifi
https://www.gnu.org/software/octave/

Windows

Termite: Bir Uart dinleme uygulamsı hex olarak görüntüleme yapabiliyor
https://www.compuphase.com/software_termite.htm

Pdf birleştirmek için kullanabileceğiniz masaüstü yazılım.
https://pdfbinder.jaleco.com

Linux Çekirdek (Kernel) Derleme

Bu yazı Mesih Veysi Kılınç kardeşimin (Hocamın) GTÜ’de bizi kırmayıp, vakit ayırıp, verdiği “Çekirdek Derleme” eğitiminden aldığım notların sistematik bir derlemesidir.

Gömülü sistem, linux tariflerini yapmadan. Neden Linux, Neden işletim sistemi sorularına cevap vermeden hemen işe koyulalım ve toolchain diyerek başlayalım.

Toolchain Yükleme,  11.02.19

Toolchain Araç zinciri bize hedef sistem için kod derlememizi sağlayan bir derleyici. Fakat bu derleyiciyi hedef sistemde değilde Host (kendi bilgisayarımızda) çalıştıracağımız için bunun bir adıda cross compailer oluyor.

Toolchain indirilebilecek siteler:

  • https://www.linaro.org/
  • https://toolchains.bootlin.com/

Toolchain nasıl bulunur ?

Toolchain için elinizde bulunan boardın işlemci modeli ni öğrenin (örn: ARM Cortex A7 ) : https://en.wikipedia.org/wiki/ARM_architecture#Cores sitesinden Mimariyi bulunuz (Örnek sonucu: ARMv7-A) sonra ise web sayfasından o mimariyi seçin.

m, eabi, abi, hf gibi ekler anlam ifade ediyor. Eğer seçenekleriniz var ise ayrıntılı öğrenmekte fayda var.

Derlemeyi yapacağımız bir ana klasör oluşturalım ve içine toolchain isimli bir klasördaha oluşturalım.

mkdir /opt/cekirdegim
chmod 777 /opt/cekirdegim
mkdir /opt/cekirdegim/toolchain

Şimdide toolchaini indirelim :
cd /opt/cekirdegim
wget https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf–glibc–stable-2018.11-1.tar.bz2

Ve zipten çıkaralım.
tar -xjf armv7-eabihf–glibc–stable-2018.11-1.tar.bz2

Derleyiciyi PATH e ekleyim ki gcc çağrısını yapabiliyor olalım
PATH=/opt/cekirdegim/toolchain/armv7-eabihf–glibc–stable-2018.11-1/bin:$PATH

derlemek için git ile u-boot reposunu indirelim:

git clone https://github.com/u-boot/u-boot.git -b v2019.01 –depth 1

v2019.01 : branch tag name, yani o branchi indiriyor.
–depth sayesinde sadece o commiti indirmiş tüm ağacı indirmemiş oluyoruz.

executablenin hangi sistem için derlendiğini görebilirsiniz.

Uboot Derleme

Devam edeeceğiz

Makale Yazımı Notlarım

Makale Yazımına dair notlarım ve kaynaklarımı bu yazıda bulabilirsiniz.

Yerli araştırma siteleri:

Yabancı araştırma siteleri:

Araçlar :

Videolar

İyi bir literetür Taramsı:

 

Sınavlara nasıl bakmalı? Nasıl Çalışmalı?

Birazcık sınavlar hakkımdaki düşüncemden bahsedeceğim bu yazımda. Hayatımız boyunca Allah azze ve celle tarafından sürekli imtihan edildiğimizi ve her daim ümit var olmamız gerektiğini hatırlatayım. Kısa bir süreliğine imtihan ayetlerinden biriyle baş başa bırakayım siz değerli okurumu:

Andolsun ki sizi biraz korku ve açlık; mallardan, canlardan ve ürünlerden biraz azaltma (fakirlik) ile deneriz. (Ey Peygamber!) Sabredenleri müjdele! (Bakara – 155)

Kısa bir tefekkür ve müjde sonrası gelelim şu okul sınavlarına. Sınavsız bir sistem söz konusu değil hayatta sınav demek öğrenilmiş ilmin tescillenmesi demek. Beşikten mezara kadar öğreniyorsak sınav olacağız ve olmalıyız. Sınava girmiyorsanız ya öğrenmiyorsunuzdur yada tescilletmiyorsunuzdur.

Peki ya giriyorsak: bir şeyler biliyor olmamız gerekiyor. Ya canım sıkıldı birde şu sınava gireyim değil şunu biliyorum ve seviyemi tescillemek istiyorum.

Sınav varsa sorular var demektir yazılı, sözlü, duygusal veya faliyetsel ve cevapları da yazılı, sözlü, duygusal veya faliyetsel olacaktır. Odaklanılması gereken sınavın kim tarafından,  nerede, ne zaman ve hangi türde (yazılı, sözlü) yapıldığı değilde sınavın kapsamıdır.  Kapsama bakarsınız, kendinize bakarsınız zaten sonuç üç aşağı beş yukarı bellidir.

Burada asıl değerli olan konu beşikten mezara olan öğrenmedir. Siz bir konuyu sadece belli şartlar altında öğrendiyseniz o şartların dışında o bilginiz neredeyse* bir hiçtir. Sınavı yapanlar ilminizi ölçmek istediği için durum özel şartları olabildiğince az olan (veya çıkmış sorulardan farlı özel durumları olan) sorular soracaktır.

Çıkmış soruları öğrenerek geçmiş bir hayat, dersin sadece sınavda çıkacak konusuna çalışmış bir öğrenci, ah ne yazık… boşa geçmiş seneler.

Zararın neresinden dönersek kardır. Durun ve hayat resminden uzaklaşın ve büyük resmi anlamaya çalışın. Bu güne kadar resmin nerelerini tamamlamışsınız ve eksikler nerede görmeye çalışın.

Hiç mi özel koşullu öğrenmeyeceğiz derseniz?: evet hiç. Öğrenme genel olmalıdır zaten soruların ve problemlerin çoğu özel şartlar altında oluşur. Sorun çözerken durum özel (spesifik) bilgiler öğrenmiş olacaksınız hayatta ama hedef hep genele hakimiyet sağlamak olmalı.

Sınava nasıl çalışmalı (?)

Bunun cevabı basit: ilmi, hafife almadan sistematik bir şekilde tahsil etmeli insan. Rotasını çizmeli rehberini aramalı (iyi bir insan veya iyi bir kaynak), bulmalı ve öğrenmeye başlamalı.

Peki nelere çalışayım ? (yine kötü bir soru) :

Konuyu biraz çalışın, etrafında dolanın, ondan sonra nelerin önemli oluğunu ve problemlerin irdelenmesi için gereken noktaların neler olduğunu kendiniz çıkarta bileceksiniz /bilmelisiniz.

Bir örnek vereyim: 3,5 veya10 yıl boyunca XXX(KPSS,YGS,ALES, DGS) gibi bir sınava çalışmış bir öğrenci neden sonuc elde edemez? Çünkü planları hep kısa vadelidir ve büyük resmi görememiştir.

Birde sihirli değnek hala icat edilmedi. Hala arıyorum bulursam sizede yazarım 🙂

*: becerebilen benzetimi kullanır yürüye biliyorsa yürür.

Qt 4.8 i yükleme

Bu yazımda qt 4.8 versiyonu için platform kurulumunu anlatacağım. Öncelikle Qt bir frameworktur, Qt Creator ise bir Geliştirme Ortamıdır (IDE). Framework ile Qt creator verisyonunu karışrımamanız için örnek vereyim: Framework 5.10 versiyonunda iken birlikte kurulan Creator ise 4.5 versiyonunda. (5.9 frameworkte Creator 4.3 geliyor).

İndirme sayfasına gidip open soruce versiyonunu seçebilirsiniz. Online installeri (15 mb) kullanıp kurum esnasında birkaç versiyon kurabileceğiniz gibi bir versiyonu barındıran offline installerleride(2.5 gb) (tavsiye ederim) indirebilirsiniz.

5.9 Yükleme

5.9 u indirin ve yükleyin. (5.10 da tercih edilebilir).

Yüklerken görseldeki gibi seçimleri yapın. (Derleyici olarak MinGW kullanıyor olacaksınız)

Yüklenecekler

Yüklenecekler

Error: Yükleme esnasında bir hata oluştu ise Windowsunuzun tüm güncellemelerini yapıp tekrar deneyiniz. (Online yükleyicide her denemenizde tekrar baştan indireceği için ben oflineı tavsiye ederim)

4.8.6 Yükleme

Qt nin downloads arşivine gidip qt/4.8/4.8.6 klasörüne gidip qt-opensource-windows-x86-mingw482-4.8.6-1.exe (336 mb) yi inirebilirsiniz(bu verisyon mingw lidir ben onu tercih ediyorum).

4.8.6 yükleme yolu ve MinGW linki

4.8.6 yükleme yolu ve MinGW linki

C:\Qt\5.9 in yanına C:\Qt\4.8.6 klasörüne kurulumu gerçekleştiriyoruz.

  • Mingw nin yerini soruyor, üsttede indirme linkini veriyor linke tıklayıp inirimeyi yapıp 7zip programı ile zip doyasını C:\mingw32 klasörüne çıkartın.
  • sonra qt kurulumuna tekrar dönüp next diyerek devam edin.

Yükleme tamamlandı ise şudurumda güncel Bir qt frameworkü güncel bir creator ve qt 4.8.6 fremavorküne sahipsiniz demektir.

Ypılması gereken Qt Creatore eski versiyon bir qt frameworkü (4.8.6) eklemektir.

Qt dökümnında Checking Build and Run Settings başlığı altında anlatıldığı gibi

  • Qt Version
    • Tools > Options > Build & Run > Qt Versions > Add a tıkla
    • Browse deyip C:\Qt\4.8.6\bin\qmake.exe yi seç.
    • Version Ayarları

      Version Ayarları

  • Compailer tanımlamalarını yapacağız.
    • Tools > Options > Build & Run > Compilers > Add etıkla MinGw yi seç ve C++ yi seçip
    • Name alanına “MinGW 4.8 C++” ve path alanına C:\mingw32\bin\g++.exe ekle ve apply de.
    • Tools > Options > Build & Run > Compilers > Add etıkla MinGw yi seç ve C yi seçip
    • Name alanına “MinGW 4.8 C” ve path alanına C:\mingw32\bin\gcc.exe ekle ve apply de.
    • Compiler Ayarları

      Compiler Ayarları

  • Kit
    • Tools > Options > Build & Run > Kits > Add e tıkla.
    • Name alanına “4.8.6 Kit” yaz
    • Compiler alrında C ve C++ için eklediğiniz compilerları seçin
    • Qt Versiyonu için ayarladığınız verisyonu seçin
    • Kit Ayarları

      Kit Ayarları

İşlem bitti şimdi yeni bir proje oluşturalım.

Hımm direk proje oluşturmak için daha bir yöntem bulmadım ama Welcome > Example sekmesindeyken verisyonu 4.8.6 yaparsanız 4.8.6 örnekleri gözükecektir.

4.8.6 için örnek projeler

4.8.6 için örnek projeler

Siz onları 4.8.6 ile configüre ederek o fremawork ile derleyebileceksiniz.

4.8.6 örnek proje Konfigürasyonları

4.8.6 örnek proje Konfigürasyonları

Yazının eksikleri:

  • Debugger ayarlarına bakmak gerekebilir: Kit’te farkettiyseniz debugger için farklı mingw seçiliydi.
  • 5.10 sürümünde hatalar çıkabilir.
  • 4.8.6 da yeni proje oluşturmak için template bulunmalı. (Examplenin biri alıp modifiye edilebilir.)

Hayattan Notlarım

Bu yazıda dikkatimi çekken notlar bulunmaktadır. Zamanla güncellenecektir.

  • Susuzluk su içtiğin için değil Allah c.c. istediği için geçer. Su sadece vesiledir.
  • Evladını okullarda (ana okulları,kreşler, …) yetiştirenlerin sonu huzur evleri olacaktır.

Heroku.com ‘a nodejs web uygulaması yükleme

Bu yazıda heroku sitesine nodejs ile yazmış oluğumuz web sayfasını yükleyeceğiz.

Heroku  a girip üye olunuz (mail ve şifrenizi kullancaksınız unutmayın). Heroku Command Line Interface (CLI) Programını indirelim ve kuralım.

Bir web sayfası yazmış olmalıyız deploy etmek için. Örnek hazır bir uygulama yıda indirp kullanilirsiniz.

  • package.json dosyası bulunmalı. (npm node js için gerekli)
  • Procfile olmalı: web uygulamsı olduğunu ve ana js dosyasının adını yazıyorsunuz.

Komut istemi (cmd) açıp projemizin olduğu dosya gidelim.

  1. npm install diyetek node modüllerimizi yükleyelim.
  2. heroku login diyerek heroku.com mail ve şifremizle giriş yapalım.
  3. “heroku create projeismi” diyelim. ve heroku nun dashbordundanda göreceğimiz projemizi projeismi yerine yazdığımız isimle göreceğiz. (max 5 proje)
  4. https://projeismi.herokuapp.com/ | https://git.heroku.com/projeismi.git
  5. şeklinde iki link çıkıyor karşınıza biri git linki diğer web sayfanınızın domain linki.
  6. “git init” deyip giti klasörde başlatalım.
  7. heroku git:remote -a projeismi deyip git ile heroku projemize bağlanalım.
  8. sonraki yüklemelerinizde yüklemelinizde (git pull heroku master) yapmnız gerekebilir
  9. “git add .” diyerek tüm yeni dosyaları ekleyelim.
  10. git commit -m “first”  deyip commitleyelim.
  11. ve son hamle : “git push heroku master”

Olası Hatalar:

  1. Web sayfanızda hata varsa yine konsola “heroku logs” yazarak logları görebilirsiniz.
  2. Port numarasını direlk yazmak yerine aşağıdaki gibi yazın. Deploy edince 80 portu üzerinden hizmet versin.
    • http.listen(process.env.PORT || 8080, function(){
      console.log(‘listening  port 8080’);
      });

Güncelleme için komutlar :

  • heroku login
  • heroku git:remote -a projeismi
  • git add .
  • git commit -m “first”
  • git push heroku master

Faydalanılan Linkler:

  • https://www.youtube.com/watch?v=AZNFox2CvBk
  • https://devcenter.heroku.com/articles/git
  • https://devcenter.heroku.com/articles/getting-started-with-nodejs#deploy-the-app

 

 

Esp8266 Programlama (Arduinoyla)

Bu yazımda yakın zamanda kullanma ve programlama tecrübesi edindiğim  esp8266 isimli Wifi modülünün programlamlanmasından bahsedeceğim.

http://benlo.com/esp8266/ESP8266-ESP01.jpg

Çipler ya tek sefer programlanabilr özelliktedir yada tekrara tekrara programlanabilirler. Esp8266 çok gez programlanabilri çiplerden yani bir flash belleğe sahip. Tıpkı bir Arduino- Waspmote kartı özünde mikrodenetleyiciler hepsi gibi programlamak mümkün.

Örenk iki senaryo üzerinden anlatayım :

  1. Bir arduinoya yazdığınız program Seri haberleşme sonucu aldığı komutu icrada edebilir. Mesela “{Yak,Led1}”, “{Sondur,Led1}” , {Ölç, SIcaklık} şeklinde örneklendirlecilecek bir programda tasarlanabilir.
  2.  Sadce led yakacaksanız Bu kadar komut içeren bir sistemi kullanmak yerine daha basit, özelleştirilmiş ve kullanışlı bir sistem geliştirmek mükündür. Bu senaryodada ona bir örnek verelim. Ledleri digital çıkışlara bağladığınızı düşünürrsek “{PinNo, Durum}” şeklinde basit bir komut sistemi oluşturabiliriz. Bunu ebnf ile ifade edersek uno için {  (1|2|3|4|5|6|7|8|9|10|11|12|13 , (0|1)  } şeklinde olabilir. Örn: {1,1} Digital 1 pinindeki ledi yakacaktır.

Senryo 1 de örnekleri verilmiş olan komutlar arttırlılarak tüm sistemin yönetilmesi mümkündür. Fakat ihtiyacınız özelse bu komplexlikten kurtamak anlamlı labilir sistemi. Bunuda senaryo 2 ile örneklemeye çalıştım.

Gelelim esp8266ya. Esp8266 satın alındığında genelde her donanımın yönetilmesinde ve yapılandırılmasında kullanılan AT komutlarıyla kontrol edilebilecek bir şekilde programlanmış olarak geliyor. Ve standart RX-TX bağlantısını yaparak At komutları üzerinden çalıştırabiliyorsunuz. Bu genel ve komplex kullanımdan kurtulmak isteyenler ise modülle At komutları üzerinden konuşmaktansa direk programlamayı tercih ediyorlar

Esp8266 modülü ve en popiler kütüphanenin kullanımı gitbook.com da krzychb takma adlı kullanıcı tarafından hazırlanmış kılavuz   yeni kılavuz da anlatılmış. Bizde bu yazıda aynı projenin (Github da barınıdırılan esp8266/Arduino projesin) derlenmesinden ve kullanılmasından bahsedeceğiz.

  1. Derleme ve yazılım geliştirme ortamının hazırlanması,
  2. Programlama için donanımsal hazırlıkların yapılması,
  3. Geliştirilen yazılımın yüklenmesi

şeklinde 3 ana başlıkta açıklanacaktır.

Derleme ve yazılım geliştirme ortamının hazırlanması

Programlama için Arduino IDEsinin kullanımı tercih edilmiş ve uygun geliştirmeler yapılmış o yzüden bizde arduino idesi üzerinden ilerleyeceğiz. IDE’nin Son sürümünü buradan indirebilirsiniz. Son sürümle denemeniz tavsiye olunur. Sürüm değiştikçe geliştirmeler yapıldığı için eski sürüm kullandığınızda uyum problemi yaşayabilirisiniz.

IDE’ ye esp8266 yı programlamak için gerekli kart ve kütüphane tanımlamalrının yapılması gerekiyor. Fakat bu iş gerçekten kolaylaştırılmış.

IDE’yi açıp Dosya-> Tercihlere tıklayıp Ek devre kartları Yöneticisi URL’leri yazan kısıma projenin README.md sinde yazan Boards Menager linkini: http://arduino.esp8266.com/stable/package_esp8266com_index.json kopyalayıp yapıştırıyoruz. Tamam diyerek seçeneklerden çıkıyoruz.

Yine Araçlar-> Kart -> Kart Yöneticisi ne tıklayarak açılan listeden esp8266 by ESP8266 Comunity yazan kart setini bulup Kur butonuna basarak yüklüyoruz.

Programlama için donanımsal hazırlıkların yapılması

Genel olarak modüller farklı modlarla başlatılmak istendiğinde (buna farklı yetkiler veya programlama modu örnek verilebilir) donanımsal olarak bazı pinlere farklı gerilim bağlantıları yaparak başlatılması gerekir.

Esp8266 da ise programlama moduna geçebilmek için donanımsal ololarak yapılması gerekenler:

  1. 3.3 V u arduinoda 3.3 volta bağlayın
  2. RX ‘i RX e
  3. TX i TX e
  4. Gnd yi Gnd ye
  5. Ch_PD yi 5 Volta
  6. GPIO_0’ı GND ye
  7. Arduinonun üzerindeki (esp8266’nın reseti değil) reset bacağı gnd ye bağlanmalı (bu sayede arduino devre dışı kalır. Wifi programlanır).

Bağlamanız gerekli. Tüm bağlantıları yaptıktan sonra 3.3 volt gücü çekip tekrar takarsanız modül programlama modunda çalışacaktır. Ve arduinodan program yükleyebileceksiniz. Program yüklendikten sonra direk çalışmaya başlayacaktır. Programlama yapmadan çalıştırmak isterseniz GPIO_0’i gnd bacağından çıkartmalısınız.

alıntı : http://www.electroschematics.com/11276/esp8266-datasheet/

Esp8266 pin Diyagramı

Geliştirilen yazılımın yüklenmesi

Yükleme için donanımsal atarlamlaır yaptığınızı var sayarak devam ediyorum.

  • Araçlar-> Kart -> Sekmesinden Generic ESP8266 Modüle kart olarak seçilmelidir.
  • Port kımında ise arduino ile programlayacağımız kullancağımız arduinonun ilişkili olduğu com port seçilmelidir.

Klavuzdaki örnek program yeni_program veya Blink.ino örneği yüklenebilir. Yükleme aynen arduinoya yüklermiş gibi derle ve yükle butonuna basılarak yapılmaktadır.

 

Güncelleme:

1.0.1:  kılavuz ve program linki güncellendi. uyarısı için okuyuma teşekkürler.