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 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.

In binnenlandse winkels voor 2017 is de prijs ongeveer 4-5 dollar. Op moderne modellen is Atmega328 haar hart.
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.

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.
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
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.

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.

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.

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

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.

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.
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.

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.
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.

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.

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 electro-nl.tomathouse.com
: