“You don’t need anyone’s permission to make something great.”

Massimo Banzi

Kaj je Arduino UNO?

Arduino UNO je odprtokodni mikrokrmilnik na elektronski ploščici namenjeni za učenje, testiranje in razvoj. Pod odprtokodni mislim, da so dizajnerji ploščic dovolili vpogled elektronskih načrtov in dovolili drugim izdelovalcem strojne opreme izdelovati in prodajati svoje izdelke, ki pa so kompatibilni z originalom.

Programiranje se izvaja preko namenskega brezplačnega programa Arduino IDE. Torej imamo dva dela. Fizičnega in programskega.

Fizični del si lahko predstavljamo kot množica različnih verzij elektronskih ploščic, ki na sebi gostijo vsaj en Arduino mikrokrmilnik. Arduino UNO je najbolj popularna verzija krmilnika, saj je kompromis velikosti, zmogljivost, cene in še česa.

Arduino UNO
Arduino UNO

Programski del je programska koda poenostavljene verzije C++ programskega jezika. Zadnje čase se pojavlja vedno več verzij programskega jezika. Celo grafični pri katerem kode ne pišemo ampak zlagamo ukaze in funkcije kot bloke. Primer sta recimo Visuino in TinkerCAD.

UNO v italijanščini pomeni ena in je napovedoval prihod Arduino UNO 1.0. UNO je elektronska ploščica, katere jedro je mikrokrmilnik Atmega328 in ima 14 digitalnih vhodov/izhodov (6 od teh je lahko PWM), 6 analognih vhodov, 16MHz keramični kristal, USB konektor, napajalni konektor, ICSP konektor in reset tipko. Ploščica vsebuje vso periferijo, ki jo Atmelov mikrokrmilnik potrebuje. Jo preprosto povežemo z računalnikom in na njo naložimo program.


Glavni sestavni deli Arduino UNO ploščice

  • mikrokrmilnik: Atmega328 (program)
  • mikrokrmilnik: Atmega16U2 (za USB komunikacijo)
  • delovna napetost: 5V
  • vhodna napetost (proporočena): 7 – 12Vdc
  • vhodna napetost (min-max): 6 – 20 Vdc
  • DC tok po I/O pinu: 40mA
  • DC tok po 3.3V pinu: 50,A

0kB
FLASH

0kB
SRAM

0kB
EEPROM

0MHz
ura


0
digitalni I/O

0
PWM

0
analog in

0MHz
analog out

Napajanje

Arduino UNO lahko napajamo kar preko USB povezave ali pa zunanjega napajanja. V primeri, da testiramo samo neko preprosto logiko je USB povezava dovolj. V kolikor imamo priklopljenih več porabnikov je potrebno uporabiti zunanje napajanje. Za tega lahko uporabimo različne vire. Recimo 7 do 12V adapter, set AA ali AAA baterij, 9V baterija, 9 ali 12V akumulator, itd. Napajalni konektor je 2.1 mm konektor s plusom na sredinskem kontaktu. V kolikor pripeljemo zunanjo napetost nižjo od 7V je možno, da vgrajeni regulator ne bo zagotavljal 5V. Ali pa bo ob vklopu močnejših porabnikov napetost nihala. Po drugi strani z napajanjem ne smemo pretiravati. Če dovajamo več kot 12V, se lahko napetostni regulator pregreva ali celo pregori.

Napetostni pini

  • Vin: Vhodna zunanja napetost. Preko tega pina lahko pripeljemo zunanje napajanje. Če napajamo preko napajalnega konektorja lahko preko tega pina dostopamo do zunanje napetosti.
  • 5V: Stabilizirana napetost +5Vdc iz vgrajenega regulatorja. Sicer lahko Arduino UNO napajamo tudi preko tega pina. Ampak le v primer, da smo prepričani, da imamo stabilno napetost 5V dc. Te prakse se izogibamo.
  • 3.3V: Stabilizirana napetost +3.3Vdc iz vgrajenega regulatorja. Maksimalna poraba je 30mA.
  • GND: Nizki potencial 0V.

Spomin

Atmega328 ima 32 kB FLASH spomina. Od tega je 0.5kB porabljenega za bootloader. Poleg tega imamo 2 kB SRAM-a in 1 kB EEPROM-a, ki ga v svojem programu lahko uporabljamo.

Vhodno izhodni pini

Vseh 14 pinov je možno uporabiti kot vhodne ali izhodne (pinMode(), digitalWrite(), digitalRead() funkcije). Vsi delujejo na napetostnem nivoju 5V. Vsak pin lahko odda max. 40MA toka in ima interni pull-up upor.  Nekateri pini imajo dodatne funkcije.

  • serijska komunikacija: 0 (RX) in 1 (TX): Pina omogočata sprejemanje (RX) in pošiljanje (TX) TTL signala za serijsko komunikasijo.
  • Zunanji interapti: pin 2 in 3: Ta pina lahko uporabimo za proženje zunanjih interaptov. Proženje je lahko pri nizkem stanju 0V, prehodu na pozitivno ali prehodu na negativno nivo (attachInterrupt() funkcija).
  • PWM: 3,5,6,9, 10 in 11: Možnost ustvarjanja 8-bitnega PWM signala (analogWrite() funkcija).
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): Možnost SPI komunikacije.
  • LED: pin 13: Arduino UNO ima vgrajeno LED diodo, ki je povezana na pin 13. Ko je na pinu 13 visok nivo je LED prižgana. LED je uporabna zato, da nam ni potrebno podajati nikakršnih zunanjih elementov, da bi testirali osnovni program (Blink). Praviloma ima vsak Arduino tovarniško naložen takoimenovani Blink program, kjer LED dioda utripa s frekvenco 0,5Hz.
  • Analogni vhodi: A0 do A5: UNO ima 6 10-bitnih analognih vhodov. Kar pomeni, da lahko izmejeno napetost razdelimo na 1024 delov. Torej 5V na 1024 delov. Posledično je najnižja teoretična resolucija ADC pretvornika 0,00488V (4,88mV). Je pa možno spremniti zgornjo mejo za ADC pretvornik preko analogReference() funkcije.
  • I2C: A4 (SDA) in A5 (SCL): I2C komunikacija.
  • Aref: Prej omenjena možnost spreminjanja zgornej meje ADC prtvornika.
  • Reset: Reset pin. Običajno namenej

 USB zaščita

Arduino UNO ima resetabilno varovalko, ki ščiti USB našega računalnika pred kratim stikom ali prevelikim tokom. Čeprav ima večina računalnikov že svojo zaščito, je to dodatna varnost. V primeru, da steče več kot 500mA varovalka avtomatsko prekine povezavo.

Ploščica za USB povezavo vsebuje dodatni namenski Atmelov mikrokrmilnik Atmega16U2, ki skrbi za pretvorbo signalov. 

Nadaljujemo

Tu pa se zgodba šele dobro začne. Arduino sistem je zelo modularen. Predvsem forma Arduino UNO krmilnika. To pomeni, da imamo na voljo ogromno število dodatnih modulov, ki jim s tujko rečemo “shields“. Torej nekakšne nadgradnje, ki osnovi dodajajo vse mogoče in nemogoče funkcije. Posledično imamo ponovno olajšano delo kar se fizičnea dela tiče. Dovolj je, da poiščemo primerno nadgradnjo za naš projekt in že narejen in opisan primer na internetu in smo na konju. Običajno je potrebno kodo malo prilagoditi svojim potrebam, ampak to je še vedno veliko bolje kot vse delati od začetka.