Turinys:

Savarankiškas „Arduino 3.3V W“/ išorinis 8 MHz laikrodis programuojamas iš „Arduino Uno“per ICSP / ISP (su serijiniu stebėjimu!): 4 žingsniai
Savarankiškas „Arduino 3.3V W“/ išorinis 8 MHz laikrodis programuojamas iš „Arduino Uno“per ICSP / ISP (su serijiniu stebėjimu!): 4 žingsniai

Video: Savarankiškas „Arduino 3.3V W“/ išorinis 8 MHz laikrodis programuojamas iš „Arduino Uno“per ICSP / ISP (su serijiniu stebėjimu!): 4 žingsniai

Video: Savarankiškas „Arduino 3.3V W“/ išorinis 8 MHz laikrodis programuojamas iš „Arduino Uno“per ICSP / ISP (su serijiniu stebėjimu!): 4 žingsniai
Video: Высокая плотность 2022 2024, Gruodis
Anonim
Savarankiškas „Arduino 3.3V W“/ išorinis 8 MHz laikrodis programuojamas iš „Arduino Uno“per ICSP / ISP (su serijiniu stebėjimu!)
Savarankiškas „Arduino 3.3V W“/ išorinis 8 MHz laikrodis programuojamas iš „Arduino Uno“per ICSP / ISP (su serijiniu stebėjimu!)
Savarankiškas „Arduino 3.3V W“/ išorinis 8 MHz laikrodis programuojamas iš „Arduino Uno“per ICSP / ISP (su serijiniu stebėjimu!)
Savarankiškas „Arduino 3.3V W“/ išorinis 8 MHz laikrodis programuojamas iš „Arduino Uno“per ICSP / ISP (su serijiniu stebėjimu!)

Tikslai:

  • Sukurti atskirą „Arduino“, kuris veikia 3,3 V įtampa ir išjungia 8 MHz išorinį laikrodį.
  • Norėdami jį užprogramuoti per ISP (taip pat žinomą kaip ICSP, nuoseklusis programavimas grandinėje) iš „Arduino Uno“(veikia 5 V įtampa)

    Norėdami redaguoti įkrovos įkėlimo failą ir įrašyti įkrovos tvarkyklę (per IPT)

  • Kad būtų galima skaityti serijinę informaciją iš atskiro „Arduino“per FTDI kabelį

    Kad būtų galima skaityti serijinę informaciją iš autonominio „Arduino“be FTDI kabelio

Preambulė:

Aš bandžiau sukurti savo atskirą projektą, bet nemačiau jokių išsamių vadovų, kaip paleisti, programuoti ir stebėti autonominį „Arduino“, ypač vieną, kuris veikia su 8Mhz išoriniu laikrodžiu ir 3,3 V ir kurį užprogramavo „Arduino UNO“. Aš surinkau keletą atskirų vadovų ir bandžiau nurodyti, iš kur gavau informaciją, kad suteikčiau kredito, kur reikia mokėti. Šis vadovas yra daugelio dienų rezultatas, ieškantis sprendimų ir ieškant jo dalių tuo pačiu metu, kai kūriau savo projektą. Be to, susiejau keletą naudingų produktų, kurie būtų naudingi ne todėl, kad esu susijęs su įmonėms, bet todėl, kad svarbu įtraukti konkrečius elementus, apie kuriuos aš kalbu.

Dažni klausimai prieš pradedant:

Kodėl jums reikia jį programuoti naudojant IPT ir stebėti per FTDI? Kodėl negalite tiesiog programuoti per FTDI?

Turėsime pakeisti saugiklių nustatymus, įrašydami naują įkrovos įkėlimo programą, o jūs negalite to padaryti per nuoseklųjį ryšį. Įkrovos įkroviklį turite įrašyti per IPT. Tai taip pat naudinga tiems, kurie neturi iš anksto įkeltos ATMEGA328 mikroschemos.

Kodėl aš tiesiog nenaudoju ISP kabelio su nuosekliu stebėjimu, kaip šis?

Galbūt, kaip ir aš, jūs tiesiog neturite jo, o ne laukiate, kol jis bus išsiųstas, jums patinka naudoti tai, ką turite! Turiu FTDI kabelį (nors jūs pamatysite, kad jums to net nereikia: tai tik palengvina jūsų gyvenimą).

Ar man nereikia loginio lygio perjungimo iš „Uno“į atskirą „Arduino“?

Taip, jūs, bet aš jums parodysiu, kaip tai padaryti patys. Kaip ir IPT kabelis, aš jo neturiu.

Noriu paleisti jį iš išorinės energijos. Kaip tai padaryti?

Yra daug vadovų, kurie parodo, kaip paleisti autonominį „Arduino“iš akumuliatoriaus energijos. Parašysiu, kaip tai padariau, ir susieju čia [įterpsiu vėliau].

GIDAS

1 žingsnis: sukurkite atskirą „Arduino“

Savarankiško „Arduino“kūrimas
Savarankiško „Arduino“kūrimas
Savarankiško „Arduino“kūrimas
Savarankiško „Arduino“kūrimas

1) Sukurkite atskirą „Arduino“iš šios nuorodos. Vienintelė jums reikalinga vadovo dalis yra „ATMEGA8/168/328 pagrindai“.

  • galite įjungti atskirą „Arduino“iš 3.3 V iš „Arduino Uno“. (Galite praleisti pirmąjį vadovo skyrių pavadinimu „Maitinimo šaltinio grandinės pridėjimas“.
  • Pakeiskite 16 MHz laikrodį 8 MHz dažniu.
  • Pridėkite 0,1 uF dangtelius tarp: VCC ir Gnd (iš abiejų pusių) VRef ir Gnd.

    • Aš jų neįtraukiau į paveikslėlį, bet turiu juos savo projektuose!
    • Žinau, kad tai 16 MHz osciliatorius nuotraukoje. Aš padariau nuotrauką, kol nesuvokiau visko, ką dariau vadove!

ATMEGA328p pinout vaizdo šaltinis čia.

Dažni trikčių šalinimo patarimai

  • Įsitikinkite, kad nustatėte aukštą nustatymą per 10 k rezistorių iš VCC į ATMEGA 1 kaištį. Jei kaištis yra įžemintas arba plūduriuojantis, jis neveiks.
  • Dar kartą patikrinkite, ar teisingai įvedėte laidus ir osciliatorių.
  • Įsitikinkite, kad 8 MHz osciliatoriui naudojate 22pF kondensatorius. Kitaip neveiks.
  • Įsitikinkite, kad prietaisas yra maitinamas.

2 žingsnis: IPT laidai

ISP laidai
ISP laidai
ISP laidai
ISP laidai

2) Sukurkite IPT dalį

Čia atliksite šį vadovą atlikdami nedidelį, bet labai svarbų žingsnį.

Priežastis, kodėl negalite tiesiog vadovautis vadovu, yra ta, kad jums trūksta esminės dalies: negalite užprogramuoti 3,3 V įrenginio tiesiogiai iš 5 V jungčių. (Bent jau aš negalėjau: tai nepadės, kol aš to nepadarysiu). Turite įdėti loginio lygio perjungiklį, kuris perkelia 5V signalus iš UNO į 3.3V standalone Arduino.

Jei neturite loginio lygio perjungimo plokštės, galite ją sukurti naudodami rezistorius. Visi loginio lygio perjungikliai iš tikrųjų yra (tol, kol perjungiate žemyn) - įtampos skirstytuvas. Jums reikės 6 tų pačių rezistorių, nieko per aukšto ar per žemo. Aš naudojau 220 omų rezistorius, bet esu tikras, kad net 10 k rezistoriai veiktų.

Jei naudojate SCK (skaitmeninis kaištis 13) ir MOSI (skaitmeninis kaištis 11), naudokite įtampos daliklį, kad sumažintumėte įtampą trečdaliu. Iš esmės turėsite vieną „Uno SCK“ir „MOSI“, tada rezistorių (220 omų), tada „SCK“ir „MOSI“prijungsite prie atskiro „Arduino“ir 2 rezistorius (iš viso 440 omų) prie žemės.

Taigi, perskaitykite šio skyriaus pradžioje pateiktą vadovą, tačiau įtraukite įtampos skirstytuvus tarp SCK ir MOSI. Atminkite, kad SCK, MISO, MOSI ir RESET yra „Uno“13, 12, 11 ir 10 kaiščiai, tačiau yra kaiščiai 19, 18, 17 ir 1 atskirame „Arduino“!

Dažni trikčių šalinimo patarimai

  • PATIKRINKITE LAIDUS

    • Jei bandydami rašyti programą gaunate įrenginio parašą, kuriame yra visi 0, jūsų laidai beveik išjungti arba atskiras „Arduino“negauna energijos.
    • Taip pat įsitikinkite, kad atkūrimo laidas yra nuo 10 „Uno“iki 1 atskirame „Arduino“
  • PATIKRINKITE ĮTAMPOS SKIRTUVUS

    Įsitikinkite, kad turite SCK ir MOSI rezistorių įtampos skirstytuvus, kurių santykis yra 1: 2 (aukštoji pusė: žemoji). Pvz. 220 rezistorių +5 V pusėje, o po to 2 220 omų rezistorius (iš viso 440 omų) link žemės, o signalas nukreiptas į atskirą „Arduino“viduryje

3 veiksmas: redaguokite įkrovos įkėlimo failą, įrašykite įkrovos įkėlimo programą ir įkelkite eskizą

Redaguokite įkrovos failą, įrašykite įkrovos įkėlimo programą ir įkelkite eskizą
Redaguokite įkrovos failą, įrašykite įkrovos įkėlimo programą ir įkelkite eskizą
Redaguokite įkrovos failą, įrašykite įkrovos įkėlimo programą ir įkelkite eskizą
Redaguokite įkrovos failą, įrašykite įkrovos įkėlimo programą ir įkelkite eskizą

3] Redaguokite įkrovos įkėlimo programos (boards.txt) failą ir įrašykite įkrovos įkėlimo programą į atskirą „Arduino“. Įkelkite eskizą

Įkrovos įkėlimo failo redagavimas

Norėdami paleisti atskirą „Arduino“, turėsite redaguoti įkrovos tvarkyklės „brownout“saugiklio nustatymus. Priešingu atveju galėsite įrašyti įkrovos tvarkyklę, bet negalėsite paleisti jokių eskizų.

Galite visiškai pašalinti „Brownout“aptikimą, bet aš to nerekomenduočiau. Vietoj to, mes sumažinsime jį nuo 2,7 V (kas buvo numatyta mano mikroschemoje) ir pakeisime 1,8 V. Tačiau galiausiai galite pasirinkti, kokių norimų išjungimo nustatymų norite, naudodami čia esantį saugiklių skaičiuotuvą.

Mano lentų failas buvo šioje vietoje:

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

Tačiau aparatūros aplanke, išskyrus /arudino /, gali būti daugiau nei vienas boards.txt failas. Jūs redaguosite boards.txt failą / arduino / location, nes ketinate keisti ATMEGA328p (3.3V, 8 MHz) skyrių.

Iš naujo įdiegę arba atnaujinę „Arduino IDE“(pagal šį įrašą) galite prarasti redaguotą boards.txt failą. Tai reiškia, kad jei atnaujinsite „Arduino IDE“, turėsite dar kartą pakeisti šiuos nustatymus, jei norite sukurti kitą tą patį autonominį „Arduino“.

Faile boards.txt slinkite žemyn arba ieškokite „Pro Mini“. Skyrius pavadintas „pro.name = Arduino Pro“arba „Pro Mini“. Slinkite žemyn iki poskyrio „pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)“.

Ieškokite eilutės „pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _“

Pakeiskite nustatymus į xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Išsaugoti ir išeiti.

„Bootloader“deginimas

Kai tai padarysite, galite sekti IPT vadovo skiltį „Instrukcijos“nuo 1 iki 5 veiksmo.

Kai kurie dalykai, kuriuos reikia patikslinti:

  • Kai įkeliate eskizą „Arduino kaip IPT“, turite įsitikinti, kad pasirinktas teisingas COM prievadas ir procesorius.

    Šiuo atveju tai reiškia, kad pasirinkote „Arduino“COM prievadą skiltyje Įrankiai-> Uostas: COM X („Arduino Uno“), o lenta yra „Arduio Uno“

  • Pasirinkite tinkamą programuotoją: skiltyje Įrankiai-> Programuotojas-> Arduino kaip IPT.

    NE ArduinoISP ar ArduinoISP.org

  • Prieš degindami įkrovos tvarkyklę, pakeiskite plokštę „Pro arba Pro Mini“ir procesorių į „ATMEGA328p (3.3V, 8 MHz)“.

    Nematysite procesoriaus skyriaus, kol nepasirinksite tinkamo tipo plokštės

Prieš bandydami parašyti eskizus, įrašykite įkrovos įkėlimo programą į atskirą „Arduino“.

Įkeliamas eskizas

Tai labai svarbu. Dabar galite programuoti „Arduino“: „Uno“ir „Standalone“. Jei neįkėlėte į tinkamą įrenginį, turite pakartoti aukščiau pateiktą skyrių ir „Uno“perrašyti „Arduino“kaip ISP programą.

Įkeldami eskizą būtinai spustelėkite Įrankiai -> Įkelti naudojant programuotoją ARBA spustelėkite Ctrl+Shift+U. Taip pat galite palaikyti nuspaudę „Shift“ir spustelėti rodyklės piktogramą, bet nespauskite rodyklės piktogramos, nenuspaudę „Shift“.

Dažni trikčių šalinimo patarimai

  • Įjunkite daugialypę išvestį, kad išspręstumėte trikčių šalinimą.
  • "Įrenginio signatūra yra visi 0!" [Labai tikėtina, kad tai įvyks.]

    • žr. skyrių ISP laidai. Arba neteisingai prijungėte atskirą „Arduino“, arba jis nėra įjungtas.
    • Įsitikinkite, kad pasirinkote tinkamą COM prievadą ir plokštę / procesorių. Kai deginate įkrovos įkroviklį, PRIVALOTE įsitikinti, kad deginate „Pro Mini 3.3V 8 MHz“įkrovos tvarkyklę, kitaip saugikliai nebus tinkamai nustatyti.
  • „Redagavau failą boards.txt, bet nematau pakeitimų“

    Įsitikinkite, kad redagavote tinkamą boards.txt failą. Pabandykite atnaujinti „Arduino IDE“, jei redagavimai neveikia, arba laikinai pašalinkite kitus aplankus / / hardware / aplanke

  • "Nerandu mini mini lentų.txt skilties!"

    Jūs ieškote ne tinkamo failo boards.txt. Patikrinkite aplanką Arduino // hardware/arduino/

4 žingsnis: nuoseklusis ryšys

4) Stebėkite atskirą įrenginį per serijinį ryšį

Tai tikrai galite padaryti dviem būdais, taigi, jei net neturite FTDI kabelio / pertraukimo plokštės, tai nėra pasaulio pabaiga. Ir atminkite, kad eskizas, kurį įkėlėte į atskirą „Arduino“, turi turėti Serial.print teiginius, kad galėtumėte perskaityti: jei to neparašėte programoje, nieko nematysite!

Jei neturite FTDI kabelio

Išdeginę įkrovos įkėlimo programą ir parašę norimą programą, galite (labai atsargiai ir prisimindami, kokia kryptimi ji grįžta) pašalinti ATMEGA328 DIP mikroschemą iš „Arduino Uno“. Tam rekomenduoju naudoti plokščiagalvį.

Galite prijungti atskirą „Arduino RX“prie „Uno RX“ir „TX“prie „TX“. Taip, paprastai yra priešingai, tačiau galite galvoti apie „Uno“kaip informacijos „persiuntimą“į IDE serijinį monitorių. Štai kodėl šiuo atveju neprijungiate RX prie TX ir TX ro RX. Vykdydami programą įsitikinkite, kad pasirinkote „Arduino Uno“COM prievadą, ir atidarykite serijinį montorą. Galėsite pamatyti atskirą „Arduino“serijos išvestį.

(Šis sprendimas čia priskiriamas „Robin2“.)

Jei turite FTDI kabelį / plokštę

(Aš naudoju „Sparkfun“FTDI plokštę, kurią konvertavau į 3.3 V, naudodami lituoklio pagalvėlę gale)

Tiesiog prijunkite pertraukimo plokštės GND prie atskiro „Arduino“žemės ir prijunkite „Breakoutboard“RX prie „Arduino TX“ir „TX“prie „RX“. (Jei esate tik serijinis stebėjimas ir nieko nerašote, galite tiesiog prijungti „breadoutboard“RX prie „Arduino TX“).

Atminkite, kad šiuo metu turite galimybę įjungti autonominį „Arduino“per „Uno“arba FTDI kabelį. Nejunkite abiejų maitinimo šaltinių vienu metu! Atminkite, kad turėsite pakeisti COM prievadą, nes jis skirsis nuo „Arduino Uno“COM prievado.

Dažni trikčių šalinimo patarimai

  • - Aš nieko nematau!

    • Patikrinkite, ar įjungtas teisingas COM prievadas.
    • Patikrinkite, ar turite naujausias FTDI tvarkykles.
    • UŽTIKRINKITE PRIEŽIŪRĄ.
  • "Viskas, ką matau, yra šiukšlių išėjimas serijiniame monitoriuje!"

    • Jūs gaunate kažką, kas yra geras ženklas.
    • Tačiau patikrinkite FTDI plokštės įtampą.
    • Savarankiškas „Arduino“savo TX išleidžia 3,3 V įtampą, o FTDI plokštė gali jo nepriimti, jei tikisi 5 v.
    • Patikrinkite duomenų perdavimo spartą.
    • Įsitikinkite, kad įžemintas ir prijungtas tik vienas maitinimo šaltinis! (T.y. neįjunkite autonominio „Arduino“iš „Uno AND“ir jūsų FTDI plokštės.

Rekomenduojamas: