Mündəricat:

Bağımsız Arduino 3.3V W / Xarici 8 MHz Saat Arduino Unodan ICSP / ISP vasitəsilə Proqramlaşdırılır (Serial İzləmə ilə!): 4 Addım
Bağımsız Arduino 3.3V W / Xarici 8 MHz Saat Arduino Unodan ICSP / ISP vasitəsilə Proqramlaşdırılır (Serial İzləmə ilə!): 4 Addım

Video: Bağımsız Arduino 3.3V W / Xarici 8 MHz Saat Arduino Unodan ICSP / ISP vasitəsilə Proqramlaşdırılır (Serial İzləmə ilə!): 4 Addım

Video: Bağımsız Arduino 3.3V W / Xarici 8 MHz Saat Arduino Unodan ICSP / ISP vasitəsilə Proqramlaşdırılır (Serial İzləmə ilə!): 4 Addım
Video: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, Iyul
Anonim
Bağımsız Arduino 3.3V W / Xarici 8 MHz Saat Arduino Unodan ICSP / ISP vasitəsilə Proqramlaşdırılır (Serial İzləmə ilə!)
Bağımsız Arduino 3.3V W / Xarici 8 MHz Saat Arduino Unodan ICSP / ISP vasitəsilə Proqramlaşdırılır (Serial İzləmə ilə!)
Bağımsız Arduino 3.3V W / Xarici 8 MHz Saat Arduino Unodan ICSP / ISP vasitəsilə Proqramlaşdırılır (Serial İzləmə ilə!)
Bağımsız Arduino 3.3V W / Xarici 8 MHz Saat Arduino Unodan ICSP / ISP vasitəsilə Proqramlaşdırılır (Serial İzləmə ilə!)

Məqsədlər:

  • 8 MHz xarici saatdan 3.3V işləyən müstəqil bir Arduino qurmaq üçün.
  • Bir Arduino Uno-dan (5V-də işləyən) ISP (ICSP olaraq da bilinir) istifadə edərək proqramlaşdırmaq.

    Bootloader faylını redaktə etmək və bootloaderı yazmaq üçün (ISP vasitəsilə)

  • FTDI kabel vasitəsilə müstəqil Arduinodan serial məlumatlarını oxumaq

    FTDI kabeli olmadan müstəqil Arduino -dan serial məlumatlarını oxumaq

Giriş:

Müstəqil bir layihəmi qurmağa çalışırdım, ancaq müstəqil bir Arduinonun işlədilməsi, proqramlaşdırılması və monitorinqi ilə bağlı hər hansı bir bələdçi görmədim - xüsusən də 8Mhz xarici saat və 3.3V işləyən və Arduino UNO tərəfindən proqramlaşdırılmış. Bir neçə ayrı bələdçini bir araya gətirdim və kreditin veriləcəyi yerə kredit vermək üçün məlumatı haradan aldığımı göstərməyə çalışdım. Bu bələdçi, öz layihəmi qurarkən bir neçə gün ərzində həll yolları axtarmağın və hissələrini tapmağın nəticəsidir. şirkətlər, amma bəhs etdiyim konkret maddələrin daxil edilməsi uyğun olduğu üçün.

Başlamadan əvvəl ümumi suallar:

Niyə bunu ISP ilə proqramlaşdırmaq və FTDI vasitəsilə izləmək lazımdır? Niyə yalnız FTDI vasitəsilə proqramlaşdıra bilmirsiniz?

Yeni bir önyükleyicini yandıraraq qoruyucu parametrlərini dəyişdirməliyik və bunu serial rabitəsi ilə edə bilməzsiniz. Yükləyicini ISP vasitəsilə yandırmalısınız. Bu, əvvəlcədən yüklənmiş ATMEGA328 çipi olmayanlar üçün də faydalıdır.

Niyə bunun kimi serial monitorinqi olan bir ISP kabelindən istifadə etmirəm?

Bəlkə də, mənim kimi, səndə heç bir şey yoxdur və birinin göndərilməsini gözləməkdənsə, səndə olanı istifadə etmək xoşuna gəlir! Bir FTDI kabeli var (baxmayaraq ki, nəticədə ehtiyacınız olmadığını da tapa bilərsiniz: bu, həyatınızı asanlaşdırır).

Uno -dan müstəqil Arduino -ya bir məntiq səviyyəsi dəyişdiricisinə ehtiyacım yoxdur?

Bəli, edirsiniz, amma özünüz necə edəcəyinizi sizə göstərəcəyəm. İnternet provayderi kabeli kimi, məndə heç yoxdur.

Mən onu xarici gücdən uzaqlaşdırmaq istəyirəm. Bunu necə edim?

Müstəqil bir Arduino -nu batareya enerjisindən necə qurtaracağını göstərən bir çox bələdçi var. Necə etdiyimi yazacağam və bura bağlayacağam [sonra əlavə edəcəyəm].

KILAVUZ

Addım 1: Bağımsız Arduino qurmaq

Bağımsız Arduino qurmaq
Bağımsız Arduino qurmaq
Bağımsız Arduino qurmaq
Bağımsız Arduino qurmaq

1) Bu linkdən müstəqil Arduino yaradın. Bələdçinin sizə lazım olan yeganə hissəsi "ATMEGA8/168/328 Əsasları" dır.

  • Arduino Uno -dan 3.3V -dən müstəqil Arduino -ya güc verə bilərsiniz. ("Elektrik təchizatı üçün dövrə əlavə etmək" adlı təlimatın birinci hissəsini atlaya bilərsiniz.
  • 16 MHz tezliyi 8 Mhz saatla əvəz edin.
  • VCC və Gnd (hər iki tərəf) VRef və Gnd arasında 0.1 uF qapaqları əlavə edin.

    • Şəkildə bunlar yoxdur, amma layihələrimdə var!
    • Bilirəm ki, fotoşəkildə 16 MHz -lik bir osilatordur. Bələdçidə etdiyim hər şeyi anlamadan əvvəl fotoşəkili çəkdim!

ATMEGA328p pinout görüntü mənbəyi burada.

Ümumi Problem Giderme Məsləhətləri

  • VCC -dən ATMEGA -nın 1 -ci pininə qədər 10k rezistor vasitəsilə yüksək səviyyəyə sıfırladığınızdan əmin olun. Pin yerə qoyulursa və ya üzürsə, işləməyəcək.
  • Telləri və osilatoru düzgün daxil etdiyinizi iki dəfə yoxlayın.
  • 8 MHz osilatör üçün 22 pF kondansatör istifadə etdiyinizə əmin olun. Əks halda işləməyəcək.
  • Cihazın enerjili olduğundan əmin olun.

Addım 2: ISP Kabelləri

ISP Kabelləri
ISP Kabelləri
ISP Kabelləri
ISP Kabelləri

2) ISP hissəsini yaradın

Kiçik, lakin çox vacib bir addımla bu təlimatı izləyəcəksən.

Bələdçiyə əməl edə bilməməyinizin səbəbi, vacib bir hissəni itirməyinizdir: 3.3V cihazı birbaşa 5V əlaqələrindən proqramlaşdıra bilməzsiniz. (Ən azından bacarmadım: bunu etməyənə qədər işləməyəcəkdi). UNO -dan 5V siqnallarını 3.3Vstandalone Arduino -ya köçürən bir məntiq səviyyəsi dəyişdiricisi daxil etməlisiniz.

Məntiq səviyyəsi dəyişdirmə lövhəsi yoxdursa, rezistorlardan istifadə edərək düzəldə bilərsiniz. Məntiq səviyyəsi dəyişdiricisinin hamısı həqiqətən (aşağı sürüşdüyünüz müddətcə) bir gərginlik bölücüdür. Çox yüksək və ya çox aşağı olmayan eyni rezistorlardan 6 -na ehtiyacınız olacaq. 220 ohm rezistor istifadə etdim, amma əminəm ki, hətta 10k rezistor da işləyəcək.

SCK (rəqəmsal pin 13) və MOSI (rəqəmsal pin 11) üçün gərginliyi üçdə biri azaltmaq üçün bir gərginlik bölücü istifadə edin. Əslində bir Uno SCK və MOSI, sonra bir rezistor (220 ohm), sonra bağımsız Arduino -ya qoşulmuş SCK və MOSI və yerə 2 rezistor (cəmi 440 ohm) olacaq.

Beləliklə, bu hissənin əvvəlində əlaqələndirilən bələdçini oxuyun, ancaq SCK və MOSI arasındakı gərginlik bölücülərini daxil edin. Unutmayın ki, SCK, MISO, MOSI və RESET, UNO -da 13, 12, 11 və 10 sancaqlardır, lakin sancaqlar 19, 18, 17 və 1 bağımsız Arduino!

Ümumi Problem Giderme Məsləhətləri

  • QABLAMA YOXLAYIN

    • Proqram yazmağa çalışarkən bütün 0 işarələri olan bir cihaz imzası alırsınızsa, demək olar ki, kabelləriniz kəsilir və ya müstəqil Arduino güc almır.
    • Ayrıca, sıfırlama telini Uno -da 10 -dan müstəqil Arduino -da 1 -ə aldığınızdan əmin olun
  • Gərginlik bölücülərini yoxlayın

    Həm SCK, həm də MOSI üçün rezistorlar üçün 1: 2 (yüksək tərəf: aşağı tərəf) nisbətində gərginlik bölücüləriniz olduğundan əmin olun. Məsələn, +5v tərəfində 220 müqavimət və sonra ortada müstəqil Arduino istiqamətində siqnal olan yerə doğru 220 220 ohm rezistor (cəmi 440 ohm)

Addım 3: Bootloader Faylını Düzəldin, Bootloader'ı Yazın və Eskizinizi Yükləyin

Bootloader Faylını Düzəldin, Bootloader'ı Yazın və Eskizinizi Yükləyin
Bootloader Faylını Düzəldin, Bootloader'ı Yazın və Eskizinizi Yükləyin
Bootloader Faylını Düzəldin, Bootloader'ı Yazın və Eskizinizi Yükləyin
Bootloader Faylını Düzəldin, Bootloader'ı Yazın və Eskizinizi Yükləyin

3) Bootloader (board.txt) faylını redaktə edin və bootloader -ı müstəqil Arduino -ya yandırın. Eskizinizi yükləyin

Bootloader faylını redaktə edin

Müstəqil Arduino -nu işə salmaq üçün önyükleyicinin qəhvəyi qoruyucu parametrlərini redaktə etməlisiniz. Əks təqdirdə, üzərinə bir yükləyici yaza bilərsiniz, ancaq heç bir eskiz işlədə bilməyəcəksiniz.

Qəhvəyi aşkarlamanı tamamilə silə bilərsiniz, amma bunu məsləhət görməzdim. Bunun əvəzinə, onu 2.7V -dən (mənim çipimə standart olaraq gələnlər) endirib 1.8V ilə əvəz edəcəyik. Nəticədə, burada qoruyucu kalkulyatordan istifadə edərək istədiyiniz qəhvəyi rəng parametrlərini seçə bilərsiniz.

Lövhələr faylım aşağıdakı yerdə idi:

C: / Program Files (x86) Arduino / hardware / arduino / avr

Bununla birlikdə, hardware qovluğunuzda /arudino /xaricində birdən çox board.txt faylınız ola bilər. ATMEGA328p (3.3V, 8 MHz) hissəsini dəyişdirəcəyiniz üçün / arduino / location -də board.txt faylını redaktə edəcəksiniz.

Arduino IDE -ni yenidən qurarsanız və ya yeniləsəniz, redaktə olunan board.txt faylını itirə bilərsiniz (bu yazıya görə). Bu o deməkdir ki, Arduino IDE -ni yeniləyirsinizsə, eyni müstəqil Arduino -dan başqa bir şey yaratmaq istəyirsinizsə, bu parametrləri yenidən dəyişdirməlisiniz.

Board.txt faylında aşağıya fırladın və ya "Pro Mini" axtarın. Bölmə "pro.name = Arduino Pro və ya Pro Mini" adlanır. "Pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)" alt hissəsinə keçin.

"Pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _" yazan xətti axtarın.

Ayarları xFE olaraq dəyişdirin. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Saxla və çıx.

Yükləyicini yandırmaq

Bunu etdikdən sonra, ISP bələdçisindəki 1 -dən 5 -ə qədər olan "Təlimatlar" bölməsini izləyə bilərsiniz.

Aydınlaşdırmaq üçün bəzi şeylər:

  • "Arduino ISP olaraq" eskizini yükləyərkən, düzgün COM portu və prosessorun seçilmiş olduğundan əmin olmalısınız.

    Bu vəziyyətdə, Arduino-nun COM portunu Tools-> Port: COM X-da (Arduino Uno) seçdiyiniz və lövhənin Arduio Uno olduğu anlamına gəlir

  • Doğru proqramçı seçin: Tools-> Programmer-> Arduino altında ISP olaraq.

    ArduinoISP və ya ArduinoISP.org DEYİL

  • Bootloder yandırmadan əvvəl "Pro və ya Pro Mini" lövhəsini və Prosessorunu "ATMEGA328p (3.3V, 8 MHz)" olaraq dəyişdirin.

    Doğru lövhə növünü seçməyincə prosessor hissəsini görməyəcəksiniz

Üzərinə eskizlər yazmağa çalışmazdan əvvəl, önyükleyicini müstəqil Arduino üzərinə yandırın.

Eskiz yüklənir

Bu çox vacibdir. İndi Arduinonu proqramlaşdıra bilərsiniz: Uno və Bağımsız. Doğru cihaza yükləməsəniz, yuxarıdakı bölməni təkrarlamalı və Arduino'yu Uno -da ISP proqramı olaraq yenidən yazmalısınız.

Eskizinizi yükləyərkən, Alətlər -> Proqramçıdan istifadə edərək yüklə və ya Ctrl+ÜstKrktr+U vurun. Ayrıca shift düyməsini basıb ox işarəsini vura bilərsiniz, ancaq shift işarəsini saxlamadan ox işarəsini vurmayın.

Ümumi Problem Giderme Məsləhətləri

  • Problemləri aradan qaldırmaq üçün ətraflı çıxışı aktiv edin.
  • "Cihazın imzalanması hamısı 0 -dır!" [Bunun baş vermə ehtimalı çox yüksəkdir.]

    • ISP Kablolama bölməsinə baxın. Ya müstəqil Arduino -ya səhv bağladınız, ya da açılmır.
    • Doğru COM portunu və lövhə / prosessoru seçdiyinizə əmin olun. Yükləyicini yandırarkən, Pro Mini 3.3V 8 MHz yükləyicisini yandırdığınızdan və ya sigortaların düzgün qurulmadığından əmin olmalısınız.
  • "Mən board.txt faylını redaktə etmişəm, amma düzəlişləri görmürəm"

    Doğru board.txt faylını düzəltdiyinizə əmin olun. Düzəlişlər işləmirsə Arduino IDE -ni yeniləməyə çalışın və ya / hardware / qovluğunuzdakı digər qovluqları müvəqqəti olaraq silin

  • "Board.txt -in pro mini hissəsini tapa bilmirəm!"

    Doğru board.txt faylına baxmırsınız. Arduino // hardware/arduino/qovluğunu yoxlayın

Addım 4: Serial Rabitə

4) Serial rabitə vasitəsi ilə müstəqil cihazı izləyin

Bunu həqiqətən 2 üsulla edə bilərsiniz, buna görə hətta bir FTDI kabeliniz / qırılma lövhəniz yoxdursa, bu dünyanın sonu deyil. Unutmayın, müstəqil Arduinoya yüklədiyiniz eskizdə oxumaq üçün Serial.print ifadələri olmalıdır: bunu proqramda yazmasaydınız heç nə görməyəcəksiniz!

FTDI kabeliniz yoxdursa

Yükləyicini yandırdıqdan və istədiyiniz proqramı yazdıqdan sonra (çox diqqətlə və hansı istiqamətə qayıtdığını xatırlayaraq) ATMEGA328 DIP çipini Arduino Uno -dan çıxara bilərsiniz. Bunun üçün düz başlıq istifadə etməyi məsləhət görürəm.

Bağımsız Arduino RX -ni Uno'nun RX və TX -dən TX -ə bağlaya bilərsiniz. Bəli, normalda əksinədir, ancaq Uno -nu məlumatı IDE -nin serial monitoruna "göndərmək" kimi düşünə bilərsiniz. Bu səbəbdən RX -i TX və TX ro RX -ə bağlamırsınız. Proqramınızı işləyərkən, Arduino Uno'nun COM portunu seçdiyinizə və serial montor açdığınızdan əmin olun. Standaone Arduinonun serial çıxışını görə biləcəksiniz.

(Bu həll burada Robin2 -yə aiddir.)

FTDI kabeliniz / lövhəniz varsa

(Arxadakı lehim yastığını istifadə edərək 3.3V -ə çevirdiyim Sparkfun FTDI lövhəsindən istifadə edirəm)

Yalnız kəsmə lövhəsinin GND -ni müstəqil Arduino zəmininə bağlayın və kəsmə taxtasının RX -ni Arduino TX və TX -ə RX -ə bağlayın. (SADƏCƏ serial izləmə edirsinizsə və heç bir şey yazmırsınızsa, yalnız Breadoutboard -un RX -ni Arduino TX -ə qoşa bilərsiniz).

Unutmayın ki, müstəqil Arduino -nu Uno OR FTDI Kabeli ilə gücləndirə bilərsiniz. Hər iki enerji mənbəyini eyni anda bağlamayın! COM portunu Arduino Uno COM portundan fərqli olacağından dəyişdirməli olduğunuzu unutmayın.

Ümumi Problem Giderme Məsləhətləri

  • "Mən heç nə görmürəm!"

    • Doğru COM portunun aktiv olub olmadığını yoxlayın.
    • Ən son FTDI sürücülərinizin olub olmadığını yoxlayın.
    • ZEMİNİN BAĞLANILDIĞINI TƏMİN EDİN.
  • "Tək gördüyüm serial monitorda zibil çıxışıdır!"

    • Yaxşı bir işarə olan bir şey alırsınız.
    • Bununla birlikdə, FTDI kartının gərginliyini yoxlayın.
    • Müstəqil Arduino, TX -də 3.3V buraxır və 5v gözlədiyi təqdirdə FTDI lövhəsi onu götürə bilməz.
    • Baud sürətini yoxlayın.
    • Torpağa və yalnız bir enerji mənbəyinə qoşulduğunuzdan əmin olun! (Yani Uno VƏ FTDI lövhənizdən müstəqil Arduino -ya güc verməyin.

Tövsiyə: