Sadržaj:

Samostalni Arduino 3.3V W / vanjski sat od 8 MHz koji se programira iz Arduino Uno putem ICSP / ISP -a (sa serijskim nadzorom!): 4 koraka
Samostalni Arduino 3.3V W / vanjski sat od 8 MHz koji se programira iz Arduino Uno putem ICSP / ISP -a (sa serijskim nadzorom!): 4 koraka

Video: Samostalni Arduino 3.3V W / vanjski sat od 8 MHz koji se programira iz Arduino Uno putem ICSP / ISP -a (sa serijskim nadzorom!): 4 koraka

Video: Samostalni Arduino 3.3V W / vanjski sat od 8 MHz koji se programira iz Arduino Uno putem ICSP / ISP -a (sa serijskim nadzorom!): 4 koraka
Video: How to get 5V from 18650 Lithium Battery Powering Arduino ESP32 ESP8266 or charge your phone 2024, Studeni
Anonim
Samostalni Arduino 3.3V W / vanjski sat od 8 MHz koji se programira iz Arduino Uno putem ICSP / ISP -a (sa serijskim nadzorom!)
Samostalni Arduino 3.3V W / vanjski sat od 8 MHz koji se programira iz Arduino Uno putem ICSP / ISP -a (sa serijskim nadzorom!)
Samostalni Arduino 3.3V W / vanjski sat od 8 MHz koji se programira iz Arduino Uno putem ICSP / ISP -a (sa serijskim nadzorom!)
Samostalni Arduino 3.3V W / vanjski sat od 8 MHz koji se programira iz Arduino Uno putem ICSP / ISP -a (sa serijskim nadzorom!)

Ciljevi:

  • Za izgradnju samostalnog Arduina koji radi na 3.3V s vanjskog takta 8 MHz.
  • Za programiranje putem ISP-a (poznatog i kao ICSP, serijsko programiranje u krugu) s Arduino Uno (radi na 5V)

    Za uređivanje datoteke pokretačkog programa i snimanje pokretačkog programa (putem ISP -a)

  • Da biste mogli čitati serijske podatke s samostalnog Arduina putem FTDI kabela

    Da biste mogli čitati serijske podatke sa samostalnog Arduina bez FTDI kabela

Preambula:

Pokušavao sam izgraditi svoj samostalni projekt, ali nisam vidio sveobuhvatne vodiče o pokretanju, programiranju i nadzoru samostalnog Arduina - osobito onog koji radi na vanjskom taktu od 8 MHz i 3,3 V, a programirao ga je Arduino UNO. Sastavio sam niz zasebnih vodiča i pokušao sam referencirati odakle sam dobio podatke kako bih odao priznanje o tome gdje kredit dospijeva. Ovaj vodič je rezultat višednevnog traženja rješenja i pronalaženja njegovih dijelova odjednom dok sam gradio vlastiti projekt. Također, povezao sam nekoliko korisnih proizvoda koji bi mi došli u ruke ne zato što sam povezan s bilo kojim od tvrtkama, ali zato što je važno uključiti posebne stavke na koje se pozivam.

Uobičajena pitanja prije nego počnemo:

Zašto ga trebate programirati s ISP -om i nadzirati putem FTDI -ja? Zašto ga jednostavno ne možete programirati putem FTDI -ja?

Morat ćemo promijeniti postavke osigurača ubacivanjem novog pokretačkog programa, a to ne možete učiniti putem serijske komunikacije. Bootloader morate snimiti putem ISP -a. Ovo je također korisno za one koji nemaju prethodno učitani ATMEGA328 čip.

Zašto jednostavno ne koristim ISP kabel sa serijskim nadzorom, poput ovog?

Možda, poput mene, jednostavno nemate jedan i radije ćete koristiti ono što imate umjesto da čekate da vam ga pošalju! Slučajno imam FTDI kabel (iako ćete u konačnici otkriti da vam čak ni ne treba: samo vam olakšava život).

Ne trebam li mjenjač logičke razine s Unoa na samostalni Arduino?

Da, morate, ali pokazat ću vam kako sami napraviti. Kao i ISP kabel, slučajno ga nemam.

Želim ga napajati vanjskim napajanjem. Kako da to učinim?

Postoji mnogo vodiča koji pokazuju kako pokrenuti samostalni Arduino bez energije baterije. Napisat ću kako sam to napravio i povezati ga ovdje [umetnut ću kasnije].

VODIČ

Korak 1: Izgradnja samostalnog Arduina

Izgradnja samostalnog Arduina
Izgradnja samostalnog Arduina
Izgradnja samostalnog Arduina
Izgradnja samostalnog Arduina

1) Napravite samostalni Arduino s ove veze. Jedini dio vodiča koji vam je potreban su "Osnove ATMEGA8/168/328".

  • možete napajati samostalni Arduino sa 3,3 V iz Arduino Uno. (Možete preskočiti prvi odjeljak vodiča pod naslovom "Dodavanje kruga za napajanje."
  • Zamijenite sat od 16 MHz sa taktom od 8 Mhz.
  • Dodajte 0,1 uF ograničenja između: VCC i Gnd (obje strane) VRef i Gnd.

    • Nemam ove slike na slici, ali ih imam u svojim projektima!
    • Znam da je to oscilator od 16 MHz na fotografiji. Fotografirao sam prije nego sam shvatio sve što sam učinio u vodiču!

Izvor slike pinout ATMEGA328p ovdje.

Uobičajeni savjeti za rješavanje problema

  • Provjerite jeste li resetirali postavljeno visoko preko 10k otpornika iz VCC -a na pin 1 ATMEGA -e. Ako je iglica uzemljena ili pluta, neće raditi.
  • Dvaput provjerite jeste li ispravno umetnuli žice i oscilator.
  • Za oscilator od 8 MHz koristite kondenzatore od 22 pF. Drugačije neće funkcionirati.
  • Uvjerite se da je uređaj napajan.

Korak 2: ISP ožičenje

ISP ožičenje
ISP ožičenje
ISP ožičenje
ISP ožičenje

2) Kreirajte dio ISP -a

Ovaj ćete vodič slijediti malim, ali vrlo važnim korakom.

Razlog zašto ne možete jednostavno slijediti vodič je zato što vam nedostaje ključni dio: ne možete programirati 3.3V uređaj izravno s 5V veza. (Barem nisam mogao: ne bi uspjelo dok ovo ne učinim). Morate umetnuti mjenjač logičke razine koji pomiče 5V signale s UNO -a na samostalni Arduino od 3,3 V.

Ako nemate ploču za prebacivanje logičke razine, možete je napraviti pomoću otpornika. Sve što mjenjač logičke razine zaista jest (sve dok se pomaknete prema dolje) je djelitelj napona. Trebat će vam 6 istih otpornika, ništa previsoko ili prenisko. Koristio sam otpornike od 220 ohma, ali siguran sam da bi čak i 10 k otpornika radilo.

Za SCK (digitalni pin 13) i MOSI (digitalni pin 11) upotrijebite razdjelnik napona za smanjenje napona za jednu trećinu. U biti ćete imati jedan Uno SCK i MOSI, zatim otpornik (220 ohma), zatim SCK i MOSI spojen na samostalni Arduino i 2 otpornika (ukupno 440 ohma) na masu.

Dakle, pročitajte vodič koji je povezan na početku ovog odjeljka, ali uključite razdjelnike napona između SCK i MOSI. Zapamtite, SCK, MISO, MOSI i RESET su pinovi 13, 12, 11 i 10 na Uno -u, ali su pinovi 19, 18, 17 i 1 na samostalnom Arduinu!

Uobičajeni savjeti za rješavanje problema

  • PROVJERITE OŽIČENJE

    • Ako prilikom pokušaja pisanja programa dobivate potpis uređaja svih 0, tada je vaše ožičenje gotovo sigurno isključeno ili samostalni Arduino ne dobiva napajanje.
    • Također provjerite imate li žicu za resetiranje od 10 na Uno do 1 na samostalnom Arduinu
  • PROVJERITE RAZDJELNIKE NAPONA

    Provjerite imate li razdjelnike napona u omjeru 1: 2 (visoka strana: niska strana) za otpornike i za SCK i za MOSI. Npr. 220 otpornik na strani +5V, a zatim 2 220 ohmska otpornika (ukupno 440 ohma) prema tlu sa signalom prema samostalnom Arduinu u sredini

Korak 3: Uredite datoteku Bootloader, narežite Bootloader i prenesite svoju skicu

Uredite datoteku Bootloader, narežite Bootloader i prenesite svoju skicu
Uredite datoteku Bootloader, narežite Bootloader i prenesite svoju skicu
Uredite datoteku Bootloader, narežite Bootloader i prenesite svoju skicu
Uredite datoteku Bootloader, narežite Bootloader i prenesite svoju skicu

3) Uredite datoteku bootloader (board.txt) i snimite bootloader na samostalni Arduino. Prenesite svoju skicu

Uređivanje datoteke za podizanje sustava

Da biste pokrenuli samostalni Arduino, morat ćete urediti postavke osigurača smeđe boje u bootloaderu. U suprotnom ćete moći snimiti pokretački program na njemu, ali nećete moći pokrenuti skice.

Možete potpuno ukloniti otkrivanje smeđe boje, ali to ne bih preporučio. Umjesto toga, spustit ćemo ga s 2,7 V (ono što je na mom čipu zadano) i zamijeniti ga s 1,8 V. U konačnici, međutim, pomoću kalkulatora osigurača možete odabrati koje postavke smeđe boje želite.

Datoteka moje ploče nalazila se na sljedećem mjestu:

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

Međutim, možda imate više od jedne datoteke files.txt u mapi hardvera osim /arudino /. Uređivat ćete datoteku board.txt na / arduino / lokaciji jer ćete mijenjati odjeljak ATMEGA328p (3,3 V, 8 MHz).

Uređenu datoteku Board.txt možete izgubiti ako ponovno instalirate ili ažurirate Arduino IDE (prema ovom postu). To znači da ćete, ako ažurirate Arduino IDE, morati ponovno promijeniti ove postavke ako želite stvoriti još jedan isti samostalni Arduino.

U datoteci board.txt pomaknite se prema dolje ili potražite "Pro Mini". Odjeljak je naslovljen "pro.name = Arduino Pro ili Pro Mini". Pomaknite se dolje do pododjeljka "pro.menu.cpu.8MHzatmega328 = ATmega328P (3,3 V, 8 MHz)".

Potražite redak koji kaže "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

Promijenite postavke na xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Spremi i izađi.

Paljenje Bootloader -a

Nakon što to učinite, možete slijediti odjeljak "Upute" u vodiču za ISP -e od koraka 1 do 5.

Neke stvari treba pojasniti:

  • Kada prenosite skicu "Arduino kao ISP", morate biti sigurni da ste odabrali ispravan COM port i procesor.

    U ovom slučaju to znači da ste odabrali COM port vašeg Arduina u Alati-> Port: COM X (Arduino Uno), a ploča je Arduio Uno

  • Odaberite ispravnog programera: pod Alati-> Programer-> Arduino kao ISP.

    NE ArduinoISP ili ArduinoISP.org

  • Prije snimanja pokretačkog programa, promijenite ploču "Pro ili Pro Mini" i Procesor u "ATMEGA328p (3,3 V, 8 MHz)".

    Nećete vidjeti odjeljak procesora sve dok ne odaberete ispravnu vrstu ploče

Spalite bootloader na samostalni Arduino PRIJE nego pokušate napisati skice na njega.

Učitavanje skice

Ovo je veoma važno. Sada možete programirati bilo Arduino: Uno i samostalni. Ako ne učitate na ispravan uređaj, morate ponoviti gornji odjeljak i prepisati Arduino kao ISP program na Uno -u.

Kad prenesete svoju skicu, pazite da kliknete Alati -> Prenesi pomoću programatora ILI kliknite Ctrl+Shift+U. Također možete držati shift i kliknuti ikonu strelice, ali nemojte pritisnuti ikonu strelice bez držanja shift.

Uobičajeni savjeti za rješavanje problema

  • Uključite opširni izlaz za rješavanje problema.
  • "Potpis uređaja je 0!" [Ovo će se vrlo vjerojatno dogoditi.]

    • pogledajte odjeljak ISP ožičenje. Ili ste pogrešno spojili samostalni Arduino ili se ne uključuje.
    • Provjerite jeste li odabrali ispravan COM port i ploču / procesor. Kada snimate pokretački program, MORATE se pobrinuti da na njemu palite pokretački program Pro Mini 3.3V 8 MHz ili se osigurači neće ispravno postaviti.
  • "Uredio sam datoteku board.txt, ali ne vidim uređivanja"

    Provjerite jeste li uredili ispravnu datoteku Board.txt. Pokušajte ažurirati Arduino IDE ako uređivanja ne funkcioniraju ili privremeno uklonite druge mape u vašoj / hardverskoj / mapi

  • "Ne mogu pronaći pro mini odjeljak Board.txt!"

    Ne tražite pravu datoteku Board.txt. Provjerite Arduino // hardware/arduino/mapu

Korak 4: Serijska komunikacija

4) Nadgledajte samostalni uređaj putem serijske komunikacije

To doista možete učiniti pomoću 2 metode, pa ako nemate niti FTDI kabel / ploču za probijanje, to nije kraj svijeta. I zapamtite, skica koju ste prenijeli u samostalni Arduino mora imati izjave Serial.print koje možete pročitati: ako to niste napisali u programu, nećete vidjeti ništa!

Ako nemate FTDI kabel

Nakon što ste snimili pokretački program i napisali program koji želite, možete (vrlo pažljivo i sjećajući se u kojem smjeru se vraća) ukloniti ATMEGA328 DIP čip iz Arduino Uno. Za to preporučujem korištenje ravne glave.

Možete spojiti samostalni Arduino RX na Uno RX i TX na TX. Da, obično je suprotno, ali možete misliti da Uno "prosljeđuje" podatke na IDE -ov serijski monitor. Zato u ovom slučaju ne povezujete RX na TX i TX ro RX. Prilikom izvođenja programa provjerite jeste li odabrali COM priključak Arduino Uno i otvorite serijski montor. Moći ćete vidjeti samostalni Arduino serijski izlaz.

(Ovo je rješenje ovdje pripisano Robin2.)

Ako imate FTDI kabel / ploču

(Koristim Sparkfun -ovu FTDI ploču koju sam pretvorio u 3.3V pomoću lemne ploče na stražnjoj strani)

Jednostavno spojite GND ploče za razbijanje na samostalno uzemljenje Arduina i spojite RX razbojnika na Arduino TX i TX na RX. (Ako ste samo serijski nadzor i ne pišete ništa natrag, možete samo spojiti RX matične ploče na Arduino TX).

Imajte na umu da u ovom trenutku imate mogućnost napajanja samostalnog Arduina putem Uno ILI FTDI kabela. Ne spajajte oba izvora napajanja istovremeno! Imajte na umu da ćete morati promijeniti COM port jer će se razlikovati od Arduino Uno COM porta.

Uobičajeni savjeti za rješavanje problema

  • "Ne vidim ništa!"

    • Provjerite imate li omogućen ispravan COM port.
    • Provjerite imate li najnovije upravljačke programe za FTDI.
    • PROVJERITE DA JE UZEMLJENJE POVEZANO.
  • "Sve što vidim je izlaz smeća u serijski monitor!"

    • Dobivate nešto što je dobar znak.
    • Ipak, provjerite napon FTDI ploče.
    • Samostalni Arduino daje 3.3V na svom TX -u, a FTDI ploča ga možda neće pokupiti ako očekuje 5V.
    • Provjerite brzinu prijenosa.
    • Provjerite jeste li spojeni na masu i spojeni samo jedan izvor napajanja! (Tj. Nemojte napajati samostalni Arduino s Uno I vaše FTDI ploče.

Preporučeni: