Arduino Leonardo ve USB Host Shield
Kurulumdaki en ucuz giriş cihazı: shield kartın üzerine nasıl oturuyor, SPI hatları neden ICSP header'ına jumper'lanmak zorunda, sketch nasıl yükleniyor ve karşılığında nelerden vazgeçiyorsunuz.
Kısa cevap
USB Host Shield takılı bir Arduino Leonardo, çalışan en ucuz fare geçişi: shield üzerindeki MAX3421E farenizi okur, ATmega32u4 de onu sunar. Aynı zamanda en zahmetlisi, çünkü çoğu shield Uno pin düzenine göre yapılmış ve SPI hatlarının ICSP header'ına jumper'lanması gerekiyor.
Bu sayfada9
- Neden Uno değil de Leonardo gerekiyor
- Hangi parçalar gerekiyor
- Shield'in SPI hatları nasıl bağlanır
- Sketch nasıl yüklenir
- COM port numarası neden sürekli değişiyor
- Düşük fiyatın karşılığında nelerden vazgeçiyorsunuz
- Bunu kimler kurmalı
- Bozuk olduğuna karar vermeden önce neleri kontrol etmeli
- Arduino hakkında sık sorulanlar
Neden Uno değil de Leonardo gerekiyor
Sebep mikrodenetleyici. Leonardo, USB'si yonganın içinde olan bir ATmega32u4 kullanıyor, dolayısıyla kart kendini bir PC'ye doğrudan klavye, fare veya serial port olarak tanıtabiliyor. Uno bunu yapamaz, çünkü USB soketi tek işi serial olan ayrı bir köprü yongasına bağlı; yani hiçbir zaman fare olduğunu iddia edemez. Bu kurulumun Leonardo şart koşmasının tek sebebi bu tek fark. Elinizdeki Uno'nun, kod nasıl yazılırsa yazılsın çalışmamasının sebebi de aynı. Pro Micro gibi aynı 32u4 yongasını taşıyan kartlar da aynı mantıkla çalışıyor.
Hangi parçalar gerekiyor
Kurulum iki kart ve iki kablo istiyor. Cazibesi bu basitlik ve çalışan bir imlece giden gerçekten en ucuz yol bu.
- Arduino Leonardo
- Yerleşik USB'si olan ATmega32u4. Oyun PC'sine fare arayüzünü sunar ve serial hattı da taşır
- USB Host Shield 2.0
- SPI üzerinden konuşulan bir MAX3421E USB host denetleyicisi taşır. Gerçek farenizin takıldığı yarı bu
- Kütüphane
- Host tarafındaki HID fare işlemesini sağlayan USB Host Shield Library 2.0
- Oyun PC'sine giden kablo
- Leonardo'nun kendi micro-USB soketi. HID tarafı bu
- İkinci PC'ye giden kablo
- Tek kablolu kurulumda yine Leonardo'nun USB soketi; hatları fiziksel olarak ayırmak istiyorsanız bir UART üzerinde ayrı bir USB-serial çevirici
- Havya
- Pratikte isteğe bağlı değil. Bir sonraki bölüme bakın
Uyarı
Shield'in SPI hatları nasıl bağlanır
Bu kuruluma kötü ününü kazandıran adım bu. Çoğu USB Host Shield, SPI'ın 11, 12 ve 13 numaralı dijital pinlerden çıktığı Uno için tasarlandı. Leonardo'da bu pinler SPI değil, çünkü SPI yalnızca 6 pinli ICSP header'ında bulunuyor. Uno düzenli bir shield'i Leonardo'nun üstüne oturtursanız görüntü doğru olur ama kart MAX3421E ile hiç konuşmaz.
- Shield'inizin alt yüzünde dişi bir ICSP konektörü olup olmadığına bakın. Olanlar Leonardo'ya oturuyor ve doğrudan çalışıyor
- Yoksa jumper çekmeniz gerekecek. Shield'in SPI pinlerinin (saat, veri girişi ve veri çıkışı) Uno header'ında nereye denk geldiğini bulun
- Bu üç pini kesin, dışarı bükün ya da başka bir şekilde yalıtın ki Leonardo'nun 11, 12 ve 13 numaralı dijital pinlerine artık değmesinler
- Yalıttığınız shield pinlerinden Leonardo'nun ICSP header'ındaki karşılıklarına üç kablo çekin
- Genelde 10 numaralı pin olan chip select hattını olduğu gibi bağlı bırakın, çünkü chip select sıradan bir dijital pin ve eşleşmesi zaten doğru
- Kata enerji vermeden önce shield'in header'dan 5V ve toprak aldığını doğrulayın
- Enerji verin ve kütüphanenin kart tanılama örneğini çalıştırın. MAX3421E'nin yanıt verip vermediğini bildiriyor ki bu adımın kanıtlaması gereken tek şey de bu
Sketch nasıl yüklenir
Kablolama doğru olduğunda yükleme basit, ama daha karmaşık bir şey yazmadan ya da yüklemeden önce host tarafının çalıştığını kanıtlayın.
- Arduino IDE'yi kurun ve kütüphane yöneticisinden USB Host Shield Library 2.0'ı ekleyin
- Araçlar, sonra Kart, sonra Arduino Leonardo'yu seçin ve kartın göründüğü portu işaretleyin
- Kütüphanenin USB host kart tanılama örneğini yükleyip serial monitörü açın; denetleyiciyi mevcut ve başlatılmış olarak bildirmeli
- Kütüphanenin HID fare örneğini yükleyin, shield'e kablolu bir fare takın ve hareketlerle tıkların serial monitöre yazıldığını doğrulayın
- Ancak bundan sonra hilenizin beklediği geçiş firmware'ini aynı kart ve portla yükleyin
- Sketch'in serial hattı hangi baud hızında açtığını not edin, çünkü aynı değeri hileye de gireceksiniz
- Son yüklemeden sonra yazılımsal sıfırlamaya güvenmek yerine katın enerjisini kesip verin
COM port numarası neden sürekli değişiyor
Leonardo'da serial port, ayrı bir köprü yongası değil kartın USB aygıtının bir parçası. Bu yüzden COM numarası kart sıfırlandığında değişebiliyor ve yükleme sırasında kart bootloader'a girdiğinde bir kez daha değişiyor. Sürekli yeniden yüklediğiniz bir katta bu normal. Nihai firmware'e karar verdikten sonra portu Aygıt Yöneticisi'nde bulun ve Bağlantı Noktası Ayarları ile Gelişmiş altından düşük, tek haneli bir numaraya sabitleyin. Sonra o numarayı hileye girin. Kontrol hattının oyun PC'sinden tamamen ayrı olmasını istiyorsanız hattı bir USB-serial çeviriciyle donanımsal bir UART'tan çekin. Oyun PC'si o zaman yalnızca fare olan bir cihaz görür.
Düşük fiyatın karşılığında nelerden vazgeçiyorsunuz
Bu ödünlerin hiçbiri ölümcül değil, ama her biri daha pahalı bir cihazın sizden istemediği bir şey.
| Alan | Leonardo + shield | Neden önemli |
|---|---|---|
| Montaj | Genelde lehim ya da jumper gerekiyor | Hiç çalışmayan kurulumların en büyük kaynağı ve multimetre olmadan teşhis edilmesi en zor olanı |
| Host bant genişliği | MAX3421E full speed bir host denetleyicisi | Fareler için yeterli. High speed bir cihazı karşıya geçirmek istiyorsanız seçilecek kart bu değil |
| İşlem payı | 16 MHz'de 8 bitlik bir mikrodenetleyici | Raporları aktarmaya yetiyor. Cihazın üzerinde hareketi yumuşatmak veya şekillendirmek için neredeyse hiçbir şey kalmıyor |
| Rapor hızı | Full speed bir device arayüzüyle sınırlı | Full speed USB'nin 1 ms'lik aralık tabanı geçerli. Teensy 4.1'in high speed device portu aynı biçimde sınırlı değil |
| Descriptor kontrolü | Mümkün ama araçlar daha kaba | Oyun PC'sinin gördüğünü değiştirebiliyorsunuz. Burada Teensy'dekinden daha zahmetli, descriptor'ı sizin yerinize klonlayan firmware'den ise çok daha zahmetli |
| Destek | Yalnızca topluluk | Bozulduğunda arayacağınız bir üretici yok. İyi tarafı, her parçasını birileri belgelemiş |
İpucu
Bunu kimler kurmalı
Bu kurulum, zaten havyası olan, süreçten keyif alan ve cihaza bir satın alma değil bir proje gözüyle bakan insanlara göre. Sizi anlatıyorsa iyi bir hafta sonu projesi olur ve giriş katmanını kutu satın alan herkesten daha iyi anlarsınız. Anlatmıyorsa MAKCU alın, çünkü aradaki fiyat farkı için üç akşamı bir shield'e harcamak kötü bir takas. Yarım çalışan bir giriş cihazı hiç olmamasından da kötü, çünkü hile hatası gibi görünen arızalar üretiyor.
Bozuk olduğuna karar vermeden önce neleri kontrol etmeli
- Kart bir Leonardo ya da başka bir ATmega32u4 kartı, Uno değil
- Shield'in SPI hatları konektörle ya da kabloyla ICSP header'ına ulaşıyor
- Kütüphanenin kart tanılaması MAX3421E'yi mevcut olarak bildiriyor
- Sade kablolu bir fare, HID fare örneğinde hareket yazdırıyor
- Leonardo takılıyken oyun PC'si bir fare aygıtı listeliyor
- Hiledeki COM numarası Aygıt Yöneticisi'yle aynı ve tek haneli
- Hiledeki baud hızı sketch'teki değerle aynı
Arduino hakkında sık sorulanlar
Bunun yerine host shield'li bir Uno kullanabilir miyim?
Hayır, çünkü Uno kendini USB fare olarak tanıtamaz: USB soketi ana mikrodenetleyiciye değil bir serial köprüye bağlı. Kendi yongasında USB olan bir kart gerekiyor, örneğin 32u4 kartlarından biri.
Lehim yapmak kesinlikle şart mı?
Shield'inizin alt yüzünde ICSP konektörü varsa değil, çünkü o zaman üstüne oturuyor ve çalışıyor. Ucuz shield'lerin çoğunda yok ve o durumda üç pini yalıtıp üç kablo çekmeniz gerekiyor.
Bu cihaz KMBox'tan daha kolay mı tespit edilir?
Burada hiçbir şey tespit edilemez değil ve gerçek karşılaştırma sanıldığından dar. İki durumda da hareket gerçek USB HID trafiği olarak varıyor. Ucuz bir kendin yap kurulumu, olduğu gibi bırakılırsa sunduğu USB kimliği bakımından daha zayıf olma eğiliminde; ama bu fiyatın sonucu değil, bir yapılandırma tercihi.
Kablosuz fare alıcım shield'de çalışır mı?
Çoğu zaman evet, çünkü host denetleyicisi onu bir USB HID aygıtı olarak görüyor. Her zamanki istisna, fazladan üretici arayüzü sunan alıcılar; kart üzerindeki yapılandırma yazılımı da genel olarak hiçbir geçiş üzerinden çalışmıyor.
COM portu neden sürekli değişiyor?
Çünkü serial arayüz kartın USB aygıtının bir parçası ve kart yüklemeler sırasında sıfırlanıyor. Firmware'iniz nihai hâline geldiğinde Aygıt Yöneticisi'nden düşük ve sabit bir numara verin.
Kaynaklar
Kontrol ettiğimiz kaynak listesinde Leonardo'yu, host shield'i ya da MAX3421E'yi anlatan bir belge yok, bu yüzden jumper ve yükleme adımları bunu bizzat kurmaktan geliyor.
Sırada ne var
Hâlâ takıldınız mı? Discord'da destek talebi açın
Tüm rehberler