18 Mart 2021 Perşembe

Hantek 6022BL USB Osiloskop: OpenHantek+PulseView vs. Hantek


Merhaba. Bir buçuk yıl kadar önce Hantek 6022BL USB osiloskop satın aldım. Daha önce Windows'ta Hantek'in kendi yazılımını kullanıyordum ama çok memnun değildim. Önceki yazıdan anlaşılacağı gibi yakın zamanda bilgisayarımı tekrar kurdum. Bu fırsatla Hantek için alternatif programlara gözatma şansım oldu. Osiloskop için OpenHantek'i ve logic analyzer için PulseView'ı inceledim. Bu yazıda cihaz sürücülerinin nasıl kurulacağını anlatıp yazılımları karşılaştıracağım, ayrıca sürücü kurulumu için kendime not gibi olacak.

Hantek 6022BL, iki kanal USB osiloskopla 16 kanal logic analyzer'ı birleştiriyor. 20 MHz bant genişliği ve 48MS/s örnekleme oranıyla ortalama bir kullanıcının ihtiyacını karşılıyor. Özelliklerinden anlaşılacağı gibi, profesyonel bir tezgah üstü (benchtop) model değil. Benim için iki yanı çekiciydi, küçük ve ucuz olması.

USB osiloskoplar çıktığından beri bunların işe yararlığı konusunda sürekli bir tartışma var, öyle ki bir çok forumda USB'ciler ve benchtop'çılar, Android'ciler ve iOS'cular gibi ikiye bölünmüş durumda. Açık konuşmam gerekirse Hantek'ten çok daha kaliteli USB cihazlar var. Picotech firması açık ara kaliteli cihazlar üretiyor ancak Hantek'e yakın özellikli 2205A MSO modeli Hantek'in 4 katı fiyata satılıyor. Bu arada, amazon yorumlarına göre Hantek'lerde USB izolasyonu yok. Bu, eğer probdan kazara yüksek voltaj gelirse anakarta kadar iletilir demek. Picotech'lerde ve bazı Owon modellerindeyse girişler izole. Benim görüşüm, USB modeller fiyatlarıyla benchtop modellere giriş seviyesinde ciddi rakipler. Ama lab seviyesinde USB osiloskoplar bir elin parmakları kadar.

Bu cihazın Fedora'da ayarlanması gerçekten çocuk oyuncağı. Bu yüzden konuya Fedora'yla gireceğim. Osiloskobun arkasında, USB bağlantılarının olduğu yerde bir düğme var. İlk olarak bu düğmenin basılı, yani H konumunda olması gerek. Düğme H konumundayken osiloskobun USB ID'si 04B4:602A oluyor.


Yukarıda görülen USBXI portu, sanırım Hantek'e özgü modifiye bir USB portu ve birden fazla cihazı kaskadlamaya yarıyor. Yani iki cihaz alıp 4 kanal osiloskop veya 32 kanal logic analyzer olarak kullanmak mümkün.

Cihazla birlikte görseldeki Y şekilli USB kablo geliyor. Kablonun iki girişinin olması, bilgisayarda tek porttan çekilen akımın yetmemesi durumunda, ikinci porttan da akım çekilebilmesi için. Ben iki uçlu standart B-tipi kabloyla da bağladım, sorun çıkmadı. Kırmızı uç yalnız güç için, veri bağlantısı yok. Dolayısıyla bu USB adaptöre de bağlanabilir.

Hantek'in kendi yazılımının linux sürümü yok. Linux için OpenHantek iyi bir alternatif çünkü Fedora'nın standart reposunda rpm'i var. Yani kurmak için sudo dnf install openhantek komutu yeterli. Aynı şekilde Ubuntu reposunda da deb dosyası var. Bu arada OpenHantek açık kaynak kodluysa da derlemeyi denemedim.

Osiloskop bilgisayara bağlıysa OpenHantek çalıştırıldığında hemen açılıyor. Aksi halde kullanıcıdan sinyalleri okuyabileceği bir aygıt seçmesi için bir pencere geliyor. Aşağıda osiloskop arayüzünün ekran görüntüsünü ekledim.


Standart bir osiloskoptan beklenecek birçok özellik var. Ekran görüntüsü için kalibrasyon çıkışını 1kHz'ye ayarlayıp birinci kanala, sinyal üretecini ikinci kanala bağladım, trigger'ı birinci kanal olarak seçtim. Marker'ları kare dalgaya göre ayarladığımda, ekranın üst tarafında frekansı 1 kHz/div olarak okunuyor. En alttaki koyu mavi çizgi sinüs sinyalinin Fourier (spektrum) analizi. 6 ve 8 kHz'deki minik harmonikler görülebilir. Aşağıda basit bir RC devresiyle elde ettiğim Lissajous eğrisinin ekran görüntüsü var:


Soldaki menüden sinyal histogramı eklenebiliyor ve zoom düğmesiyle oradaki iki kareyi ayrı bir bölmede yakınlaştırılıyor. Matematik modunda toplama, çıkarma ve çarpma işlemleri var ve son olarak sinyal değerleri .csv olarak alınabiliyor.

OpenHantek'in logic analyzer özelliği bulunmadığından logic analyzer için sigrok'un PulseView (PV) yazılımını kurdum. Aslında PV analog sinyalleri de gösterebiliyor ama bu konuda OpenHantek kadar yetenekli değil. PV'nin kurulumu da görece kolay. Downloads sayfasında Fedora için rpm paketleri var. PV'yi derlemeyi de denemiştim ama beklediğimden uzun sürdüğü için vazgeçtim. Yüklemeye başlamadan şu paketlerin yüklü olması gerek: libzip, qt5-qtbase, qt5-qtbase-gui, boost-serialization, qt5-qtsvg. Fedora 33'te bunlardan yalnız boost-serialization yüklü değildi. Bunlar yüklendikten sonra Downloads'taki paketlerin sayfadaki sırayla yüklenmesi gerek, ancak bazı paketler birden fazla rpm içeriyor. Aşağıdaki komut bloğu ile hepsi yüklenebilir:

sudo dnf install libzip qt5-qtbase  qt5-qtbase-gui  boost-serialization  qt5-qtsvg

sudo rpm -ivh  https://kojipkgs.fedoraproject.org//packages/libserialport/0.1.1/9.fc33/x86_64/libserialport-0.1.1-9.fc33.x86_64.rpm
sudo rpm -ivh  https://kojipkgs.fedoraproject.org//packages/libsigrok/0.5.2/4.fc33/x86_64/libsigrok-0.5.2-4.fc33.x86_64.rpm
sudo rpm -ivh  https://kojipkgs.fedoraproject.org//packages/libsigrokdecode/0.5.3/6.fc33/x86_64/libsigrokdecode-0.5.3-6.fc33.x86_64.rpm
sudo rpm -ivh  https://kojipkgs.fedoraproject.org//packages/sigrok-cli/0.7.1/5.fc33/x86_64/sigrok-cli-0.7.1-5.fc33.x86_64.rpm
sudo rpm -ivh  https://kojipkgs.fedoraproject.org//packages/libsigrok/0.5.2/4.fc33/x86_64/libsigrok-cxx-0.5.2-4.fc33.x86_64.rpm
sudo rpm -ivh  https://kojipkgs.fedoraproject.org//packages/sigrok-firmware/0.1.0/16.20151211gitb2daf81.fc33/noarch/sigrok-firmware-filesystem-0.1.0-16.20151211gitb2daf81.fc33.noarch.rpm
sudo rpm -ivh  https://kojipkgs.fedoraproject.org//packages/sigrok-firmware-fx2lafw/0.1.7/3.fc33/noarch/sigrok-firmware-fx2lafw-0.1.7-3.fc33.noarch.rpm
sudo rpm -ivh  https://kojipkgs.fedoraproject.org//packages/pulseview/0.4.2/4.fc33/x86_64/pulseview-0.4.2-4.fc33.x86_64.rpm

PV için cihazın USB bağlantısını söküp H/P düğmesini P (basılı olmayan) konumuna getirmek gerek (Cihaz çalışırken düğmeye basılırsa ID değişmiyor). P konumunda cihazın VID/PID'si 0925:3881 oluyor ve Saleae Logic çipiyle (veya uyumlusuyla) çalışıyor. OpenHantek gibi, PV de cihaz bağlıysa otomatik olarak tanıyıp uygun sürücüyü seçiyor. Eğer "<No Device>" yazıyorsa, bunun üstüne tıklayıp "fx2lafw" sürücüsünü seçmek gerekiyor. Listede hantek-6xxx sürücüsü olsa da cihazın üstündeki düğme P konumunda olduğundan hantek olarak çalışmıyor. Doğru sürücü seçildikten sonra "Scan for devices..."a basınca en altta "Saleae Logic with 8 channels" bulunyor. Bu noktada PV küçük bir hayal kırıklığı yaratıyor çünkü sürücü yalnız 8 kanalı destekliyor (Kaynak: Hantek 6022BL) umarım bu ileride geliştirilir. PV'nin en güzel özelliğiyse içinde bir protokol çözücü olması.

Logic analyzer ile gösterecek hazır birşeyim yoktu. Internette Z. X. Lee tarafından yazılmış bir Arduino projesi buldum. O da kendi blogunda Saleae'nin ürününü test etmiş. Projenin ileride silinmesi olasılığına karşı .ino dosyası buradan da indirilebilir. Dosyayı Arduino'ya yükleyip bağlantıları yaptıktan sonra (Arduino Pin 5..12) örnekleme parametrelerini 24 MHz ve 100M örneğe ayarlayıp örneklemeyi başlatıyorum (sol üstte "Run") ve aynı zamanda en sağdaki yeşil-sarı butona basıp paralel protokol çözücü ekliyorum.


Cihaz seçiminin hemen solundaki lacivert butonla (marker) sinyal geçişlerinin araları ve sinyal frekansı ölçülebiliyor. PV'nin bundan başka fazla bir özelliği yok.


Şimdi bunları Windows'ta yapacağım. Öncelikle Windows'ta iki seçeneğim var: Biri OpenHantek+PV'yi Windows'ta da kullanırım ama böyle olursa logic analyzer'ın 16 kanalını hiçbir zaman kullanamam. İkincisi Hantek'in kendi yazılımını kullanırım. Bu arada, bu yazılımın özel bir adı yok, kısayolunun adı "Hantek6022BL". Yazının geri kalanında karışıklık olmaması için buna HKY (Hantek'in kendi yazılımı) diyeceğim. Hiç yaratıcı değil ama yaratıcılığı Hantek'in yapması gerekiyordu. Ayrıca ilginç bir durum da, OpenHantek'le HKY farklı USB sürücülerini kullanıyorlar. Yani ikisini de kurup kullanma şansım yok. Ben Windows'ta yine HKY'yle devam etmeye karar verdim çünkü diğerlerini istediğim zaman diğer makinamda kullanabilirim.

Cihazı HKY ile kullanırken düğmenin H konumunda olması gerek. Bunu kontrol edip bilgisayarıma bağladım ve beraberinde gelen CD'den Windows sürücülerini yükledim. Burada ben bir sorun yaşamadım ama eğer sürücüler imzalanmamış olduğu için Win10'da yüklenemezse, sorunun geçici (ve sevimsiz) bir çözümü var. Bu arada Hantek'in sayfasında "HT6022BL Software" dosyası "HT6022BL Driver"dan daha yeni sürücüler içeriyor ve Şubat '21 itibariyle, ürün CD'sindeki içerik "HT6022BL Software" ile aynı. Sürücüleri kurduktan sonra CD'deki kurulumu çalıştırıp HKY'yi başlattım. Açık konuşmak gerekirse, arayüz OpenHantek'le karşılaştırıldığında çok çakma olduğu izlenimini uyandırıyor.

Osiloskop için 6022BE'ye tıkladım. Kişisel fikrim arayüzün hiç kullanışlı olmadığı.


İlk göze çarpan, sağ panelin olması gerekenden sade olması. Sıkça kullanılan "marker"lar için üst alandaki düğmelere tıklamak gerekiyor. Kullanışlı bulduğum tek özellik yukarıdaki "Auto" düğmesinin kanallar için uygun gerilimi, trigger ve zaman aralıklarını otomatik ayarlaması. Math modunda fazladan A/B işlemi var. Fourier analizini ise anlayamadım, 2 kHz sinyal için ekranın kenarında yalnız bir tepe çıkardı ve OpenHantek gibi harmonikleri yakalayamadı. Ayrıca zoom veya histogram da bulunmyor. Ctrl+M kısayoluyla açılan "Measure" panelindeki (aşağıdaki görsel) sinyal bilgileri güzel ama yine arayüz eksikleri var. Örn. bilgileri iki kanaldan birden alırken alt alta değil de yan yana sıralasaydı hem pencereye daha çok veri sığar hem de karşılaştırmak daha kolay olurdu.


Son olarak arayüzde bulduğum bir hatayı da yukarıda göstermeye çalıştım. Sağ panel küçültüldükten sonra kaydırmaksızın büyütülünce kontroller kayboluyor.

Osiloskop arayüzünü kapatıp, logic analyzer için 6022BL ikonuna tıkladım ve program açılır açılmaz örneklemeyi başlattı. Oysa ne örnekleme hızı ne de sayısını ayarlamamıştım! Görüldüğü gibi HKY kullanışlılık konusunda oldukça başarısız.


Sağ panelde, örnekleme oranını 100K/s yaptım. Ancak örnekleme sayısı değiştirilmiyor. Bu maalesef programın eksikliği. Bunu cihazı aldıktan çok sonra farkettim. Kullanım kılavuzunun 66. sayfasında "Buffer Size: Max. 1M Samples" diyor. PV, ara belleği sürekli okurken, HKY'yi yazanlar anladığım kadarıyla ara bellek dolunca örneklemeyi durdurmayı tercih etmişler. Örnekleme üst sağdaki "Play" benzeri düğmeyle başlatılıyor. Her kanalın renginin aynı olması ve bunun değiştirilememesi de okunaklılığı düşürüyor.

Peki HKY'nin bu kadar eksiği varsa neden kullanalım? Yukarıda açıkladığım gibi linux'ta HKY'yi istesem de kullanamıyorum ama yalnız Windows bilgisayarım olsaydı yine OpenHantek+PV kullanıyor olurdum. İkisini daha önce Windows'ta denedim ve şu an değiştirme konusunda tek çekincem sürücüler. Daha önce dediğim gibi OpenHantek ve PV, HKY'den farklı olarak WinUSB sürücüsünü kullanıyor. OpenHantek'e geçmek için Hantek'in sürücüsünü silmeye gerek yok. zadig adlı program eski sürücüleri etkisizleştirip WinUSB'yi yüklüyor. PV'yi Windows'ta kurunca zadig de kuruluyor. Zadig'in kullanımı OpenHantek'in kurulum dökümanında "Windows USB Driver Install" başlığı altında anlatılıyor.

Kısaca anlatırsam, zadig'i başlatıp yukarıdaki listede Hantek6022BL'i seçtim. Listede bu yoksa, Options altında "List All Devices"ı aktifleştirmek gerekiyor. Soldaki görseli WinUSB yüklü bir makinadan aldım, normalde "Driver" kısmında WinUSB yazmayacak. "Install Driver"a bastıktan sonra WinUSB yükleniyor ama bu işlem iki defa tekrarlanmalı. Bunu yapınca osiloskop, aygıt yöneticisinde "Universal Serial Bus devices" altında listelendi. Zadig veya PV, MSVCR100.DLL bulunamadı hatası verirse VC++ 2010 kütüphanesinin yüklenmesi gerekiyor.

 
Hantek Sürücüsü

 
 
WinUSB sürücüsü

 

Bundan sonra OpenHantek Windows'ta sorunsuz çalışıyor. Aslında bu işlem çok karışık değil, tersi daha karışık. Daha önce zadig'le WinUSB sürücülerini kaldırdığımda HKY'yi tekrar çalıştıramadım. Sonrasında Hantek sürücülerini de silip tekrar yüklemem gerekti. Hantek sürücüsü yüklüyse OpenHantek'i çalıştırınca "UploadFirmware: Couldn't open device..." şeklinde bir hata mesajı alınıyor. Son olarak, iki programı aynı makinada çalıştırmanın tek yolu Windows'ta bir linux sanal makina kurmak. Tam tersi de mümkün ama disksiz bir linux (Fedora veya Mint) sanal makinada OpenHantek tek komutla kurulabiliyor.

Peki ya diğer alternatifler? Önceden diğer alternatifler konusunda bilgim yoktu. Bu yazıyı hazırlarken Hantek osiloskop için altı farklı yazılım alternatifiyle ilgili yazıya rastladım. Bu karşılaştırmada OpenHantek öne çıkmış. Bunlardan yalnız Open6022'yi duymuştum ama son indirdiğimde dağınık C++ kodlarından oluşan ve içinde nasıl derleneceğinin bile anlatılmadığı bir zip dosyadan oluşuyordu. Anlaşılan zaman içerisinde geliştirilmiş. Örn. Open6022'de "Measure" bilgileri yukarıda yazdığım gibi iki kanal için yanyana listeleniyor. Bu nedenle bunlar da denemeye değer olabilir.