Innholdsfortegnelse:
- Trinn 1: Bygg den frittstående Arduino
- Trinn 2: Internett -leverandøren
- Trinn 3: Rediger Bootloader -filen, Brenn Bootloader og last opp skissen din
- Trinn 4: Seriell kommunikasjon
Video: Frittstående Arduino 3.3V W / ekstern 8 MHz klokke som programmeres fra Arduino Uno gjennom ICSP / ISP (med seriell overvåking!): 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Mål:
- For å bygge en frittstående Arduino som kjører på 3.3V av en 8 MHz ekstern klokke.
-
For å programmere den via ISP (også kjent som ICSP, seriell programmering i krets) fra en Arduino Uno (kjører på 5V)
For å redigere bootloader -filen og brenne bootloader (via ISP)
-
For å kunne lese seriell informasjon fra den frittstående Arduino via FTDI -kabel
For å kunne lese seriell informasjon fra den frittstående Arduino uten FTDI -kabelen
Innledning:
Jeg prøvde å bygge mitt frittstående prosjekt, men fant ingen omfattende veiledninger om kjøring, programmering og overvåking av en frittstående Arduino - spesielt en som kjører på en 8Mhz ekstern klokke og 3,3V og programmert av en Arduino UNO. Jeg har satt sammen en rekke separate guider, og jeg har prøvd å referere til hvor jeg fikk informasjonen fra for å gi kreditt der kreditten skyldes. Denne guiden er et resultat av mange dager på jakt etter løsninger og funnet deler av den om gangen mens jeg bygde mitt eget prosjekt. Jeg har også koblet flere nyttige produkter som ville komme i hånden, ikke fordi jeg er tilknyttet noen av selskapene, men fordi det er relevant å inkludere de spesifikke elementene jeg refererer til.
Vanlige spørsmål før vi starter:
Hvorfor trenger du å programmere den med ISP og overvåke via FTDI? Hvorfor kan du ikke bare programmere det via FTDI?
Vi må endre sikringsinnstillingene ved å brenne en ny oppstartslaster, og du kan ikke gjøre det via seriell kommunikasjon. Du må brenne oppstartslasteren via ISP. Dette er også nyttig for de som ikke har en forhåndslastet ATMEGA328-brikke.
Hvorfor bruker jeg ikke bare en ISP -kabel med seriell overvåking, som denne?
Kanskje, som meg, du tilfeldigvis ikke har en, og i stedet for å vente på at en skal sendes, liker du å bruke det du har! Jeg har tilfeldigvis en FTDI -kabel (selv om du til slutt vil finne at du ikke engang trenger det: det gjør livet ditt enklere).
Trenger jeg ikke en logisk nivåskifter fra Uno til frittstående Arduino?
Ja, det gjør du, men jeg skal vise deg hvordan du lager en selv. I likhet med ISP -kabelen har jeg tilfeldigvis ikke en.
Jeg vil kjøre den ut av ekstern strøm. Hvordan gjør jeg det?
Det er mange guider som viser hvordan du kjører en frittstående Arduino uten batteristrøm. Jeg skal skrive hvordan jeg gjorde det og koble det til her [vil sette inn senere].
GUIDEN
Trinn 1: Bygg den frittstående Arduino
1) Bygg den frittstående Arduino fra denne lenken. Den eneste delen av guiden du trenger er "ATMEGA8/168/328 Basics".
- du kan drive den frittstående Arduino fra 3.3V ut av Arduino Uno. (Du kan hoppe over den første delen av opplæringen med tittelen "Legge til krets for en strømforsyning."
- Erstatt 16 MHz -klokken med en 8 Mhz -klokke.
-
Legg til 0,1 uF caps mellom: VCC og Gnd (begge sider) VRef og Gnd.
- Jeg har ikke disse inkludert på bildet, men jeg har dem i prosjektene mine!
- Jeg vet at det er en 16 MHz oscillator på bildet. Jeg tok bildet før jeg fant ut alt jeg gjorde i guiden!
ATMEGA328p pinout -bildekilde her.
Vanlige feilsøkingstips
- Sørg for at du har tilbakestilt høyt via en 10k motstand fra VCC til pin 1 i ATMEGA. Hvis pinnen er jordet eller flyter vil den ikke fungere.
- Dobbeltsjekk at du har satt inn ledninger og oscillatoren riktig.
- Sørg for at du bruker 22pF kondensatorer for 8 MHz oscillatoren. Det vil ikke fungere ellers.
- Sørg for at enheten er slått på.
Trinn 2: Internett -leverandøren
2) Lag ISP -delen
Du følger denne guiden her med et lite, men veldig viktig trinn.
Grunnen til at du ikke bare kan følge guiden er fordi du mangler en viktig del: du kan ikke programmere en 3.3V -enhet direkte fra 5V -tilkoblingene. (Jeg kunne i hvert fall ikke: det ville ikke fungere før jeg gjorde dette). Du må sette inn en logisk nivåskifter som flytter 5V -signalene fra UNO til 3.3Vstandalone Arduino.
Hvis du ikke har et logisk nivåskifterbrett, kan du lage et ved hjelp av motstander. Alt en logisk nivåskifter virkelig er (så lenge du skifter ned) er en spenningsdeler. Du trenger 6 av de samme motstandene, ingenting for høyt eller for lavt. Jeg brukte 220 ohm motstander, men jeg er sikker på at selv 10k motstander ville fungere.
For SCK (digital pin 13) og MOSI (digital pin 11), bruk en spenningsdeler for å kutte spenningen med en tredjedel. I hovedsak kommer du til å ha en Uno SCK og MOSI, deretter en motstand (220 ohm), deretter SCK og MOSI koblet til den frittstående Arduino og 2 motstander (totalt 440 ohm) til bakken.
Så, les veiledningen som er koblet i begynnelsen av denne delen, men inkluder spenningsdelere mellom SCK og MOSI. Husk, SCK, MISO, MOSI og RESET er pinner 13, 12, 11 og 10 på Uno, men er pinner 19, 18, 17 og 1 på den frittstående Arduino!
Vanlige feilsøkingstips
-
Sjekk ledningen
- Hvis du får en enhetssignatur på alle 0 -tallet når du prøver å skrive program, er ledningene nesten helt av, eller den frittstående Arduino får ikke strøm.
- Sørg også for at du har tilbakestillingskabelen fra 10 på Uno til 1 på den frittstående Arduino
-
Sjekk spenningsdelerne
Sørg for at du har spenningsdelere med forholdet 1: 2 (høyside: lavside) for motstandene for både SCK og MOSI. F.eks. en 220 motstand på +5v siden og deretter 2 220 ohm motstander (totalt 440 ohm) mot bakken med signalet mot den frittstående Arduino i midten
Trinn 3: Rediger Bootloader -filen, Brenn Bootloader og last opp skissen din
3) Rediger bootloader (boards.txt) -filen og brenn bootloaderen til den frittstående Arduino. Last opp skissen din
Redigerer bootloader -filen
For å få den frittstående Arduino til å kjøre, må du redigere innstillingene for brownout -sikringen til oppstartslasteren. Ellers kan du brenne en bootloader på den, men du kan ikke kjøre noen skisser.
Du kan fjerne brownout -deteksjonen helt, men jeg vil ikke anbefale det. I stedet skal vi senke den fra 2,7V (det som kom på brikken min som standard) og erstatte den med 1,8V. Til syvende og sist kan du imidlertid velge hvilke bruningsinnstillinger du vil bruke ved å bruke sikringskalkulatoren her.
Brettfilen min var på følgende sted:
C: / Program Files (x86) Arduino / hardware / arduino / avr
Du kan imidlertid ha mer enn én boards.txt -fil i maskinvaremappen din, bortsett fra /arudino /. Du kommer til å redigere boards.txt -filen i / arduino / location fordi du kommer til å endre ATMEGA328p (3.3V, 8 MHz) -delen.
Du kan miste den redigerte boards.txt -filen hvis du installerer eller oppdaterer Arduino IDE (i henhold til dette innlegget). Dette betyr at hvis du oppdaterer Arduino IDE, må du endre disse innstillingene igjen hvis du vil lage en annen av samme frittstående Arduino.
I boards.txt -filen, bla ned eller søk etter "Pro Mini". Seksjonen har tittelen "pro.name = Arduino Pro eller Pro Mini". Rull ned til underseksjonen "pro.meny.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)".
Se etter linjen som sier "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"
Endre innstillingene til xFE. (pro.meny.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).
Lagre og lukk.
Burning the Bootloader
Når du har gjort dette, kan du følge "Instruksjoner" -delen i ISP -guiden fra trinn 1 til 5.
Noen ting å avklare:
-
Når du laster opp skissen "Arduino som ISP", må du sørge for at du har valgt riktig COM -port og prosessor.
I dette tilfellet betyr det at du har valgt COM-porten på Arduino i Verktøy-> Port: COM X (Arduino Uno) og brettet er Arduio Uno
-
Velg riktig programmerer: under Verktøy-> Programmerer-> Arduino som Internett-leverandør.
IKKE ArduinoISP eller ArduinoISP.org
-
Før du brenner bootloderen, må du endre kortet "Pro eller Pro Mini" og prosessor til "ATMEGA328p (3.3V, 8 MHz)".
Du vil ikke se prosessorseksjonen før du velger riktig korttype
Brenn oppstartslasteren på den frittstående Arduino FØR du prøver å skrive skisser på den.
Laster opp skissen
Dette er veldig viktig. Du kan nå programmere enten Arduino: Uno og Standalone. Hvis du ikke laster opp til riktig enhet, må du gjenta delen ovenfor og skrive Arduino som ISP -program på Uno.
Når du laster opp skissen din, må du klikke på Verktøy -> Last opp ved hjelp av programmerer ELLER klikk på Ctrl+Shift+U. Du kan også holde skift og klikke på pilikonet, men ikke klikke på pilikonet uten å holde skift.
Vanlige feilsøkingstips
- Slå på omfattende utdata for feilsøking.
-
"Signaturen til enheten er alle 0 -er!" [Denne er svært sannsynlig.]
- se ISP kabelføring. Enten har du koblet den frittstående Arduino feil eller så blir den ikke slått på.
- Sørg for at du har valgt riktig COM -port og brett / prosessor. Når du brenner bootloaderen, MÅ du sørge for at du brenner Pro Mini 3.3V 8 MHz bootloader på den, ellers vil sikringene ikke settes riktig.
-
"Jeg har redigert boards.txt -filen, men ser ikke redigeringene"
Sørg for at du har redigert den riktige boards.txt -filen. Prøv å oppdatere Arduino IDE hvis redigeringene ikke fungerer, eller fjern andre mapper i din / hardware / mappe midlertidig
-
"Jeg finner ikke pro mini -delen av boards.txt!"
Du ser ikke i den riktige boards.txt -filen. Sjekk mappen Arduino // hardware/arduino/
Trinn 4: Seriell kommunikasjon
4) Overvåk den frittstående enheten via seriell kommunikasjon
Du kan virkelig gjøre dette via 2 metoder, så hvis du ikke engang har et FTDI -kabel / utbruddskort, er det ikke verdens ende. Og husk, skissen du lastet opp til den frittstående Arduino må ha Serial.print -utsagn for at du skal kunne lese: hvis du ikke skrev det i programmet, ser du ingenting!
Hvis du ikke har en FTDI -kabel
Etter at du har brent opplaster og skrevet programmet du vil, kan du (veldig nøye og huske hvilken retning den går tilbake i) fjerne ATMEGA328 DIP -brikken fra Arduino Uno. Jeg anbefaler å bruke et flathead for dette.
Du kan koble den frittstående Arduino's RX til Uno's RX og TX til TX. Ja, det er normalt motsatt, men du kan tenke på Uno som å "videresende" informasjonen til IDEs serielle skjerm. Derfor kobler du ikke RX til TX og TX ro RX i dette tilfellet. Når du kjører programmet, må du kontrollere at du har valgt Arduino Unos COM -port og åpne seriell montor. Du vil kunne se standone Arduinos serieutgang.
(Denne løsningen er kreditert Robin2 her.)
Hvis du har en FTDI -kabel / -kort
(Jeg bruker Sparkfun's FTDI -kort som jeg har konvertert til 3,3V ved hjelp av loddeputen på baksiden)
Bare koble breakout -brettets GND til den frittstående Arduino -bakken og koble breakoutboardets RX til Arduino's TX og TX til RX. (Hvis du BARE seriell overvåker og ikke skriver noe tilbake, kan du bare koble brødbrettets RX til Arduino TX).
Husk at du har muligheten til å drive den frittstående Arduino via Uno ELLER FTDI -kabelen. Ikke koble til begge strømkildene samtidig! Vær oppmerksom på at du må endre COM -porten siden den kommer til å være annerledes enn Arduino Uno COM -porten.
Vanlige feilsøkingstips
-
"Jeg ser ingenting!"
- Sjekk om du har riktig COM -port aktivert.
- Sjekk om du har de nyeste FTDI -driverne.
- SIKR JORDEN ER TILKOBLET.
-
"Alt jeg ser er søppelutgang i seriell skjerm!"
- Du får noe som er et godt tegn.
- Sjekk imidlertid spenningen til FTDI -kortet.
- Den frittstående Arduino sender ut 3.3V på sin TX, og FTDI -kortet kan ikke hente den hvis den venter 5v.
- Sjekk overføringshastigheten.
- Sørg for at du har bakken tilkoblet og at bare én strømkilde er tilkoblet! (Det vil si at du ikke driver den frittstående Arduino fra Uno OG FTDI -kortet.
Anbefalt:
Frittstående ATmega328p (med intern 8 MHz klokke): 4 trinn
Frittstående ATmega328p (ved bruk av intern 8 MHz klokke): ATmega328p er en enkeltbrikke mikrokontroller opprettet av Atmel i megaAVR-familien (senere Microchip Technology kjøpte Atmel i 2016). Den har en modifisert Harvard-arkitektur med 8-biters RISCprosessor-kjerne. Denne mikrokontrolleren er hjernen til Arduino
En liten og billig lommecomputer som kan programmeres hvor som helst: 5 trinn
En liten og billig lommecomputer som kan programmeres hvor som helst.: Du kan gjøre CardKB til en lommedatamaskin! Komplett lommecomputer for CardKB ved hjelp av ArduinoBaisc, CardKB, I2C OLED -skjerm. Siden BASIC bruker ArduinoBasic (https://github.com/robinhedwards/ArduinoBASIC), støtter den nesten alle normale funksjoner som
$ 2 Arduino. ATMEGA328 som frittstående. Enkelt, billig og veldig lite. en komplett guide.: 6 trinn (med bilder)
$ 2 Arduino. ATMEGA328 som frittstående. Enkelt, billig og veldig lite. en komplett guide.: I denne instruksjonsboken lærer du hvordan du bruker Arduino ATMEGA328 mikrokontrollerbrikke som en frittstående mikrokontroller. De koster bare 2 dollar, kan gjøre det samme som din Arduino og gjøre prosjektene dine ekstremt små. Vi dekker pin -layouten
Lage en klokke fra en klokke: 11 trinn (med bilder)
Opprette en klokke fra en klokke: I denne instruksen tar jeg en eksisterende klokke og lager det jeg føler er en bedre klokke. Vi går fra bildet til venstre til bildet til høyre. Før du begynner på din egen klokke, må du vite at gjenmontering kan være utfordrende som den viktigste
Lag en ekstern harddisk fra gammel ekstern CD/RW: 5 trinn
Lag en ekstern harddisk fra gammel ekstern CD/RW: Ganske rett fremover konvertering av en gammel ekstern cd/rw til en mer nyttig ekstern harddisk. Rekvisita 1-ekstern cd/rw (helst den mer boksete typen) 1-harddisk (må stemme overens med den interne kontakten på stasjonshuset, må formateres/syses) 1-sm