Sadržaj:
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
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Ciljevi:
- Za izgradnju samostalnog Arduina koji radi na 3.3V sa vanjskog takta 8 MHz.
-
Za programiranje putem ISP-a (poznatog i kao ICSP, serijsko programiranje u krugu) iz Arduino Uno (radi na 5V)
Za uređivanje datoteke za pokretanje i snimanje pokretačkog programa (putem ISP -a)
- Da biste mogli čitati serijske podatke sa 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 praćenju samostalnog Arduina - posebno 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 informacije kako bih odao priznanje o tome gdje kredit dospijeva. Ovaj vodič je rezultat višednevnog traženja rješenja i pronalaženja njegovih dijelova u isto vrijeme dok sam gradio vlastiti projekt. Također, povezao sam nekoliko korisnih proizvoda koji bi mi došli u ruke, a ne zato što sam povezan s bilo kojim od kompanijama, ali zato što je relevantno uključiti posebne stavke na koje mislim.
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 upaljivanjem novog pokretačkog programa, a to ne možete učiniti putem serijske komunikacije. Bootloader morate narezati putem ISP -a. Ovo je takođe 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 isporuče! Slučajno imam FTDI kabel (iako ćete na kraju otkriti da vam čak ni ne treba: samo vam olakšava život).
Ne treba li mi prebacivanje logičkog nivoa 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 to mogu učiniti?
Postoji mnogo vodiča koji pokazuju kako pokrenuti samostalni Arduino bez energije baterije. Napisaću kako sam to uradio i povezaću ga ovde [ubaciću kasnije].
VODIČ
Korak 1: 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 iz 3.3V iz Arduino Uno. (Možete preskočiti prvi odjeljak vodiča pod naslovom "Dodavanje kruga za napajanje."
- Takt od 16 MHz zamijenite sa 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 što sam shvatio sve što sam uradio 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 pravilno umetnuli žice i oscilator.
- Obavezno koristite kondenzatore od 22 pF za oscilator od 8 MHz. Drugačije neće raditi.
- Uverite se da je uređaj uključen.
Korak 2: ISP ožičenje
2) Kreirajte dio ISP -a
Ovdje ćete slijediti ovaj vodič s malim, ali vrlo važnim korakom.
Razlog zašto ne možete samo slijediti vodič je zato što vam nedostaje ključni dio: ne možete programirati 3.3V uređaj izravno iz 5V veza. (Barem nisam mogao: ne bi uspjelo dok ovo ne učinim). Morate umetnuti mjenjač logičkog nivoa koji prebacuje 5V signale iz UNO -a na samostalni Arduino od 3.3V.
Ako nemate ploču za prebacivanje logičkog nivoa, možete je napraviti pomoću otpornika. Sve što mjenjač logičkog nivoa 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 da biste smanjili napon za jednu trećinu. U osnovi ć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č 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
-
PROVERITE OŽIČENJE
- Ako prilikom pokušaja pisanja programa dobijete potpis uređaja sa svih 0, ožičenje je gotovo sigurno isključeno ili samostalni Arduino nema napajanje.
- Također provjerite imate li žicu za resetiranje sa 10 na Uno -u na 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. otpornik 220 na strani +5V, a zatim 2 otpornika od 220 ohma (ukupno 440 ohma) prema tlu sa signalom prema samostalnom Arduinu u sredini
Korak 3: Uredite datoteku pokretačkog programa, narežite pokretački program i otpremite svoju skicu
3) Uredite datoteku bootloader (board.txt) i narežite bootloader na samostalni Arduino. Otpremite svoju skicu
Uređivanje datoteke za pokretanje
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 sa 2,7 V (ono što je na čipu zadano) i zamijeniti ga s 1,8 V. Na kraju, međutim, možete odabrati željene postavke smeđe boje pomoću kalkulatora osigurača ovdje.
Moja datoteka sa pločama bila je na sljedećoj lokaciji:
C: / Program Files (x86) Arduino / hardware / arduino / avr
Međutim, možda imate više od jedne files.txt datoteke 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 ponovo instalirate ili ažurirate Arduino IDE (prema ovom postu). To znači da ćete, ako ažurirate Arduino IDE, morati ponovo 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 pododsjeka "pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)".
Potražite liniju koja kaže "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"
Promijenite postavke na xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).
Sačuvaj i izađi.
Snimanje pokretačkog programa
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)".
Odeljak procesora nećete videti dok ne izaberete odgovarajući tip ploče
Snimite bootloader na samostalni Arduino PRIJE nego pokušate napisati skice na njemu.
Otpremanje skice
Ovo je vrlo 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.
Kada učitavate svoju skicu, obavezno kliknite Alati -> Otpremi pomoću programatora ILI kliknite Ctrl+Shift+U. Takođe možete da zadržite taster shift i kliknete na ikonu strelice, ali nemojte da kliknete na ikonu strelice bez držanja tastera shift.
Uobičajeni savjeti za rješavanje problema
- Uključite detaljni izlaz za rješavanje problema.
-
"Potpis uređaja je 0!" [Ovo će se vrlo vjerovatno dogoditi.]
- pogledajte odjeljak ISP ožičenje. Ili ste pogrešno povezali samostalni Arduino ili se ne uključuje.
- Uvjerite se da ste odabrali ispravan COM port i ploču / procesor. Kada snimate pokretački program, MORATE osigurati 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"
Uvjerite se da ste uredili ispravnu datoteku Board.txt. Pokušajte ažurirati Arduino IDE ako izmjene ne funkcioniraju ili privremeno uklonite druge mape u vašem / hardverskom / folderu
-
"Ne mogu pronaći pro mini odjeljak board.txt!"
Ne tražite pravu datoteku Board.txt. Provjerite Arduino // hardware/arduino/folder
Korak 4: Serijska komunikacija
4) Nadgledajte samostalni uređaj putem serijske komunikacije
To zaista možete učiniti putem 2 metode, pa ako nemate čak ni FTDI kabel / ploču za probijanje, to nije kraj svijeta. I zapamtite, skica koju ste postavili na 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 kojoj se orijentaciji vraća) ukloniti ATMEGA328 DIP čip iz Arduino Uno. Za ovo preporučujem korištenje ravne glave.
Možete povezati samostalni Arduino -ov RX na Uno -ov 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. Kada pokrećete svoj program, provjerite jeste li odabrali COM port Arduino Uno i otvorite serijski montor. Moći ćete vidjeti samostalni Arduino serijski izlaz.
(Ovo rješenje je 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 poleđini)
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, 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 povezujte 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!"
- Proverite da li je omogućen ispravan COM port.
- Provjerite imate li najnovije upravljačke programe za FTDI.
- Uvjerite se da je uzemljenje povezano.
-
"Sve što vidim je izlaz smeća u serijski monitor!"
- Dobijate nešto što je dobar znak.
- Međutim, provjerite napon FTDI ploče.
- Samostalni Arduino daje 3.3V na svom TX -u i 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 -a i vaše FTDI ploče.