Uzay Gemisi Operatörü – Üçlü Karşılaştırıcı (<=>) C++20

83 Kişi Okudu

Uzay Gemisi Operatörü Nedir?

Cpp 2020 ile gelen yeni özelliklerden bir tanesi de üçlü operatördür, bu operatöre uzay gemisine benzediği için uzay gemisi operatörü de denir. Uzay gemisi operatörü ile üçlü ve daha fazla karşılaştırmalar yapılabilmektedir. Klasik olarak == operatörünü ele alalım, bu operatör kullanıldığında true veya false değerlerinden biri dönecekti, ancak üçlü operatör ile karşılaştırmanın sonucundan daha fazla bilgi edinme şansı ediniyoruz.

Açıklama ve Örnekler

Bu operatör bool olarak true veya false tiplerini dönmez, aksine enum tipleri dönebilir. Eğer karşılaştırma sayısal bir tip için yapılacaksa;

Okumaya devam et Uzay Gemisi Operatörü – Üçlü Karşılaştırıcı (<=>) C++20

CMS – Kriptografik Mesaj Söz Dizimi

198 Kişi Okudu

CMS İngilizce olarak açılımı Cryptographic Message Sytax olarak ifade edilir. Kriptografik Mesaj Söz Dizimi olarak Türkçeleştirilmiştir. Mesajları imzalamak amacıyla söz dizini standardı tanımalar.

Dijital ortamlarda gerçekleştirilen mesajların sağlıklı bir şekilde taşınabilmesi çok önemlidir. Bunun sağlanabilmesi içinde çeşitli kriptografik tekniklere başvurulmaktadır. Bu tekniklerin başında Elektronik imza gelir, dijital verilerin korunması ve taşınma esnasında değiştirilmesine karşı önemli bir koruma sağlamaktadır.

İmza ve Elektronik İmza Nedir?

İmza, yazılı, sanatsal veya dijital nesnelerin sahipleri adına oluşturulan benzersiz ve her defasında aynı olan bir işaret, çizim veya kod bütünüdür. Elektronik imza ise, 5070 sayılı Elektronik İmza Kanunu [1]’nda tanımlandığı şekliyle; başka bir elektronik veriye eklenen veya elektronik veriyle mantıksal bağlantısı bulunan ve kimlik doğrulama amacıyla kullanılan elektronik veriyi ifade eder.

Elektronik İmza Nedir?

Elektronik İmza bir takım matematiksel işlemler sonucu ortaya çıkar, her belge için belgenin içeriğine bağlı olarak farklılıklar gösterebilir. Elektronik İmza oluşturulurken çeşitli şifreleme ve özet çıkartma algoritmaları kullanılır. Bu teknikler de her belgenin kendine özgü imzalara sahip olmasına neden olabilir. Hatta Elektronik İmzaların içerisine istenilen bir mesajda eklenebilir.

Kriptografik Mesaj Söz Dizimi ( Cryptographic Message Sytax (CMS)) Nedir?

Okumaya devam et CMS – Kriptografik Mesaj Söz Dizimi

FlatCAM ile PCB Üzerine Yazı Yazdırma

381 Kişi Okudu

Hobi olarak başladığım ve devam ettiğim PCB tasarlama ve evimde bulunan küçük CNC de bu PCB leri üretme macerama tüm hızı ile devam ediyorum. Bu süreçte bir çok yeni şey öğrendim ve hayatıma açıkkaynaklı bir çok yazılım girdi, kimini Türkçeye çevirdim kinin geliştiricileri ile iletişime geçerek yeni yazılımcılar ve onların kodlama tarzlarını öğrendim.

FlatCAM de bu süreçte öğrendiğim yazılımlardan bir tanesi. Kısaca ne olduğundan bahsetmem gerekirse, tasarlamış olduğum PCB lerin gerber olarak çıktı aldıktan sonra bu programa gönderiyorum. Bu program içerisinde bir takım ayarlamalar yaptıktan sonra küçük CNC makinama göndermek üzere G kodlarım hazır hale geliyor. Özet geçmek gerekirse Gerber den G Kodu üretimine yarıyor.

FlatCAM programı üzerinde eklemeler ve çıkartmalar yapmaya yarayan bir çok araç mevcut bunlardan bir tanesi de yazı ekleme, evet gerber dosyasını almadan öncede PCB çizdiğimiz programda da yazı yazma özelliği mevcut ancak katmandan ayrı olarak farklı bir CNC ucu ile yazma işlemi yapılmak isteniyorsa bu yola başvurulabilir, şunu da ifade etmem gerekiyor ki bazen yazı eklemeyi unutuyorum tam G kodu üreteceğim esnada aslında şu boşluğa da bir tarih eklesem ne iyi olur diye aklıma geliyor, bu durumlarda da FlatCAM üzerinden yazı ekleme üzerinden özelliği kullanma ihtiyacı olur.

Yukarıda gördünüz videoda bunu anlatmaya çalıştım umarı faydalı olur. :)

Donanım İçeren Simülsayon Sistemi

811 Kişi Okudu
Hardware in the Loop System
Hardware-in-the-Loop nedir?
 
EĞİTİMİ HAZIRLAMA NEDENİ

Salgın hastalık döneminde evde bulduğum boş vakitleri üretken ve insanlığa faydalı olmak adına Türkçe içerik bulunmayan HIL sistemleri ile ilgili bir video hazırladım.

Donanım içeren simülasyon NEDEN KULLANILIR
  Donanım içeren simülasyon sistemleri, günümüzde sürekli olarak gelişen ve mühendislerin sık olarak kullanmaya başladığı sistemlerdir. Günümüzde zaman kaybı ve maliyeti azaltmak için donanım içeren simülasyonların kullanımı sürekli artmaktadır. Bu simülasyon sistemleri gerçek donanımları kullanmadan yapılan tasarımları test etme imkanı sunar. Böylece yeni kontrol algoritmaları geliştirilebilir veya, örnek olarak, motorun kendisinde meydana gelebilecek bir hata gözlemlenebilir.(3)
TARİHİ VE ANLAMI
  Donanım içeren simülasyon (HIL) sistemi gerçek elektronik kontrol ünite veya ünitelerini taşıtın gerçek zamanlı modeline bağlamayı içerir. Bu şekilde her bir kontrol ünitesi sistematik şekilde test dilebilir. “Hardware-in-the-Loop” kelimesi Türkçe’ye “Donanım içeren Simülasyon” olarak geçmektedir. Bunların haricinde literatürde “Çevrimde Donanımsal Benzetim”, “Donanımla Benzetim” şeklinde kullanımları da mevcuttur. Donanım içeren simülasyonun otomotiv uygulamalarında kullanılmaya başlama tarihi 1980’lere kadar uzanır.
NEDEN ihtiyaç vardır
  HIL sistemleri tekil sistem elemanlarının test edilmesi amacıyla daha çok üniversitelerde, araştırma laboratuarlarında ve ileri mühendislik departmanlarında kullanılıyordu. 1990’larda taşıtlarda artan sayıda Elektronik Kontrol ünitelerinin (EKÜ) kullanılmaya başlanması ile birlikte EKÜ’lerin test edilmesi üzerinde daha sık durulan bir durum haline geldi. Artık kontrol ünitelerinin kendisi asıl test edilecek ürün olmuştu. HIL sistemleri sadece ileri mühendislik ve kontrol tasarımında değil aynı zamanda üretim geliştirme safhasında da yaygınlaşarak kullanılmaya başlandı. 1990’lar boyunca taşıtta kullanılan kontrol üniteleri ve dolayısıyla ağ yapılarının sayısı giderek arttı. O zamana kadar ECU’ları test etmek için kullanılan breadboard’lar yetersiz kalmaya başladı. Dolayısıyla bu cihazlar yerini tüm ECU çeşitlerini içeren ECU ağının otomatik testini mümkün kılacak laboratuvar araçlarına (ECU ağına bağlı HIL sistemleri) bıraktı. (1)
gerçek zamanlı olmasında ki esaslar
  Gerçek zamanlı sistem, belirli bir işlevi veya görevi önceden belirlenmiş bir sürede ve doğru bir şekilde gerçekleştirmesi gereken sistemlerdir. Bu işlev örneğin 1 milisaniye zaman aralıklarıyla sensör girişlerinin okunması, yorumlanması ve aktüatörlerin sürülmesi olabilir. Dolayısıyla gerçek zamanlı sistemler için bir zaman kısıtlaması söz konusudur. Bu zaman kısıtlamasının durumuna göre gerçek zamanlı sistemler;
  • Katı gerçek zamanlı sistem
  • Esnek gerçek zamanlı sistem
Özellikle katı gerçek zamanlı sistemler için gerekli olan zaman sınırlamalarının tutturulması hızlı bilgisayar sistemlerini gerekli kılmaktadır.
 
Günümüzde sıklıkla kullandığımız Linux ve MS Windows benzeri gerçek zamanlı olmayan işletim sistemleri üzerinde bu gerçek zaman taleplerinin karşılanması her zaman için mümkün olmamaktadır. Örneğin MS Windows işletim sistemini ele alırsak; aynı anda birden çok işlevi yerine getirecek şekilde tasarlanmış bir işletim sistemi olduğundan dolayı, tasarlanan kontrolcünün çalıştırılması işlevini askıya alıp daha öncelikli başka işlevleri yerine getirmeye başlayabilir ve dolayısıyla kontrolcü için gerekli sınırlı zamanların aşılmasına neden olabilir. Bundan dolayı kontrolcülerin gerçek zamanlı olarak çalıştırılması için QNX, VxWorks, RT-Linux, xPC Target gibi gerçek zamanlı çalışmaya olanak veren işletim sistemleri kullanılmaktadır.
bir sunum ile pekiştirelim
Donanım içeren simülasyon sistemleri hakkında hazırladığım sunum. Kanalıma abone olarak destek olabilirsiniz.

Daha önce yapmış olduğum lisans bitirme tezine göz atmak için aşağıda bulunan butona tıklayın;

KAYNAKÇA

CircuitMaker ve FlatCAM ile G-Kodu Çıkartma

189 Kişi Okudu

FlatCam programı ücretsiz ve açık kaynak olarak kullanıcılara ulaşan bir CAM (Computer Aided Manufacturing, Bilgisayar Destekli İmalat ) programıdır. FlatCAM yardımı ile elinizde bulunan .GBL uzantılı PCB çizimlerini CNC ler için gerekli olan g koduna dönüştürebilirsiniz. Bu program basit ve temel birkaç kullanım adımından oluşmaktadır. Bu program Python programlama dili ile yazılmıştır isteyenler aşağıda verdiğim bitbucket linki ile programın geliştirme aşamalarını ve yazılımın tamamını inceleyebilir.

Eğitimde Anlatılan Versiyonları;
Yazılımın Yeni Versiyonları İçin;
 

Hazırlamış olduğumuz g kodlarını ise kısa bir google taraması ile bulduğum ve javaScript marifete ile açık kaynak olarak hazırlanmış bir simülasyon yazılımı ile gerçekleştirdim. Eğer hazırlanan g kodlarının simülasyonu yapılmaz ve göz ile olası hatalar kontrol edilmez ise CNC nize ve iş parçanıza geri dönülemez ve telafi edilemez sorunlar çıkartabilir. Burada göz yordamı ile CNC nin olağan dışı eksen noktalarına gidip gitmediğine bakıyoruz.

G-kodu Simülasyon Ortamı: https://nraynaud.github.io/webgcode/

Hazırlamış olduğum bu video içerisinde size bu üç harika yazılımı kullanarak nasıl CNC niz için g kodu elde edip test edebileceğinizi gösterdim. İzlediğiniz ve vakit ayırdığınız için teşekkür ederiz.  

Doxygen Kullanımı

275 Kişi Okudu

Yazılım projelerinde dokümantasyon ihmal edilse de dokümantasyon gerçek bir ihtiyaçtır. 🙂

Yazılım geliştirici kendi yazdığı koda dahi zaman geçtikçe yabancılaşabiliyor. Sonradan katılan ekip üyelerinin projeye hızlı bir şekilde adapte olabilmesi ve projeyi doğru anlaması büyük önem taşımaktadır. 🤔🤔

Her iki sorununda çözümü hızlı ve basittir. Öncelikle projede yazılan koda yorum satırları eklemek daha sonra DOXYGEN gibi yazılan yorum satırlarını alarak web sayfası temelli anlaşılması kolay çıktılara dönüştürmeyi sağlayan yazılımlar kullanılabilir. 🤖🐱‍🏍

Bu tek videodan oluşan eğitim tüm yazılım geliştiricilere hitap etmektedir ve içerik olarak da yazılım geliştirirken dokümantasyon ve yorum satırlarının önemine vurgu yapılmıştır. 👍👍

Sizlere temel olarak bir C++ kodu üzerinde yazılan yorum yorum satırlarını nasıl web sayfası temelli anlaşılması kolay dokümana dönüştürülebileceğini anlatmaya çalıştım, umarım faydalı olur.👨‍💻☺👋 İzleyip vakit ayırdığınız için teşekkür ederi. Başarılar ve iyi çalışmalar diliyorum.

#doxygen #yazılımdokümantasyonu

Doxygen resmi sitesi. http://www.doxygen.nl/

Doxygen indirme linki. http://www.doxygen.nl/download.html

MPU6050 Gyroscope – Matlab Simulink – Arduino Pro Mini – Fuzzy Logic

342 Kişi Okudu

Bulanık mantık kontrol dersi için yaptığım örnek bir BULANIK MANTIK VE UÇUŞ KONTROL PROBLEMİNE UYGULANMASI çalışması. Bu çalışma sayesinde MATLAB Simulink konularında kendimi geliştirdim, bulanık mantık ile kontrol konularında kendimi ciddi bir şekilde geliştirdim.

Kullanılan Materyaller;

MPU-6050

multicopter ve robotik projelerinde sıklıklı kullanılan üzerinde 3 eksenli bir gyro ve 3 eksenli bir açısal ivme ölçer bulunduran 6 eksenli bir IMU sensör kartıdır. Kart üzerinde voltaj regulatörü bulunduğundan 3 ile 5 V arası bir besleme voltajı ile çalıştırılabilir. İvme ölçer ve gyro çıkışlarının her ikisi de ayrı kanallardan I²C çıkışı vermektedir. Her eksende 16 bitlik bir çözünürlükle çıkış verebilmektedir. Pinler arası boşluk standart olarak ayarlandığı için breadboard veya farklı devre kartlarında rahatlıkla kullanılabilir.

Özellikleri
– Çalışma gerilimi: 3-5V
– Gyro ölçüm aralığı: + 250 500 1000 2000 ° / s
– Açısal ivme ölçer ölçüm aralığı: ± 2 ± 4 ± 8 ± 16 g
– İletişim: Standart I²C

MPU – 6050

Arduino Pro Mini

Atmega328 temelli bir mikrodenetleyici kartıdır. Üzerinde 14 adet dijital giriş/çıkış pini (6 tanesi PWM çıkışı olarak kullanılabilir), 8 analog giriş, 16Mhz kristal ve reset tuşu bulundurmaktadır. Breadboard üzerinde kullanmak için ve boyutun önemli olduğu yerlerde kullanılmak üzere yapılmıştır. Pro Mini üzerinde usb soketi ve programlayıcı bulunmamaktadır. Kartı programlamak için USB-Serial Dönüştürücü veya başka usb-seri dönüştürücüler kullanılabilir.

Okumaya devam et MPU6050 Gyroscope – Matlab Simulink – Arduino Pro Mini – Fuzzy Logic

STM32f0 UART Gelen Veri Okuma MİkroC

136 Kişi Okudu

STM32f0 içerisinde seri port üzerinden gelen veriyi okunan değişkeni içerisinde tutar

int okunan;
 void main() {

    UART2_Init(9600); // 9600 hız protokolünde seri port iletişimi sağlanacağını gösteriyor
    Delay_ms(10);    // Ayarlar yapılırken 100ms bekleme
    UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle); // SeriPort iletişimi aktive ediyor. Okuma,yazma gibi özellikleri açar.

   do
   {

   if (UART2_data_ready())
   { // Eğer seri portdan okunan veri varsa.
   
     okunan = Uart2_read(); 

  }

}while(1);


}

Komut Satırında WinRAR kullanmak

299 Kişi Okudu

Bulunduğun Dizin içerisindeki bütün JPG uzantılı resimleri yedekler Yedekledikten sonrada siler.

Öncelikle Komut satırından yedekleme yapmak istediğimiz dosyanın içerisine geliyoruz
orarda bulunan yedeklemek istediğmiz .jpg uzantılı doyaları bulup klasörleriyle birlikte winrar dosyası oluşturup içerisinde tutyor.

rar a -r -df -dr -cl -m5 yedekleme_yaptigin_rar_ismi.rar *.jpg

rar a -r -df -dr -cl -x<İşelem Yapmak istemediğin Dosya Yolu> yedekleme_yaptigin_rar_ismi.rar *.jpg

a 		Dosyaları Arşıvle 
-r		Alt klasörleri içer
-df		Dosyaları Arşivledikten sonra sil
-dr		Silinen Dosyalrı Çöp kutusuna taşı
-cl		Taşınan her bir elemanın isimlerini küçük harfe dönüştür.


Sevdiğim başka komut satırı komutları

bulunduğun dizin içerisinde ki tüm .mp4 uzantılı dosyaları video_klipler klasörüne taşır.

move *.mp4 video_klipler\

Bulunduğun dizin üzerinde yani klasör oluşturur.

mkdir video_klipler\

Bulunduğun dizin üzerindeki tüm .jpg uzantılı dosyaları siler

rm *.jpg 

Kalman Filtresi MatLab Uygulama Kodları

577 Kişi Okudu

Kalman filtresini matlab üzerinde geliştirme daha hızlı bir şekilde anlayıp çözümlemek için yapılmış bir çalışmadır. Matlab üzerinde komutları değiştirip debug yapıp bu başarılı filtrenin nasıl çalıştığı anlamak için yapılmıştır. Kodlar tamamen C diline hızlı bir şekilde uyarlanabilir şekilde tasarlanmıştır.

Yukarıdaki şekilde mavi olan renk kalman filtresine girecek olan veriler, yeşil renkte bulunan grafik ise kalman filtresinden çıkan veriler.

Kalman katsayısı 1-0 arasında değiştirilerek filtrenin özelliği ayarlanabilir.

Yararlandığım kaynaklar;

1-)  İbrahim Çayır OĞLU – Kalman Filtresi ve Programlama 2012

2-)  Why You Should Use The Kalman Filter Tutorial – Pokemon Example

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Hazırlayan: Ahmet Yasin CİVAN
% Tarih     : 03.03.2017
% Yer       : Afyon Karahisar / Uydukent
%       www.ahmetyasincivan.com
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear
clc

hata_kovaryansi = 1;
kalman_katsayisi = 0.1;
onceki_kalman = 0;

olculen_veri =  [0.39 0.50 0.48 0.29 0.25 0.32 0.34 0.48 0.41 0 0.10 0.20 1 1.5 1.7 0.39 0.50 0.48 0.29 0.25 0.32 0.34 ]
uzunluk = length(olculen_veri)

kalman_tahmin_sakla = [1:1:uzunluk]


a=0;
for y = [1:uzunluk]

a=a+1;    
kalman_kazanci = hata_kovaryansi/(hata_kovaryansi+ kalman_katsayisi);
kalman_tahmin  = onceki_kalman + (kalman_kazanci*(olculen_veri(a)-onceki_kalman));
hata_kovaryansi = (1-kalman_kazanci)*hata_kovaryansi;
onceki_kalman = kalman_tahmin;

kalman_tahmin_sakla(a) = kalman_tahmin;

end


plot ( 1:uzunluk ,olculen_veri ,1:uzunluk , kalman_tahmin_sakla )