kategorier: Udvalgte artikler » Praktisk elektronik
Antal visninger: 67360
Kommentarer til artiklen: 7

Tilslutning og programmering af Arduino til begyndere

 

Virker studiet af mikrokontrollere kompliceret og uforståeligt? Før udseendet af Arudino var det virkelig ikke let og krævede et vist sæt programmerere og andet udstyr.


Hvad er en Arduino?

Dette er en slags elektronisk konstruktør. Det oprindelige mål med projektet er at give folk let mulighed for at lære at programmere elektroniske enheder, samtidig med at man bruger minimal tid til den elektroniske del.

Montering af de mest komplicerede kredsløb og pladenes tilslutning kan udføres uden loddejern og ved hjælp af springere med aftagelige forbindelser "far" og "mor". På denne måde kan både vedhæftede filer og udvidelseskort forbindes, som i arduinistenes leksikon ganske enkelt kaldes ”Shields”.

Hvad er Arduino?

Hvad er det første Arduino-bord, der køber en nybegynder?

Basen og det mest populære bræt overvejes Arduino uno. Dette gebyr ligner et kreditkort. Temmelig stort. De fleste skjolde, der er til salg, er perfekte til hende. Der er stik på tavlen til tilslutning af eksterne enheder.

Arduino uno

I indenlandske butikker for 2017 er prisen ca. 4-5 dollars. På moderne modeller er Atmega328 hendes hjerte.

Arduino uno

Arduino-kortbillede og funktionsafkodning af hver pin, Arduino UNO pinout

Mikrokontrolleren på dette bord er en lang chip i DIP28-pakken, hvilket betyder, at den har 28 ben.

Det næste mest populære bord koster næsten to gange billigere end det foregående - 2-3 dollars. Dette er bestyrelsen Arduino nano. Faktiske tavler er bygget af den samme Atmega328, de fungerer funktionelt som UNO, forskelle i størrelse og beslutningen om at matche med USB, mere om dette senere. En anden forskel er, at der er tilvejebragt et stik i form af nåle til tilslutning af enheder til kredsløbskortet.

Arduino nano

Antallet af stifter (ben) på dette bord er det samme, men du kan observere, at mikrokontrolleren er lavet i en mere kompakt TQFP32-pakke, ADC6 og ADC7 tilføjes i tilfældet, de to andre "ekstra" ben duplikerer strømbussen. Dens dimensioner er ganske kompakte - omtrent på størrelse med en tommelfinger på din hånd.

Aruino nano pinout 

Det tredje mest populære bord er Arduino Pro Mini, den har ikke en USB-port til forbindelse til en computer, jeg vil fortælle dig, hvordan du kommunikerer lidt senere.

Arduino Nano vs Pro Mini størrelse sammenligning

Arduino Nano vs Pro Mini størrelse sammenligning

Dette er det mindste bord på alle betragtede, ellers ligner det de to foregående, og Atmega328 er stadig dens hjerte. Vi vil ikke overveje andre tavler, da dette er en artikel for begyndere, og sammenligningen af ​​tavler er emnet for en separat artikel.

Arduino Pro Mini pinout, i den øverste del, USB-UART-tilslutningsdiagrammet, pin “GRN” - er forbundet til mikrokontrollerens nulstillingskredsløb, det kaldes måske anderledes, som du skal finde ud af senere.

resultater:

Hvis UNO er ​​praktisk til prototype, er Nano og Pro Mini praktisk til de endelige versioner af dit projekt, fordi de tager lidt plads.

Arduino for begyndere

Hvordan forbindes Arduino til en computer?

Arduino Uno og Nano opretter forbindelse til en computer via USB. På samme tid er der ingen hardwarestøtte til USB-porten, her bruges en kredsløb til niveaukonvertering, normalt kaldet USB-til-seriel eller USB-UART (rs-232). På samme tid blinkes en speciel Arduino-startloader ind i mikrokontrolleren, som tillader at blinke på disse busser.

I Arduino Uno implementeres denne ligatur på en mikrocontroller med USB-understøttelse - ATmega16U2 (AT16U2). Det viser sig, at den ekstra mikrokontroller på tavlen er nødvendig for at blinke hovedmikrokontrolleren.

I Arduino Nano implementeres dette af FT232R-chippen eller dens analoge CH340. Dette er ikke en mikrokontroller - det er en niveauomformer, denne kendsgerning gør det nemt at samle Arduino Nano fra bunden med dine egne hænder.

Drivere installeres typisk automatisk, når Arduino-kortet er tilsluttet. Da jeg købte en kinesisk kopi af Arduino Nano, blev enheden dog genkendt, men den virkede ikke, et rundt klistermærke med data på udgivelsesdatoen blev limet på konverteren, jeg ved ikke, om det blev gjort med vilje, men efter at have skrellet det af så jeg mærket CH340.

Før det havde jeg ikke stødt på dette og tænkte, at alle USB-UART-konvertere var samlet på FT232, jeg var nødt til at downloade drivere, de er meget lette at finde på anmodning af “Arduino ch340 driver”. Efter en enkel installation - det virkede!

Gennem den samme USB-port kan mikrokontrolleren også drives, dvs. Hvis du slutter den til adapteren fra en mobiltelefon, fungerer dit system.


Hvad skal jeg gøre, hvis mit bord ikke har USB?

Arduino Pro Mini er mindre. Dette blev opnået ved at fjerne USB-stikket til firmwaren og den samme USB-UART-konverter. Derfor skal det købes separat. Den enkleste konverter på CH340 (den billigste), CPL2102 og FT232R, til salg koster fra $ 1.

Når du køber, skal du være opmærksom på, hvilken spænding denne adapter er designet til. Pro mini fås i version 3.3 og 5 V, en jumper er ofte placeret på omformerne for at skifte forsyningsspænding.

Arduino Pro Mini

Når du blinker Pro Mini, lige inden den starter, skal du klikke på RESET, men i konvertere med DTR behøver du ikke at gøre dette, forbindelsesdiagrammet i figuren nedenfor.

Forbindelsesdiagram til firmware

De får sammen med særlige terminaler "Mama-Mama" (kvindelig-kvindelig).

Arduino-forbindelse

Faktisk kan alle forbindelser foretages ved hjælp af sådanne terminaler (Dupont), de er begge på to sider med stikkontakter og med stik, og på den ene side af stikkontakten og på den anden stik.

stik

Hvordan skriver man programmer til Arduino?

For at arbejde med skitser (firmwarets navn er på arduino-sproget) er der et specielt integreret miljø til udvikling af Arduino IDE, du kan downloade den gratis fra det officielle websted eller fra en hvilken som helst tematiske ressource, som regel er der ingen problemer med at installere den.

Program til Arduino

Sådan ser programgrænsefladen ud. Du kan skrive programmer på det forenklede C AVR-sprog, der er specielt udviklet til arduino, faktisk er det et sæt biblioteker kaldet Wiring samt i ren C AVR. Brug af det letter koden og fremskynder sit arbejde.

Øverst i vinduet er der en velkendt menu, hvor du kan åbne filen, indstillinger, vælge det bræt, du arbejder med (Uno, Nano, og mange, mange andre) og også åbne projekter med færdige kodeeksempler. Nedenfor er et sæt knapper til at arbejde med firmware, de taster, du vil se i figuren nedenfor.

Programgrænseflade

Nederst i vinduet er et område til visning af information om projektet, status for koden, firmware og tilstedeværelsen af ​​fejl.


Grundlæggende om Arduino IDE-programmering

I begyndelsen af ​​koden skal du erklære variabler og forbinde yderligere biblioteker, hvis de findes, gøres dette som følger:

#include biblioteka.h; // forbinde biblioteket med navnet “Biblioteka.h”

#definer peremennaya 1234; // Angiv en variabel med en værdi af 1234

Kommandoen Define giver compileren mulighed for at vælge variabeltypen, men du kan indstille den manuelt, f.eks. Et heltal int eller en flydende punktfløje.

int led = 13; // oprettede variablen "ledet" og tildelte det værdien "13"

Programmet kan bestemme stiften som 1 eller 0. 1 er en logisk enhed, hvis stift 13 er 1, vil spændingen på dens fysiske ben være lig med forsyningsspændingen for mikrokontrolleren (for arduino UNO og Nano - 5 V)

Det digitale signal optages ved hjælp af kommandoen digitalWrite (pin, værdi), for eksempel:

digitalWrite (ledet, højt); // skriv enheden til pin 13 (vi annoncerede den ovenfor) log. Enhed.

Som du kan forstå, er adgangen til portene ved at nummerere på tavlen, tilsvarende figur. Her er et eksempel, der ligner den forrige kode:

digitalWrite (13, høj); // sæt pin 13 til en

Ofte kaldes den efterspurgte tidsforsinkelsesfunktion ved hjælp af kommandoen forsinkelse (), hvis værdi er indstillet i millisekunder, mikrosekunder opnås ved hjælp af

forsinkelse Mikrosekunder () Forsinkelse (1000); // mikrokontroller venter 1000 ms (1 sekund)

Portindstillingerne for input og output indstilles i funktionen tom opsætning {} med kommandoen:

ugyldig opsætning () {

pinMode (NOMERPORTA, OUTPUT / INPUT); // argumenter - variabelt navn eller portnummer, input eller output at vælge imellem

}

Void loop {}


Forståelse af det første Blink-program

Som en slags "Hej, verden" til mikrokontrollere er der et LED blinkende program, lad os analysere dens kode:

I starten, med pinMode-kommandoen, fortalte vi mikrokontrolleren at tildele en port med en LED til udgangen.Du har allerede bemærket, at koden ikke erklærer variablen “LED_BUILTIN”, faktum er, at i den uno, Nano og andre plader fra fabrikken er den indbyggede LED forbundet til pin 13, og den er loddet til brættet. Det kan bruges af dig til indikation i dine projekter eller til den enkleste kontrol af dine blinkende programmer.

Derefter sætter vi det output, som LED'en er loddet til enhed (5 V), den næste linje får MK til at vente 1 sekund, og sætter derefter LED_BUILTIN-nålen til nul, venter et sekund, og programmet gentages i en cirkel, så når LED_BUILTIN er 1 - LED ( og enhver anden belastning, der er forbundet til porten) er tændt, når den 0 er slået fra.

Arbejder alt, og alt er klart? Gå derefter videre!



Vi læser værdien fra den analoge port og bruger de læste data

Atmega328 AVR-mikrokontrolleren har en indbygget 10-bit analog-til-digital konverter. 10-bit ADC giver dig mulighed for at læse spændingsværdien fra 0 til 5 volt i trin på 1/1024 af hele amplitudeområdet for signalet (5 V).

For at gøre det klarere skal du overveje situationen, antage, at spændingsværdien ved den analoge indgang er 2,5 V, så vil mikrokontrolleren læse værdien fra stiften "512", hvis spændingen er 0 - "0", og hvis 5 V - (1023). 1023 - fordi antallet går fra 0, dvs. 0, 1, 2, 3 osv. op til 1023 - i alt 1024 værdier.

Sådan ser det ud i koden ved hjælp af standardskitse “analogInput” som eksempel

int sensorPin = A0;

int ledPin = 13;

int sensorVærdi = 0;

ugyldig opsætning () {

pinMode (ledPin, OUTPUT);

}

void loop () {

sensorValue = analogRead (sensorPin);

digitalWrite (ledPin, HIGH);

forsinkelse (sensorValue);

digitalWrite (ledPin, LOW);

forsinkelse (sensorValue);

}

Skema med tilslutning af et potentiometer til Arduino, analogt, den centrale udgang, du kan forbinde til enhver analog indgang

Forbindelsesskemaet til potentiometeret til Arduino, analogt, den centrale udgang, du kan forbinde til enhver analog indgang.

Angiv variabler:

  • Ledpin - tildel uafhængigt af en pin med en indbygget LED til output og give et individuelt navn;

  • sensorPin - analog indgang, indstilles i overensstemmelse med markeringen på tavlen: A0, A1, A2, osv.;

  • sensorValue - en variabel til lagring af en heltal læst værdi og videre arbejde med den.

Koden fungerer sådan: sensorValue gem den analoge værdi læst med sensorPin (analogRead-kommando). - her slutter arbejdet med det analoge signal, så er alt som i det forrige eksempel.

Vi skriver enheden i ledPin, LED tænder og venter en tid svarende til værdien af ​​sensorValue, dvs. fra 0 til 1023 millisekunder. Sluk for LED og vent igen i dette tidsrum, hvorefter koden gentages.

Således indstiller vi blinkende frekvens for LED ved hjælp af potentiometeret.


Kortfunktion for Arudino

Ikke alle funktioner til aktuatorer (jeg kender ikke nogen) understøtter “1023” som et argument, for eksempel er servoen begrænset af rotationsvinklen, det vil sige med en halv omdrejning (180 grader) (halv omdrejning) af servomotoren, det maksimale argument for funktionen er “180”

Nu om syntaks: kort (den værdi, vi oversætter, er den minimale input, den maksimale input, den minimale output, den maksimale output).

I kode ser det sådan ud:

(kort (analog læse (pot), 0, 1023, 0, 180));

Vi læser værdien fra potentiometeret (analogRead (pot)) fra 0 til 1023, og ved output får vi tal fra 0 til 180

Værdi Kortværdier:

  • 0=0;

  • 1023=180;

I praksis anvender vi dette til arbejdet med den samme servokode, kig på koden med Arduino IDE, hvis du omhyggeligt læser de foregående afsnit, kræver den ikke forklaring.

Og forbindelsesdiagrammet.

Ledningsdiagram

Konklusioner Arduino er et meget praktisk værktøj til at lære at arbejde med mikrokontrollere. Og hvis du bruger ren C AVR, eller som det undertiden kaldes "Pure C", vil du reducere kodevægten markant og passe mere i mikrokontrollerens hukommelse, som et resultat, får du et fremragende fabriksfremstillet debuggingboard med USB-firmware.

Arduino for begyndere

Forfatterens udtalelse:

Jeg kan godt lide arduino. Det er en skam, at mange erfarne mikrocontroller-programmerere kritiserer det urimeligt, at det er for forenklet. I princippet er det kun sproget, der er forenklet, men ingen tvinger dig til at bruge det, plus du kan blinke mikrokontrolleren gennem ICSP-stikket og udfylde den ønskede kode uden nogen bootloadere, som du ikke har brug for.

For dem, der vil lege med elektronik, som en avanceret konstruktør, er det perfekt, men for erfarne programmører er et bræt, der ikke kræver montering, også nyttigt!

For mere information om Arduino og funktionerne ved dens anvendelse i forskellige skemaer, se e-bogen -Arduino til dummies. Illustreret praktisk vejledning.

Se også på elektrohomepro.com:

  • Metoder til læsning og styring af Arduino I / O-porte
  • Hvilket Arduino bord skal vælge
  • Typer og arrangement af AVR-mikrokontrollere
  • Microcontroller Remote Control: IR Remote, Arduino, ESP8266, 433 ...
  • Tilslutning af analoge sensorer til Arduino, læssensorer

  •  
     
    Kommentarer:

    # 1 skrev: elektromagnet | [Cite]

     
     

    Hvilken litteratur om at studere programmeringskode anbefaler du?

     
    Kommentarer:

    # 2 skrev: Andrew | [Cite]

     
     

    elektromagnetUlli Sommer. Programmering af Arduino / Freeduino-mikrokontrolbræt, af Jeremy Bloom. Vi studerer Arduino. Værktøjer og teknikker til teknisk magi, John Boxell. Vi studerer Arduino. 65 gør-det-selv-projekter. Bøger om Arduino på ozon: electro-bg.tomathouse.com/arduino_books.php

     
    Kommentarer:

    # 3 skrev: Victor | [Cite]

     
     

    Meget interessant og spændende materiale, tak!

     
    Kommentarer:

    # 4 skrev: Ural | [Cite]

     
     

    Tak for informationen, "kort" -funktionen var meget praktisk, jeg spekulerede på, hvordan man skulle komme rundt, lige begyndt at lære legetøj på Arduino.

     
    Kommentarer:

    # 5 skrev: Dima | [Cite]

     
     

    Noget jeg ikke finder for arduino-skjolde til deling på mil-std-1553b, skønt for komp-busser - dynger, et meget populært interface. Poke hvor du kan søge-købe.

    P.S. datoen for artiklen vises ikke - måske er hun 10 år gammel og burde ikke allerede skrive kommentarer?

     
    Kommentarer:

    # 6 skrev: EREMINO | [Cite]

     
     

    Sådan opretter du en Arduino-repeater af et indgangssignal til 4 eller et hvilket som helst antal udgange.

    Tilsvarende gør det med 4 inputkanaler til 16 outputkanaler. I dette tilfælde skal du skifte input til alle 4 udgange samtidigt på hver inputkanal.

     
    Kommentarer:

    # 7 skrev: Oleg | [Cite]

     
     

    Fyr, fortæl mig, hvor lærte du at programmere? Jeg gennemgik en masse information, og ingen skrev klart. Her er al information ikke til en begyndere, virkelig er meget ikke klart, underdrivelse. Der er skrevet en masse ord, som ikke et ord er, for eksempel skriver forfatteren, i starten har du brug for at erklære biblioteket og gå ind i #include biblioteka.h; // men om dette ord skrev han ikke noget # inkluder, hvorfor er det muligt at forstå alt dette. Jeg mangler allerede tålmodighed, ingen kan forklare på den normale måde og forklare, så hvad der ville ske her, er det nødvendigt at skrive dette. Det er selvfølgelig nul, men jeg prøver at læse, jeg ser intet uforståeligt, meget overflødigt, der ikke forklarer. Og jeg kan sige, at jeg ikke er en dum nar, jeg kan reparere næsten enhver elektronik, det vil sige, jeg er venner med mit hoved, men jeg forstår det ikke, fordi de skriver dem, der ved, men de glemte nuancerne, som de selv dkkede ud i det.