Innholdsfortegnelse:

Frittstående Arduino 3.3V W / ekstern 8 MHz klokke som programmeres fra Arduino Uno gjennom ICSP / ISP (med seriell overvåking!): 4 trinn
Frittstående Arduino 3.3V W / ekstern 8 MHz klokke som programmeres fra Arduino Uno gjennom ICSP / ISP (med seriell overvåking!): 4 trinn

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

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
Video: How to get 5V from 18650 Lithium Battery Powering Arduino ESP32 ESP8266 or charge your phone 2024, November
Anonim
Frittstående Arduino 3.3V W / ekstern 8 MHz klokke programmeres fra Arduino Uno gjennom ICSP / ISP (med seriell overvåking!)
Frittstående Arduino 3.3V W / ekstern 8 MHz klokke programmeres fra Arduino Uno gjennom ICSP / ISP (med seriell overvåking!)
Frittstående Arduino 3.3V W / ekstern 8 MHz klokke programmeres fra Arduino Uno gjennom ICSP / ISP (med seriell overvåking!)
Frittstående Arduino 3.3V W / ekstern 8 MHz klokke programmeres fra Arduino Uno gjennom ICSP / ISP (med seriell overvåking!)

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

Å bygge frittstående Arduino
Å bygge frittstående Arduino
Å bygge den frittstående Arduino
Å bygge 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

Internett -leverandøren
Internett -leverandøren
Internett -leverandøren
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

Rediger Bootloader -filen, Brenn Bootloader og last opp skissen din
Rediger Bootloader -filen, Brenn Bootloader og last opp skissen din
Rediger Bootloader -filen, Brenn Bootloader og last opp skissen din
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: