Arduino opas

Alunperin julkaistu: 9.2.2017

Viimeksi muokattu: perjantai 19.8.2022

Arduino Uno

Sulautetun elektroniikan parissa työskenteleville yllä näkyvä kehitysalusta Arduino Uno voi olla hyvinkin tuttu, mutta kaikille se varmaankaan sitä ei ole. Kuvan piirilevyllä on ohjelmoitava 8-bittinen mikroprosessori (Atmega328P) ja ohjelmointi tapahtuu erillisen tietokoneohjelmiston nimeltä Arduino IDE:n avulla (Integrated Development Environment).

Alustassa oleva mikroprosessori on muistiltaan (32 kt flash / 1 kt EEPROM / 2 kt SRAM) ja nopeudeltaan hyvin rajallinen (16 MHz), niin aivan älyttömän suuria projekteja tällä ei kannata toteuttaa, mutta perusharrastaja/virittelijä pärjää tämmöiselläkin oikein mainiosti.

Sovellutuksia esimerkiksi lämpötilan seurantaan/monitorointiin, moottorien ohjauksiin, käyttäjän toimintoihin reagoimiseen (painikkeet/anturit) jne. tällä laitteistolla pystytään hyvin helposti ja nopeasti tekemään.

Levylle on mahdollista liittää erilaisia lisälevyjä, joita kutsutaan shieldeiksi. Tietenkin pinneihin saa kiinni hyppylangoilla myös yksittäisiä anturielementtejä tai muita elektronisia osia, mikäli tarve niin vaatii.

Tarvittaessa mikroprosessorin voi helposti poistaa levyltä (paitsi jos MCU on pintaliitoskomponentti) ja sen voi kytkeä vaikkapa omalle protolevylle, jolloin koko kehitysympäristöä ei tarvitse johdottaa kohteeseen.

Arduinon logiikkajännite on +5 V joten se ei välttämättä toimi kaikkien 3,3 voltin laitteiden kanssa ilman erillisiä tasonmuuntimia, mutta vastusten ja transistoreiden avulla laite on mahdollista liittää eri logiikkajännitteisiin.

Arduinoja on muitakin erilaisia ja Wikipediaan on listattu kattavasti erilaiset kehitysalustat ja ominaisuudet. Saatavilla on sekä suurempaa, että pienempää kehitysalustaa. Tässä oppaassa käytetään Arduino Uno kehitysalustaa.

Mitä Arduinolla tehdään?

Arduinoa käytetään kuin mitä tahansa muutakin mikropiirien kehitysalustaa (esim. MSP430 Launchpad). Siihen voidaan liittää erilaisia antureita sekä ohjaimia ja niiden avulla toteuttaa haluttuja projekteja. Alkuun pääseminen Arduinolla on kuitenkin paljon yksinkertaisempaa, kuin muilla "vastaavilla" alustoilla - joten se on oikein sopiva valinta ohjelmoinnista kiinnostuneille, mutta hieman hataran harrastuspohjan omaaville.

Toisin sanottuna Arduinon ympärille tehdään kytkentä ja sille koodi. Koodi tehdään yleensä Arduino IDE -ohjelmalla. Tämän lisäksi käyttäjältä vaaditaan, että laitetaan USB-kaapeli Arduinolevyyn kiinni ja toinen pää tietokoneeseen ja toiminnallinen koodi ladataan Arduinoon painamalla Upload nappia. Mikäli koodi on oikein eikä virheitä esiinny, niin sen pitäisi toimia ongelmitta Arduinossa (tietenkin sillä edellytyksellä että koodaaja on tiennyt mitä on tekemässä).

Tältä sivulta löytyy jatkossa erilaisia kokeiluja ja selvityksiä, mitä Arduinolla ja siihen saatavilla lisäosilla tehdään. Erityisesti paneudutaan Prenta Oy:n myymään Arduino UNO -rakentelusarjaan, joka pitää sisällään kaikenlaista kivaa elektroniikkahärpäkettä. Kyseistä rakentelusarjaa ei ole enää saatavilla linkitetystä osoitteesta, mutta mikä tahansa vastaava rakentelusarja tämän oppaan seuraamiseen pitäisi käydä joko kokonaan tai osittain. Alla on muutama listattu ja päivitetty vaihtoehto (päivitetty 1/2021):

Jos siis haluat oppia ja aloittaa tekemään omaa laitetta tai muuten vain tutustua Arduinoon ja ohjelmointiin, niin osta yllä olevasta linkeistä jokin mainittu setti ja käy tutoriaalin kimppuun. Tutoriaalissa hyödynnetään ko. seteistä löytyviä romppeita, mutta teksti on pyritty kirjoittamaan myös niin, että oppaasta hyötyisi vaikka settiä ei omistaisikaan (esim. vastaava muu komponentti on käytössänne).

Arduino tutoriaali (Arduino opas)

Alta voit aloittaa lukemaan tekemiäni tutoriaalin osia. Jos olet jo tutustunut Arduinon aloituspakkaukseen, voit hypätä osaan 2 - mutta tietysti tee niin kuin haluat.

Latauslinkki koodin kehitykseen: http://www.arduino.cc/en/Main/Software

Lähteet: http://fi.wikipedia.org/wiki/Arduino

1. Arduino Upgraded Learning Kit

Arduino Upgraded Learning Kit on muovilaatikollinen kaikkea kivaa tekniikkavekotinta. Tällaisen setin voi ostaa esimerkiksi suomalaisen Prenta Oy:n verkkokaupasta. Kyseistä rakentelusarjaa ei ole enää saatavilla linkitetystä osoitteesta, mutta mikä tahansa vastaava rakentelusarja tämän oppaan seuraamiseen pitäisi käydä joko kokonaan tai osittain. Alla on muutama listattu ja päivitetty vaihtoehto (päivitetty 1/2021): Ahaaelektroniikan Arduino Uno aloituspakkausRobomaan arduino-kititPartcon Arduino AloituspakkausVerkkokaupan Starter Kit (Mega 2560) Kun setti on hankittu, niin lyhyen odottelun jälkeen postista saapuu ...jatka lukemista!

2. Digitaalilähdöt

Ennen kuin varsinaisesti tehdään mitään, on varmaan ihan hyvä vielä selventää mikä Arduinossa on se syvällisin idea. Arduino on lähtökohtaisesti keksitty ihmisille, jotka ovat kiinnostuneita tekemään omia laitteita, mutta eivät välttämättä ole käyneet elektroniikkasuunnittelijan tai ohjelmistosuunnittelijan (Insinööri) koulutusta. Arduinossa onkin haluttu madaltaa oppimiskynnystä niin, että levyllä olevan mikro-ohjaimen syvällisintä toimintaperiaatetta ei ole tarpeen tietää, mikäli haluaa suorittaa yksinkertaisia toimintoja kuten vilkuttaa lediä, ohjata moottoria tai lukea jotakin anturia. Arduinoa voidaan ...jatka lukemista!

3. Digitaalitulot

Osassa 2 käytiin läpi Arduino IDE:n asentaminen ja ensimmäisen sketchin kirjoitus ja sen lataaminen mikroprosessorille. Tässä osassa näytetään kuinka kytkintä luetaan Arduinolla ja perehdytään asioihin hieman syvällisemmin. Arduino ja Wiring Arduinoa ohjelmoidaan open-source pohjaisessa Wiring-nimisessä viitekehyksessä (Framework), joka muistuttaa läheisesti C-kieltä. Wiring on kehitetty tukemaan laajaa joukkoa erilaisia mikroprosessoreita ja kehitysalustoja, kuten Arduino (AVR atmega), MSP430 (Launchpadit), PIC- ja ARM-pohjaiset mikroprosessorit (STM32 -tuki tulossa kirjoitushetkellä). Tarkemmin Wiringista voi lukea sen ...jatka lukemista!

4. Analogiainputit

Edellisessä osassa tutustuttiin hieman syvällisemmin Wiringiin ja Arduinon ohjelmointiin ja seliteltiin mitä käytetyt komennot tai funktiot tarkoittivat. Jatketaan tällä samalla linjalla tässäkin, mutta tietenkin uudella aiheella. Hyödynnetään edellisessä osassa jo kertaalleen tehtyä ja tutkitaan miten saadaan uutta aikaiseksi erilaisten komponenttien kanssa. Tässä osassa tutkitaan LDR-vastuksen ja potentiometrin kytkemistä Arduinoon ja tehdään ns. hämäräkytkin sekä valon on/off säädin potentiometrin avulla. Ennen kytkennän tekoa selvennetään lyhyesti mitä käytetyt komponentit ovat. Mikäli vastuksen ...jatka lukemista!

5. PWM-ohjaus

Edellisessä osassa kytkettiin Arduinolle LDR-vastus ja potentiometri, joita käytettiin ledin sytyttämiseen ja sammuttamiseen. Tehtiin siis yksinkertainen ON/OFF-ohjauskoodi. Samaa kytkentää hyväksikäyttäen, tosin vain hieman sitä muuttamalla, saadaan aikaiseksi himmennettävä led jota voidaan ohjata potentiometrillä. Mutta aluksi aiheesta PWM-ohjaus, mikä se oikein on? PWM-ohjaus PWM-ohjaus on yksinkertaisesti pulssisuhteen muutoksella tehtävää ohjausta, jolloin ohjaus menee vuorotellen päälle ja pois tietyllä taajuudella - kyseessä on siis digitaalinen on/off-ohjaussignaali. Pulssin taajuuden arvoa merkitään Hz ja ...jatka lukemista!

6. 7-segmenttinäyttö

Sivulla 7-segmentti on kerrottu tarkemmin käytetyn näytön tyypistä ja kytkennöistä yms. Tässä osassa on käytetty 5161AS 7-segmenttinäyttöä. Näyttö kytketään Arduino Unon pinneihin 13-7 niin että segmentti A on pinnissä 13 ja kytkentä siitä alaspäin menee järjestyksessä kohti 7:ää. Alla olevissa kuvissa nähdään kytkentäkaavio sekä Fritzing-ohjelmalla tehty kuva kytkennästä. Ohjelma toimii siten, että numerot 0 - 9 ilmestyvät 7-segmenttinäyttöön sekunnin välein. Lähdekoodi on sen verran pitkä, että olen sen nyt tähän laittanut ...jatka lukemista!

7. Releohjaus

Aina silloin tällöin saatetaan tarvita ohjata jotakin ulkopuolista laitetta, minkä käyttöjännitettä ja virtaa ei voida suoraan Arduinolta ottaa. Laite voi esimerkiksi olla 12/24 voltin tuuletin tai moottori tai jopa verkkovirtaan (230 V) liitettävä laite, esimerkiksi yö- tai jouluvalo. Tässä osassa on käytetty alla olevan kuvan mukaista relekorttia, jolla ulkopuolista laitetta voidaan ohjata. Ohjauksen hoitaa Songlen SRD-05VDC-SL-C tyyppinen rele Arduinosta syötetään vain ohjaussignaali sekä käyttöjännitteet (+5V ja GND) relekortille. Kuorma kytketään ...jatka lukemista!

8. Askelmoottorin ohjaus

Tässä osassa käytetään Arduino-seteistä usein löytyvää 5 voltin askelmoottoria 28BYJ-48 sekä ohjauspiiriä ULN2003. Askelmoottoreita löytyy useimmiten esimerkiksi paperitulostimista, 3D-tulostimista, CNC-koneista, roboteista sekä erilaisista teollisuuden ja automaation sovelluksista. Askelmoottorin hienous on siinä, että sitä on suhteellisen yksinkertainen ohjata ja se liikkuu tarkasti haluttuun asentoon ilman lisäantureita. Askelmoottori myös pitää itsensä paikallaan silloin, kun siihen ohjataan virtaa, mutta sitä ei ajeta/askelleta. Askelmoottoria ohjataankin yleensä open-loop periaatteella, joka tarkoittaa sitä, että askelmoottorin ottamien ...jatka lukemista!

9. Servomoottorin ohjaus

Tässä osassa käytetään 5 voltin miniservoa. Kyseinen mikroservo on merkiltään Tower Pro SG90 ja painaa huikeat 9 grammaa. Kyseisiä servoja löytyy muiltakin myyjiltä ja netistä näitä voi ostaa erillisinä muistakin kaupoista. Toki nettikaupoista löytyy paljon muitakin servoja joita voi käyttää. Servon datasivut. Ohjattava servo on näppärä pieni moottori erilaisiin (vaikkapa ahtaisiinkin) paikkoihin ja moottorin pakkaus sisältää myös erilaisia vääntövarsia. Moottorin akseli pyörii 180 astetta (90 astetta suuntaansa) ja tämän pikkuruisen voimanpesän vääntömomentti ...jatka lukemista!

10. LED-matriisi ja 74HC595 siirtorekisteri

Arduino-oppaan kymmenes osa käsittelee hieman laajempaa ja monimutkaisempaa kokonaisuutta. Tällä kertaa en kuitenkaan käy kaikkia asioita niin perusteellisesti läpi ja jätänkin tutkimisen ja ihmettelyn enemmän lukijan vastuulle. Selitän kuitenkin mielestäni hankalimmat kohdat matriisinäytön ohjauksesta sekä siirtorekisterin käyttämisestä. Tätä esimerkkiä varten tarvitset: Arduino kehitysalusta8x8 LED-matriisi74HC595 siirtorekisteri IC-piiriKoekytkentäalusta sekä johtimia Kaikki yllä olevat osat löytyvät yleensä saatavilla olevista Arduino rakennusarjoista. LED-matriisin kytkeminen Arduinoon Alla olevassa kuvassa nähdään, kuinka LED-matriisi voidaan kytkeä Arduinoon. ...jatka lukemista!

11. Infrapunavastaanotin/ kaukosäätimen vastaanotin

Arduinosetissä mukana tullut infrapunavastaanotin otetaan nyt käyttöön ja tehdään Arduinolle ohjelma, joka tulkitsee lähetetyt infrapunaviestit. Ehkä selvemmin kuitenkin sanottu jos puhutaan kaukosäätimen vastaanottimesta. Vastaanottimen komponenttina käytetään kolmijalkaista VS1838 IR-vastaanotinta, minkä pinnijärjestys on sama mikä lähes kaikissa IR-vastaanottimista löytyy: Out-pinni kytketään Arduinon haluttuun pinniin, tässä tapauksessa pinniin numero 7. Kytkentä Kytkentä kokonaisuudessaan on hyvin yksinkertainen, alla olevan kuvan mukainen: Vastaanottimelle kytketään 5 volttia (punainen), maajohto (musta) sekä OUT-signaalin johto (keltainen), mistä ...jatka lukemista!

12. Arduino RFID-tagien luku ja kirjoitus RC522-piirin avulla

RFID-tagit ovat nykypäivänä monelle ihmiselle hyvin tuttuja kapistuksia. Esimerkiksi kulunvalvonnassa langatonta tunnisteavainta käytetään hyvin paljon ja erilaisten ovien avaamiseen se soveltuu oikein mainiosti. Myös lemmikkien tunnisteissa tätä tekniikkaa käytetään ja monissa päivittäistavarakaupan tuotteita on suojattu varastamiselta juurikin RFID-tagin avulla. Teollisuudessa taas tuotantolinjalla voidaan vaikkapa automatisoida prosesseja RFID-tunnistuksien avulla. Mutta hetkinen, mikäs tämä RFID nyt onkaan? Selvitetäänpä se ensin, ennen kuin aloitetaan tekemään yhtikäs mitään. HUOM! Tämä artikkeli on vain pintaraapaisu ...jatka lukemista!

13. Arduino LCD-näytön käyttäminen ja valikon tekeminen

Arduino LCD valikko
Sulautettujen laitteiden ominaisuuksin kuuluu usein näyttää käyttäjälleen tietoa tavalla tai toisella. Joskus pelkät ledit riittävät, mutta toisaalta voi olla tarve esittää tietoa numeerisesti tai ihan selkokielellä. Onneksi tämä on tehty suhteellisen helpoksi Arduinolla, LiquidCrystalDisplay -kirjaston avulla. Näyttölaitteena käytetään HD44780 -ajuripiiriin pohjautuvaa nestekidenäyttöä. Ohjeet näytön kytkemiseen löytyy Arduino.cc sivuilta, mutta lisätään ohjeet suomeksi tällekin sivustolle. Koska internetissä on jo olemassa paljon ohjeita, kuinka LCD-näyttöä käytetään ja ohjataan, keskitytään tässä osassa enemmänkin ...jatka lukemista!

14. Arduino lämpötilan ja ilman kosteuden mittaus

Tässä lyhyessä oppaan osassa kokeillaan, kuinka lämpötilaa ja ilmankosteutta voidaan Arduinolla (Uno) yksinkertaisesti mitata. Kuten arvata saattaa, niin minkä tahansa fysikaalisen suureen mittaamisen tarvitaan anturi ja tässä tapauksessa se on tämä anturi nimeltään DHT11. Kuvan anturi on hieman jäässä kylmäsprayn jäljiltä... Lämpötila-antureita on olemassa montaa eri sorttia ja tässä käytetty, useimmista kokeiluseteistä löytyvä DHT11-anturi antaa lämpötilan ja ilmankosteuden digitaalisessa muodossa eli nollina ja ykkösinä. Mittausalue on 0-60 astetta celsiusta ja ...jatka lukemista!