Seuraavassa tarkastellaan esimerkkien avulla miten Circuit Playground Express (CPX) – mikrokontrolleria voidaan ohjelmoida Arduino-ohjelmointiympäristössä C++ ohjelmointikielellä. Esimerkeissä tutustutaan miten CPX kanssa käytetään ulkoisia elektroniikan komponentteja tai levylle valmiiksi integroituja input/output -laitteita. Esimerkeissä havainnollistetaan myös miten CPX vuorovaikuttaa muiden tietokoneiden, kuten raspberry pi:n kanssa.
CPX:n levylle on liitetty valmiiksi monipuolinen joukko erilaisia sensoreita ja laitteita, joten CPX:n kanssa voi harjoitella ohjelmointia ja elektroniikan komponenttien ohjausta perehtymättä paljoa elektroniikan komponenttien kytkentöihin. Toisaalta kouluprojekteissa on usein välttämätöntä rakentaa sovellus ulkopuolisten laitteiden avulla, joten on hyvä osata ja tuntea millaisia komponentteja (esimerkiksi säätövastus, ultraäänianturi, servo-moottori) on olemassa ja miten niitä ohjataan mikrokontrollerilla esimerkiksi Circuit Playground Expressillä. Perustiedot elektroniikassa käytettyjen erilaisten komponenttien toiminnasta ja kytkennöistä on Kyösti Blinnikan Arduino tutuksi -oppaassa.
CPX ja ultraäänianturi etäisyysmittarina
Esimerkissä 1 ulkoisena sensorina on ultraäänianturi, jonka avulla voidaan mitata etäisyys halutusta kohteesta.Ultraäänianturilla mitattu etäisyys havainnollistetaan CPX:n levylle integroitujen RGB-LEDien (Neopixel) avulla. Mitattu etäisyys voidaan lukea myös Arduinon ohjelmointiympäristön Serial -tulosteikkunasta.
Sensori toimii siten, että anturista lähetetty ultraääniaalto heijastuu takaisin kohteesta. Anturin avulla mitataan edestakaiseen matkaan kulunut aika, josta etäisyys voidaan laskea tunnetun äänen nopeuden (noin 340 m/s) avulla. Ultraäänianturi saa käyttöjännitteen CPX:n vikasuojatusta VOUT -kytkentäpinnistä, joka tarjoaa sensorille riittävän suureen käyttöjännitteen. Kuvassa CPX:ään on kytketty paristot (6.0V DC) tasajännitelähteeksi, jos laitetta halutaan käyttää ilman mikrousb-johtoa. Ultraäänianturin liipaisu- ja kaiku-toiminnot ohjataan digitaalisten pinnien D6 ja D9 kautta. Kytkennät on taulukoitu esimerkkikoodin alussa olevassa kommenteissa.
Esimerkkikoodi GitHubissa (25.4.2019).
Digitaalisen porttiin D8 kytkettyjen ledien ohjaus on toteutettu suoraan Adafruit_NeoPixel.h -kirjaston ja koodissa määritetyn strip -olion avulla. CPX:ssä on erilliset pinnit ulkoisten laitteiden (ultraäänisensori D6 ja D9) ja levylle integroitujen laitteiden (Neopixel D8) ohjaukseen, joten ulkoisten ja levyllä olevien laitteiden samanaikainen käyttö on mahdollista ilman että pinnit menisivät sekaisin.
Circuit Playground Express -mikrokontrollerille on olemassa myös oma Adafruit_CircuitPlayground.h -kirjasto, jonka avulla olisi ollut mahdollista toteuttaa ledien ohjaus (esimerkiksi kommenolla CircuitPlayground.setPixelColor(0, 255, 0, 0)). Tämä CPX:n apukirjasto käyttää sisäisesti myös Adafruit_NeoPixel.h luokan strip oliota led-nauhan ohjaukseen. Suosittelen alkuperäisen NeoPixel.h kirjaston suoraa käyttöä, koska tällöin käytössä on enemmän apufunktioita ja monipuolisempi dokumentaatio. Lisäksi samaa Arduino -koodia voidaan tällöin käyttää myös esimerkiksi Arduino Uno-mikrokontrollerissa ulkoisen led-nauhan kanssa.
Seuraavassa on lyhyesti esimerkkien avulla esitelty CPX:n levylle integroitujen sensorien käyttömahdollisuuksia.
CPX ja leposyke tekstiviestinä -sovellus
Circuit Playground Expressissä on valon voimakkuutta mittaava led (vastaanotin), jota voidaan käyttää optisessa sykkeen mittauksessa. Veri absorboi hyvin kahden ledin lähettämää vihreää valoa, ja sormesta takaisin heijastuvan valon voimakkuus vaihtelee sormen verisuonissa kiertävän veren määrän eli sykkeen mukana. CPX mittaa takaisin heijastuneen valon voimakkuutta ja laskee siitä sykkeen ja sen lähettää usb-serial-yhteyden kautta raspberry pi:lle, jonka tehtävä on lähettää syke tekstiviestinä Telegram-sovellukseen.
Python-koodi raspberry pi:lle GitHubissa.
Vihellyksen ominaistaajuudet ja viheltämällä toimiva laite
Circuit Playground Expressissä on mikrofoni, joka tallettaa äänen intensiteetin vaihtelua eli ääniaallon aiheuttamaa ilmanpaineen muutoksia. CPX:n laskentateho riittää siihen, että mitatulle ääninäytteelle tehdään Fourier-muunnos, jolloin saadaan selville mitä taajuuksia ääniaalto sisältää, eli minkä taajuuksien yhdistelmä kuultava ääni on. Selvittämällä korkealla ja matalalla taajuudella tehtyjen vihellysten tunnusomaiset ominaistaajuudet saadaan CPX:lle opetettua erilaisia vihellyskomentoja, joilla voidaan ohjata esimerkiksi lampun toimintaa. Lamppu on rakennettu led-nauhasta kuumaliimaamalla pöytätennispalloja ledien päälle. Palloon on porattu reikä ledin kohdalle
Äänen intensiteetin jakautuminen eri ominaistaajuuksille voidaan havainnollistaa myös led-valoilla toteutetussa music Visualizerissa eli musiikin tahtiin välkkyvissä valoilla.
CPX ja InfraPuna-säteilyn vastaanotin ja lähetin
Circuit Playground Express:ssä on integroituna esimerkiksi 2 lämpösäteilyn alueella toimivaa lediä: CPX voi siis toimia TV:n kaukosäätimen vastaanottimena, joka samalla ohjaa PingPong-palloista tehdyn koristeen ledvalojen toimintaa. Toisaalta CPX:llä voi itse emuloida kaukosäädintä, jolloin yhdessä raspberry pi:ssä pyörivän Google Assistantin avulla TV -kanavia voidaan valita puheohjauksella.
Lähdekoodi Arduinolle GitHubissa.
Arduinon lähdekoodi GitHubissa.
CPX ja liikuntasuoritusta seuraava Telegram-bot
Circuit Playground Express – Arduinossa on kiihtyvyysanturi, josta voi rakentaa esimerkiksi keväisen trampoliinipomppujen laskuribotin Telegram -tekstiviestisovellukseen . Koska trampoliinitemppujen aikana on vaikea kirjoittaa botille tekstiviestiä, voi bottia puheohjata Google Assistantin avulla. Botti tulostaa Google Assistantille esitetyt kysymykset ja käskyt chattiin, jos keskustelua ja tallennettua mediaa halutaan tutkia jälkikäteen. CPX:n kiihtyvyysanturia ja raspberryn kameraa ohjataan Google Assistantin puheohjauksella seuraavilla komennoilla:
”start counting” – aloittaa hyppyjen laskemisen
”stop counting ” – lopettaa hyppyjen laskemisen.
”photo” – ottaa valokuvan
”record a video” -ottaa 4 sekunnin videoklipin.
Arduino ja raspberryn lähdekoodi GitHubissa.
Circuit Playground Express on monipuolinen mikro-ohjain, jonka avulla koululaiset voivat kehitellä mitä erikoisempia projekteja!
Matti Heikkinen ja Simo Naatula
26.4.2019 Espoo