categorieën: Aanbevolen artikelen » Praktische elektronica
Aantal keer bekeken: 67360
Reacties op het artikel: 7

Arduino verbinden en programmeren voor beginners

 

Lijkt het bestuderen van microcontrollers ingewikkeld en onbegrijpelijk? Vóór de verschijning van Arudino was het echt niet eenvoudig en vereiste een bepaalde set programmeurs en andere apparatuur.


Wat is een Arduino?

Dit is een soort elektronische constructeur. Het oorspronkelijke doel van het project is om mensen gemakkelijk te laten leren hoe ze elektronische apparaten kunnen programmeren, terwijl ze minimale tijd besteden aan het elektronische gedeelte.

De assemblage van de meest gecompliceerde circuits en de aansluiting van de platen kunnen worden uitgevoerd zonder een soldeerbout en met behulp van jumpers met afneembare verbindingen "vader" en "moeder". Op deze manier kunnen zowel bijlagen als uitbreidingskaarten worden aangesloten, die in het lexicon van de Arduinisten eenvoudigweg "Shields" worden genoemd.

Wat is Arduino?

Wat is het eerste Arduino-bord dat voor een newbie wordt gekocht?

Het basis- en populairste bord wordt beschouwd Arduino uno. Deze vergoeding lijkt op een creditcard. Behoorlijk groot. De meeste schilden die te koop zijn, zijn perfect voor haar. Er zijn aansluitingen op het bord voor het aansluiten van externe apparaten.

Arduino uno

In binnenlandse winkels voor 2017 is de prijs ongeveer 4-5 dollar. Op moderne modellen is Atmega328 haar hart.

Arduino uno

Arduino bordafbeelding en functiedecodering van elke pin, Arduino UNO pinout

De microcontroller op dit bord is een lange chip in het DIP28-pakket, wat betekent dat deze 28 poten heeft.

Het volgende meest populaire bord kost bijna twee keer goedkoper dan het vorige - 2-3 dollar. Dit is het bord Arduino nano. Werkelijke boards zijn gebouwd door dezelfde Atmega328, ze zijn functioneel vergelijkbaar met UNO, verschillen in grootte en de beslissing om te matchen met USB, daarover later meer. Een ander verschil is dat er een stekker in de vorm van naalden is aangebracht om apparaten op de printplaat aan te sluiten.

Arduino nano

Het aantal pinnen (poten) van dit bord is hetzelfde, maar je kunt zien dat de microcontroller is gemaakt in een compacter TQFP32-pakket, ADC6 en ADC7 zijn toegevoegd in het geval, de andere twee "extra" poten dupliceren de powerbus. De afmetingen zijn vrij compact - ongeveer de grootte van een duim van je hand.

Nano pinout van Aruino 

Het derde meest populaire bord is Arduino Pro Mini, het heeft geen USB-poort voor aansluiting op een computer, ik zal u later vertellen hoe u kunt communiceren.

Arduino Nano versus Pro Mini-formaatvergelijking

Arduino Nano versus Pro Mini-formaatvergelijking

Dit is het kleinste bord van alle beschouwde, anders is het vergelijkbaar met de vorige twee, en Atmega328 is nog steeds zijn hart. We zullen geen andere boards overwegen, omdat dit een artikel voor beginners is en de vergelijking van boards het onderwerp is van een apart artikel.

Arduino Pro Mini pinout, in het bovenste gedeelte, het USB-UART-verbindingsdiagram, pin "GRN" - is aangesloten op het resetcircuit van de microcontroller, dit kan anders worden genoemd, waarover u later moet weten.

resultaten:

Als UNO handig is voor prototyping, dan zijn Nano en Pro Mini handig voor de definitieve versies van uw project, omdat ze weinig ruimte innemen.

Arduino voor beginners

Hoe Arduino op een computer aan te sluiten?

Arduino Uno en Nano maken verbinding met een computer via USB. Tegelijkertijd is er geen hardware-ondersteuning voor de USB-poort, hier wordt een oplossing voor niveauconversiecircuits gebruikt, meestal USB-naar-serieel of USB-UART (rs-232) genoemd. Tegelijkertijd wordt een speciale Arduino-bootloader in de microcontroller geflitst, waardoor op deze bussen kan worden geflitst.

In Arduino Uno wordt deze ligatuur geïmplementeerd op een microcontroller met USB-ondersteuning - ATmega16U2 (AT16U2). Het blijkt dat de extra microcontroller op het bord nodig is voor het flitsen van de hoofdmicrocontroller.

In Arduino Nano wordt dit geïmplementeerd door de FT232R-chip of de analoge CH340. Dit is geen microcontroller - het is een niveau-omzetter, dit feit maakt het gemakkelijk om de Arduino Nano vanuit het niets met uw eigen handen te monteren.

Meestal worden stuurprogramma's automatisch geïnstalleerd wanneer het Arduino-bord wordt aangesloten. Toen ik echter een Chinees exemplaar van de Arduino Nano kocht, werd het apparaat herkend, maar het werkte niet, een ronde sticker met gegevens over de releasedatum was op de converter gelijmd, ik weet niet of het met opzet is gedaan, maar na het afpellen zag ik de markering CH340.

Voorafgaand hieraan, kwam ik dit niet tegen en dacht dat alle USB-UART-converters op FT232 waren geassembleerd, ik moest stuurprogramma's downloaden, ze zijn zeer gemakkelijk te vinden op verzoek van "Arduino ch340-stuurprogramma". Na een eenvoudige installatie - het werkte!

Via dezelfde USB-poort kan de microcontroller ook worden gevoed, d.w.z. als u het vanaf een mobiele telefoon op de adapter aansluit, werkt uw systeem.


Wat moet ik doen als mijn board geen USB heeft?

De Arduino Pro Mini is kleiner. Dit werd bereikt door de USB-connector voor de firmware en dezelfde USB-UART-converter te verwijderen. Daarom moet het apart worden gekocht. De eenvoudigste converter op CH340 (de goedkoopste), CPL2102 en FT232R, te koop vanaf $ 1.

Let bij het kopen op het voltage waarvoor deze adapter is ontworpen. Pro mini is beschikbaar in versies 3.3 en 5 V, een jumper bevindt zich vaak op de converters om de voedingsspanning te schakelen.

Arduino Pro Mini

Wanneer u de Pro Mini knippert, moet u vlak voordat deze begint op RESET te klikken, maar in converters met DTR hoeft u dit niet te doen, het verbindingsdiagram in de onderstaande afbeelding.

Verbindingsdiagram voor firmware

Ze worden vergezeld door speciale terminals "Mama-Mama" (vrouw-vrouw).

Arduino-verbinding

Eigenlijk kunnen alle verbindingen worden gemaakt met behulp van dergelijke terminals (Dupont), ze zijn beide aan twee kanten met stopcontacten en met stekkers, en aan de ene kant van het stopcontact en aan de andere stekker.

plug

Hoe programma's te schrijven voor Arduino?

Om met schetsen te werken (de naam van de firmware is in de taal van de Arduino), is er een speciale geïntegreerde omgeving voor het ontwikkelen van de Arduino IDE, je kunt het gratis downloaden van de officiële website of van een thematische bron, meestal zijn er geen problemen met het installeren ervan.

Programma voor Arduino

Zo ziet de programma-interface eruit. U kunt programma's schrijven in de vereenvoudigde C AVR-taal die speciaal is ontwikkeld voor Arduino, in feite is dit een set bibliotheken die Wiring worden genoemd, en ook in pure C AVR. Het gebruik ervan vergemakkelijkt de code en versnelt het werk.

Boven aan het venster is er een vertrouwd menu waar u het bestand kunt openen, instellingen kunt selecteren, het bord waarmee u werkt (Uno, Nano en vele, vele anderen) en ook projecten met kant-en-klare codevoorbeelden kunt openen. Hieronder ziet u een aantal knoppen voor het werken met firmware, de toetsen die u in de onderstaande afbeelding ziet.

Programma-interface

Onderaan het venster bevindt zich een gebied voor het weergeven van informatie over het project, de status van de code, firmware en de aanwezigheid van fouten.


Arduino IDE programmeerprincipes

Aan het begin van de code moet u variabelen declareren en extra bibliotheken verbinden, als deze bestaan, gebeurt dit als volgt:

# include biblioteka.h; // verbind de bibliotheek met de naam "Biblioteka.h"

#define peremennaya 1234; // Declareer een variabele met een waarde van 1234

Met de opdracht Define kan de compiler het type variabele kiezen, maar u kunt deze handmatig instellen, bijvoorbeeld een integer integer of een float met drijvende komma.

int led = 13; // creëerde de variabele "led" en gaf deze de waarde "13"

Het programma kan de toestand van de pin bepalen als 1 of 0. 1 is een logische eenheid, als pin 13 1 is, is de spanning op zijn fysieke poot gelijk aan de voedingsspanning van de microcontroller (voor arduino UNO en Nano - 5 V)

Het digitale signaal wordt opgenomen met behulp van de opdracht digitalWrite (pin, waarde), bijvoorbeeld:

digitalWrite (led, high); // schrijf de eenheid naar pin 13 (we hebben het hierboven aangekondigd) logboek. Unit.

Zoals u begrijpt, is de toegang tot de poorten door nummering op het bord, overeenkomstig cijfer. Hier is een voorbeeld vergelijkbaar met de vorige code:

digitalWrite (13, hoog); // zet pin 13 op één

Vaak wordt de gewenste vertragingsfunctie aangeroepen door de opdracht delay (), waarvan de waarde wordt ingesteld in milliseconden, waarbij microseconden worden bereikt met

delayMicroseconds () Vertraging (1000); // microcontroller wacht 1000 ms (1 seconde)

De poortinstellingen voor invoer en uitvoer worden ingesteld in de functie void setup {}, met het commando:

void setup () {

pinMode (NOMERPORTA, OUTPUT / INPUT); // argumenten - naam van de variabele of poortnummer, invoer of uitvoer om uit te kiezen

}

Ongeldige lus {}


Inzicht in het eerste Blink-programma

Als een soort van "Hallo wereld" voor microcontrollers, is er een LED knipperend programma, laten we de code analyseren:

In het begin, met het pinMode-commando, vertelden we de microcontroller om een ​​poort met een LED aan de uitgang toe te wijzen.Je hebt al gemerkt dat de code niet de variabele "LED_BUILTIN" aangeeft, het feit is dat in Uno, Nano en andere boards van de fabriek de ingebouwde LED is verbonden met pin 13 en is gesoldeerd op het board. Het kan door u worden gebruikt voor indicatie in uw projecten of voor de eenvoudigste controle van uw knipperende programma's.

Vervolgens stellen we de uitgang in waaraan de LED wordt gesoldeerd tot eenheid (5 V), de volgende regel laat de MK 1 seconde wachten en stelt vervolgens de LED_BUILTIN pin in op nul, wacht een seconde en het programma herhaalt zich in een cirkel, dus wanneer LED_BUILTIN 1 is - de LED ( en elke andere belasting die op de poort is aangesloten) is ingeschakeld, wanneer deze op 0 is uitgeschakeld.

Werkt alles en is alles duidelijk? Ga dan verder!



We lezen de waarde van de analoge poort en gebruiken de gelezen gegevens

De Atmega328 AVR-microcontroller heeft een ingebouwde 10-bit analoog-digitaal converter. Met de 10-bit ADC kunt u de spanningswaarde lezen van 0 tot 5 volt, in stappen van 1/1024 van het volledige amplitudebereik van het signaal (5 V).

Om het duidelijker te maken, overweeg de situatie, stel dat de spanningswaarde op de analoge ingang 2,5 V is, dan zal de microcontroller de waarde van pin "512" lezen als de spanning 0 - "0" is, en als 5 V - (1023). 1023 - omdat de telling van 0 gaat, d.w.z. 0, 1, 2, 3, etc. tot 1023 - in totaal 1024 waarden.

Hier is hoe het eruit ziet in de code, met behulp van de standaardschets "analogInput" als een voorbeeld

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

void setup () {

pinMode (ledPin, OUTPUT);

}

void loop () {

sensorValue = analogRead (sensorPin);

digitalWrite (ledPin, HIGH);

vertraging (sensorValue);

digitalWrite (ledPin, LOW);

vertraging (sensorValue);

}

Het verbindingsschema van de potentiometer naar Arduino, naar analogie, de centrale uitgang die u op elke analoge ingang kunt aansluiten

Het verbindingsschema van de potentiometer naar Arduino, naar analogie, de centrale uitgang die u op elke analoge ingang kunt aansluiten.

Variabelen declareren:

  • Ledpin - wijs onafhankelijk een pin met een ingebouwde LED toe aan de uitgang en geef een individuele naam;

  • sensorPin - analoge ingang, overeenkomstig ingesteld op de markering op het bord: A0, A1, A2, enz .;

  • sensorValue - een variabele voor het opslaan van een gehele leeswaarde en verder ermee werken.

De code werkt als volgt: sensorValue bewaart de analoge waarde die is gelezen met sensorPin (opdracht analoog lezen). - hier eindigt het werk met het analoge signaal, dan is alles zoals in het vorige voorbeeld.

We schrijven de eenheid in ledPin, de LED gaat aan en wacht een tijd gelijk aan de waarde van sensorValue, d.w.z. van 0 tot 1023 milliseconden. Schakel de LED uit en wacht opnieuw gedurende deze periode, waarna de code wordt herhaald.

Dus, door de positie van de potentiometer, stellen we de knipperfrequentie van de LED in.


Kaartfunctie voor Arudino

Niet alle functies voor actuatoren (ik ken er geen) ondersteunen '1023' als argument, de servo wordt bijvoorbeeld beperkt door de draaihoek, dat wil zeggen met een halve omwenteling (180 graden) (halve omwenteling) van de servomotor, het maximale argument van de functie is '180'

Nu over de syntaxis: map (de waarde die we vertalen is de minimale invoerwaarde, de maximale invoerwaarde, de minimale uitvoerwaarde, de maximale uitvoerwaarde).

In code ziet het er zo uit:

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

We lezen de waarde van de potentiometer (analogRead (pot)) van 0 tot 1023, en aan de uitgang krijgen we getallen van 0 tot 180

Waarden kaartwaarden:

  • 0=0;

  • 1023=180;

In de praktijk passen we dit toe op het werk van dezelfde servocode, kijk eens naar de code met de Arduino IDE, als je de voorgaande paragrafen aandachtig leest, dan is er geen uitleg nodig.

En het verbindingsdiagram.

Aansluitschema

Conclusies Arduino is een zeer handige tool om te leren hoe te werken met microcontrollers. En als u pure C AVR gebruikt, of zoals het soms "Pure C" wordt genoemd, zult u het codegewicht aanzienlijk verminderen en meer in het geheugen van de microcontroller passen, als resultaat krijgt u een uitstekend in de fabriek gemaakt debuggingbord met USB-firmware.

Arduino voor beginners

Mening van de auteur:

Ik hou van Arduino. Het is jammer dat veel ervaren microcontroller-programmeurs het onredelijk bekritiseren, dat het te vereenvoudigd is. In principe is alleen de taal vereenvoudigd, maar niemand dwingt je om het te gebruiken, plus je kunt de microcontroller flashen via de ICSP-connector en de gewenste code invullen zonder bootloaders die je niet nodig hebt.

Voor degenen die willen spelen met elektronica, als een geavanceerde constructeur, is het perfect, maar voor ervaren programmeurs zal een bord dat geen assemblage vereist ook nuttig zijn!

Zie het e-boek voor meer informatie over Arduino en de functies van het gebruik ervan in verschillende schema's -Arduino voor dummies. Geïllustreerde praktische gids.

Zie ook op i.electricianexp.com:

  • Methoden voor het lezen en beheren van Arduino I / O-poorten
  • Welk Arduino-bord te kiezen
  • Typen en opstelling van AVR-microcontrollers
  • Microcontroller-afstandsbediening: IR-afstandsbediening, Arduino, ESP8266, 433 ...
  • Analoge sensoren verbinden met Arduino, sensoren lezen

  •  
     
    reacties:

    # 1 schreef: Electromag | [Cite]

     
     

    Welke literatuur over het bestuderen van programmeercode raadt u aan?

     
    reacties:

    # 2 schreef: Andrew | [Cite]

     
     

    ElectromagUlli Sommer. Arduino / Freeduino Microcontroller Board Programming, door Jeremy Bloom. We bestuderen Arduino. Hulpmiddelen en technieken voor technische magie, John Boxell. We bestuderen Arduino. 65 doe-het-zelf-projecten. Boeken over Arduino over ozon: i.electricianexp.com/arduino_books.php

     
    reacties:

    # 3 schreef: Victor | [Cite]

     
     

    Heel interessant en opwindend materiaal, bedankt!

     
    reacties:

    # 4 schreef: Ural | [Cite]

     
     

    Bedankt voor de informatie, de "kaart" -functie was erg handig. Ik vroeg me af hoe ik de weg kon vinden en begon pas speelgoed te leren op Arduino.

     
    reacties:

    # 5 schreef: Dima | [Cite]

     
     

    Iets wat ik niet vind voor Arduino-schilden om te delen op mil-std-1553b, hoewel voor comp-bussen - hopen, een zeer populaire interface. Por waar je kunt zoeken-kopen.

    postscriptum de datum van het artikel wordt niet weergegeven - misschien is ze 10 jaar oud en is het niet de moeite waard om opmerkingen te schrijven?

     
    reacties:

    # 6 schreef: Eremino | [Cite]

     
     

    Hoe maak je een ingangssignaalversterker op Arduino voor 4 of een willekeurig aantal uitgangen.

    Evenzo met 4 ingangskanalen tot 16 uitgangskanalen. In dit geval moet u de ingang gelijktijdig schakelen naar 4 uitgangen op elk ingangskanaal.

     
    reacties:

    # 7 schreef: Oleg | [Cite]

     
     

    Jongens, vertel eens, waar heb je leren programmeren? Ik heb veel informatie bekeken en niemand schreef duidelijk. Hier is alle informatie niet voor een beginner, echt veel is niet duidelijk, understatements. Er zijn veel woorden geschreven waarover geen woord bestaat, de auteur schrijft bijvoorbeeld in het begin dat je de bibliotheek moet aankondigen en #include biblioteka.h moet invoeren; // maar over dit woord schreef hij niets #inclusief waarom het mogelijk is dit allemaal te begrijpen. Het ontbreekt me al aan geduld, niemand kan het op de normale manier uitleggen, en verklaren dus wat hier zou gebeuren, het is noodzakelijk om dit te schrijven. Nou ja, het is natuurlijk nul, maar ik probeer te lezen, ik zie niets onbegrijpelijks, wat niet veel overbodige verklaart. En ik kan zeggen dat ik geen domme dwaas ben, ik kan bijna elke elektronica repareren, dat wil zeggen, ik ben vrienden met mijn hoofd, maar ik begrijp het niet omdat ze degenen schrijven die het weten, maar ze vergaten de nuances terwijl ze zich erin verdiepen.