Indholdsfortegnelse:

Standalone Arduino 3.3V W / eksternt 8 MHz ur, der programmeres fra Arduino Uno gennem ICSP / ISP (med seriel overvågning!): 4 trin
Standalone Arduino 3.3V W / eksternt 8 MHz ur, der programmeres fra Arduino Uno gennem ICSP / ISP (med seriel overvågning!): 4 trin

Video: Standalone Arduino 3.3V W / eksternt 8 MHz ur, der programmeres fra Arduino Uno gennem ICSP / ISP (med seriel overvågning!): 4 trin

Video: Standalone Arduino 3.3V W / eksternt 8 MHz ur, der programmeres fra Arduino Uno gennem ICSP / ISP (med seriel overvågning!): 4 trin
Video: Pro Micro ATMEGA32U4 Arduino Pins and 5V, 3.3V Explained 2024, Juli
Anonim
Standalone Arduino 3.3V W / eksternt 8 MHz ur, der programmeres fra Arduino Uno gennem ICSP / ISP (med seriel overvågning!)
Standalone Arduino 3.3V W / eksternt 8 MHz ur, der programmeres fra Arduino Uno gennem ICSP / ISP (med seriel overvågning!)
Standalone Arduino 3.3V W / eksternt 8 MHz ur, der programmeres fra Arduino Uno gennem ICSP / ISP (med seriel overvågning!)
Standalone Arduino 3.3V W / eksternt 8 MHz ur, der programmeres fra Arduino Uno gennem ICSP / ISP (med seriel overvågning!)

Mål:

  • At bygge en selvstændig Arduino, der kører på 3.3V fra et 8 MHz eksternt ur.
  • At programmere det via ISP (også kendt som ICSP, seriel programmering i kredsløb) fra en Arduino Uno (kører ved 5V)

    For at redigere bootloader -filen og brænde bootloaderen (via internetudbyder)

  • For at kunne læse serielle oplysninger fra den selvstændige Arduino via FTDI -kabel

    For at kunne læse serielle oplysninger fra den selvstændige Arduino uden FTDI -kablet

Præambel:

Jeg forsøgte at bygge mit selvstændige projekt, men kunne ikke se nogen omfattende vejledninger om kørsel, programmering og overvågning af en selvstændig Arduino - især en, der kører fra et 8Mhz eksternt ur og 3,3V og programmeret af en Arduino UNO. Jeg har sammensat en række separate guider, og jeg har forsøgt at henvise til, hvor jeg fik oplysningerne fra for at give kredit, hvor kredit skyldes. Denne vejledning er resultatet af mange dage, der ledte efter løsninger og fandt dele af det ad gangen, mens jeg byggede mit eget projekt. Jeg har også forbundet flere nyttige produkter, der ville komme i hånden, ikke fordi jeg er tilknyttet nogen af virksomhederne, men fordi det er relevant at inkludere de specifikke poster, jeg refererer til.

Almindelige spørgsmål, inden vi starter:

Hvorfor skal du programmere det med ISP og overvåge via FTDI? Hvorfor kan du ikke bare programmere det via FTDI?

Vi bliver nødt til at ændre sikringsindstillingerne ved at brænde en ny bootloader ind, og du kan ikke gøre det via seriel kommunikation. Du skal brænde bootloaderen via internetudbyder. Dette er også nyttigt for dem, der ikke har en forudstartet ATMEGA328-chip.

Hvorfor bruger jeg ikke bare et ISP -kabel med seriel overvågning, som denne?

Måske har du ligesom mig bare tilfældigvis ikke en og snarere end at vente på, at en skal sendes, kan du lide at bruge det, du har! Jeg har tilfældigvis et FTDI -kabel (selvom du i sidste ende finder ud af, at du ikke engang har brug for det: det gør bare dit liv lettere).

Behøver jeg ikke en logisk niveauskifter fra Uno til den selvstændige Arduino?

Ja, det gør du, men jeg viser dig, hvordan du laver en selv. Ligesom ISP -kablet har jeg tilfældigvis ikke et.

Jeg vil køre det ud af ekstern strøm. Hvordan gør jeg det?

Der er masser af guider, der viser, hvordan man kører en selvstændig Arduino uden batteristrøm. Jeg vil skrive, hvordan jeg gjorde det, og linke det til her [indsættes senere].

GUIDEN

Trin 1: Byg den selvstændige Arduino

Bygger den selvstændige Arduino
Bygger den selvstændige Arduino
Bygger den selvstændige Arduino
Bygger den selvstændige Arduino

1) Byg den selvstændige Arduino fra dette link. Den eneste del af guiden, du har brug for, er "ATMEGA8/168/328 Basics".

  • du kan drive den selvstændige Arduino fra 3.3V ud af Arduino Uno. (Du kan springe det første afsnit af selvstudiet over med titlen "Tilføjelse af kredsløb til en strømforsyning."
  • Erstat 16 MHz -uret med et 8 Mhz -ur.
  • Tilføj 0,1 uF hætter mellem: VCC og Gnd (begge sider) VRef og Gnd.

    • Jeg har ikke disse inkluderet på billedet, men jeg har dem i mine projekter!
    • Jeg ved, at det er en 16 MHz oscillator på billedet. Jeg tog billedet, før jeg fandt ud af alt, hvad jeg gjorde i guiden!

ATMEGA328p pinout billedkilde her.

Almindelige fejlfindingstip

  • Sørg for, at du har nulstillet høj via en 10k modstand fra VCC til pin 1 i ATMEGA. Hvis stiften er jordet eller flyder, virker den ikke.
  • Dobbelttjek, at du har indsat ledninger og oscillatoren korrekt.
  • Sørg for at bruge 22pF kondensatorer til 8 MHz oscillatoren. Det fungerer ellers ikke.
  • Sørg for, at enheden er tændt.

Trin 2: ISP -ledningen

Internetleverandørens ledninger
Internetleverandørens ledninger
Internetleverandørens ledninger
Internetleverandørens ledninger

2) Opret ISP -delen

Du følger denne vejledning her med et lille, men meget vigtigt trin.

Grunden til, at du ikke bare kan følge guiden, er fordi du mangler en afgørende del: Du kan ikke programmere en 3.3V -enhed direkte fra 5V -forbindelserne. (Jeg kunne i hvert fald ikke: det ville ikke fungere, før jeg gjorde dette). Du skal indsætte en logisk niveauskifter, der flytter 5V -signalerne fra UNO til 3.3Vstandalone Arduino.

Hvis du ikke har et logisk niveau shifter board, kan du lave et ved hjælp af modstande. Alt hvad en logisk niveauskifter virkelig er (så længe du skifter ned) er en spændingsdeler. Du skal bruge 6 af de samme modstande, intet for højt eller for lavt. Jeg brugte 220 ohm modstande, men jeg er sikker på, at selv 10k modstande ville fungere.

For SCK (digital pin 13) og MOSI (digital pin 11) skal du bruge en spændingsdeler til at afbryde spændingen med en tredjedel. I det væsentlige vil du have en Uno SCK og MOSI, derefter en modstand (220 ohm), derefter SCK og MOSI forbundet til den selvstændige Arduino og 2 modstande (i alt 440 ohm) til jorden.

Så læs guiden, der er knyttet i begyndelsen af dette afsnit, men inkluder spændingsdelere mellem SCK og MOSI. Husk, SCK, MISO, MOSI og RESET er stifter 13, 12, 11 og 10 på Uno, men er stifter 19, 18, 17 og 1 på den selvstændige Arduino!

Almindelige fejlfindingstip

  • Tjek ledningen

    • Hvis du får en enheds signatur på alle 0'erne, når du prøver at skrive program, er din ledning næsten helt sikkert slukket, eller den selvstændige Arduino får ikke strøm.
    • Sørg også for, at du har nulstillingskablet fra 10 på Uno til 1 på den selvstændige Arduino
  • Tjek spændingsdelerne

    Sørg for, at du har spændingsdelere med et forhold på 1: 2 (høj side: lav side) til modstandene for både SCK og MOSI. F.eks. en 220 modstand på +5v siden og derefter 2 220 ohm modstande (i alt 440 ohm) mod jorden med signalet mod den selvstændige Arduino i midten

Trin 3: Rediger bootloader -filen, brænd bootloaderen og upload din skitse

Rediger bootloader -filen, brænd bootloaderen og upload din skitse
Rediger bootloader -filen, brænd bootloaderen og upload din skitse
Rediger bootloader -filen, brænd bootloaderen og upload din skitse
Rediger bootloader -filen, brænd bootloaderen og upload din skitse

3) Rediger bootloader (boards.txt) filen og brænd bootloaderen til den selvstændige Arduino. Upload din skitse

Redigering af bootloader -filen

For at få den selvstændige Arduino til at køre, skal du redigere indstillingerne for brownout -sikring af bootloaderen. Ellers vil du være i stand til at brænde en bootloader på den, men du vil ikke kunne køre nogen skitser.

Du kan fjerne brownout -detektionen helt, men jeg vil ikke anbefale det. I stedet vil vi sænke det fra 2,7V (hvad der kom på min chip som standard) og erstatte det med 1,8V. I sidste ende kan du dog vælge, hvilke brownout -indstillinger du vil have ved at bruge sikringsberegneren her.

Min bestyrelsesfil lå følgende sted:

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

Du kan dog have mere end én boards.txt -fil i din hardware -mappe bortset fra /arudino /. Du kommer til at redigere boards.txt -filen i / arduino / location, fordi du vil ændre ATMEGA328p (3.3V, 8 MHz) -afsnittet.

Du kan miste den redigerede boards.txt -fil, hvis du geninstallerer eller opdaterer Arduino IDE (ifølge dette indlæg). Det betyder, at hvis du opdaterer Arduino IDE, skal du ændre disse indstillinger igen, hvis du vil oprette en anden af den samme selvstændige Arduino.

I boards.txt -filen skal du rulle ned eller søge efter "Pro Mini". Afsnittet har titlen "pro.name = Arduino Pro eller Pro Mini". Rul ned til underafsnittet "pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)".

Se efter linjen, der siger "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

Skift indstillingerne til xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Gem og luk.

Brænder Bootloader

Når du har gjort dette, kan du følge afsnittet "Instruktioner" på ISP -guiden fra trin 1 til 5.

Nogle ting at præcisere:

  • Når du uploader skitsen "Arduino som ISP", skal du sikre dig, at du har valgt den korrekte COM -port og processor.

    I dette tilfælde betyder det, at du har valgt COM-porten på din Arduino i Værktøjs-> Port: COM X (Arduino Uno), og kortet er Arduio Uno

  • Vælg den korrekte programmør: under Værktøjer-> Programmer-> Arduino som internetudbyder.

    IKKE ArduinoISP eller ArduinoISP.org

  • Inden brænding af bootloderen skal du ændre kortet "Pro eller Pro Mini" og processor til "ATMEGA328p (3.3V, 8 MHz)".

    Du kan ikke se processorsektionen, før du vælger den korrekte korttype

Brænd bootloaderen på den selvstændige Arduino, FØR du forsøger at skrive skitser på den.

Upload af skitsen

Dette er meget vigtigt. Du er nu i stand til at programmere enten Arduino: Uno og Standalone. Hvis du ikke uploader til den korrekte enhed, skal du gentage afsnittet ovenfor og omskrive Arduino som ISP -program på Uno.

Når du uploader din skitse, skal du klikke på Værktøjer -> Upload ved hjælp af programmør ELLER klik på Ctrl+Shift+U. Du kan også holde skift nede og klikke på pilikonet, men klik ikke på pilikonet uden at holde skift.

Almindelige fejlfindingstip

  • Tænd for omfattende output til fejlfinding.
  • "Enhedens signatuere er alle 0'ere!" [Denne vil meget sandsynligt forekomme.]

    • se afsnittet ISP Wiring. Enten har du tilsluttet den selvstændige Arduino forkert, eller også bliver den ikke tændt.
    • Sørg for, at du har valgt den korrekte COM -port og -kort / -processor. Når du brænder bootloaderen, SKAL du sikre dig, at du brænder Pro Mini 3.3V 8 MHz bootloader på den, ellers vil sikringerne ikke blive indstillet korrekt.
  • "Jeg har redigeret boards.txt -filen, men kan ikke se redigeringerne"

    Sørg for, at du har redigeret den korrekte boards.txt -fil. Prøv at opdatere Arduino IDE, hvis redigeringerne ikke fungerer, eller fjern andre mapper i din / hardware / mappe midlertidigt

  • "Jeg kan ikke finde pro mini sektionen af boards.txt!"

    Du kigger ikke i den rigtige boards.txt -fil. Tjek mappen Arduino // hardware/arduino/

Trin 4: Seriel kommunikation

4) Overvåg den selvstændige enhed via seriel kommunikation

Du kan virkelig gøre dette via 2 metoder, så hvis du ikke engang har et FTDI -kabel / breakout -kort, er det ikke verdens ende. Og husk, den skitse, du uploadede til den selvstændige Arduino, skal have Serial.print -udsagn, så du kan læse: Hvis du ikke skrev det i programmet, vil du ikke se noget!

Hvis du ikke har et FTDI -kabel

Når du har brændt bootloaderen og skrevet det program, du ønsker, kan du (meget omhyggeligt og huske hvilken retning det går tilbage i) fjerne ATMEGA328 DIP -chippen fra Arduino Uno. Jeg anbefaler at bruge et fladt hoved til dette.

Du kan slutte den selvstændige Arduino's RX til Uno's RX og TX til TX. Ja, det er normalt det modsatte, men du kan tænke på Uno som at "videresende" oplysningerne til IDE's serielle skærm. Derfor forbinder du ikke RX til TX og TX ro RX i dette tilfælde. Når du kører dit program, skal du sikre dig, at du har valgt Arduino Unos COM -port, og åbne den serielle montor. Du vil kunne se standone Arduinos serielle output.

(Denne løsning krediteres Robin2 her.)

Hvis du har et FTDI -kabel / -kort

(Jeg bruger Sparkfun's FTDI -kort, som jeg har konverteret til 3,3V ved hjælp af loddepuden på bagsiden)

Du skal blot slutte breakout -kortets GND til den selvstændige Arduino -jord og tilslut breakoutboardets RX til Arduino's TX og TX til RX. (Hvis du BARE er seriel overvågning og ikke skriver noget tilbage, kan du bare tilslutte brødbrættets RX til Arduino TX).

Husk på dette tidspunkt, at du har mulighed for at drive den selvstændige Arduino via Uno ELLER FTDI -kablet. Tilslut ikke begge strømkilder på samme tid! Bemærk, at du bliver nødt til at ændre COM -porten, da den kommer til at være anderledes end Arduino Uno COM -porten.

Almindelige fejlfindingstip

  • "Jeg ser ikke noget!"

    • Kontroller, om du har den korrekte COM -port aktiveret.
    • Kontroller, om du har de nyeste FTDI -drivere.
    • SIKR Jorden er tilsluttet.
  • "Det eneste, jeg ser, er affaldsoutput i den serielle skærm!"

    • Du får noget, som er et godt tegn.
    • Kontroller dog spændingen på FTDI -kortet.
    • Den selvstændige Arduino udsender 3.3V på sin TX, og FTDI -kortet kan muligvis ikke afhente den, hvis den forventer 5v.
    • Kontroller baudhastigheden.
    • Sørg for, at du har jordforbundet og kun én strømkilde er tilsluttet! (Det vil sige, at du ikke må drive den selvstændige Arduino fra Uno OG dit FTDI -kort.

Anbefalede: