Përmbajtje:

Arduino i pavarur 3.3V W / Orë e jashtme 8 MHz duke u programuar nga Arduino Uno përmes ICSP / ISP (me monitorim serik!): 4 hapa
Arduino i pavarur 3.3V W / Orë e jashtme 8 MHz duke u programuar nga Arduino Uno përmes ICSP / ISP (me monitorim serik!): 4 hapa

Video: Arduino i pavarur 3.3V W / Orë e jashtme 8 MHz duke u programuar nga Arduino Uno përmes ICSP / ISP (me monitorim serik!): 4 hapa

Video: Arduino i pavarur 3.3V W / Orë e jashtme 8 MHz duke u programuar nga Arduino Uno përmes ICSP / ISP (me monitorim serik!): 4 hapa
Video: Дисплей шлема #IronMan 2024, Nëntor
Anonim
Arduino e pavarur 3.3V W / Orë e jashtme 8 MHz duke u programuar nga Arduino Uno përmes ICSP / ISP (me monitorim serik!)
Arduino e pavarur 3.3V W / Orë e jashtme 8 MHz duke u programuar nga Arduino Uno përmes ICSP / ISP (me monitorim serik!)
Arduino e pavarur 3.3V W / Orë e jashtme 8 MHz duke u programuar nga Arduino Uno përmes ICSP / ISP (me monitorim serik!)
Arduino e pavarur 3.3V W / Orë e jashtme 8 MHz duke u programuar nga Arduino Uno përmes ICSP / ISP (me monitorim serik!)

Objektivat:

  • Për të ndërtuar një Arduino të pavarur që funksionon me 3.3V nga një orë e jashtme 8 MHz.
  • Për ta programuar atë përmes ISP (e njohur edhe si ICSP, programim serik në qark) nga një Arduino Uno (funksionon në 5V)

    Për të redaktuar skedarin e bootloader dhe për të djegur bootloader (përmes ISP)

  • Për të qenë në gjendje të lexoni informacione serike nga Arduino i pavarur përmes kabllit FTDI

    Për të qenë në gjendje të lexoni informacione serike nga Arduino i pavarur pa kabllon FTDI

Parathënie:

Unë po përpiqesha të ndërtoja projektin tim të pavarur, por nuk pashë ndonjë udhëzues gjithëpërfshirës për drejtimin, programimin dhe monitorimin e një Arduino të Pavarur - veçanërisht një që funksionon nga një orë e jashtme 8Mhz dhe 3.3V dhe e programuar nga një UNO Arduino. Unë kam bashkuar një numër udhëzuesish të veçantë dhe jam përpjekur të referoj nga kam marrë informacionin për të dhënë kredi aty ku duhet të merret kredia. Ky udhëzues është rezultat i shumë ditëve në kërkim të zgjidhjeve dhe gjetjes së pjesëve të tij në të njëjtën kohë ndërsa po ndërtoja projektin tim. Gjithashtu, unë kam lidhur disa produkte të dobishme që do të vijnë në dorë jo sepse jam i lidhur me ndonjë prej kompanitë, por sepse është e rëndësishme të përfshihen artikujt specifikë të cilëve po i referohem.

Pyetje të zakonshme para se të fillojmë:

Pse keni nevojë ta programoni atë me ISP dhe të monitoroni përmes FTDI? Pse nuk mund ta programoni thjesht përmes FTDI?

Ne do të duhet të ndryshojmë cilësimet e siguresave duke djegur një ngarkues të ri dhe ju nuk mund ta bëni këtë përmes komunikimit serik. Ju duhet të digjni ngarkuesin ngarkues përmes ISP -së. Kjo është gjithashtu e dobishme për ata që nuk kanë një çip ATMEGA328 të para-ngarkuar.

Pse nuk përdor vetëm një kabllo ISP me monitorim serik, si ky?

Ndoshta, si unë, ju thjesht nuk keni një të tillë dhe në vend që të prisni që një të dërgohet, ju pëlqen të përdorni atë që keni! Më ka ndodhur të kem një kabllo FTDI (edhe pse në fund të fundit do të gjeni se as nuk keni nevojë për të: thjesht jua bën jetën më të lehtë).

A nuk kam nevojë për një zhvendosës të nivelit logjik nga Uno në Arduino të pavarur?

Po, ju po, por unë do t'ju tregoj se si ta bëni vetë. Ashtu si kablloja e ISP -së, më ndodh që nuk kam një të tillë.

Unë dua ta heq atë nga fuqia e jashtme. Si ta bëj këtë?

Ka shumë udhëzues që tregojnë se si të punoni me një Arduino të pavarur nga fuqia e baterisë. Unë do të shkruaj se si e bëra dhe do ta lidh këtu [do të fut më vonë].

UDHZUESI

Hapi 1: Ndërtimi i Arduino të Pavarur

Ndërtimi i Arduino të Pavarur
Ndërtimi i Arduino të Pavarur
Ndërtimi i Arduino të Pavarur
Ndërtimi i Arduino të Pavarur

1) Ndërtoni Arduino të pavarur nga kjo lidhje. Pjesa e vetme e udhëzuesit që ju nevojitet është "Bazat ATMEGA8/168/328".

  • ju mund ta fuqizoni Arduino -n e pavarur nga 3.3V nga Arduino Uno. (Ju mund të kaloni pjesën e parë të mësimit të titulluar "Shtimi i qarkullimit për një furnizim me energji elektrike".
  • Zëvendësoni orën 16 MHz me një orë 8 Mhz.
  • Shtoni 0.1 kapak uF midis: VCC dhe Gnd (të dyja anët) VRef dhe Gnd.

    • Unë nuk i kam të përfshira në foto, por i kam në projektet e mia!
    • E di që është një oshilator 16 MHz në foto. Bëra fotografinë para se të kuptoja gjithçka që bëra në udhëzues!

Burimi i imazhit pinout ATMEGA328p këtu.

Këshilla të zakonshme për zgjidhjen e problemeve

  • Sigurohuni që të keni rivendosur cilësimin e lartë përmes një rezistence 10k nga VCC në pin 1 të ATMEGA. Nëse kunja është e bazuar ose lundruese nuk do të funksionojë.
  • Kontrolloni dy herë që keni futur telat dhe oshilatorin në mënyrë korrekte.
  • Sigurohuni që përdorni kondensatorë 22pF për oshilatorin 8 MHz. Nuk do të funksionojë ndryshe.
  • Sigurohuni që pajisja të jetë e mundësuar.

Hapi 2: Instalimet e ISP -së

Instalimet e ISP -së
Instalimet e ISP -së
Instalimet e ISP -së
Instalimet e ISP -së

2) Krijoni pjesën ISP

Ju do të ndiqni këtë udhëzues këtu me një hap të vogël por shumë të rëndësishëm.

Arsyeja pse nuk mund të ndiqni udhëzuesin është sepse ju mungon një pjesë vendimtare: nuk mund të programoni një pajisje 3.3V direkt nga lidhjet 5V. (Të paktën, nuk munda: nuk do të funksiononte derisa ta bëja këtë). Ju duhet të futni një ndërrues të nivelit logjik që zhvendos sinjalet 5V nga UNO në Arduino 3.3Vstandalone.

Nëse nuk keni një bord ndërrues të nivelit logjik, mund ta bëni një duke përdorur rezistorë. E gjithë ajo që një zhvendosës i nivelit logjik është me të vërtetë (për sa kohë që po zhvendoseni poshtë) është një ndarës i tensionit. Ju do të keni nevojë për 6 rezistorë të njëjtë, asgjë shumë të lartë ose shumë të ulët. Kam përdorur rezistorë 220 ohm, por jam i sigurt se edhe rezistorët 10k do të funksiononin.

Për SCK (kunja dixhitale 13) dhe MOSI (kunja dixhitale 11), përdorni një ndarës të tensionit për të ulur tensionin me një të tretën. Në thelb do të keni një Uno SCK dhe MOSI, pastaj një rezistencë (220 ohm), pastaj SCK dhe MOSI të lidhur me Arduino të pavarur dhe 2 rezistorë (gjithsej 440 ohm) në tokë.

Pra, lexoni udhëzuesin e lidhur në fillim të këtij seksioni, por përfshini ndarësit e tensionit midis SCK dhe MOSI. Mbani mend, SCK, MISO, MOSI dhe RESET janë kunjat 13, 12, 11 dhe 10 në Uno, por janë kunjat 19, 18, 17 dhe 1 në Arduino të pavarur!

Këshilla të zakonshme për zgjidhjen e problemeve

  • KONTROLLONI TELIRIN

    • Nëse po merrni një nënshkrim të pajisjes me të gjitha 0 kur përpiqeni të shkruani program, atëherë instalimet tuaja elektrike me siguri janë fikur, ose Arduino i pavarur nuk po merr energji.
    • Gjithashtu, sigurohuni që të keni tela të rivendosur nga 10 në Uno në 1 në Arduino të pavarur
  • KONTROLLONI NDARSIT E Tensionit

    Sigurohuni që të keni ndarës të tensionit me një raport 1: 2 (ana e lartë: ana e ulët) për rezistorët si për SCK ashtu edhe për MOSI. P.sh. një rezistencë 220 në anën +5v dhe pastaj 2 rezistorë 220 ohm (gjithsej 440 ohm) drejt tokës me sinjalin drejt Arduino të pavarur në mes

Hapi 3: Ndryshoni skedarin e ngarkuesit, digjni ngarkuesin dhe ngarkoni skicën tuaj

Ndryshoni skedarin e ngarkuesit, djegni ngarkuesin dhe ngarkoni skicën tuaj
Ndryshoni skedarin e ngarkuesit, djegni ngarkuesin dhe ngarkoni skicën tuaj
Ndryshoni skedarin e ngarkuesit, djegni ngarkuesin dhe ngarkoni skicën tuaj
Ndryshoni skedarin e ngarkuesit, djegni ngarkuesin dhe ngarkoni skicën tuaj

3) Ndryshoni skedarin e bootloader (boards.txt) dhe digjni bootloader në Arduino të pavarur. Ngarko skicën tënde

Redaktimi i skedarit bootloader

Në mënyrë që Arduino të funksionojë, do të duhet të modifikoni cilësimet e siguresës brownout të bootloader. Përndryshe, ju do të jeni në gjendje të digjni një bootloader në të, por nuk do të jeni në gjendje të ekzekutoni ndonjë skicë.

Ju mund ta hiqni plotësisht zbulimin e zbehjes, por nuk do ta rekomandoja. Në vend të kësaj, ne do ta ulim atë nga 2.7V (ajo që erdhi në çipin tim si parazgjedhje) dhe do ta zëvendësojmë me 1.8V. Në fund të fundit, megjithatë, ju mund të zgjidhni cilësimet e zbehjes që dëshironi duke përdorur kalkulatorin e siguresave këtu.

Dosja e bordeve të mia ishte në vendndodhjen e mëposhtme:

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

Sidoqoftë, mund të keni më shumë se një skedar boards.txt në dosjen tuaj të harduerit përveç /arudino /. Ju do të redaktoni skedarin boards.txt në / arduino / location sepse do të modifikoni pjesën ATMEGA328p (3.3V, 8 MHz).

Ju mund të humbni skedarin bordet.txt të redaktuar nëse riinstaloni ose përditësoni Arduino IDE (sipas këtij postimi). Kjo do të thotë që nëse përditësoni Arduino IDE, do t'ju duhet të ndryshoni përsëri këto cilësime nëse doni të krijoni një tjetër të njëjtin Arduino të pavarur.

Në skedarin boards.txt, lëvizni poshtë ose kërkoni "Pro Mini". Seksioni titullohet "pro.name = Arduino Pro ose Pro Mini". Shkoni poshtë në nënseksionin "pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)".

Shikoni për rreshtin që thotë "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

Ndryshoni cilësimet në xFE. (pro.menu.cpu.8MHzatmega328.bootloader.exused_fuses = 0xFE).

Ruaje dhe dil.

Djegia e bootloader

Pasi ta keni bërë këtë, mund të ndiqni seksionin "Udhëzimet" në udhëzuesin e ISP -së nga hapat 1 deri në 5.

Disa gjëra për të sqaruar:

  • Kur ngarkoni skicën "Arduino si ISP", duhet të siguroheni që keni zgjedhur portën dhe procesorin e duhur COM.

    Në këtë rast, do të thotë që ju keni zgjedhur portën COM të Arduino tuaj në Tools-> Port: COM X (Arduino Uno) dhe bordi është Arduio Uno

  • Zgjidhni programuesin e duhur: nën Tools-> Programmer-> Arduino si ISP.

    JO ArduinoISP ose ArduinoISP.org

  • Para se të digjni bootloderin, ndryshoni tabelën "Pro ose Pro Mini" dhe procesorin në "ATMEGA328p (3.3V, 8 MHz)".

    Ju nuk do të shihni pjesën e procesorit derisa të zgjidhni llojin e duhur të bordit

Djegeni ngarkuesin në Arduino të pavarur PARA se të përpiqeni të shkruani skica në të.

Ngarkimi i skicës

Kjo eshte shume e rendesishme. Tani mund të programoni ose Arduino: Uno dhe Standalone. Nëse nuk ngarkoni në pajisjen e duhur, duhet të përsërisni pjesën e mësipërme dhe të rishkruani Arduino si program ISP në Uno.

Kur ngarkoni skicën tuaj, sigurohuni që të klikoni Veglat -> Ngarko duke përdorur programues OSE klikoni Ctrl+Shift+U. Ju gjithashtu mund të mbani shift dhe të klikoni në ikonën e shigjetës, por mos klikoni në ikonën e shigjetës pa mbajtur shift.

Këshilla të zakonshme për zgjidhjen e problemeve

  • Aktivizoni daljen e folur për zgjidhjen e problemeve.
  • "Nënshkruesi i pajisjes është i 0 -të!" [Ky ka shumë të ngjarë të ndodhë.]

    • shiko seksionin e telave të ISP -së. Ose e keni instaluar gabimisht Arduino të pavarur ose nuk po ndizet.
    • Sigurohuni që keni zgjedhur portën e duhur COM dhe bordin / procesorin. Kur jeni duke djegur ngarkuesin e ngarkimit, DUHET të siguroheni që jeni duke djegur ngarkuesin Pro Mini 3.3V 8 MHz në të ose siguresat nuk do të vendosen siç duhet.
  • "Unë kam redaktuar skedarin boards.txt por nuk i shikoj ndryshimet"

    Sigurohuni që keni redaktuar skedarin e duhur boards.txt. Provoni të azhurnoni Arduino IDE nëse redaktimet nuk funksionojnë, ose hiqni përkohësisht dosjet e tjera në / harduerin / dosjen tuaj

  • "Nuk mund ta gjej seksionin mini mini të bordeve.txt!"

    Ju nuk po kërkoni skedarin e duhur boards.txt. Kontrolloni dosjen Arduino // hardware/arduino/

Hapi 4: Komunikimi Serial

4) Monitoroni pajisjen e pavarur përmes komunikimit serik

Ju me të vërtetë mund ta bëni këtë përmes 2 metodave, kështu që nëse nuk keni as një kabllo FTDI / dërrasë shpërthimi nuk është fundi i botës. Dhe mbani mend, skica që keni ngarkuar në Arduino të pavarur duhet të ketë deklarata Serial.print që të lexoni: nëse nuk e keni shkruar në program, nuk do të shihni asgjë!

Nëse nuk keni një kabllo FTDI

Pasi të keni djegur ngarkuesin dhe të keni shkruar programin që dëshironi, mundeni (me shumë kujdes dhe duke kujtuar se në cilin orientim kthehet) të hiqni çipin ATMEGA328 DIP nga Arduino Uno. Unë rekomandoj të përdorni një kokë të sheshtë për këtë.

Ju mund të lidhni RX të pavarur të Arduino me RX të Uno dhe TX me TX. Po, normalisht është e kundërta, por ju mund të mendoni për Uno si "përcjellëse" të informacionit në monitorin serik të IDE. Kjo është arsyeja pse ju nuk e lidhni RX me TX dhe TX ro RX në këtë rast. Kur jeni duke drejtuar programin tuaj, sigurohuni që keni zgjedhur portën COM të Arduino Uno dhe hapni montorin serik. Ju do të jeni në gjendje të shihni daljen serike të pavarur të Arduino.

(Kjo zgjidhje i atribuohet Robin2 këtu.)

Nëse keni një kabllo / bord FTDI

(Unë jam duke përdorur bordin FTDI të Sparkfun të cilin e kam konvertuar në 3.3V duke përdorur bllokun e saldimit në anën e pasme)

Thjesht lidhni GND -në e bordit të shpërthimit me tokën e pavarur të Arduino -s dhe lidhni RX -në e Breakoutboard -it me Arduino's TX dhe TX -në RX. (Nëse jeni vetëm duke monitoruar serikisht dhe nuk po shkruani asgjë përsëri, thjesht mund të lidhni RX -në e bukës me Arduino TX).

Mbani në mend në këtë pikë që ju keni mundësinë e fuqizimit të Arduino të pavarur përmes kabllos Uno OSE FTDI. Mos i lidhni të dy burimet e energjisë në të njëjtën kohë! Vini re se do t'ju duhet të ndryshoni portën COM pasi do të jetë ndryshe nga porta Arduino Uno COM.

Këshilla të zakonshme për zgjidhjen e problemeve

  • "Unë nuk shoh asgjë!"

    • Kontrolloni nëse keni aktivizuar portën e duhur COM.
    • Kontrolloni nëse keni drejtuesit më të fundit FTDI.
    • SIGURIMI GROUND ISSHT LIDHUR.
  • "Gjithçka që shoh është dalja e mbeturinave në monitorin serik!"

    • Po merrni diçka që është një shenjë e mirë.
    • Sidoqoftë, kontrolloni tensionin e bordit FTDI.
    • Arduino i pavarur po nxjerr 3.3V në TX -në e tij dhe bordi FTDI mund të mos e marrë atë nëse pret 5v.
    • Kontrolloni normën e baudit.
    • Sigurohuni që të keni tokëzim të lidhur dhe vetëm një burim energjie të lidhur! (Domethënë mos e aktivizoni Arduino të pavarur nga bordi Uno DHE FTDI juaj.

Recommended: