INHOUDSOPGAWE:

Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok wat van Arduino Uno geprogrammeer word deur ICSP / ISP (met seriële monitering!): 4 stappe
Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok wat van Arduino Uno geprogrammeer word deur ICSP / ISP (met seriële monitering!): 4 stappe

Video: Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok wat van Arduino Uno geprogrammeer word deur ICSP / ISP (met seriële monitering!): 4 stappe

Video: Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok wat van Arduino Uno geprogrammeer word deur ICSP / ISP (met seriële monitering!): 4 stappe
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, November
Anonim
Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok word geprogrammeer vanaf Arduino Uno via ICSP / ISP (met seriële monitering!)
Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok word geprogrammeer vanaf Arduino Uno via ICSP / ISP (met seriële monitering!)
Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok word geprogrammeer vanaf Arduino Uno via ICSP / ISP (met seriële monitering!)
Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok word geprogrammeer vanaf Arduino Uno via ICSP / ISP (met seriële monitering!)

Doelwitte:

  • Om 'n selfstandige Arduino te bou wat op 3.3V van 'n 8 MHz eksterne klok werk.
  • Om dit via ISP (ook bekend as ICSP, seriële programmering in die kring) te programmeer vanaf 'n Arduino Uno (loop op 5V)

    Om die bootloader -lêer te wysig en die bootloader te verbrand (via ISP)

  • Om reeksinligting van die selfstandige Arduino via FTDI -kabel te kan lees

    Om reeksinligting van die selfstandige Arduino te kan lees sonder die FTDI -kabel

Aanhef:

Ek het probeer om my selfstandige projek te bou, maar het geen omvattende gidse gesien oor die bestuur, programmering en monitering van 'n selfstandige Arduino nie - veral een wat met 'n 8Mhz eksterne klok en 3.3V werk en geprogrammeer deur 'n Arduino UNO. Ek het 'n aantal aparte gidse saamgestel en ek het probeer verwys waar ek die inligting vandaan gekry het om krediet te gee waar krediet verskuldig is. Hierdie gids is die gevolg van baie dae wat ek na oplossings gesoek het en dele daarvan op 'n slag gevind het terwyl ek besig was met die bou van my eie projek. Ek het ook 'n paar nuttige produkte gekoppel wat nie in die hande sou kom nie omdat ek verbonde is aan enige van die projekte. die maatskappye, maar omdat dit relevant is om die spesifieke items waarna ek verwys, in te sluit.

Algemene vrae voordat ons begin:

Waarom moet u dit met ISP programmeer en monitor via FTDI? Waarom kan u dit nie net via FTDI programmeer nie?

Ons sal die lontinstellings moet verander deur 'n nuwe selflaaiprogram in te brand, en u kan dit nie doen via seriële kommunikasie nie. U moet die selflaaiprogram via ISP verbrand. Dit is ook handig vir diegene wat nie 'n vooraf-gelaaide ATMEGA328-chip het nie.

Waarom gebruik ek nie net 'n ISP -kabel met seriële monitering soos hierdie nie?

Miskien het u net soos ek nie een nie, maar eerder as om te wag dat een gestuur word, gebruik u dit wat u het! Ek het toevallig 'n FTDI -kabel (hoewel u uiteindelik vind dat u dit nie eens nodig het nie; dit maak u lewe net makliker).

Het ek nie 'n logiese vlakverskuiwing nodig van die Uno na die selfstandige Arduino nie?

Ja, jy doen dit, maar ek sal jou wys hoe om self een te maak. Soos die ISP -kabel, het ek toevallig nie een nie.

Ek wil dit van eksterne krag verwyder. Hoe doen ek dit?

Daar is baie gidse wat wys hoe u 'n selfstandige Arduino sonder batterykrag kan gebruik. Ek sal skryf hoe ek dit gedoen het en dit hier koppel (sal later inbring).

DIE GIDS

Stap 1: Bou die selfstandige Arduino

Die bou van die selfstandige Arduino
Die bou van die selfstandige Arduino
Die bou van die selfstandige Arduino
Die bou van die selfstandige Arduino

1) Bou die selfstandige Arduino vanaf hierdie skakel. Die enigste deel van die gids wat u benodig, is die "ATMEGA8/168/328 Basics".

  • u kan die selfstandige Arduino van die 3.3V uit die Arduino Uno dryf. (U kan die eerste afdeling van die tutoriaal met die titel "Toevoeging van stroomtoevoer vir 'n kragtoevoer" oorslaan.
  • Vervang die 16 MHz -horlosie met 'n 8 Mhz -horlosie.
  • Voeg 0,1 uF -kappies by tussen: VCC en Gnd (weerskante) VRef en Gnd.

    • Ek het dit nie op die foto nie, maar ek het dit wel in my projekte!
    • Ek weet dit is 'n 16 MHz -ossillator op die foto. Ek het die foto geneem voordat ek alles agtergekom het wat ek in die gids gedoen het!

ATMEGA328p pinout beeld bron hier.

Algemene wenke vir probleemoplossing

  • Maak seker dat u die hoë ingestel het via 'n 10k -weerstand van VCC na pen 1 van die ATMEGA. As die pen gegrond of dryf, werk dit nie.
  • Maak seker dat u die drade en die ossillator korrek ingevoeg het.
  • Maak seker dat u 22pF -kapasitors gebruik vir die 8 MHz -ossillator. Dit sal nie anders werk nie.
  • Maak seker dat die toestel aangeskakel is.

Stap 2: Die ISP -bedrading

Die ISP -bedrading
Die ISP -bedrading
Die ISP -bedrading
Die ISP -bedrading

2) Skep die ISP -gedeelte

U volg hierdie gids hier met 'n klein, maar baie belangrike stap.

Die rede waarom u nie net die gids kan volg nie, is omdat u 'n belangrike gedeelte ontbreek: u kan nie 'n 3.3V -toestel direk vanaf die 5V -verbindings programmeer nie. (Ten minste kon ek nie: dit sou eers werk as ek dit gedoen het). U moet 'n logiese vlakverskakelaar insit wat die 5V -seine van die UNO na die 3.3Vstandalone Arduino verskuif.

As u nie 'n logiese vlakverskakelbord het nie, kan u een maak met behulp van weerstande. Al wat 'n logiese vlakveranderaar werklik is (solank jy afwaarts skuif) is 'n spanningsverdeler. U benodig 6 van dieselfde weerstande, niks te hoog of te laag nie. Ek het 220 ohm weerstande gebruik, maar ek is seker dat selfs 10k weerstande sou werk.

Vir SCK (digitale pen 13) en MOSI (digitale pen 11), gebruik 'n spanningsverdeler om die spanning met 'n derde te sny. In wese het u een Uno SCK en MOSI, dan 'n weerstand (220 ohm), dan SCK en MOSI wat aan die selfstandige Arduino gekoppel is en 2 weerstande (totaal 440 ohm) op die grond.

Lees dus die gids wat aan die begin van hierdie afdeling gekoppel is, maar sluit spanningsverdelers tussen SCK en MOSI in. Onthou, SCK, MISO, MOSI en RESET is penne 13, 12, 11 en 10 op die Uno, maar is penne 19, 18, 17 en 1 op die selfstandige Arduino!

Algemene wenke vir probleemoplossing

  • Gaan die bedrading na
    • As u 'n toestel se handtekening van alle 0's kry as u 'n program probeer skryf, is u bedrading amper seker af, of kry die selfstandige Arduino nie krag nie.
    • Maak ook seker dat u die resetdraad van 10 op die Uno tot 1 op die selfstandige Arduino het
  • Gaan die spanningsverdelers na

    Maak seker dat u spanningsverdelers het met 'n verhouding van 1: 2 (hoë kant: lae kant) vir die weerstande vir beide SCK en MOSI. Bv. 'n 220 -weerstand aan die +5v -kant en dan 2 220 ohm -weerstande (totaal 440 ohm) grond toe, met die sein na die selfstandige Arduino in die middel

Stap 3: Wysig die bootloader -lêer, brand die bootloader en laai u skets op

Wysig die bootloader -lêer, brand die bootloader en laai u skets op
Wysig die bootloader -lêer, brand die bootloader en laai u skets op
Wysig die bootloader -lêer, brand die bootloader en laai u skets op
Wysig die bootloader -lêer, brand die bootloader en laai u skets op

3) Wysig die bootloader (boards.txt) lêer en brand die selflaaier na die selfstandige Arduino. Laai u skets op

Redigeer die bootloader -lêer

Om die selfstandige Arduino aan die gang te kry, moet u die instellings vir bruin lont van die selflaaiprogram wysig. Anders kan u 'n selflaaiprogram daarop verbrand, maar u kan geen sketse uitvoer nie.

U kan die opsporing van verduistering heeltemal verwyder, maar ek sal dit nie aanbeveel nie. In plaas daarvan gaan ons dit verlaag van 2.7V (wat standaard op my chip was) en vervang met 1.8V. Uiteindelik kan u egter die deurskakeling -instellings kies deur die lontrekenaar hier te gebruik.

My boards -lêer was op die volgende plek:

C: / Programme (x86) Arduino / hardware / arduino / avr

U het egter moontlik meer as een boards.txt -lêer in u hardeware -gids anders as /arudino /. U gaan die boards.txt -lêer in die / arduino / plek redigeer omdat u die ATMEGA328p (3.3V, 8 MHz) -afdeling gaan verander.

U kan die geredigeerde boards.txt -lêer verloor as u die Arduino IDE weer installeer of opdateer (volgens hierdie pos). Dit beteken dat as u Arduino IDE opdateer, u hierdie instellings weer moet verander as u nog een van dieselfde selfstandige Arduino wil skep.

Blaai in die boards.txt -lêer af of soek na "Pro Mini". Die afdeling het die titel "pro.name = Arduino Pro of Pro Mini". Rol af na die onderafdeling "pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)".

Soek die reël wat sê "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

Verander die instellings na xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Stoor en verlaat.

Brand van die selflaaiprogram

Sodra u dit gedoen het, kan u die stappe 1 tot 5 in die afdeling 'Instruksies' in die ISP -gids volg.

Enkele dinge om op te klaar:

  • As u die skets "Arduino as ISP" oplaai, moet u seker maak dat u die regte COM -poort en verwerker gekies het.

    In hierdie geval beteken dit dat u die COM-poort van u Arduino gekies het in Tools-> Poort: COM X (Arduino Uno) en die bord is Arduio Uno

  • Kies die korrekte programmeerder: onder Tools-> Programmer-> Arduino as ISP.

    NIE ArduinoISP of ArduinoISP.org nie

  • Voordat u die bootloder verbrand, verander die bord "Pro of Pro Mini" en verwerker na "ATMEGA328p (3.3V, 8 MHz)".

    U sal die verwerkergedeelte nie sien voordat u die regte bordtipe gekies het nie

Brand die selflaaiprogram op die selfstandige Arduino Voordat u probeer om sketse daarop te skryf.

Laai die skets op

Dit is baie belangrik. U kan nou Arduino: die Uno en die selfstandige programme programmeer. As u nie na die regte toestel oplaai nie, moet u die gedeelte hierbo herhaal en Arduino herskryf as ISP -program op die Uno.

As u u skets oplaai, klik dan op Tools -> Laai op met programmeerder OF klik op Ctrl+Shift+U. U kan ook die skof ingedruk hou en op die pyltjie -ikoon klik, maar u moet nie op die pyltjie -ikoon klik sonder om die skof te hou nie.

Algemene wenke vir probleemoplossing

  • Skakel uitgebreide uitsette aan vir probleemoplossing.
  • "Die toestel se teken is almal 0's!" [Hierdie een kom heel waarskynlik voor.]

    • sien die afdeling ISP Bedrading. Of u het die selfstandige Arduino verkeerd bedraad, of dit word nie aangeskakel nie.
    • Maak seker dat u die korrekte COM -poort en -bord / -verwerker gekies het. As u die selflaaiprogram verbrand, MOET u seker maak dat u die Pro Mini 3.3V 8 MHz selflaaipan verbrand, anders sit die lont nie reg nie.
  • "Ek het die boards.txt -lêer gewysig, maar sien nie die wysigings nie"

    Maak seker dat u die korrekte boards.txt -lêer gewysig het. Probeer Arduino IDE opdateer as die wysigings nie werk nie, of verwyder ander vouers in u / hardeware / vouer tydelik

  • "Ek kan nie die pro mini -afdeling van boards.txt vind nie!"

    U soek nie in die regte boards.txt -lêer nie. Gaan die gids Arduino // hardware/arduino/na

Stap 4: Seriële kommunikasie

4) Monitor die selfstandige toestel via seriële kommunikasie

U kan dit regtig via twee metodes doen, so as u nie eers 'n FTDI -kabel / uitbreekbord het nie, is dit nie die einde van die wêreld nie. En onthou, die skets wat u na die selfstandige Arduino opgelaai het, moet Serial.print -stellings hê om te kan lees: as u dit nie in die program geskryf het nie, sal u niks sien nie!

As u nie 'n FTDI -kabel het nie

Nadat u die selflaaiprogram verbrand en die gewenste program geskryf het, kan u (baie versigtig en onthou in watter rigting dit teruggaan) die ATMEGA328 DIP -chip uit die Arduino Uno verwyder. Ek beveel aan dat u 'n platkop hiervoor gebruik.

U kan die losstaande Arduino's RX koppel aan Uno's RX en TX aan TX. Ja, dit is normaalweg die teenoorgestelde, maar u kan aan die Uno dink dat dit die inligting "deurstuur" na die IDE se seriële monitor. Daarom verbind u in hierdie geval nie RX met TX en TX ro RX nie. As u u program uitvoer, moet u seker maak dat u die COM -poort van die Arduino Uno gekies het en die seriële montor oopmaak. U kan die seriële uitvoer van die standaard Arduino sien.

(Hierdie oplossing word hier toegeskryf aan Robin2.)

As u wel 'n FTDI -kabel / -bord het

(Ek gebruik die FTDI -bord van Sparkfun wat ek na 3.3V met die soldeerbout aan die agterkant omskep het)

Koppel eenvoudig die GND van die uitbreekbord aan die selfstandige Arduino se grond en koppel die uitbreidingsbord se RX aan die TX en TX van die Arduino aan RX. (As u NET seriële monitering doen en niks terugskryf nie, kan u die RX van die broodbord aan die Arduino TX koppel).

Onthou op hierdie punt dat u die selfstandige Arduino via die Uno OF die FTDI -kabel kan voed. Moenie albei kragbronne gelyktydig aansluit nie! Let daarop dat u die COM -poort moet verander, aangesien dit anders sal wees as die Arduino Uno COM -poort.

Algemene wenke vir probleemoplossing

  • "Ek sien niks!"

    • Kyk of die korrekte COM -poort aangeskakel is.
    • Kyk of u die nuutste FTDI -bestuurders het.
    • Verseker dat die grond gekoppel is.
  • "Al wat ek sien, is vullisopvoer in die seriële monitor!"

    • U kry iets wat 'n goeie teken is.
    • Kontroleer egter die spanning van die FTDI -bord.
    • Die selfstandige Arduino lewer 3.3V op sy TX en die FTDI -bord kan dit nie optel as hy 5v verwag nie.
    • Gaan die baud -tempo na.
    • Maak seker dat u 'n grondaansluiting het en slegs een kragbron! (Dit wil sê, die selfstandige Arduino moet nie van die Uno EN u FTDI -bord aangedryf word nie.

Aanbeveel: