Talaan ng mga Nilalaman:

Standalone Arduino 3.3V W / External 8 MHz Clock Being Programmed From Arduino Uno Through ICSP / ISP (with Serial Monitoring!): 4 Steps
Standalone Arduino 3.3V W / External 8 MHz Clock Being Programmed From Arduino Uno Through ICSP / ISP (with Serial Monitoring!): 4 Steps

Video: Standalone Arduino 3.3V W / External 8 MHz Clock Being Programmed From Arduino Uno Through ICSP / ISP (with Serial Monitoring!): 4 Steps

Video: Standalone Arduino 3.3V W / External 8 MHz Clock Being Programmed From Arduino Uno Through ICSP / ISP (with Serial Monitoring!): 4 Steps
Video: How to operate Atmega328P (Arduino) IC on 3.3v? 2024, Nobyembre
Anonim
Standalone Arduino 3.3V W / External 8 MHz Clock Being Programmed From Arduino Uno Through ICSP / ISP (with Serial Monitoring!)
Standalone Arduino 3.3V W / External 8 MHz Clock Being Programmed From Arduino Uno Through ICSP / ISP (with Serial Monitoring!)
Standalone Arduino 3.3V W / External 8 MHz Clock Being Programmed From Arduino Uno Through ICSP / ISP (with Serial Monitoring!)
Standalone Arduino 3.3V W / External 8 MHz Clock Being Programmed From Arduino Uno Through ICSP / ISP (with Serial Monitoring!)

Mga Layunin:

  • Upang bumuo ng isang nakapag-iisang Arduino na tumatakbo sa 3.3V mula sa isang 8 MHz panlabas na orasan.
  • Upang mai-program ito sa pamamagitan ng ISP (kilala rin bilang ICSP, in-circuit serial program) mula sa isang Arduino Uno (tumatakbo sa 5V)

    Upang mai-edit ang file ng bootloader at sunugin ang bootloader (sa pamamagitan ng ISP)

  • Upang mabasa ang serial impormasyon mula sa standalone Arduino sa pamamagitan ng FTDI cable

    Upang mabasa ang serial impormasyon mula sa standlaone Arduino nang walang FTDI cable

Panimula:

Sinusubukan kong buuin ang aking sariling proyekto ngunit wala akong nakitang komprehensibong mga gabay sa pagpapatakbo, pagprograma, at pagsubaybay sa isang Standalone Arduino - partikular ang isang pagpapatakbo ng isang panlabas na orasan na 8Mhz at 3.3V at na-program ng isang Arduino UNO. Pinagsama-sama ko ang isang bilang ng magkakahiwalay na mga gabay at sinubukan kong mag-refer kung saan ko nakuha ang impormasyon mula upang mabigyan ng kredito kung saan dapat bayaran ang kredito. Ang patnubay na ito ay ang resulta ng maraming araw na naghahanap ng mga solusyon at paghahanap ng mga bahagi nito sa bawat oras habang nagtatayo ako ng aking sariling proyekto. Gayundin, na-link ko ang maraming mga kapaki-pakinabang na produkto na darating sa kamay hindi dahil sa kaanib ako sa anuman ang mga kumpanya, ngunit dahil nauugnay na isama ang mga tukoy na item na tinutukoy ko.

Mga karaniwang tanong bago tayo magsimula:

Bakit mo kailangang i-program ito sa ISP at subaybayan sa pamamagitan ng FTDI? Bakit hindi mo lamang mai-program ito sa pamamagitan ng FTDI?

Kailangan naming baguhin ang mga setting ng piyus sa pamamagitan ng pagsunog ng isang bagong bootloader at hindi mo magagawa iyon sa pamamagitan ng serial na komunikasyon. Dapat mong sunugin ang bootloader sa pamamagitan ng ISP. Kapaki-pakinabang din ito para sa mga walang pre-bootloaded na chip ng ATMEGA328.

Bakit hindi ko na lang gamitin ang isang ISP cable na may serial monitoring, tulad ng isang ito?

Marahil, tulad ng sa akin, nagkataong wala ka lamang at sa halip na maghintay para sa isa na maipadala gusto mong gamitin kung ano ang mayroon ka! Nagkaroon ako ng isang FTDI cable (kahit na mahahanap mo sa huli hindi mo na kailangan ito: ginagawang mas madali ang iyong buhay).

Hindi ko ba kailangan ng isang shifter sa antas ng lohika mula sa Uno patungo sa standalone Arduino?

Oo, ginagawa mo, ngunit ipapakita ko sa iyo kung paano mo ito gagawin. Tulad ng ISP cable, nagkataon na wala ako.

Nais kong patakbuhin ito ng panlabas na lakas. Paano ko gagawin yan?

Mayroong maraming mga gabay na nagpapakita kung paano patakbuhin ang isang standalone Arduino off ng lakas ng baterya. Isusulat ko kung paano ko ito nagawa at i-link ito dito [isisingit mamaya].

ANG GABAY

Hakbang 1: Pagbuo ng Standalone Arduino

Pagbuo ng Standalone Arduino
Pagbuo ng Standalone Arduino
Pagbuo ng Standalone Arduino
Pagbuo ng Standalone Arduino

1) Buuin ang standalone Arduino mula sa link na ito. Ang nag-iisang bahagi lamang ng gabay na kailangan mo ay ang "Pangunahing Kaalaman sa ATMEGA8 / 168/328".

  • maaari mong paganahin ang standalone Arduino mula sa 3.3V palabas ng Arduino Uno. (Maaari mong laktawan ang unang seksyon ng tutorial na pinamagatang "Pagdaragdag ng ligid para sa isang supply ng kuryente."
  • Palitan ang 16 MHz na orasan gamit ang isang 8 Mhz na orasan.
  • Magdagdag ng 0.1 uF cap sa pagitan ng: VCC at Gnd (magkabilang panig) VRef at Gnd.

    • Wala akong kasama sa larawan ngunit mayroon ako sa aking mga proyekto!
    • Alam ko na ito ay isang 16 MHz oscillator sa larawan. Kinuha ko ang larawan bago ko naisip ang lahat ng ginawa ko sa gabay!

Pinagmulan ng imahe ng ATMEGA328p pinout dito.

Mga Karaniwang Tip sa Pag-troubleshoot

  • Tiyaking nai-set mong mataas ang set sa pamamagitan ng isang 10k resistor mula sa VCC hanggang i-pin ang 1 ng ATMEGA. Kung ang pin ay grounded o lumulutang hindi ito gagana.
  • I-double check na naipasok mo nang tama ang mga wires at ang oscillator.
  • Tiyaking gumagamit ka ng 22pF capacitors para sa 8 MHz oscillator. Hindi ito gagana kung hindi man.
  • Tiyaking pinapatakbo ang aparato.

Hakbang 2: Ang Mga Kable ng ISP

Ang Mga Kable ng ISP
Ang Mga Kable ng ISP
Ang Mga Kable ng ISP
Ang Mga Kable ng ISP

2) Lumikha ng bahagi ng ISP

Susundan mo ang gabay na ito dito sa isang maliit ngunit napakahalagang hakbang.

Ang dahilan kung bakit hindi mo maaaring sundin lamang ang gabay ay dahil nawawala mo ang isang mahalagang bahagi: hindi ka maaaring magprogram ng isang 3.3V aparato nang direkta mula sa mga koneksyon ng 5V. (Hindi bababa sa, hindi ko magawa: hindi ito gagana hanggang sa magawa ko ito). Kailangan mong magsingit ng isang shifter sa antas ng lohika na nagbabago ng mga signal ng 5V mula sa UNO patungo sa 3.3Vstandalone Arduino.

Kung wala kang isang antas ng shifter na antas ng lohika, maaari kang gumawa ng isa gamit ang mga resistor. Ang lahat ng isang shifter sa antas ng lohika talaga (hangga't lumilipat ka pababa) ay isang divider ng boltahe. Kakailanganin mo ang 6 na parehong resistors, walang masyadong mataas o masyadong mababa. Gumamit ako ng 220 ohm resistors, ngunit sigurado akong kahit 10k resistors ang gagana.

Para sa SCK (digital pin 13) at MOSI (digital pin 11), gumamit ng isang divider ng boltahe upang i-cut ang boltahe sa isang third. Sa kakanyahan magkakaroon ka ng isang Uno SCK at MOSI, pagkatapos ay isang risistor (220 ohm), pagkatapos ay kumonekta ang SCK at MOSI sa standalone Arduino at 2 resistors (440 ohm total) sa lupa.

Kaya, basahin ang patnubay na naka-link sa simula ng seksyong ito, ngunit isama ang mga divider ng boltahe sa pagitan ng SCK at MOSI. Tandaan, SCK, MISO, MOSI, at RESET ang mga pin 13, 12, 11, at 10 sa Uno ngunit ang mga pin 19, 18, 17, at 1 sa standalone Arduino!

Mga Karaniwang Tip sa Pag-troubleshoot

  • Suriin ANG WIRING

    • Kung nakakakuha ka ng pirma ng aparato ng lahat ng 0 kapag sumusubok na magsulat ng programa, kung gayon ang iyong mga kable ay halos tiyak na patay, o ang nakapag-iisang Arduino ay hindi nakakakuha ng lakas.
    • Gayundin, tiyaking nakuha mo ang reset wire mula 10 sa Uno hanggang 1 sa standalone Arduino
  • Suriin ANG DIVIDERS NG VOLTAGE

    Tiyaking mayroon kang mga divider ng boltahe na may ratio na 1: 2 (mataas na gilid: mababang bahagi) para sa mga resistors para sa parehong SCK at MOSI. Hal. isang 220 risistor sa + 5v na bahagi at pagkatapos ay 2 220 ohm resistors (440 ohm total) patungo sa lupa na may signal patungo sa standalone Arduino sa gitna

Hakbang 3: I-edit ang Bootloader File, Sunugin ang Bootloader, at I-upload ang Iyong Sketch

I-edit ang Bootloader File, Sunugin ang Bootloader, at I-upload ang Iyong Sketch
I-edit ang Bootloader File, Sunugin ang Bootloader, at I-upload ang Iyong Sketch
I-edit ang Bootloader File, Sunugin ang Bootloader, at I-upload ang Iyong Sketch
I-edit ang Bootloader File, Sunugin ang Bootloader, at I-upload ang Iyong Sketch

3) I-edit ang file ng bootloader (boards.txt) at sunugin ang bootloader sa standalone Arduino. I-upload ang iyong sketch

Pag-edit ng file ng bootloader

Upang makuha ang standalone Arduino na tumatakbo, kakailanganin mong i-edit ang mga setting ng fuse ng brownout ng bootloader. Kung hindi man, magagawa mong sunugin ang isang bootloader dito ngunit hindi magagawang magpatakbo ng anumang mga sketch.

Maaari mong alisin ang detalyadong brownout, ngunit hindi ko ito inirerekumenda. Sa halip, ibababa namin ito mula sa 2.7V (kung ano ang dumating sa aking maliit na tilad bilang default) at palitan ito ng 1.8V. Gayunpaman, sa huli, maaari kang pumili kung anong mga setting ng brownout ang gusto mo sa pamamagitan ng paggamit ng fuse calculator dito.

Ang aking file ng boards ay nasa sumusunod na lokasyon:

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

Gayunpaman, maaaring mayroon kang higit sa isang boards.txt file sa iyong folder ng hardware maliban sa / arudino /. I-e-edit mo ang boards.txt file sa / arduino / lokasyon dahil babago mo ang seksyon na ATMEGA328p (3.3V, 8 MHz).

Maaari mong mawala ang nai-edit na file ng boards.txt kung muling mong mai-install o i-update ang Arduino IDE (ayon sa post na ito). Nangangahulugan ito na kung i-update mo ang Arduino IDE, kakailanganin mong baguhin muli ang mga setting na ito kung nais mong lumikha ng isa pa sa parehong standalone Arduino.

Sa boards.txt file, mag-scroll pababa o maghanap para sa "Pro Mini". Ang seksyon ay pinamagatang "pro.name = Arduino Pro o Pro Mini". Mag-scroll pababa sa subseksyon na "pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)".

Hanapin ang linya na nagsasabing "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

Baguhin ang mga setting sa xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Makatipid at lumabas.

Nasusunog ang Bootloader

Kapag nagawa mo ito, maaari mong sundin ang seksyong "Mga Tagubilin" sa gabay na ISP mula sa mga hakbang 1 hanggang 5.

Ang ilang mga bagay upang linawin:

  • Kapag nag-a-upload ka ng "Arduino bilang ISP" na sketch, kailangan mong tiyakin na mayroon kang tamang COM port at processor na napili.

    Sa kasong ito, nangangahulugan ito na napili mo ang COM port ng iyong Arduino sa Tools-> Port: COM X (Arduino Uno) at ang board ay Arduio Uno

  • Piliin ang tamang programmer: sa ilalim ng Mga Tool-> Programmer-> Arduino bilang ISP.

    HINDI ArduinoISP o ArduinoISP.org

  • Bago sunugin ang bootloder, palitan ang board na "Pro o Pro Mini" at Processor sa "ATMEGA328p (3.3V, 8 MHz)".

    Hindi mo makikita ang seksyon ng processor hanggang sa mapili mo ang tamang uri ng board

Sunugin ang bootloader papunta sa nakapag-iisang Arduino BAGO mong tangkain na magsulat nito ng mga sketch.

Ina-upload ang sketch

Ito ay napakahalaga. Nagagawa mo nang mag-program ng alinman sa Arduino: ang Uno at ang Standalone. Kung hindi ka mag-upload sa tamang aparato, kailangan mong ulitin ang seksyon sa itaas at isulat muli ang Arduino bilang ISP na programa sa Uno.

Kapag na-upload mo ang iyong sketch, tiyaking na-click mo ang Mga Tool -> Mag-upload gamit ang programmer O i-click ang Ctrl + Shift + U. Maaari mo ring hawakan ang shift at i-click ang arrow icon, ngunit huwag i-click ang arrow icon nang hindi hinahawakan ang shift.

Mga Karaniwang Tip sa Pag-troubleshoot

  • I-on ang output ng verbose para sa pag-troubleshoot.
  • "Ang signatuere ng aparato ay lahat ng 0!" [Ang isang ito ay malamang na mangyari.]

    • tingnan ang seksyon ng Mga Kable ng ISP. Alinman sa hindi mo wastong na-wire ang standalone Arduino o hindi ito pinapagana.
    • Tiyaking napili mo ang tamang COM port at board / processor. Kapag sinusunog mo ang bootloader, DAPAT mong tiyakin na sinusunog mo ang Pro Mini 3.3V 8 MHz bootloader dito o hindi maitatakda nang tama ang mga piyus.
  • "Na-edit ko ang boards.txt file ngunit hindi makita ang mga pag-edit"

    Tiyaking na-edit mo ang tamang file ng boards.txt. Subukang i-update ang Arduino IDE kung hindi gumagana ang mga pag-edit, o pansamantalang alisin ang iba pang mga folder sa iyong / hardware / folder

  • "Hindi ko mahanap ang seksyong pro mini ng boards.txt!"

    Hindi ka tumitingin sa tamang file ng boards.txt. Suriin ang Arduino // hardware / arduino / folder

Hakbang 4: Serial Communication

4) Subaybayan ang nakapag-iisang aparato sa pamamagitan ng serial komunikasyon

Magagawa mo talaga ito sa pamamagitan ng 2 mga pamamaraan, kaya kung wala kang isang FTDI cable / breakout board hindi ito ang katapusan ng mundo. At tandaan, ang sketch na na-upload mo sa nakapag-iisang Arduino ay dapat na may Serial.print na mga pahayag para mabasa mo: kung hindi mo ito isinulat sa programa, wala kang makikita!

Kung wala kang isang FTDI cable

Matapos mong sunugin ang bootloader at isulat ang program na gusto mo, maaari mong (maingat at alalahanin kung aling oryentasyon ang babalik nito) alisin ang ATMEGA328 DIP chip mula sa Arduino Uno. Inirerekumenda ko ang paggamit ng isang flathead para dito.

Maaari mong ikonekta ang standaloneArduino's RX sa Uno's RX at TX sa TX. Oo, normal na kabaligtaran ito, ngunit maaari mong isipin ang Uno bilang "pagpapasa" ng impormasyon sa serial monitor ng IDE. Iyon ang dahilan kung bakit hindi mo ikonekta ang RX sa TX at TX ro RX sa kasong ito. Kapag pinatakbo mo ang iyong programa, tiyaking mayroon kang napiling COM port ng Arduino Uno at buksan ang serial montor. Makikita mo ang serial output ng standaone Arduino.

(Ang solusyon na ito ay nai-kredito kay Robin2 dito.)

Kung mayroon kang isang FTDI cable / board

(Gumagamit ako ng board ng FTDI ng Sparkfun na na-convert ko sa 3.3V gamit ang solder pad sa likuran)

Ikonekta lamang ang GND ng breakout board sa standalone na lupa ng Arduino at ikonekta ang RX ng breakoutboard sa Arduino's TX at TX sa RX. (Kung ikaw ay serial monitoring lang at hindi nagsusulat ng anumang bagay, maaari mo lamang ikonekta ang RX ng breadoutboard sa Arduino TX).

Isaisip sa puntong ito mayroon kang pagpipilian na i-powering ang standalone Arduino sa pamamagitan ng Uno O ang FTDI Cable. Huwag ikonekta ang parehong mga mapagkukunan ng kuryente nang sabay! Tandaan na kailangan mong baguhin ang COM port dahil magkakaiba ito kaysa sa Arduino Uno COM port.

Mga Karaniwang Tip sa Pag-troubleshoot

  • "Wala akong nakikita!"

    • Suriin kung mayroon kang pinagana ng tamang COM port.
    • Suriin kung mayroon kang pinakabagong mga driver ng FTDI.
    • SIGURO ANG GROUND AY KONEKTO.
  • "Ang nakikita ko lang ay ang output ng basura sa serial monitor!"

    • Nakakakuha ka ng isang bagay na kung saan ay isang magandang tanda.
    • Gayunpaman, suriin ang boltahe ng FTDI board.
    • Ang standalone Arduino ay naglalabas ng 3.3V dito sa TX at maaaring hindi kunin ito ng board ng FTDI kung inaasahan nito ang 5v.
    • Suriin ang rate ng baud.
    • Tiyaking mayroon kang konektado sa lupa at isang koneksyon ng pinagmumulan lamang ng kuryente! (I.e. huwag palakasin ang standalone Arduino mula sa Uno AT ang iyong FTDI board.

Inirerekumendang: