İçindekiler:

Bağımsız Arduino 3.3V W/Harici 8 MHz Saat Arduino Uno'dan ICSP / ISP Aracılığıyla Programlanıyor (Seri İzlemeli!): 4 Adım
Bağımsız Arduino 3.3V W/Harici 8 MHz Saat Arduino Uno'dan ICSP / ISP Aracılığıyla Programlanıyor (Seri İzlemeli!): 4 Adım
Anonim
Bağımsız Arduino 3.3V W/ Harici 8 MHz Saat Arduino Uno'dan ICSP / ISP Aracılığıyla Programlanıyor (Seri İzlemeli!)
Bağımsız Arduino 3.3V W/ Harici 8 MHz Saat Arduino Uno'dan ICSP / ISP Aracılığıyla Programlanıyor (Seri İzlemeli!)
Bağımsız Arduino 3.3V W/ Harici 8 MHz Saat Arduino Uno'dan ICSP / ISP Aracılığıyla Programlanıyor (Seri İzlemeli!)
Bağımsız Arduino 3.3V W/ Harici 8 MHz Saat Arduino Uno'dan ICSP / ISP Aracılığıyla Programlanıyor (Seri İzlemeli!)

Hedefler:

  • 8 MHz harici saatten 3.3V üzerinde çalışan bağımsız bir Arduino oluşturmak için.
  • Bir Arduino Uno'dan (5V'da çalışan) ISP (ICSP olarak da bilinir, devre içi seri programlama) aracılığıyla programlamak için

    Önyükleyici dosyasını düzenlemek ve önyükleyiciyi yakmak için (ISS aracılığıyla)

  • FTDI kablosu ile bağımsız Arduino'dan seri bilgileri okuyabilmek

    FTDI kablosu olmadan bağımsız Arduino'dan seri bilgileri okuyabilmek

Önsöz:

Bağımsız projemi oluşturmaya çalışıyordum ancak Bağımsız Arduino'yu çalıştırma, programlama ve izleme hakkında kapsamlı bir kılavuz görmedim - özellikle bir 8Mhz harici saat ve 3.3V çalıştıran ve bir Arduino UNO tarafından programlanan. Bir dizi ayrı kılavuzu bir araya getirdim ve kredinin vadesi geldiğinde kredi vermek için bilgileri nereden aldığıma atıfta bulunmaya çalıştım. Bu kılavuz, kendi projemi oluştururken bir seferde çözümler aramanın ve bir seferde bunun parçalarını bulmanın bir sonucu. şirketler, ancak atıfta bulunduğum belirli öğeleri dahil etmekle alakalı olduğu için.

Başlamadan önce sık sorulan sorular:

Neden ISP ile programlamanız ve FTDI ile izlemeniz gerekiyor? Neden FTDI ile programlamıyorsunuz?

Yeni bir önyükleyici yazarak sigorta ayarlarını değiştirmemiz gerekecek ve bunu seri iletişim yoluyla yapamazsınız. Bootloader'ı ISP aracılığıyla yakmanız gerekir. Bu, önceden yüklenmiş ATMEGA328 yongası olmayanlar için de yararlıdır.

Neden bunun gibi seri izlemeli bir ISP kablosu kullanmıyorum?

Belki de benim gibi sizde bir tane yok ve birinin gönderilmesini beklemek yerine elinizdekileri kullanmayı seviyorsunuz! Bir FTDI kablosuna sahibim (sonuçta buna ihtiyacınız bile olmadığını göreceksiniz: sadece hayatınızı kolaylaştırıyor).

Uno'dan bağımsız Arduino'ya bir mantık seviyesi değiştiriciye ihtiyacım yok mu?

Evet, yapıyorsun, ama sana nasıl kendin yapacağını göstereceğim. ISP kablosu gibi, bende de yok.

Harici güçten kapatmak istiyorum. Bunu nasıl yaparım?

Pil gücüyle bağımsız bir Arduino'nun nasıl çalıştırılacağını gösteren birçok kılavuz var. Nasıl yaptığımı yazıp buraya linkini vereceğim [daha sonra ekleyeceğim].

REHBER

Adım 1: Bağımsız Arduino'yu İnşa Etme

Bağımsız Arduino'yu İnşa Etmek
Bağımsız Arduino'yu İnşa Etmek
Bağımsız Arduino'yu İnşa Etmek
Bağımsız Arduino'yu İnşa Etmek

1) Bu bağlantıdan bağımsız Arduino'yu oluşturun. Kılavuzun ihtiyacınız olan tek kısmı "ATMEGA8/168/328 Temel Bilgiler"dir.

  • bağımsız Arduino'ya Arduino Uno'nun 3.3V'sinden güç sağlayabilirsiniz. ("Güç kaynağı için devre ekleme" başlıklı öğreticinin ilk bölümünü atlayabilirsiniz.
  • 16 MHz saati 8 Mhz saat ile değiştirin.
  • VCC ve Gnd (her iki taraf) VRef ve Gnd arasına 0,1 uF kapak ekleyin.

    • Bunlar resimde yok ama projelerimde var!
    • Fotoğrafta 16 MHz'lik bir osilatör olduğunu biliyorum. Fotoğrafı rehberde yaptığım her şeyi anlamadan çektim!

ATMEGA328p pin çıkışı görüntü kaynağı burada.

Genel Sorun Giderme İpuçları

  • VCC'den ATMEGA'nın pin 1'ine 10k'lık bir direnç aracılığıyla yüksek sıfırlamayı ayarladığınızdan emin olun. Pim topraklanmışsa veya yüzüyorsa çalışmayacaktır.
  • Kabloları ve osilatörü doğru taktığınızı iki kez kontrol edin.
  • 8 MHz osilatör için 22pF kapasitörler kullandığınızdan emin olun. Başka türlü çalışmayacak.
  • Cihaza güç verildiğinden emin olun.

Adım 2: ISP Kablolaması

ISP Kablolaması
ISP Kablolaması
ISP Kablolaması
ISP Kablolaması

2) ISP bölümünü oluşturun

Bu kılavuzu burada küçük ama çok önemli bir adımla izleyeceksiniz.

Kılavuzu izleyememenizin nedeni çok önemli bir kısmı kaçırmanızdır: 3.3V'luk bir cihazı doğrudan 5V bağlantılarından programlayamazsınız. (En azından yapamadım: Bunu yapana kadar işe yaramazdı). 5V sinyallerini UNO'dan 3.3V bağımsız Arduino'ya kaydıran bir mantık seviyesi kaydırıcısı eklemeniz gerekir.

Bir mantık seviye değiştirici kartınız yoksa, direnç kullanarak bir tane yapabilirsiniz. Tüm bir mantık seviyesi kaydırıcısı gerçekten (vites küçülttüğünüz sürece) bir voltaj bölücüdür. Aynı dirençten 6'sına ihtiyacınız olacak, çok yüksek veya çok düşük bir şey yok. 220 ohm direnç kullandım ama eminim 10k direnç bile işe yarayacaktır.

SCK (dijital pim 13) ve MOSI (dijital pim 11) için gerilimi üçte bir oranında kesmek için bir gerilim bölücü kullanın. Özünde, bir Uno SCK ve MOSI, ardından bir direnç (220 ohm), ardından bağımsız Arduino'ya bağlı SCK ve MOSI ve toprağa 2 direnç (toplam 440 ohm) olacak.

Bu nedenle, bu bölümün başında bağlantılı kılavuzu okuyun, ancak SCK ve MOSI arasına voltaj bölücüler ekleyin. Unutmayın, SCK, MISO, MOSI ve RESET, Uno'daki 13, 12, 11 ve 10 numaralı pinlerdir, ancak 19 numaralı pinlerdir., 18, 17 ve 1 bağımsız Arduino'da!

Genel Sorun Giderme İpuçları

  • KABLO KONTROLÜ

    • Program yazmaya çalışırken tüm 0'ların cihaz imzasını alıyorsanız, kablo bağlantınız neredeyse kesin olarak kapalıdır veya bağımsız Arduino güç almıyordur.
    • Ayrıca, Uno'da 10'dan bağımsız Arduino'da 1'e sıfırlama kablosuna sahip olduğunuzdan emin olun.
  • GERİLİM BÖLÜCÜLERİNİ KONTROL EDİN

    Hem SCK hem de MOSI için dirençler için 1:2 (yüksek taraf: düşük taraf) oranlı voltaj bölücülere sahip olduğunuzdan emin olun. Örneğin. +5v tarafında 220 direnç ve ardından ortada bağımsız Arduino'ya doğru sinyal ile toprağa doğru 2 220 ohm direnç (toplam 440 ohm)

3. Adım: Önyükleyici Dosyasını Düzenleyin, Önyükleyiciyi Yazın ve Çiziminizi Yükleyin

Önyükleyici Dosyasını Düzenleyin, Önyükleyiciyi Yazdırın ve Çiziminizi Yükleyin
Önyükleyici Dosyasını Düzenleyin, Önyükleyiciyi Yazdırın ve Çiziminizi Yükleyin
Önyükleyici Dosyasını Düzenleyin, Önyükleyiciyi Yazdırın ve Çiziminizi Yükleyin
Önyükleyici Dosyasını Düzenleyin, Önyükleyiciyi Yazdırın ve Çiziminizi Yükleyin

3) Önyükleyici (boards.txt) dosyasını düzenleyin ve önyükleyiciyi bağımsız Arduino'ya yazın. Çiziminizi yükleyin

Önyükleyici dosyasını düzenleme

Bağımsız Arduino'yu çalıştırmak için, önyükleyicinin kararma sigorta ayarlarını düzenlemeniz gerekir. Aksi takdirde, üzerine bir önyükleyici yazabilirsiniz, ancak herhangi bir çizim çalıştıramazsınız.

Kararma algılamasını tamamen kaldırabilirsiniz, ancak bunu tavsiye etmem. Bunun yerine, onu 2,7V'den (varsayılan olarak çipimde gelen) düşüreceğiz ve 1.8V ile değiştireceğiz. Ancak nihayetinde, buradaki sigorta hesaplayıcıyı kullanarak istediğiniz kararma ayarlarını seçebilirsiniz.

Pano dosyam şu konumdaydı:

C:\Program Dosyaları (x86)\Arduino\donanım\arduino\avr

Ancak, donanım klasörünüzde /arudino/ dışında birden fazla boards.txt dosyanız olabilir. ATMEGA328p (3.3V, 8 MHz) bölümünü değiştireceğiniz için /arduino/ konumunda boards.txt dosyasını düzenliyorsunuz.

Arduino IDE'yi yeniden yüklerseniz veya güncellerseniz (bu gönderiye göre) düzenlenen boards.txt dosyasını kaybedebilirsiniz. Bu, Arduino IDE'yi güncellerseniz, aynı bağımsız Arduino'dan başka bir tane oluşturmak istiyorsanız bu ayarları tekrar değiştirmeniz gerekeceği anlamına gelir.

Boards.txt dosyasında aşağı kaydırın veya "Pro Mini"yi arayın. Bu bölümün başlığı "pro.name=Arduino Pro veya Pro Mini"dir. "pro.menu.cpu.8MHzatmega328=ATmega328P (3.3V, 8 MHz)" alt bölümüne gidin.

"pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=_" yazan satırı arayın.

Ayarları xFE olarak değiştirin. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0xFE).

Kaydet ve çık.

Bootloader'ı Yakmak

Bunu yaptıktan sonra, 1'den 5'e kadar olan adımlardan ISP kılavuzundaki "Talimatlar" bölümünü takip edebilirsiniz.

Açıklığa kavuşturulması gereken bazı şeyler:

  • "ISP olarak Arduino" çizimini yüklerken, doğru COM bağlantı noktası ve işlemcinin seçildiğinden emin olmanız gerekir.

    Bu durumda Araçlar->Port:COM X (Arduino Uno) içerisinde Arduino'nuzun COM portunu seçtiğiniz ve anakartın Arduio Uno olduğu anlamına gelir

  • Doğru programlayıcıyı seçin: Araçlar->Programcı->ISP olarak Arduino altında.

    ArduinoISP veya ArduinoISP.org DEĞİL

  • Bootloder'ı yakmadan önce, "Pro veya Pro Mini" kartını ve İşlemciyi "ATMEGA328p (3.3V, 8 MHz)" olarak değiştirin.

    Doğru kart tipini seçene kadar işlemci bölümünü görmezsiniz

Üzerine eskizler yazmaya çalışmadan ÖNCE önyükleyiciyi bağımsız Arduino'ya yazın.

Kroki yükleniyor

Bu çok önemli. Artık her iki Arduino'yu da programlayabilirsiniz: Uno ve Bağımsız. Eğer doğru cihaza yükleme yapmıyorsanız yukarıdaki bölümü tekrarlamanız ve Arduino'yu Uno üzerinde ISP programı olarak yeniden yazmanız gerekmektedir.

Çiziminizi yüklediğinizde, Araçlar -> Programlayıcıyı kullanarak yükle'yi veya Ctrl+Shift+U'yu tıkladığınızdan emin olun. Ayrıca shift tuşunu basılı tutup ok simgesine tıklayabilirsiniz, ancak shift tuşunu basılı tutmadan ok simgesine tıklamayın.

Genel Sorun Giderme İpuçları

  • Sorun giderme için ayrıntılı çıktıyı açın.
  • "Cihaz imzasının tamamı 0'dır!" [Bunun gerçekleşmesi çok muhtemel.]

    • ISP Kablolama bölümüne bakın. Ya bağımsız Arduino'yu yanlış bağladınız ya da açılmıyor.
    • Doğru COM bağlantı noktasını ve kart/işlemciyi seçtiğinizden emin olun. Önyükleyiciyi yazarken, Pro Mini 3.3V 8 MHz önyükleyiciyi üzerine yazdığınızdan emin olmalısınız, aksi takdirde sigortalar doğru ayarlanmaz.
  • "boards.txt dosyasını düzenledim ancak düzenlemeleri göremiyorum"

    Doğru boards.txt dosyasını düzenlediğinizden emin olun. Düzenlemeler çalışmıyorsa Arduino IDE'yi güncellemeyi deneyin veya /hardware/ klasörünüzdeki diğer klasörleri geçici olarak kaldırın

  • "boards.txt'nin profesyonel mini bölümünü bulamıyorum!"

    Doğru boards.txt dosyasına bakmıyorsunuz. Arduino//hardware/arduino/ klasörünü kontrol edin

Adım 4: Seri İletişim

4) Seri iletişim yoluyla bağımsız cihazı izleyin

Bunu gerçekten 2 yöntemle yapabilirsiniz, bu nedenle bir FTDI kablonuz/ara kartınız bile yoksa dünyanın sonu değil. Ve unutmayın, bağımsız Arduino'ya yüklediğiniz taslağın okumanız için Serial.print ifadeleri olması gerekir: Eğer programa yazmadıysanız, hiçbir şey göremezsiniz!

FTDI kablonuz yoksa

Bootloader'ı yaktıktan ve istediğiniz programı yazdıktan sonra (çok dikkatli bir şekilde ve hangi yöne döndüğünü hatırlayarak) ATMEGA328 DIP yongasını Arduino Uno'dan kaldırabilirsiniz. Bunun için düz kafa kullanmanızı tavsiye ederim.

Bağımsız Arduino'nun RX'ini Uno'nun RX'ine ve TX'i TX'e bağlayabilirsiniz. Evet, normalde tam tersidir, ancak Uno'yu bilgiyi IDE'nin seri monitörüne "yönlendirmek" olarak düşünebilirsiniz. Bu yüzden bu durumda RX'i TX'e ve TX ro RX'e bağlamazsınız. Programınızı çalıştırırken, Arduino Uno'nun COM portunun seçili olduğundan emin olun ve seri monitörü açın. Bağımsız Arduino'nun seri çıkışını görebileceksiniz.

(Bu çözüm burada Robin2'ye yatırılmıştır.)

FTDI kablonuz/kartınız varsa

(Arkadaki lehim pedini kullanarak 3.3V'a dönüştürdüğüm Sparkfun'un FTDI kartını kullanıyorum)

Ara panosunun GND'sini bağımsız Arduino'nun toprağına bağlayın ve devre kartının RX'ini Arduino'nun TX'ine ve TX'i RX'e bağlayın. (SADECE seri izliyorsanız ve hiçbir şey yazmıyorsanız, breadoutboard'un RX'ini Arduino TX'e bağlayabilirsiniz).

Bu noktada, bağımsız Arduino'ya Uno VEYA FTDI Kablosu üzerinden güç verme seçeneğiniz olduğunu unutmayın. İki güç kaynağını aynı anda bağlamayın! Arduino Uno COM bağlantı noktasından farklı olacağından COM bağlantı noktasını değiştirmeniz gerekeceğini unutmayın.

Genel Sorun Giderme İpuçları

  • "Hiçbir şey görmüyorum!"

    • Doğru COM bağlantı noktasının etkin olup olmadığını kontrol edin.
    • En yeni FTDI sürücülerine sahip olup olmadığınızı kontrol edin.
    • TOPRAK BAĞLANTILI OLDUĞUNDAN EMİN OLUN.
  • "Tek gördüğüm seri monitörde çöp çıktı!"

    • İyiye işaret olan bir şey alıyorsun.
    • Ancak, FTDI kartının voltajını kontrol edin.
    • Bağımsız Arduino, TX'inde 3.3V veriyor ve 5v bekliyorsa FTDI kartı onu almayabilir.
    • Baud hızını kontrol edin.
    • Toprağa bağlı olduğunuzdan ve yalnızca bir güç kaynağının bağlı olduğundan emin olun! (Yani, bağımsız Arduino'ya Uno VE FTDI kartınızdan güç vermeyin.

Önerilen: