categorie: Articoli in vetrina » Elettronica pratica
Numero di visite: 67360
Commenti sull'articolo: 7

Connessione e programmazione di Arduino per principianti

 

Lo studio dei microcontrollori sembra complicato e incomprensibile? Prima della comparsa di Arudino, non era davvero facile e richiedeva un certo set di programmatori e altre apparecchiature.


Che cos'è un Arduino?

Questo è un tipo di costruttore elettronico. L'obiettivo iniziale del progetto è consentire alle persone di imparare facilmente come programmare i dispositivi elettronici, dedicando nel contempo tempo minimo alla parte elettronica.

L'assemblaggio dei circuiti più complicati e il collegamento delle schede possono essere eseguiti senza un saldatore e con l'aiuto di ponticelli con connessioni staccabili "padre" e "madre". In questo modo è possibile collegare sia gli allegati che le schede di espansione, che nel lessico degli arduinisti sono semplicemente chiamati "Scudi".

Che cos'è Arduino?

Qual è la prima scheda Arduino da acquistare per un principiante?

Viene considerata la base e la scheda più popolare Arduino uno. Questa commissione ricorda una carta di credito. Abbastanza grande La maggior parte degli scudi in vendita sono perfetti per lei. Sulla scheda sono presenti prese per il collegamento di dispositivi esterni.

Arduino uno

Nei negozi nazionali per il 2017, il suo prezzo è di circa 4-5 dollari. Sui modelli moderni, Atmega328 è il suo cuore.

Arduino uno

Immagine della scheda Arduino e decodifica delle funzioni di ciascun pin, pinout di Arduino UNO

Il microcontrollore su questa scheda è un chip lungo nel pacchetto DIP28, il che significa che ha 28 gambe.

Il prossimo consiglio più popolare costa quasi due volte più economico del precedente - 2-3 dollari. Questa è la tavola Arduino nano. Le schede effettive sono costruite dallo stesso Atmega328, sono funzionalmente simili a UNO, differenze di dimensioni e decisione di abbinamento con USB, più su questo in seguito. Un'altra differenza è che viene fornita una spina, sotto forma di aghi, per collegare i dispositivi al circuito.

Arduino nano

Il numero di pin (piedini) di questa scheda è lo stesso, ma è possibile osservare che il microcontrollore è realizzato in un pacchetto TQFP32 più compatto, nel caso in cui vengano aggiunti ADC6 e ADC7, gli altri due piedini “extra” duplicano il bus di alimentazione. Le sue dimensioni sono piuttosto compatte - circa le dimensioni di un pollice della tua mano.

Aruino nano pinout 

La terza tavola più popolare è Arduino Pro Mini, non ha una porta USB per il collegamento a un computer, ti dirò come comunicare un po 'più tardi.

Arduino Nano vs Pro Mini Confronto delle dimensioni

Arduino Nano vs Pro Mini Confronto delle dimensioni

Questa è la scheda più piccola di tutte, altrimenti è simile alle due precedenti e Atmega328 è ancora il suo cuore. Non prenderemo in considerazione altre schede, poiché questo è un articolo per principianti e il confronto delle schede è l'argomento di un articolo separato.

Pinout Arduino Pro Mini, nella parte superiore, lo schema di collegamento USB-UART, pin “GRN” - è cablato al circuito di reset del microcontrollore, può essere chiamato in modo diverso, per il quale è necessario scoprirlo in seguito.

i risultati:

Se UNO è conveniente per la prototipazione, allora Nano e Pro Mini sono convenienti per le versioni finali del progetto, perché occupano poco spazio.

Arduino per principianti

Come collegare Arduino a un computer?

Arduino Uno e Nano si collegano a un computer tramite USB. Allo stesso tempo, non esiste alcun supporto hardware per la porta USB, qui viene utilizzata una soluzione di circuito per la conversione di livello, generalmente chiamata USB-a-seriale o USB-UART (rs-232). Allo stesso tempo, uno speciale bootloader Arduino viene inviato al microcontrollore, che consente il flashing su questi bus.

In Arduino Uno, questa legatura è implementata su un microcontrollore con supporto USB - ATmega16U2 (AT16U2). Si scopre che il microcontrollore aggiuntivo sulla scheda è necessario per il flashing del microcontrollore principale.

In Arduino Nano, questo è implementato dal chip FT232R o dal suo analogo CH340. Questo non è un microcontrollore: è un convertitore di livello, questo fatto semplifica il montaggio dell'Arduino Nano da zero con le tue mani.

In genere, i driver vengono installati automaticamente quando la scheda Arduino è collegata. Tuttavia, quando ho acquistato una copia cinese di Arduino Nano, il dispositivo è stato riconosciuto, ma non ha funzionato, un adesivo rotondo con i dati sulla data di uscita è stato incollato sul convertitore, non so se sia stato fatto apposta, ma dopo averlo staccato ho visto il marchio CH340.

Prima di allora, non avevo riscontrato questo e pensavo che tutti i convertitori USB-UART fossero assemblati su FT232, dovevo scaricare i driver, sono molto facili da trovare su richiesta del "driver Arduino ch340". Dopo una semplice installazione, ha funzionato!

Tramite la stessa porta USB, è possibile alimentare anche il microcontrollore, ad es. se lo si collega all'adattatore da un telefono cellulare, il sistema funzionerà.


Cosa devo fare se la mia scheda non dispone di USB?

Arduino Pro Mini è più piccolo. Ciò è stato ottenuto rimuovendo il connettore USB per il firmware e lo stesso convertitore USB-UART. Pertanto, deve essere acquistato separatamente. Il convertitore più semplice su CH340 (il più economico), CPL2102 e FT232R, per la vendita costa da $ 1.

Al momento dell'acquisto, prestare attenzione a quale tensione è progettata per questo adattatore. Pro mini è disponibile nelle versioni 3.3 e 5 V, un ponticello si trova spesso sui convertitori per commutare la tensione di alimentazione.

Arduino Pro Mini

Quando si esegue il flashing di Pro Mini, appena prima dell'avvio, è necessario fare clic su RESET, tuttavia nei convertitori con DTR non è necessario eseguire questa operazione, lo schema di collegamento nella figura seguente.

Schema di collegamento per firmware

A loro si uniscono i terminali speciali "Mama-Mama" (femmina-femmina).

Connessione Arduino

In realtà, tutti i collegamenti possono essere effettuati utilizzando tali terminali (Dupont), sono entrambi su due lati con prese e con spine, e su un lato della presa e sull'altra spina.

spina

Come scrivere programmi per Arduino?

Per lavorare con gli schizzi (il nome del firmware è nella lingua di Arduino), esiste uno speciale ambiente integrato per lo sviluppo dell'IDE di Arduino, è possibile scaricarlo gratuitamente dal sito Web ufficiale o da qualsiasi risorsa tematica, di solito non ci sono problemi con l'installazione.

Programma per Arduino

Ecco come appare l'interfaccia del programma. Puoi scrivere programmi in linguaggio C AVR semplificato appositamente sviluppato per Arduino, infatti è un insieme di librerie chiamato Wiring, oltre che in puro C AVR. Usarlo facilita il codice e accelera il suo lavoro.

Nella parte superiore della finestra è presente un menu familiare in cui è possibile aprire il file, le impostazioni, selezionare la scheda con cui si sta lavorando (Uno, Nano e molti, molti altri) e anche aprire progetti con esempi di codice già pronti. Di seguito è riportato un set di pulsanti per lavorare con il firmware, i tasti che vedrai nella figura seguente.

Interfaccia del programma

Nella parte inferiore della finestra è presente un'area per la visualizzazione di informazioni sul progetto, lo stato del codice, il firmware e la presenza di errori.


Nozioni di base sulla programmazione IDE di Arduino

All'inizio del codice, è necessario dichiarare le variabili e connettere librerie aggiuntive, se esistenti, questo viene fatto come segue:

#include biblioteka.h; // collega la libreria con il nome "Biblioteka.h"

#define peremennaya 1234; // Dichiara una variabile con un valore di 1234

Il comando Definisci consente al compilatore di scegliere il tipo di variabile, ma è possibile impostarlo manualmente, ad esempio un numero intero int o un virgola mobile.

int led = 13; // ha creato la variabile "led" e gli ha assegnato il valore "13"

Il programma può determinare lo stato del pin come 1 o 0. 1 è un'unità logica, se il pin 13 è 1, la tensione sulla sua gamba fisica sarà uguale alla tensione di alimentazione del microcontrollore (per arduino UNO e Nano - 5 V)

Il segnale digitale viene registrato utilizzando il comando digitalWrite (pin, valore), ad esempio:

digitalWrite (led, alto); // scrive l'unità sul registro pin 13 (l'abbiamo annunciato sopra). Unità.

Come puoi capire, l'accesso alle porte è numerato sulla scheda, cifra corrispondente. Ecco un esempio simile al codice precedente:

digitalWrite (13, alto); // imposta il pin 13 su uno

Spesso la funzione di ritardo temporale richiesta viene chiamata dal comando delay (), il cui valore è impostato in millisecondi, i microsecondi si ottengono utilizzando

delayMicroseconds () Ritardo (1000); // il microcontrollore attenderà 1000 ms (1 secondo)

Le impostazioni della porta per input e output sono impostate nella funzione void setup {}, con il comando:

void setup () {

pinMode (NOMERPORTA, OUTPUT / INPUT); // argomenti: nome della variabile o numero di porta, input o output tra cui scegliere

}

Void loop {}


Comprensione del primo programma Blink

Come una sorta di "Hello, world" per i microcontrollori, esiste un programma lampeggiante a LED, analizziamo il suo codice:

All'inizio, con il comando pinMode, abbiamo detto al microcontrollore di assegnare una porta con un LED all'uscita.Hai già notato che il codice non dichiara la variabile "LED_BUILTIN", il fatto è che in Uno, Nano e altre schede dalla fabbrica, il LED incorporato è collegato al pin 13 ed è saldato alla scheda. Può essere utilizzato da te per l'indicazione nei tuoi progetti o per il controllo più semplice dei tuoi programmi lampeggianti.

Quindi, impostiamo l'uscita a cui il LED è saldato all'unità (5 V), la linea successiva fa attendere MK 1 secondo, quindi imposta il pin LED_BUILTIN su zero, aspetta un secondo e il programma si ripete in un cerchio, quindi quando LED_BUILTIN è 1 - il LED ( e qualsiasi altro carico collegato alla porta) è acceso, quando a 0 è spento.

Tutto funziona e tutto è chiaro? Quindi vai avanti!



Leggiamo il valore dalla porta analogica e utilizziamo i dati letti

Il microcontrollore Atmega328 AVR ha un convertitore analogico-digitale a 10 bit incorporato. L'ADC a 10 bit consente di leggere il valore della tensione da 0 a 5 volt, con incrementi di 1/1024 dell'intero intervallo di ampiezza del segnale (5 V).

Per renderlo più chiaro, considerare la situazione, supponiamo che il valore della tensione sull'ingresso analogico sia 2,5 V, quindi il microcontrollore leggerà il valore dal pin "512" se la tensione è 0 - "0" e se 5 V - (1023). 1023 - perché il conteggio va da 0, ad es. 0, 1, 2, 3, ecc. fino a 1023 - un totale di 1024 valori.

Ecco come appare nel codice, usando come esempio lo schizzo standard "analogInput"

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

void setup () {

pinMode (ledPin, OUTPUT);

}

void loop () {

sensorValue = analogRead (sensorPin);

digitalWrite (ledPin, HIGH);

ritardo (sensorValue);

digitalWrite (ledPin, LOW);

ritardo (sensorValue);

}

Lo schema di collegamento del potenziometro ad Arduino, per analogia, all'uscita centrale è possibile collegarsi a qualsiasi ingresso analogico

Lo schema di collegamento del potenziometro ad Arduino, per analogia, all'uscita centrale è possibile collegarsi a qualsiasi ingresso analogico.

Dichiarare variabili:

  • Ledpin: assegnazione indipendente di un pin con un LED incorporato all'uscita e assegnazione di un nome individuale;

  • sensorPin - ingresso analogico, impostato conformemente alla marcatura sulla scheda: A0, A1, A2, ecc.;

  • sensorValue - una variabile per memorizzare un valore di lettura intero e lavorare ulteriormente con esso.

Il codice funziona in questo modo: sensorValue salva il valore analogico letto con sensorPin (comando analogRead). - qui finisce il lavoro con il segnale analogico, quindi tutto è come nell'esempio precedente.

Scriviamo l'unità in ledPin, il LED si accende e attendiamo un tempo pari al valore di sensorValue, ovvero da 0 a 1023 millisecondi. Spegni il LED e attendi di nuovo per questo periodo di tempo, dopodiché il codice si ripete.

Pertanto, dalla posizione del potenziometro, impostiamo la frequenza di lampeggiamento del LED.


Funzione mappa per Arudino

Non tutte le funzioni per gli attuatori (non ne conosco nessuno) supportano "1023" come argomento, ad esempio il servo è limitato dall'angolo di rotazione, ovvero da mezzo giro (180 gradi) (mezzo giro) del servomotore, l'argomento massimo della funzione è "180"

Ora sulla sintassi: map (il valore che stiamo traducendo è l'input minimo, l'input massimo, l'output minimo, l'output massimo).

Nel codice, si presenta così:

(mappa (analogRead (pot), 0, 1023, 0, 180));

Leggiamo il valore dal potenziometro (analogRead (pot)) da 0 a 1023, e in uscita otteniamo numeri da 0 a 180

Valori della mappa valori:

  • 0=0;

  • 1023=180;

In pratica, lo applichiamo al lavoro dello stesso codice servo, diamo un'occhiata al codice con l'IDE di Arduino, se leggi attentamente le sezioni precedenti, quindi non richiede spiegazioni.

E lo schema di collegamento.

Schema elettrico

Conclusioni Arduino è uno strumento molto conveniente per imparare a lavorare con i microcontrollori. E se usi l'AVR C puro, o come talvolta viene chiamato "Pure C", ridurrai significativamente il peso del codice e ti adatterai di più nella memoria del microcontrollore, di conseguenza otterrai una eccellente scheda di debug realizzata in fabbrica con firmware USB.

Arduino per principianti

Opinione dell'autore:

Mi piace l'Arduino. È un peccato che molti programmatori di microcontrollori esperti lo critichino irragionevolmente, che sia troppo semplificato. In linea di principio, solo la lingua è semplificata, ma nessuno ti obbliga a usarla, inoltre puoi eseguire il flashing del microcontrollore attraverso il connettore ICSP e inserire il codice desiderato senza alcun bootloader di cui non hai bisogno.

Per coloro che vogliono giocare con l'elettronica, come costruttore avanzato, è perfetto, ma per programmatori esperti, sarà utile anche una scheda che non richiede il montaggio!

Per ulteriori informazioni su Arduino e le caratteristiche del suo utilizzo in vari schemi, consultare l'e-book -Arduino per manichini. Guida pratica illustrata.

Vedi anche su electro-it.tomathouse.com:

  • Metodi per la lettura e la gestione delle porte I / O di Arduino
  • Quale scheda Arduino scegliere
  • Tipi e disposizione dei microcontrollori AVR
  • Telecomando a microcontrollore: telecomando IR, Arduino, ESP8266, 433 ...
  • Collegamento di sensori analogici ad Arduino, lettura dei sensori

  •  
     
    Commenti:

    # 1 ha scritto: elettromagnetica | [Cite]

     
     

    Quale letteratura sullo studio del codice di programmazione mi consigliate?

     
    Commenti:

    # 2 ha scritto: Andrew | [Cite]

     
     

    elettromagneticaUlli Sommer. Programmazione scheda microcontrollore Arduino / Freeduino, di Jeremy Bloom. Studiamo Arduino. Strumenti e tecniche per Magia tecnica, John Boxell. Studiamo Arduino. 65 progetti fai-da-te. Libri su Arduino sull'ozono: electro-bg.tomathouse.com/arduino_books.php

     
    Commenti:

    # 3 ha scritto: vincitore | [Cite]

     
     

    Materiale molto interessante ed eccitante, grazie!

     
    Commenti:

    # 4 ha scritto: Ural | [Cite]

     
     

    Grazie per l'informazione, la funzione "mappa" è stata molto utile, mi chiedevo come spostarmi, iniziando a imparare i giocattoli su Arduino.

     
    Commenti:

    # 5 ha scritto: Dima | [Cite]

     
     

    Qualcosa che non trovo per gli scudi arduino da condividere su mil-std-1553b, anche se per i bus comp - heap, un'interfaccia molto popolare. Colpisci dove puoi cercare-acquistare.

    post scriptum la data dell'articolo non viene visualizzata - forse ha 10 anni e non dovrebbe già scrivere commenti?

     
    Commenti:

    # 6 ha scritto: EREMINO | [Cite]

     
     

    Come realizzare un ripetitore del segnale di ingresso su Arduino per 4 o qualsiasi numero di uscite.

    Allo stesso modo fare con 4 canali di ingresso a 16 canali di uscita. In questo caso, è necessario commutare l'ingresso su 4 uscite contemporaneamente su ciascun canale di ingresso.

     
    Commenti:

    # 7 ha scritto: Oleg | [Cite]

     
     

    Ragazzi, dimmi, dove hai imparato a programmare? Ho esaminato molte informazioni e nessuno ha scritto chiaramente. Qui, tutte le informazioni non sono per un principiante, davvero non è chiaro, eufemismi. Sono state scritte molte parole per le quali non esiste una parola, ad esempio l'autore scrive all'inizio che è necessario annunciare la libreria e inserire #include biblioteka.h; // ma su questa parola non ha scritto nulla #include perché è possibile capire tutto questo. Mi manca già la pazienza, nessuno può spiegare in modo normale e spiegare quindi cosa sarebbe successo qui è necessario scrivere questo. Beh, certo che è zero, ma provo a leggere, non vedo nulla di incomprensibile, il che non spiega molto di superfluo. E posso dire che non sono uno stupido, posso riparare quasi tutti i componenti elettronici, cioè sono amico della mia testa, ma non lo capisco perché scrivono quelli che sanno, ma si sono dimenticati delle sfumature mentre si scavavano.