Sommario:

AVR/Arduino lampeggiante con Raspberry Pi: 3 passaggi (con immagini)
AVR/Arduino lampeggiante con Raspberry Pi: 3 passaggi (con immagini)

Video: AVR/Arduino lampeggiante con Raspberry Pi: 3 passaggi (con immagini)

Video: AVR/Arduino lampeggiante con Raspberry Pi: 3 passaggi (con immagini)
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Dicembre
Anonim
AVR/Arduino lampeggiante con Raspberry Pi
AVR/Arduino lampeggiante con Raspberry Pi

Un programmatore in-system (ISP) è un dispositivo che puoi utilizzare per programmare molti microcontrollori, ad esempio l'ATMega328p che è il cervello di un Arduino Uno. Puoi acquistare qualcosa come un USBtinyISP o puoi persino usare un Arduino. Questa istruzione ti mostrerà come utilizzare un Raspberry Pi come ISP.

Il programma avrdude, che è ciò che l'IDE Arduino utilizza sotto il cofano per flashare i chip, può essere utilizzato con molti programmatori. Una delle sue opzioni è utilizzare i pin SPI sulla porta di espansione del Pi. Spiegherò come effettuare le connessioni appropriate, mettere insieme un semplice circuito su perfboard in modo da non dover ripetere il cablaggio ogni volta che si desidera eseguire il flashing di un chip e come installare e utilizzare avrdude. Ti mostrerò anche come ottenere programmi compilati usando l'IDE Arduino su un chip AVR come un ATmega o ATtiny usando questo metodo.

Cose necessarie:

  • Raspberry Pi con l'ultima versione di Raspbian installata
  • Presa con connettore maschio a 40 pin (o 26 pin se si dispone di un Pi più vecchio)
  • Cavo IDE per il collegamento al tuo Pi
  • Risonatore a cristallo da 16 MHz
  • Condensatori da 22 pF (2)
  • LED (1) per indicare lo stato del programmatore
  • Prese IC a 8, 14 e/o 28 pin, a seconda della forma dei chip che si desidera far lampeggiare
  • Alcuni perfboard, fili, saldatura

Passaggio 1: costruzione dell'allegato Cobbler

Accessorio per calzolaio da costruzione
Accessorio per calzolaio da costruzione
Accessorio per calzolaio da costruzione
Accessorio per calzolaio da costruzione
Accessorio per calzolaio da costruzione
Accessorio per calzolaio da costruzione

Serial Peripheral Interface (SPI), chiamata anche seriale a quattro fili, è un modo di comunicare tra un singolo dispositivo master e uno o più dispositivi slave. Lo useremo per flashare i chip, con il Pi come master e il chip come slave. Effettuerai le seguenti connessioni tra il Pi e il tuo chip (vedi i pinout sopra per vari AVR e porte di espansione Pi per sapere quali pin sono quali):

  • Collegare i pin MOSI (master-out-slave-in) insieme
  • Collegare insieme i pin SCLK (orologio condiviso)
  • Collega i pin MISO (master-in-slave-out) insieme a un resistore da 220 Ohm, per proteggere il Pi da eventuali tensioni inaspettatamente elevate dal chip
  • Collega GPIO 25 sul Pi direttamente al pin RESET sul chip. Il Pi abbassa questo pin durante la programmazione, quindi usiamo un resistore da 10K per mantenerlo alto quando non si programma e un LED con un resistore di protezione da 1K che funziona a tensione positiva per darci un bel feedback visivo durante la programmazione.

Colleghiamo i pin di terra e di alimentazione (3,3 V) tra il Pi e i chip che vogliamo programmare. Nel caso in cui non lo sapessi già, i pin del Raspberry Pi non sono tolleranti a 5 V: saranno danneggiati se su di essi appaiono più di 3,3 V. Se i chip programmati necessitano di alimentazione a 5 V per qualche motivo, potremmo utilizzare un chip di spostamento del livello per proteggere i pin del Pi, ma non ho riscontrato alcun problema nell'utilizzo di 3,3 V, quindi consiglio di giocare sul sicuro e di risparmiare sui componenti.

Infine, colleghiamo un oscillatore a cristallo da 16 MHz attraverso i pin XTAL del chip, che colleghiamo anche a terra tramite un paio di condensatori da 22 pF. I chip AVR possono essere impostati per funzionare a frequenze diverse e possono anche essere impostati per utilizzare una sorgente interna o esterna per determinare quella frequenza. Se il tuo chip è impostato per utilizzare un cristallo esterno come sorgente di frequenza, non sarai in grado di riprogrammare senza di esso. Altrimenti non importa se c'è.

Puoi usare lo schema del circuito nell'ultima immagine come guida per assemblare il tuo accessorio per calzolaio su perfboard. Puoi avere tutte le forme diverse di prese IC che desideri, basta collegare i pin appropriati in parallelo con il Pi e il cristallo. N. B. se usi l'immagine del mio prototipo come guida, nota che ho aggiunto alcuni pin e prese di intestazione extra in modo da poter accedere ai pin sul Pi per motivi non correlati.

Passaggio 2: installazione e utilizzo di Avrdude

Installazione e utilizzo di Avrdude
Installazione e utilizzo di Avrdude
Installazione e utilizzo di Avrdude
Installazione e utilizzo di Avrdude
Installazione e utilizzo di Avrdude
Installazione e utilizzo di Avrdude
Installazione e utilizzo di Avrdude
Installazione e utilizzo di Avrdude

Per installare avrdude sul tuo Pi, digita

sudo apt-get install avrdude

Sarà quindi necessario abilitare l'interfaccia SPI, se non è già stata attivata. Esiste un modo da riga di comando per farlo, ma è molto più semplice utilizzare lo strumento di configurazione Raspberry Pi. Tipo

sudo raspi-config

e vai su Opzioni interfaccia per attivare SPI.

Per far lampeggiare il tuo chip, collega il cavo a nastro dal tuo Pi al connettore sul circuito perfboard e inserisci il chip nella presa IC appropriata (assicurati che sia rivolto nel modo giusto).

Quando si esegue il flashing di un programma, è inoltre necessario assicurarsi di impostare correttamente i fusibili nel chip. Questi sono in realtà solo bit nel chip che imposti per dirgli a quale velocità di clock eseguire, se cancellare la EEPROM durante la scrittura del chip, ecc. Puoi leggere le specifiche AVR complete per capire come impostare ogni bit, ma è molto più semplice utilizzare il calcolatore dei fusibili fornito su engbedded.com/fusecalc. Selezionare il nome della parte dell'AVR che si sta utilizzando e scegliere le opzioni desiderate nell'area "Selezione funzionalità". Di solito mi assicuro che le impostazioni dell'orologio siano corrette e lascio le altre cose come predefinite. Quasi sempre vorrai lasciare "Programmazione seriale abilitata" SELEZIONATO e "Reset disabilitato" NON SELEZIONATO - altrimenti non sarai in grado di riprogrammare il chip. Quando hai le impostazioni corrette, puoi scorrere verso il basso l'area "Impostazioni correnti" e copiare gli argomenti AVRDUDE come mostrato nell'immagine.

Per impostare i fusibili, inserisci il comando

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

dove partname corrisponde al chip che stai utilizzando. Puoi trovare l'elenco dei nomi delle parti inserendo sudo ardude -c linuxspi -p ?type. Per eseguire il flashing del programma, assicurati che sia nella directory corrente e inserisci

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash:w::i

Dopo entrambi i comandi, il LED si accenderà durante la modifica del chip.

Passaggio 3: ottenere i programmi Arduino sugli AVR

Ottenere i programmi Arduino sugli AVR
Ottenere i programmi Arduino sugli AVR
Ottenere i programmi Arduino sugli AVR
Ottenere i programmi Arduino sugli AVR
Ottenere i programmi Arduino sugli AVR
Ottenere i programmi Arduino sugli AVR

L'obiettivo principale di questo istruibile è eseguire il flashing di programmi già compilati su chip, non come scriverli o compilarli. Tuttavia, volevo spiegare come è possibile compilare binari utilizzando l'IDE Arduino e portarli su chip AVR nudi usando questo metodo, poiché Arduino è relativamente facile da imparare e ci sono così tanti tutorial ed esempi.

Innanzitutto, dovrai aggiungere informazioni sui chip AVR che lampeggerai in modo che l'IDE sappia come compilarli. James Sleeman ha messo insieme alcuni file di installazione molto utili, che sono disponibili su github. Per utilizzarli, apri il menu "Preferenze" nell'IDE di Arduino e fai clic sulla casella accanto al campo "URL di Gestione schede aggiuntive". Copia e incolla i seguenti URL nella finestra di dialogo che appare:

Quindi, vai al menu "Strumenti" e trova l'opzione "Gestione schede…" nel sottomenu "Board". Scorri fino alla fine dell'elenco nella finestra di dialogo Boards Manager e installa le schede DIY ATmega e DIY ATtiny.

Per compilare i tuoi programmi, assicurati prima di aver selezionato il chip corretto nel menu "Processore", così come la corretta velocità del processore. Seleziona l'opzione "Usa Bootloader: No", poiché caricheremo direttamente con il Pi e quindi possiamo utilizzare lo spazio extra che normalmente verrebbe occupato dal bootloader di Arduino. Ora, fai clic sul pulsante "Verifica" (il segno di spunta). Questo compilerà il tuo programma senza provare a caricarlo (dato che stai facendo questo passaggio da solo).

Supponendo che tutto vada bene, ora devi portare il programma compilato sul tuo Pi. L'IDE li nasconde in una posizione temporanea, poiché è progettato per caricare i programmi stesso. Su Windows, è in AppData/Local/Temp nella directory dell'utente, in una cartella che inizia con 'arduino_build'. Cerca il file.hex: questo è il tuo programma! Invialo al tuo Pi tramite FTP o con una chiavetta USB e sei a posto.

Per fare ciò, devi disporre di un PC Windows o Mac per compilare i tuoi programmi, che poi invii al Pi. Sarebbe davvero facile poterlo fare sul Pi stesso, ma sfortunatamente la versione ufficiale dell'IDE Arduino disponibile nel repository Raspbian è piuttosto vecchia e non ha il Board Manager. Senza questo, aggiungere le impostazioni appropriate per compilare per gli AVR nudi è un po' più complicato. Ci sono tutorial là fuori per compilare una versione più recente di Arduino sul tuo Pi - se è quello che vuoi fare, vai a trovarli! Sento anche che dovrebbe essere possibile fare in modo che l'IDE utilizzi il programmatore linuxspi per eseguire il flashing di un chip dall'interno dell'IDE stesso (cioè usando il pulsante "download"), ma questo va oltre la mia pazienza e il mio livello di abilità - se lo sai a proposito, postalo nei commenti! Infine, potresti semplicemente scrivere programmi direttamente in AVR-C e compilarli sul Pi con avr-gcc, dandoti una piattaforma di sviluppo AVR completa nel Raspberry Pi. Ne ho fatto un po', e se vuoi seguire quella strada, ti saluto. Inizia a lampeggiare!

Consigliato: