Cuprins:

Arduino autonom 3.3V W / ceas extern de 8 MHz programat de la Arduino Uno prin ICSP / ISP (cu monitorizare serială!): 4 pași
Arduino autonom 3.3V W / ceas extern de 8 MHz programat de la Arduino Uno prin ICSP / ISP (cu monitorizare serială!): 4 pași

Video: Arduino autonom 3.3V W / ceas extern de 8 MHz programat de la Arduino Uno prin ICSP / ISP (cu monitorizare serială!): 4 pași

Video: Arduino autonom 3.3V W / ceas extern de 8 MHz programat de la Arduino Uno prin ICSP / ISP (cu monitorizare serială!): 4 pași
Video: Стабилизатор напряжения 3.3в. с зарядом аккумулятора и контролем питания. NEXTPCB.COM 2024, Noiembrie
Anonim
Arduino autonom 3.3V W / ceas extern de 8 MHz programat de la Arduino Uno prin ICSP / ISP (cu monitorizare serială!)
Arduino autonom 3.3V W / ceas extern de 8 MHz programat de la Arduino Uno prin ICSP / ISP (cu monitorizare serială!)
Arduino autonom 3.3V W / ceas extern de 8 MHz programat de la Arduino Uno prin ICSP / ISP (cu monitorizare serială!)
Arduino autonom 3.3V W / ceas extern de 8 MHz programat de la Arduino Uno prin ICSP / ISP (cu monitorizare serială!)

Obiective:

  • Pentru a construi un Arduino autonom care rulează pe 3.3V de pe un ceas extern de 8 MHz.
  • Pentru a-l programa prin ISP (cunoscut și sub numele de ICSP, programare serială în circuit) de la un Arduino Uno (care rulează la 5V)

    Pentru a edita fișierul bootloader și a arde bootloader-ul (prin ISP)

  • Pentru a putea citi informații seriale de pe Arduino independent prin cablu FTDI

    Pentru a putea citi informații seriale de pe standul Arduino fără cablul FTDI

Preambul:

Încercam să-mi construiesc proiectul independent, dar nu am văzut niciun ghid cuprinzător despre rularea, programarea și monitorizarea unui Arduino autonom - în special unul care rulează pe un ceas extern de 8 MHz și 3,3 V și programat de un Arduino UNO. Am strâns o serie de ghiduri separate și am încercat să fac referire de unde am obținut informațiile pentru a da credit acolo unde este datorat creditul. Acest ghid este rezultatul multor zile căutând soluții și găsind părți ale acestuia la un moment dat în timp ce construiam propriul meu proiect. De asemenea, am legat mai multe produse utile care ar veni în mână nu pentru că sunt afiliat cu oricare dintre pentru companii, dar pentru că este relevant să includ elementele specifice la care mă refer.

Întrebări frecvente înainte de a începe:

De ce trebuie să îl programați cu ISP și să monitorizați prin FTDI? De ce nu o puteți programa doar prin FTDI?

Va trebui să schimbăm setările siguranței prin arderea unui nou bootloader și nu puteți face acest lucru prin intermediul comunicării seriale. Trebuie să ardeți bootloader-ul prin ISP. Acest lucru este util și pentru cei care nu au un cip ATMEGA328 preîncărcat.

De ce nu folosesc doar un cablu ISP cu monitorizare serială, ca acesta?

Poate că, la fel ca mine, pur și simplu nu ai unul și, mai degrabă decât să aștepți să fie livrat unul, îți place să folosești ceea ce ai! Se întâmplă să am un cablu FTDI (deși veți găsi în cele din urmă că nici măcar nu aveți nevoie de el: doar vă face viața mai ușoară).

Nu am nevoie de un schimbător de nivel logic de la Uno la Arduino independent?

Da, da, dar vă voi arăta cum să creați unul singur. La fel ca cablul ISP, întâmplător nu am unul.

Vreau să-l scot de la puterea externă. Cum să fac asta?

Există o mulțime de ghiduri care arată cum să rulați un Arduino independent de la baterie. Voi scrie cum am făcut-o și o voi lega aici [se va insera mai târziu].

GHIDUL

Pasul 1: Construirea Arduino-ului independent

Construirea Arduino-ului autonom
Construirea Arduino-ului autonom
Construirea Arduino-ului autonom
Construirea Arduino-ului autonom

1) Construiți Arduino independent de la acest link. Singura parte a ghidului de care aveți nevoie este „Elementele de bază ATMEGA8 / 168/328”.

  • puteți alimenta Arduino independent de la 3.3V din Arduino Uno. (Puteți sări peste prima secțiune a tutorialului intitulat „Adăugarea circuitului pentru o sursă de alimentare”.
  • Înlocuiți ceasul de 16 MHz cu un ceas de 8 MHz.
  • Adăugați capace de 0,1 uF între: VCC și Gnd (ambele părți) VRef și Gnd.

    • Nu le includ în imagine, dar le am în proiectele mele!
    • Știu că este un oscilator de 16 MHz în fotografie. Am făcut fotografia înainte să-mi dau seama de tot ce am făcut în ghid!

Sursă imagine pinout ATMEGA328p aici.

Sfaturi comune de depanare

  • Asigurați-vă că ați resetat setul ridicat printr-un rezistor de 10k de la VCC la pinul 1 al ATMEGA. Dacă știftul este împământat sau plutitor, acesta nu va funcționa.
  • Verificați de două ori dacă ați introdus corect firele și oscilatorul.
  • Asigurați-vă că utilizați condensatori 22pF pentru oscilatorul de 8 MHz. Nu va funcționa altfel.
  • Asigurați-vă că dispozitivul este alimentat.

Pasul 2: Cablarea ISP

Cablajul ISP
Cablajul ISP
Cablajul ISP
Cablajul ISP

2) Creați porțiunea ISP

Veți urma acest ghid aici cu un pas mic, dar foarte important.

Motivul pentru care nu puteți urmări ghidul este doar că vă lipsește o porțiune crucială: nu puteți programa un dispozitiv de 3,3 V direct din conexiunile de 5 V. (Cel puțin, nu aș putea: nu ar funcționa până nu voi face asta). Trebuie să introduceți un schimbător de nivel logic care să schimbe semnalele de 5V de la UNO la Arduino standalone de 3,3V.

Dacă nu aveți o placă de schimbare a nivelului logic, puteți face una folosind rezistențe. Tot ce este într-adevăr un schimbător de nivel logic (atâta timp cât vă deplasați în jos) este un divizor de tensiune. Veți avea nevoie de 6 din aceleași rezistențe, nimic prea mare sau prea scăzut. Am folosit rezistențe de 220 ohmi, dar sunt sigur că și rezistențele de 10k ar funcționa.

Pentru SCK (pinul digital 13) și MOSI (pinul digital 11), utilizați un divizor de tensiune pentru a reduce tensiunea cu o treime. În esență, veți avea un Uno SCK și MOSI, apoi un rezistor (220 ohmi), apoi SCK și MOSI conectați la Arduino independent și 2 rezistențe (440 ohmi în total) la masă.

Deci, citiți ghidul legat la începutul acestei secțiuni, dar includeți divizoarele de tensiune între SCK și MOSI. Amintiți-vă, SCK, MISO, MOSI și RESET sunt pinii 13, 12, 11 și 10 de pe Uno, dar sunt pinii 19, 18, 17 și 1 pe Arduino independent!

Sfaturi comune de depanare

  • VERIFICAȚI Cablajul

    • Dacă primiți o semnătură de dispozitiv de toate 0 atunci când încercați să scrieți un program, atunci cablarea dvs. este aproape sigur oprită sau Arduino autonom nu primește energie.
    • De asemenea, asigurați-vă că ați primit firul de resetare de la 10 pe Uno la 1 pe Arduino independent
  • VERIFICĂ DIVIZORII DE TENSIUNE

    Asigurați-vă că aveți divizoare de tensiune cu un raport de 1: 2 (partea înaltă: partea joasă) pentru rezistențele atât pentru SCK, cât și pentru MOSI. De exemplu. un rezistor de 220 pe partea + 5v și apoi 2 rezistențe de 220 ohmi (440 ohmi în total) către sol cu semnalul către Arduino independent în mijloc

Pasul 3: Editați fișierul Bootloader, Burn Burner și încărcați schița

Editați fișierul Bootloader, Burn Burner și încărcați schița
Editați fișierul Bootloader, Burn Burner și încărcați schița
Editați fișierul Bootloader, Burn Burner și încărcați schița
Editați fișierul Bootloader, Burn Burner și încărcați schița

3) Editați fișierul bootloader (boards.txt) și ardeți bootloader-ul pe Arduino independent. Încărcați schița

Editarea fișierului bootloader

Pentru a pune în funcțiune Arduino-ul independent, va trebui să editați setările de siguranță brownout ale bootloader-ului. În caz contrar, veți putea arde un bootloader pe acesta, dar nu veți putea rula nicio schiță.

Puteți elimina complet detecția brownout, dar nu aș recomanda-o. În schimb, îl vom reduce de la 2,7 V (ceea ce a venit pe cipul meu ca implicit) și îl vom înlocui cu 1,8 V. În cele din urmă, totuși, puteți alege ce setări de brownout doriți utilizând calculatorul de siguranțe aici.

Fișierul panourilor mele se afla în următoarea locație:

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

Cu toate acestea, este posibil să aveți mai multe fișiere boards.txt în folderul dvs. hardware altul decât / arudino /. Veți edita fișierul boards.txt în / arduino / location deoarece veți modifica secțiunea ATMEGA328p (3,3V, 8 MHz).

Puteți pierde fișierul boards.txt editat dacă reinstalați sau actualizați Arduino IDE (conform acestei postări). Aceasta înseamnă că, dacă actualizați Arduino IDE, va trebui să schimbați din nou aceste setări dacă doriți să creați altul din același Arduino independent.

În fișierul boards.txt, derulați în jos sau căutați „Pro Mini”. Secțiunea este intitulată „pro.name = Arduino Pro sau Pro Mini”. Derulați în jos până la subsecțiunea „pro.menu.cpu.8MHzatmega328 = ATmega328P (3,3V, 8 MHz)”.

Căutați linia care spune „pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _”

Schimbați setările în xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Salvează și ieși.

Arderea Bootloader-ului

După ce ați făcut acest lucru, puteți urma secțiunea „Instrucțiuni” din ghidul ISP de la pașii 1 la 5.

Câteva lucruri de clarificat:

  • Când încărcați schița „Arduino ca ISP”, trebuie să vă asigurați că ați selectat portul COM corect și procesorul.

    În acest caz, înseamnă că ați selectat portul COM al Arduino în Instrumente-> Port: COM X (Arduino Uno), iar placa este Arduio Uno

  • Selectați programatorul corect: sub Instrumente-> Programator-> Arduino ca ISP.

    NU ArduinoISP sau ArduinoISP.org

  • Înainte de a arde bootloder-ul, schimbați placa „Pro sau Pro Mini” și procesorul la „ATMEGA328p (3,3 V, 8 MHz)”.

    Nu veți vedea secțiunea procesorului până când nu selectați tipul corect de placă

Ardeți bootloader-ul pe Arduino independent ÎNAINTE să încercați să scrieți schițe pe el.

Încărcarea schiței

Este foarte important. Acum puteți programa fie Arduino: Uno și Standalone. Dacă nu încărcați pe dispozitivul corect, trebuie să repetați secțiunea de mai sus și să rescrieți Arduino ca program ISP pe Uno.

Când încărcați schița, asigurați-vă că dați clic pe Instrumente -> Încărcați utilizând programatorul SAU faceți clic pe Ctrl + Shift + U. De asemenea, puteți ține apăsată tasta Shift și faceți clic pe pictograma săgeată, dar nu faceți clic pe pictograma săgeată fără să țineți apăsată tasta Shift.

Sfaturi comune de depanare

  • Activați ieșirea detaliată pentru depanare.
  • "Dispozitivul semnat este tot 0!" [Acesta este foarte probabil să apară.]

    • vezi secțiunea Cablare ISP. Fie ați conectat incorect Arduino-ul autonom, fie nu este pornit.
    • Asigurați-vă că ați selectat portul COM corect și placa / procesorul. Când ardeți bootloader-ul, TREBUIE să vă asigurați că ardeți bootloader-ul Pro Mini 3.3V 8 MHz pe acesta sau siguranțele nu vor fi setate corect.
  • „Am editat fișierul boards.txt, dar nu văd modificările”

    Asigurați-vă că ați editat fișierul corect boards.txt. Încercați să actualizați Arduino IDE dacă modificările nu funcționează sau eliminați temporar alte foldere din / hardware / folder

  • "Nu găsesc secțiunea pro mini din boards.txt!"

    Nu căutați fișierul boards.txt potrivit. Verificați folderul Arduino // hardware / arduino /

Pasul 4: Comunicare în serie

4) Monitorizați dispozitivul autonom prin comunicații seriale

Puteți face acest lucru cu adevărat prin intermediul a 2 metode, așa că, dacă nu aveți nici măcar un cablu FTDI / placa de rupere, nu este sfârșitul lumii. Și amintiți-vă, schița pe care ați încărcat-o pe Arduino independent trebuie să aibă declarații Serial.print pentru a le citi: dacă nu ați scris-o în program, nu veți vedea nimic!

Dacă nu aveți un cablu FTDI

După ce ați ars bootloader-ul și ați scris programul dorit, puteți (foarte atent și amintind în ce orientare se întoarce) să scoateți cipul ATMEGA328 DIP de pe Arduino Uno. Vă recomand să folosiți un cap plat pentru aceasta.

Puteți conecta RX-ul independent Arduino la RX-ul Uno și TX la TX. Da, în mod normal este opusul, dar te poți gândi la Uno ca la „redirecționarea” informațiilor către monitorul serial al IDE. De aceea nu conectați RX la TX și TX ro RX în acest caz. Când rulați programul, asigurați-vă că ați ales portul COM al Arduino Uno și deschideți montorul serial. Veți putea vedea ieșirea serială independentă Arduino.

(Această soluție este creditată Robin2 aici.)

Dacă aveți un cablu / placă FTDI

(Folosesc placa FTDI de la Sparkfun pe care am convertit-o la 3,3V folosind placa de lipit din spate)

Pur și simplu conectați GND-ul plăcii de rupere la solul independent Arduino și conectați RX-ul plăcii la TX-ul Arduino și TX la RX. (Dacă doar monitorizați serial și nu scrieți nimic înapoi, puteți conecta RX-ul panoului de redare la Arduino TX).

Rețineți că, în acest moment, aveți opțiunea de a alimenta Arduino independent prin intermediul Uno SAU al cablului FTDI. Nu conectați ambele surse de alimentare în același timp! Rețineți că va trebui să schimbați portul COM, deoarece va fi diferit de portul COM Arduino Uno.

Sfaturi comune de depanare

  • - Nu văd nimic!

    • Verificați dacă aveți portul COM corect activat.
    • Verificați dacă aveți cele mai recente drivere FTDI.
    • ASIGURAȚI-VĂ că Pământul este conectat.
  • "Tot ce văd este ieșirea gunoiului pe monitorul serial!"

    • Obții ceva care este un semn bun.
    • Cu toate acestea, verificați tensiunea plăcii FTDI.
    • Arduino independent produce 3.3V pe TX-ul său și este posibil ca placa FTDI să nu o ridice dacă așteaptă 5v.
    • Verificați rata de transmisie.
    • Asigurați-vă că ați conectat la masă și că este conectată o singură sursă de alimentare! (Adică nu alimentați Arduino-ul independent de pe placa UN și din FTDI.

Recomandat: