Rakenna Arduinon kanssa – oma auto kauko-ohjauksella

Maker-tekemistä

Tämä elektroniikan projekti käsittelee Arduino UNO mikrokontrolleria, 3D-tulostamista ja C-kielistä ohjelmointia ja perustuu Turussa yläkoulussa opetettuihin kursseihin. Kirjoituksessa esitellään käytännön havaintoja ohjelmoinnin ja elektroniikan opetuksesta sekä esitellään yksi projekti, kauko-ohjattavan auton rakentaminen. Ohje toimii apuna ohjelmointia opettaville ja inspiraationa niille, joita ohjelmointi ja sen soveltaminen koulumaailmassa kiinnostaa. Projekti soveltuu ohjelmoinnin ja elektroniikan valinnaisainekurssiksi. Kurssin voi opettaa yksi monitaitoinen opettaja, mutta se voidaan toteuttaa myös oppiainerajat ylittävänä yhteisopetuksena. Tässä oppaassa esitellään projektiin vaadittava välineistö ja työvaiheet pääpiirteissään.

OPS-alueet:
Monilukutaito
Ajattelu- ja oppimaan oppiminen
Tieto- ja viestintäteknologia
Työelämätaidot ja yrittäjyys
Käsityötaidot

Ohjelmointia opettamassa

Ajatuksia kurssin vetämisestä

On tärkeää asettaa tavoite ja edetä sitä kohti vaihe vaiheelta. Työskentelyssä on hyvä myös pyrkiä vuorotteluun, sillä harva oppilas jaksaa ohjelmoida kaksi tuntia yhtä mittaa. Onneksi kurssi koostuu erilaisista osa-alueista, jotka pitää hallita ennen kuin liikkuva laite on valmis. Tunti voi alkaa ohjelmoinnilla, sen jälkeen tehdään vaikka koekytkentälevyharjoitus ja sitten 3D-suunnittelua tai itse laiterakentelua. Käsiteltyä aihetta kannattaa syventää asteittain.

Monimutkaiset asiat koostuvat pienistä komponenteista

Yksi ohjelmoinnin ja elektroniikan rakentelun keskeisiä oppeja on ymmärtää, että monimutkaiseltakin vaikuttava laite koostuu itsenäisesti toimivista yksittäisistä osista. Ongelmatilanteessa vian haku voidaan purkaa osa-alueisiin ja tehdä se vaihe vaiheelta, tutkia mahdollisuuksia yksi kerrallaan. Näin monimutkainenkin kokonaisuus muuttuu hallittavaksi ja ymmärrettäväksi: ei huono oppi laajemmastakaan näkökulmasta katsottuna.
Kokonaisuus herää eloon, kun ohjelmakoodi yhdistää erilliset laitteet. Tämä on ohjelmoinnin Graalin malja. Jos oppilas ymmärtää laitteen koostuvan erilaisista osista, jotka hän saa toimimaan yhteen ohjelmakoodilla, on tavoite saavutettu. Tämän oivalluksen jälkeen ohjelmoinnista innostuvalla nuorella ei ole mitään rajoja enää vastassa. Mielestäni ohjelmoinnin ja elektroniikan kurssin pitää pyrkiä ohjaamaan nuorta tasolle, jossa itsenäinen kokeileminen ja harrastaminen muuttuvat mahdolliseksi.

Ohjelmointi on luovaa

Ohjelmoinnin opetus on mielenkiintoista, koska se on luovaa toimintaa. Oppilas kuvittelee usein ohjelmoinnin olevan paljon jäykempää, kuten että on yksi oikea tapa tehdä asioita. Mutta opettajan mukaan koodi on ”oikea”, jos se ratkaisee annetun tehtävän ja laite toimii- saman ongelman voi siis ratkaista usealla eri tavalla. Oppilas yllättyy usein positiivisesti huomatessaan, että ohjelmointi on yhtä luovaa kuin ainekirjoitus.

Oppiainerajojen ylittäminen

Tärkeimpänä asiana ohjelmoinnissa pitäisin asioitten toistuvuutta ja saman ohjelmointikielen käyttämistä oppilaan kouluaikana. Yksi opettaja ei pysty opettamaan ohjelmointia yksinään. Tarvitaan monen opettajan panosta, joka tulee ihan huomaamattakin kun kaikki käyttävät samaa kieltä ja samantyyppistä välineistöä, esimerkiksi VEX IQ ja Arduino UNO. Näin oppilas toistuvasti käyttää eri asioissa samoja välineitä ja samaa ohjelmointikieltä ja asiat alkavat hiljalleen käydä tutuksi.

Kauko-ohjattava auto ja miten se tehdään

Projekti on mahdollista toteuttaa lähes millä tahansa nykyaikaisella mikrokontrollerilla. Kurssilla opetetaan ohjelmoinnin ja elektroniikan perusteita. Tavoitteita on kaksi:

1.) Tehdä kauko-ohjattava laite, jonka voi ohjata annetun reitin läpi, esimerkiksi ajaa luokan ympäri.

2.) Käsitellä laiterakennusta yleisellä tasolla. Tavoitteena on antaa oppilaalle valmiudet harrastaa itsenäisesti ohjelmointia ja laiterakentelua.

Välineet

Oppilas tarvitsee laatikon, joka sisältää kurssin aloitukseen tarvittavat perusvälineet ja jotka ovat kurssin ajan vain oppilaan omassa käytössä. Kokemus on osoittanut, että henkilökohtaiseksi koetut tavarat pysyvät paremmin ehjinä.

Lista välineistä lyhyesti:

– Arduino UNO + Koekytkentälevy (half+ tai half). Arduino ja koekytkentälevy voidaan laittaa esimerkiksi kiinni puulevylle ja muu rakennetaan sen ympärille.
– IR-kaukosäädin + vastaanotin
– Servo
– Moottoreita + renkaita
– Elektroniikan komponentteja moottorin ohjaamiseen ja virran regulointiin
– Ohjelmointikaapeli
– AAx8 paristopidike ja virtakaapeli tynnyriliittimellä
– Hyppylankoja
– Erilaisia elektroniikan komponentteja
– 3D-tulostin ja piirtomahdollisuus (esim. SketchUp:lla)

Tehtävän rajaaminen

Oppilas saa selkeän tavoitteellisen tehtävän: suunnitellaan ja rakennetaan laite, jonka pitää kulkea tietty reitti läpi. Keskustellaan mahdollisuuksista ja käytettävistä välineistä, kuten elektroniikan laitteiden ja osien hinnoista ja käytettävissä olevasta budjetista. Laite tarvitsee esimerkiksi moottorin, josta saadaan liikevoima: mitä moottoreita on tarjolla, mitä ne maksavat ja millä niitä voidaan ohjata (päälle-pois-pwm). Lopputuloksena on hahmotelma siitä, millainen laite tulee olemaan. Näin oppilas saa alustavan käsityksen kurssin käytännön sisällöstä ja laitteen rakenteesta.

Laitteeseen tarvitaan:

– Moottori, josta voima liikkumiseen. Sähkömoottori – välitys ollut yleensä noin 1:120.
– Moottori tarvitsee jotain, jolla se kytketään päälle ja pois. Mikrokontrolleri ei siihen yksin riitä. Tarvitaan H-Silta eli kytkentä jossa on transistori tai Fet – ehkä jopa valmis integroitu moottorinohjauspiiri.
– Ohjaus, jolla voidaan muuttaa kulkusuuntaa. Servo ja mekaniikka, joka välittää liikkeen.
– Runko eli tässä tapauksessa puulevy, jossa ArduinoUNO ja koekytkentälevy ovat kiinni.
– 3D-tulostettuja osia, joista ohjausjärjestelmä ja muut toiminnot koostuvat.
– Aivot, jotka ohjaavat toimintaa eli Arduino UNO.
– Kauko-ohjain, esimerkiksi IR-perusteinen.

Kun oppilaiden kanssa on saavutettu jonkinlainen yleiskuva laitteesta, on aika aloittaa työn toteutus.

Yksinkertaisesta kohti monimutkaista

Arduino UNO-mikrokontrolleri ei yksinään pysty käyttämään moottoreita, vaan niiden ohjaamiseen tarvitaan välittäviä kytkentöjä. Tarvitaan siis elektroniikan komponentteja esimerkiksi moottoreiden ohjaamiseen.

Elektroniikka

Simulointi ja koekytkentälevy

Elektroniikan opettamiseen on olemassa varsin hyviä ohjelmia, joilla voidaan simuloida ja havainnollistaa eri osien yhteistoimintaa. Ohjelmalla piirretään kytkentä ja simuloitu kytkentä voidaan käynnistää virtuaalisesti. Ohjelma havainnollistaa, miten sähkö liikkuu eri komponenttien välillä. Itse olen käyttänyt Circuit Wizard nimistä ohjelmaa ja sillä myös piirretty tekstissä olevat kuvat. Koekytkentälevy on pieni muovinpala, jossa on reiät johtojen ja komponenttien jalkojen kiinnitykseen. Sen sisällä on kiskot, jotka yhdistävät pysty- ja vaakalinjoja sähköisesti yhteen. Hyvä ohjelma havainnollistaa koekytkentälevyn toimintaa oppilaille on Fritzing.

Yksinkertaisesta kohti monimutkaista

Aloitetaan yksinkertaisista malleista ja piirretään hitaasti monimutkaistuvia kytkentöjä. Ensimmäisenä voidaan esitellä klassinen transistori, elektroniikan peruspalikka. Nykyaikaiset opettajat voivat hypätä heti FET aikaan.
Kuvassa on yksinkertainen kytkentä, joka havainnollistaa moottorin kytkemistä päälle transistorin avulla. Työvaiheita on yleensä kolme.
– Piirretään kytkentä ja tutustutaan käytettyihin osiin.
– Pohditaan, miksi kytkentä toimii ja mikä on väärin, jos mitään ei tapahdu. Simulointiohjelmalla on helppoa näyttää erilaisia tilanteita.
– Tehdään kytkentä koekytkentälevyllä. Tämä on se vaihe, joka nivoo teorian todellisuuteen. Nyt pitää laittaa langat oikein ja tunnistaa eri osien toiminta, jotta laitteen saa toimimaan.

Yllä olevassa kuvassa on kytkentä, jota kutsutaan H-sillaksi. Se on yksinkertaisimpia kytkentöjä, jolla sähkömoottorin saa ohjattua pyörimään molempiin suuntiin ja sammumaan käytettäessä esim. Arduinoa moottorin ohjaukseen. Tässä esimerkissä on jo edetty yksinkertaisesta kohti monimutkaisempaa kytkentää. Tämänkin oppilaat ovat kurssilla saaneet toimimaan koekytkentälevyllä.
Ja lopuksi koekytkentälevy, johon kahdeksasluokkalainen on rakentanut 2xH-sillan ja saanut näin toimimaan ohjelmakoodilla kaksi pientä sähkömoottoria.

Tämä oppilaan koekytkentälevy oli niin siististi tehty, että opettajan oli pakko ottaa siitä kuva.
Tässä on käytetty eri värejä kuvaamaan eri toimintoja, mikä auttaa oppilasta hahmottamaan levyn rakennetta. Jos kaikki johdot ovat samaa väriä, tilanne on haastavampi.

Kurssin lopuksi voi pitää tunnin, jossa oppilailla on aluksi toimiva koekytkentälevy. Välitunnin aikana opettaja käy tekemässä kaksi kytkentävirhettä jokaisen koekytkentälevylle. Tunnista-vika-ja-korjaa-se harjoitus parhaimmillaan

Integroitu piiri eli IC

Esimerkiksi. L293NENykyään voidaan käyttää oppilaiden töissä moottorinohjainpiirejä. Ne ovat piille integroituja paketteja, jotka hoitavat monia tehtäviä esimerkiksi moottoreiden tai askelmoottoreiden ohjaamisessa ilman suurta komponenttimäärää. Arduino UNOkin on tavallaan IC piiri. Siinä painotus on vain ohjelmoitavuudessa ja kytkemisessä.

Seuraavaksi tutustutaan datasheetin kytkentäkuvan tulkitsemiseen. Kuvassa oikealla on mallisivu moottorinohjainpiirin oikeasta kytkemisestä, kun halutaan moottorin pyörivän molempiin suuntiin tai pelkästään yhteen suuntaan. Tätä mallia voidaan rakennella ja kokeilla koekytkentälevyllä.

Elektroniikan komponentit pitää valita niin, että ne ovat kestäviä, eivätkä hajoa oppilaan virhekytkennästä. Tässä esim. TIP31 tehotransistori tai FET IRF540 hyviä valintoja. Vastukset ovat halpoja, mutta laadukas IC ja FET maksaa. Ylimääräisiäkin kannattaa toki tilata, koska niitä kärähtää joka tapauksessa silloin tällöin.

Yksinkertaisia malleja

Jonkin pitää toimia heti, muuten oppilas pettyy ja motivaatio kärsii. Tämä onnistuu antamalla valmiita yksinkertaisia malleja, joita lähdetään muokkaamaan monimutkaisemmiksi. Tehtävä voi olla esimerkiksi kääntää moottori päälle ja pois automaattisesti aikaviiveellä. Seuraavaksi lisätään kuvaan ehtolause, joka käynnistää moottorin vasta kun nappia on painettu.
Muistakaa kommentoida ohjelmakoodinne ja vaatia sitä ehdottomasti oppilaaltakin.

Lainaa ja leikkaa – miksi tehdä kaikkea itse jos saa koodin valmiina?
Ohjelmointisoftassa on aika laaja valmiitten esimerkkikoodien kirjasto. Kaikkea ei tarvitse tehdä itse. Yksi syy Arduinon suosioon ovat valmiit ohjelmakoodikirjastot, jotka voi liittää omaan koodiin. Ohjelmakirjasto – Library on valmiiksi tehty koodi, jonka avulla voi käyttää Arduinoon liitettäviä laitteita, esimerkiksi servoa, ilman suurempia koodinkirjoitustuskia.
Koodin yhdistely eli ”parsiminen”

Lopullisen koodin tekemisen voi aloittaa käymällä läpi erilaisia koodiesimerkkejä ja niitä muokkaamalla. Lopuksi oppilas saa tehtävän lähteä yhdistelemään erilaisista esimerkeistä omaa toimivaa koodia, joka ohjaa koko laitetta. Ensin kootaan kaikki määritelmät yhteen, eli määritellään, mikä laite on missäkin portissa kiinni. Sen jälkeen nimetään ja lähdetään tuomaan erilaisia toimintoja esimerkkikoodeista ja yhdistelemään niitä.

Oman koodin muokkaaminen ja kommentointi

Tähän mennessä oppilas on toivottavasti omaksunut koodirivien kommentoimisen. Kannattaa lähteä työskentelymallista, jossa oppilas kommentoi heti tekemänsä koodirivin, esimerkiksi //tässä tarkistan mikä IR-vastaanottimeen saapuva numero on.

Kommentointi on erittäin tärkeää, koska kommentoimalla syntyy oppilaan oman pään sisäistä puhetta. Oppilas tekee koodin ja kirjoittaa tarkoituksensa saman tien koodin perään. Näin oppilas myös itse saa aikanaan palautetta siitä mitä on tehnyt, vaikkapa lukemalla oman koodinsa seuraavalla viikolla auki.
Lisäksi kommentointi helpottaa opettajan työtä merkittävästi, sillä ongelmatilanteessa- ”miks tää ei toimi näin vaan noin?” – opettaja pääsee helposti kiinni oppilaan ajatuksiin katsomalla koodia ja kommentointia. Kommentoinnin pohjalta syntyy helposti keskustelua, ja yleensä ongelma löytyy helpolla tai sitten pidemmällä pohtimisella.

C-kielistä koodia Arduinolla kommenttien kera. Ymmärrätkö koodia ilman kommentointia ?

Oppilas oppii parhaiten saadessaan kokeilla ja yrittää, sekä erehtyä. Tekstipohjalla ohjelmoitaessa haasteena ovat alussa kirjoitusvirheet.

Oppilaiden yleisimmät haasteet

Looginen = jotain tapahtuu- mutta ennen sitä olisi pitänyt tapahtua jotain muuta, joten asiat eivät ”liiku” oikeassa järjestyksessä. Esimerkiksi jos kytketään moottori päälle ja unohdetaan sammuttaa se myöhemmin koodissa, mutta kytketään se pyörimään vastapäivään. Lopputulos on moottori, joka ei pyöri ollenkaan ja IC-moottorinohjainpiiri on moottorijarrutilassa.

Aika = Mikrokontrolleri on todella nopea, ne halvatkin. Kun oppilas kytkee vaikka moottorin päälle, pitää muistaa antaa aikaa eli viivettä, että jokin tapahtuma ehtii tapahtua ihmisaistein havaittavasti. Jos moottori kytketään päälle ja pois peräkkäisillä koodiriveillä, on aikaa kulunut ehkä 1/10000 sekuntia. Siinä ajassa ihmissilmä ei huomaa mitään tapahtuneen, vaikka se moottori oli kyllä kytkettynä päälle.

Laiterakentelu

3D-suunnittelu

3D-piirtämiseen on tarjolla laaja valikoima ohjelmia, jotka ovat toimivia ja kehittyneet hyviksi useamman vuoden tuotekehityksen aikana. Yleisimmät ohjelmat kouluissa lienevät tällä hetkellä SketchUp ja DesignSpark Mechanical 3D. Näillä ohjelmilla syntyy melkein kuva kuin kuva. Molemmat ovat lisäksi ilmaisia peruskäytössä ja koulutyössä. Mielestäni on myös hyvä, että piirretään kunnon ohjelmilla jotka muistuttavat opiskelussa ja työelämässä käytettäviä.

Tämän kurssin lopputyö, kauko-ohjattava auto, vaatii toimiakseen kääntyvät pyörät. Valmiita malleja erilaisiin mekaanisiin toimintoihin löytyy kyllä helposti, mutta pyörä pitää vielä saada sovitettua oman mallin mittakaavaan. Oppilaille tämän lopullisen tuotteen tekeminen oikeaan mittakaavaan – millimetrilleen ja oikein mitattuna – on haasteellista, samoin esineen hahmottaminen ruudulla.

Mitoitusongelmaan olen löytynyt yksinkertaisen ratkaisun, jossa piirretään valmiit osat yläpuolelta ruutupaperille (Arduinopuupalikka mukana). Tästä mitataan viivoittimella millimetrimitat ja siirretään ne 3D-piirto-ohjelmaan. Näin perusmitat saadaan kohdalleen ja niiden avulla pääsee tekemään enemmän yksityiskohtia. Piirto-ohjelmissa on myös apuviivoja (kuvassa katkoviivat), joiden käyttö helpottaa piirtämistä todella paljon.

Piirretty SketchUp-ohjelmalla

 

Tulostetut osat valmiina käyttöön. Mukaan laitettu väriraita tuomaan tyylikkyyttä.

Laitteen kasaaminen

Laitteen kasaaminen on kivaa pientä puuhastelua, jonka avulla on mukava tauottaa opetusta. Itse pyrin tekemään valmiit laitteet puupalan mukaan, jossa Arduino on kiinni. Näin saadaan heti valmis runko, johon muut osat voi kiinnittää.

Jokainen oppilas saa soveltaa tai tehdä opettajan ohjeitten mukaan. Pyritään menemään kunkin omalla mukavuusalueella.

Kuvassa kasattu ”auto”. Mukana myös ultraäänitutka.

Ohjelmointiympäristö ja sen saatavuus oppilaalle

Koulujen työkaluvalikoiman on hyvä olla sellainen, että sen voi halutessaan hankkia myös kotiin. Arduino UNO ja koekytkentälevyt ovat ohjelmoinnin ja elektroniikan osalta laajalti käytössä olevia ratkaisuja ja niitä löytyy melkein kaikista alan kaupoista.

Oppilas tutustuu meillä Turun Vasaramäessä Arduinoon ja tekstipohjaiseen ohjelmointiin seitsemännellä luokalla ja valitessaan jatkokurssin tietää, mikä väline kurssilla on ja se on osittain jo tuttukin. Alakoulussa käytetään VEX IQ:ta ja graafista C-kieltä.

Lyhyt kirjallisuuskatsaus

Tässä oppaassa oli paljon termejä ja käsitteitä, jotka eivät aukene ilman alan terminologian hallintaa. Tässä neljä kirjaa, jotka ovat mielestäni olleet hyvin kirjoitettuja ja helposti omaksuttavia esityksiä ohjelmoinnista tai elektroniikasta.

1. Elektroniikan ja sähkön perusteita.
Forrest M. Mimms – Getting started in electronics. Todella vanha kirja mutta klassikot eivät kuole koskaan 😊

2. Arduino ABC – Basic Connections – Reference Book for Makers. 2018 versio.
Kirja jossa kauniisti piirrettyjen kytkentöjen kanssa esitetään lähes kaiken kytkeminen kiinni mikrokontrolleriin. Erittäin tärkeä kirja rakentelijoille.
https://www.indiegogo.com/projects/abc-basic-connections-reference-book-for-makers#/

3. Simon Monk – Programming Arduino – Getting started with Sketches
Hyvä perusteos Arduinosta ja C-kielestä. Mielestäni oli helppo lukea ja ymmärtää.

4. Simon Monk – Programming Arduino Next Steps – Going Further with Sketches  Syvemmälle paneutuva kirja C-kielestä ja Arduinosta.

Harri Bläuer