Sommario:

Arduino autonomo 3.3V con orologio esterno da 8 MHz programmato da Arduino Uno tramite ICSP/ISP (con monitoraggio seriale!): 4 passaggi
Arduino autonomo 3.3V con orologio esterno da 8 MHz programmato da Arduino Uno tramite ICSP/ISP (con monitoraggio seriale!): 4 passaggi

Video: Arduino autonomo 3.3V con orologio esterno da 8 MHz programmato da Arduino Uno tramite ICSP/ISP (con monitoraggio seriale!): 4 passaggi

Video: Arduino autonomo 3.3V con orologio esterno da 8 MHz programmato da Arduino Uno tramite ICSP/ISP (con monitoraggio seriale!): 4 passaggi
Video: Pro Micro ATMEGA32U4 Arduino Pins and 5V, 3.3V Explained 2024, Novembre
Anonim
Arduino autonomo 3.3V con orologio esterno da 8 MHz programmato da Arduino Uno tramite ICSP/ISP (con monitoraggio seriale!)
Arduino autonomo 3.3V con orologio esterno da 8 MHz programmato da Arduino Uno tramite ICSP/ISP (con monitoraggio seriale!)
Arduino autonomo 3.3V con orologio esterno da 8 MHz programmato da Arduino Uno tramite ICSP/ISP (con monitoraggio seriale!)
Arduino autonomo 3.3V con orologio esterno da 8 MHz programmato da Arduino Uno tramite ICSP/ISP (con monitoraggio seriale!)

Obiettivi:

  • Per costruire un Arduino autonomo che funzioni a 3,3 V da un clock esterno da 8 MHz.
  • Per programmarlo tramite ISP (noto anche come ICSP, programmazione seriale in-circuit) da un Arduino Uno (funzionante a 5V)

    Per modificare il file del bootloader e masterizzare il bootloader (tramite ISP)

  • Per essere in grado di leggere le informazioni seriali da Arduino standalone tramite cavo FTDI

    Per poter leggere le informazioni seriali dallo standlaone Arduino senza il cavo FTDI

Preambolo:

Stavo cercando di costruire il mio progetto autonomo ma non ho visto alcuna guida completa sull'esecuzione, la programmazione e il monitoraggio di un Arduino autonomo, in particolare uno che funziona con un orologio esterno da 8 Mhz e 3,3 V e programmato da un Arduino UNO. Ho messo insieme una serie di guide separate e ho cercato di fare riferimento da dove ho ottenuto le informazioni per dare credito dove è dovuto il credito. Questa guida è il risultato di molti giorni alla ricerca di soluzioni e alla ricerca di parti di essa in un momento mentre stavo costruendo il mio progetto. Inoltre, ho collegato diversi prodotti utili che sarebbero venuti in mano non perché sono affiliato con uno dei le società, ma perché è rilevante includere le voci specifiche a cui mi riferisco.

Domande comuni prima di iniziare:

Perché è necessario programmarlo con ISP e monitorare tramite FTDI? Perché non puoi semplicemente programmarlo tramite FTDI?

Dovremo cambiare le impostazioni del fusibile masterizzando un nuovo bootloader e non puoi farlo tramite la comunicazione seriale. Devi masterizzare il bootloader tramite ISP. Questo è utile anche per coloro che non hanno un chip ATMEGA328 pre-bootload.

Perché non uso semplicemente un cavo ISP con monitoraggio seriale, come questo?

Forse, come me, ti capita semplicemente di non averne uno e piuttosto che aspettare che ti venga spedito uno ti piace usare quello che hai! Mi capita di avere un cavo FTDI (anche se alla fine scoprirai che non ne hai nemmeno bisogno: ti semplifica la vita).

Non ho bisogno di un traslatore di livello logico dall'Uno all'Arduino autonomo?

Sì, lo fai, ma ti mostrerò come crearne uno tu stesso. Come il cavo ISP, mi capita di non averne uno.

Voglio farlo funzionare con alimentazione esterna. Come lo faccio?

Esistono molte guide che mostrano come eseguire un Arduino autonomo senza alimentazione a batteria. Scriverò come ho fatto e lo linkerò qui [inserirò più tardi].

LA GUIDA

Passaggio 1: costruire l'Arduino autonomo

Costruire l'Arduino autonomo
Costruire l'Arduino autonomo
Costruire l'Arduino autonomo
Costruire l'Arduino autonomo

1) Costruisci l'Arduino autonomo da questo link. L'unica parte della guida di cui hai bisogno è "ATMEGA8/168/328 Basics".

  • puoi alimentare l'Arduino autonomo da 3,3 V di Arduino Uno. (Puoi saltare la prima sezione del tutorial intitolato "Aggiunta di circuiti per un alimentatore".
  • Sostituisci il clock da 16 MHz con un clock da 8 Mhz.
  • Aggiungere 0,1 uF caps tra: VCC e Gnd (entrambi i lati) VRef e Gnd.

    • Non li ho inclusi nella foto ma li ho nei miei progetti!
    • So che nella foto c'è un oscillatore a 16 MHz. Ho scattato la foto prima di scoprire tutto quello che ho fatto nella guida!

Fonte dell'immagine di pinout ATMEGA328p qui.

Suggerimenti comuni per la risoluzione dei problemi

  • Assicurati di aver ripristinato il valore alto tramite un resistore da 10k da VCC al pin 1 dell'ATMEGA. Se il pin è messo a terra o flottante, non funzionerà.
  • Controlla di aver inserito correttamente i cavi e l'oscillatore.
  • Assicurati di utilizzare condensatori da 22 pF per l'oscillatore da 8 MHz. Non funzionerà altrimenti.
  • Assicurati che il dispositivo sia alimentato.

Passaggio 2: il cablaggio dell'ISP

Il cablaggio dell'ISP
Il cablaggio dell'ISP
Il cablaggio dell'ISP
Il cablaggio dell'ISP

2) Creare la parte ISP

Seguirai questa guida qui con un piccolo ma molto importante passaggio.

Il motivo per cui non puoi semplicemente seguire la guida è perché ti manca una parte cruciale: non puoi programmare un dispositivo a 3,3 V direttamente dalle connessioni a 5 V. (Almeno, non potevo: non avrebbe funzionato finché non l'avessi fatto). È necessario inserire un traslatore di livello logico che sposti i segnali 5V dall'UNO all'Arduino autonomo da 3,3V.

Se non si dispone di una scheda di spostamento del livello logico, è possibile crearne una utilizzando i resistori. Tutto ciò che è realmente un cambio di livello logico (fintanto che stai spostando verso il basso) è un divisore di tensione. Avrai bisogno di 6 resistori uguali, niente di troppo alto o troppo basso. Ho usato resistori da 220 ohm, ma sono sicuro che anche i resistori da 10k funzionerebbero.

Per SCK (pin digitale 13) e MOSI (pin digitale 11), utilizzare un partitore di tensione per tagliare la tensione di un terzo. In sostanza avrai uno SCK e MOSI Uno, quindi un resistore (220 ohm), quindi SCK e MOSI collegati all'Arduino autonomo e 2 resistori (440 ohm in totale) a terra.

Quindi, leggi la guida collegata all'inizio di questa sezione, ma includi i divisori di tensione tra SCK e MOSI. Ricorda, SCK, MISO, MOSI e RESET sono i pin 13, 12, 11 e 10 su Uno ma sono i pin 19, 18, 17 e 1 su Arduino standalone!

Suggerimenti comuni per la risoluzione dei problemi

  • CONTROLLA IL CABLAGGIO

    • Se ottieni una firma del dispositivo di tutti gli 0 quando provi a scrivere un programma, il cablaggio è quasi certamente spento o l'Arduino autonomo non si accende.
    • Inoltre, assicurati di avere il cavo di ripristino da 10 su Uno a 1 su Arduino autonomo
  • CONTROLLA I DIVISORI DI TENSIONE

    Assicurati di avere divisori di tensione con un rapporto di 1:2 (lato alto: lato basso) per i resistori sia per SCK che per MOSI. Per esempio. una resistenza da 220 sul lato +5v e poi 2 resistenze da 220 ohm (440 ohm totali) verso massa con il segnale verso l'Arduino standalone nel mezzo

Passaggio 3: modifica il file Bootloader, masterizza il bootloader e carica il tuo schizzo

Modifica il file Bootloader, masterizza il bootloader e carica il tuo schizzo
Modifica il file Bootloader, masterizza il bootloader e carica il tuo schizzo
Modifica il file Bootloader, masterizza il bootloader e carica il tuo schizzo
Modifica il file Bootloader, masterizza il bootloader e carica il tuo schizzo

3) Modificare il file del bootloader (boards.txt) e masterizzare il bootloader sull'Arduino autonomo. Carica il tuo schizzo

Modificare il file del bootloader

Per far funzionare Arduino autonomo, dovrai modificare le impostazioni del fusibile di spegnimento del bootloader. Altrimenti, sarai in grado di masterizzare un bootloader su di esso ma non sarai in grado di eseguire alcuno sketch.

Puoi rimuovere completamente il rilevamento del brownout, ma non lo consiglierei. Invece, lo abbasseremo da 2,7 V (quello che è arrivato sul mio chip come predefinito) e lo sostituiremo con 1,8 V. Alla fine, tuttavia, puoi scegliere quali impostazioni di oscuramento desideri utilizzando il calcolatore dei fusibili qui.

Il mio file delle schede era nella seguente posizione:

C:\Programmi (x86)\Arduino\hardware\arduino\avr

Tuttavia, potresti avere più di un file board.txt nella cartella hardware diverso da /arudino/. Stai per modificare il file board.txt nella posizione /arduino/ perché stai per modificare la sezione ATMEGA328p (3.3V, 8 MHz).

Potresti perdere il file board.txt modificato se reinstalli o aggiorni l'IDE Arduino (secondo questo post). Ciò significa che se aggiorni Arduino IDE, dovrai modificare nuovamente queste impostazioni se desideri creare un altro Arduino autonomo.

Nel file board.txt, scorri verso il basso o cerca "Pro Mini". La sezione è intitolata "pro.name=Arduino Pro o Pro Mini". Scorri verso il basso fino alla sottosezione "pro.menu.cpu.8MHzatmega328=ATmega328P (3.3V, 8 MHz)".

Cerca la riga che dice "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=_"

Modificare le impostazioni in xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0xFE).

Salva ed esci.

Masterizzare il Bootloader

Una volta fatto questo, puoi seguire la sezione "Istruzioni" sulla guida dell'ISP dai passaggi 1 a 5.

Alcune cose da chiarire:

  • Quando carichi lo sketch "Arduino come ISP", devi assicurarti di avere selezionato la porta COM e il processore corretti.

    In questo caso, significa che hai selezionato la porta COM del tuo Arduino in Strumenti->Porta: COM X (Arduino Uno) e la scheda è Arduio Uno

  • Seleziona il programmatore corretto: in Strumenti->Programmatore->Arduino come ISP.

    NON ArduinoISP o ArduinoISP.org

  • Prima di masterizzare il bootloder, cambia la scheda "Pro o Pro Mini" e il processore in "ATMEGA328p (3.3V, 8 MHz)".

    Non vedrai la sezione del processore finché non selezioni il tipo di scheda corretto

Masterizza il bootloader sull'Arduino autonomo PRIMA di tentare di scriverci degli schizzi.

Caricamento dello schizzo

Questo è molto importante. Ora puoi programmare Arduino: Uno e Standalone. Se non carichi sul dispositivo corretto, devi ripetere la sezione sopra e riscrivere Arduino come programma ISP su Uno.

Quando carichi il tuo schizzo, assicurati di fare clic su Strumenti -> Carica utilizzando il programmatore OPPURE fai clic su Ctrl+Shift+U. Puoi anche tenere premuto MAIUSC e fare clic sull'icona della freccia, ma non fare clic sull'icona della freccia senza tenere premuto MAIUSC.

Suggerimenti comuni per la risoluzione dei problemi

  • Attiva l'output dettagliato per la risoluzione dei problemi.
  • "La firma del dispositivo è tutta 0!" [Questo è molto probabile che si verifichi.]

    • vedere la sezione Cablaggio ISP. O hai cablato l'Arduino autonomo in modo errato o non viene acceso.
    • Assicurati di aver selezionato la porta COM e la scheda/processore corretti. Quando stai masterizzando il bootloader, DEVI assicurarti di masterizzare il bootloader Pro Mini 3.3V 8 MHz su di esso o i fusibili non verranno impostati correttamente.
  • "Ho modificato il file board.txt ma non vedo le modifiche"

    Assicurati di aver modificato il file board.txt corretto. Prova ad aggiornare Arduino IDE se le modifiche non funzionano o rimuovi temporaneamente altre cartelle nella cartella /hardware/

  • "Non riesco a trovare la sezione pro mini di board.txt!"

    Non stai cercando nel file board.txt corretto. Controlla la cartella Arduino//hardware/arduino/

Passaggio 4: comunicazione seriale

4) Monitorare il dispositivo autonomo tramite comunicazione seriale

Puoi davvero farlo tramite 2 metodi, quindi se non hai nemmeno un cavo / breakout board FTDI non è la fine del mondo. E ricorda, lo schizzo che hai caricato su Arduino standalone deve avere istruzioni Serial.print da leggere: se non l'hai scritto nel programma, non vedrai nulla!

Se non hai un cavo FTDI

Dopo aver masterizzato il bootloader e scritto il programma desiderato, puoi (con molta attenzione e ricordando in quale orientamento torna indietro) rimuovere il chip DIP ATMEGA328 da Arduino Uno. Consiglio di usare una testa piatta per questo.

È possibile collegare l'RX di Arduino standalone all'RX di Uno e TX a TX. Sì, normalmente è l'opposto, ma puoi pensare a Uno come a "inoltrare" le informazioni al monitor seriale dell'IDE. Ecco perché in questo caso non colleghi RX a TX e TX ro RX. Quando esegui il tuo programma, assicurati di aver scelto la porta COM di Arduino Uno e di aprire il montor seriale. Sarai in grado di vedere l'uscita seriale di Arduino standaone.

(Questa soluzione è accreditata a Robin2 qui.)

Se hai un cavo/scheda FTDI

(Sto usando la scheda FTDI di Sparkfun che ho convertito a 3,3 V utilizzando il pad di saldatura sul retro)

Basta collegare il GND della scheda di breakout alla massa dell'Arduino autonomo e collegare l'RX della scheda di breakout al TX di Arduino e il TX all'RX. (Se stai SOLO monitoraggio seriale e non stai scrivendo nulla, puoi semplicemente collegare l'RX della breadoutboard ad Arduino TX).

Tieni presente che a questo punto hai la possibilità di alimentare l'Arduino autonomo tramite Uno OPPURE il cavo FTDI. Non collegare contemporaneamente entrambe le fonti di alimentazione! Nota che dovrai cambiare la porta COM poiché sarà diversa dalla porta COM di Arduino Uno.

Suggerimenti comuni per la risoluzione dei problemi

  • "Non vedo niente!"

    • Controlla se hai la porta COM corretta abilitata.
    • Controlla se disponi dei driver FTDI più recenti.
    • ASSICURARSI CHE LA TERRA SIA COLLEGATA.
  • "Tutto quello che vedo è l'output spazzatura nel monitor seriale!"

    • Stai ottenendo qualcosa che è un buon segno.
    • Tuttavia, controlla la tensione della scheda FTDI.
    • L'Arduino autonomo emette 3,3 V sul suo TX e la scheda FTDI potrebbe non rilevarlo se si aspetta 5 V.
    • Controlla la velocità di trasmissione.
    • Assicurati di avere la messa a terra e una sola fonte di alimentazione collegata! (Cioè non alimentare l'Arduino autonomo da Uno E dalla tua scheda FTDI.

Consigliato: