Arduino'nuzu ISP'ye Nasıl Çevirirsiniz — ATmel ATtiny85'i Programlama
Yayınlanan: 2017-06-13Kısa Bayt: Bazen, bir projede önceden oluşturulmuş bir Arduino kartı kullanmak aşırıya kaçabilir veya çok büyük olabilir. ATtiny85, projenizin kapladığı alanı azaltmaya yardımcı olabilecek, ucuz ama şaşırtıcı derecede yetenekli bir mikro denetleyicidir. Bir ATtiny'yi projenizde kullanmak için nasıl programlayacağınız aşağıda açıklanmıştır.
Arduino platformu, öğrenmek için harika bir araçtır, ancak bazen desteklenen Arduino kartları, ihtiyaç duyduğunuz yere tam olarak uymayabilir. Yaklaşık 65mmx50mm boyutlarındaki Arduino Uno (en yaygın model) ile bazı projelerde nasıl en büyük bileşen olabileceğini görmek kolaydır. Nano gibi çok daha küçük olan başka tahtalar da var (Nano taklitim 43 mm'ye 17 mm, 4,5 kat daha küçük) , ancak o zaman bile, bazen bu çok büyük. Diyelim ki, giyilebilir bir cihaz yapmak istiyorsanız, belki de köpeğinizin geceleri takması için yanıp sönen bir LED'dir. Bir pili ve benzerlerini hesaba kattığınızda, oldukça büyüyebilir.Sorunumuzun kahramanı olan ATtiny çizgisini işaretleyin. ATtiny'nin adaşı açıktır. Yaklaşık 9 mm kare olan bir DIP-8 paketinde (çift satır içi paket – 8 pin) bulabilirsiniz. ATtiny, adaşı için gerçek doğada ufacıktır, ancak yalnızca fiziksel boyutundan daha fazla yönden. Bu makale için kullanılan ATtiny85, yalnızca 8KB program flash depolama alanına, 512 bayt RAM'e ve 512 bayt EEPROM'a (program depolama dışında kalıcı depolama) sahiptir .
Şimdi sorun bu küçük adamlardan birini programlamak. Bunun için çevrimiçi olarak birkaç öğretici var, ancak bunları biraz eksik veya talimatlarda eksik buldum.
ISP – Sistem Programlayıcısında
Bir Sistem Programcısı (ISP), göründüğü kadar süslü değildir. Tipik olarak, bir ATmel yongası için bir ISP, altı pimli konektör USB kablosuna sahip bir cihazdan oluşur. ISP pinlerini Arduinos üzerinde tespit etmek gerçekten kolaydır, tipik olarak USB konektörünün karşısında bulunurlar. ATmel çiplerinin ISP pinleri aracılığıyla programlanması amaçlanmıştır, ancak Arduino platformu, ISP cihazına olan ihtiyacı ortadan kaldırmak için kartta bir USB'den seriye adaptör yerleştirmiştir. Buna rağmen, çoğu modelde olmasa da ISP pinlerini birçok modelde kullanılabilir durumda bıraktılar.
ATtiny yongalarımız, Arduino'ların sahip olduğu USB'den seri aygıta sahip olmadığı için, bir ISP kullanılarak programlanmaları gerekir. ATmel ISP cihazları, en azından bir Arduino'nun maliyetiyle karşılaştırıldığında oldukça pahalıdır, bu yüzden bir Arduino'yu bir ISP gibi davranacak şekilde programlayarak kendimize paradan ve nakliye süresinden tasarruf edeceğiz.
Bunu Arduino IDE'yi açıp örnek çizimlerden ArduinoISP'yi seçerek yapıyoruz.
Çizim dosyasını açtıktan sonra, kodun beklenen davranışı hakkında bazı bilgiler göreceksiniz. Bu dosyada, ISP'mizin Arduino IDE ile düzgün bir şekilde iletişim kurması için hızlı bir değişiklik yapmalıyız.
220 satırında setup() fonksiyonunu buluyoruz.
geçersiz kurulum() { SERİ.başla(BAUDRATE); pinMode(LED_PMODE, ÇIKIŞ); darbe(LED_PMODE, 2); pinMode(LED_ERR, ÇIKIŞ); darbe(LED_ERR, 2); pinMode(LED_HB, ÇIKIŞ); darbe(LED_HB, 2); }
BAUDRATE'i 19200 olarak değiştirmemiz gerekiyor, böylece satır okur
SERİ.başla(19200);
Okuduklarıma göre, Arduino IDE, bu ArduinoISP bellenimi ile uyumluluğu bozan bir güncelleme aldı. Arduino ve IDE, farklı baud hızlarında iletişim kurmaya çalışıyordu ve bu, bellenimin düzgün şekilde yanıp sönmesine rağmen Arduino'yu bir ISP olarak kullanamadı.
ATtiny Kitaplıkları
Arduino IDE, çeşitli farklı mikrodenetleyicileri ve kartları destekler, ancak ne yazık ki ATtiny serisi dahil değildir. Bu, onlar için kendimiz için destek almamız gerektiği anlamına gelir.
Benim için işe yarayan yol, Arduino IDE tercihleri altındaki Ek Kurullar Yöneticisi URL'lerine aşağıdaki URL'yi eklemekti.
IDE'yi yeniden başlatın, Araçlar -> Board -> Boards Manager altında Boards Manager'ı açın ve ardından ATtiny paketini arayın ve kurun.
Bu yapıldıktan sonra, ATtiny'nizi programlamak için devrenizi oluşturmaya başlayabilirsiniz.
ISP'nizi Oluşturma
ISS'nizi oluşturmanın birkaç yolu vardır. Lehimsiz breadboard'da yapabilirsin, böylece parçaları yeniden kullanabilirsin ya da benim yaptığım gibi hepsini lehimleyerek yarı kalıcı bir çözüm yapabilirsin. Hepsini dikkatlice lehimliyorsanız, isterseniz Arduino'yu başka bir proje için yeniden kullanabilirsiniz.
ArduinoISP taslağının ilk otuz küsur satırına baktığımızda, Arduino'yu bir ISP olarak çalışacak şekilde ayarlamak hakkında aşağıdaki bilgileri bulabiliriz.
10 numaralı pim | Pin'i sıfırlamak için Hedef Mikrodenetleyici |
11 numaralı iğne | SPI Ana Çıkışı köle içinde |
12 numaralı pim | SPI Master In köle dışarı |
13 numaralı pim | SPI Seri Saat |
Opsiyonel olarak LED'leri aşağıdaki pinlere durum belirtmek için bağlayabilirsiniz.
- Pin 9 – Kalp Atışı – ISP'nin çalıştığını gösterir
- Pin 8 – Hata – Bir Hata Oluştuğunu Gösterir
- Pin 7 – Programlama – Hedefle Aktif İletişimi Gösterir
Bu LED'lerin direnç gerektireceğini unutmayın.
Burada ATtiny85'in pin çıkışını ve Arduino'ya geri yapmamız gereken uygun bağlantıları görebiliriz. Oldukça kaba bir çizim, ancak ATtiny85'teki pimleri kolaylık olması için etiketledim. Ancak not edilmelidir ki pinler şemada olduğu gibi 1,2,3..8'de adreslenmemiştir, diyagonal metinde etiketlendiği gibi Arduino IDE içinde belirtilmiştir.
Bu, farklı bağlantıların çok daha ayrıntılı bir diyagramıdır. Tüm LED'ler isteğe bağlıdır, ancak sorun giderme için kullanışlıdırlar, ArduinoISP çizim dosyasında önerilen üç durum LED'ine ek olarak, 5V'tan toprağa (elbette bir dirençle) bağlanan bir tane daha vardır ve daha sonra ATtiny'yi yanıp sönme testi ile test etmek için ikinci pime (IDE'deki Pim 3) bağlı bir tane var. Sıfırlama pimini toprağa bağlayan kapasitöre dikkat edin, bu Arduino'nun bir ISP olarak çalışması için gereklidir.
Bu, ATtiny mikrodenetleyicileri için oluşturduğum Arduino ISP. ATtiny'yi programlanırken tutmak için DIP-8 soketini kullandığımı görebilirsiniz. Ayrıca, ATmega328P gibi ATmega yongalarını programlamak için bir DIP-28 soketi takmak için sağda yeterince yer bıraktım. Yükseltme çok basit olacak, sadece Atmega yongaları için gerekli pinlerin ATtiny'de yaptığımız gibi bağlanmasını gerektirecek.
Arduino ISP'nizi kurduktan sonra, kesinlikle denemek isteyeceksiniz. Bağlı Arduino'nuz aracılığıyla programlamak için uygun ayarları seçtiğinizden ve Arduino'nun kendisini programlamadığınızdan emin olun.
Kart için ATiny 25/45/85 seçeneğini seçip işlemci seçiminde ATtiny85'i seçiyoruz ve son olarak programcılardan ISP olarak Arduino'yu seçiyoruz. Bu, IDE'ye, onunla nasıl iletişim kuracağı da dahil olmak üzere, hedef sistem hakkında bilmesi gereken her şeyi söyler. Şimdi, Blink taslağını getirmeye hazırız (veya o kadar sert iseniz kendiniz yazın) ve deneyin, sadece LED'i yanıp sönmek için kullanılan pini, kullandığınız pin ile değiştirdiğinizden emin olun. devre, sağladığım şemayı kullanıyorsanız bu pin 3'tür. Son olarak Sketch -> Programmer Kullanarak Upload diyerek taslağı derleyip yüklüyoruz.
geçersiz kurulum() { pinMode(3, ÇIKIŞ); } boşluk döngüsü () { digitalWrite(3, YÜKSEK); gecikme(1000); digitalWrite(3, DÜŞÜK); gecikme(1000); }
Toplamda, birlikte lehimlenen Arduino ISP'm muhtemelen üç veya dört dolara mal oluyor. ATtiny çipleri de son derece ucuz olabilir, genellikle parça başına sadece bir dolar kadar. ATtiny yongalarını projelere yerleştirmeyi planlıyorsanız, bazı kodları güncellemek veya yongayı yeniden kullanmak isteyebileceğiniz için DIP-8 soketlerini satın almanızı öneririm. Bir IC'yi yerinde lehimlemek mümkündür, ancak kodu birkaç kez güncellerseniz olduğu gibi, özellikle tekrarlanan maruz kalma ile IC'ye kolayca zarar verebilirsiniz.
Başka kimse böyle bir şey yaptı mı? Daha fazla Arduino ürünü görmek ister misiniz? Aşağıdaki yorumlarda bize bildirin.
Ayrıca Okuyun: Raspberry Pi veya Arduino - Yeni Başlayanlar İçin Hangi Kart En İyisidir?