Painopiste pelissä

Arduino Nano ESP32 -pohjaisen tasapainoalustan suunnittelu ja toteutus liikepohjaiseksi peliohjaimeksi. 

Kirjoittajat: Ville Polvela, Pauli Sammalniemi, Miikka Ruotsalainen, Santeri Heiskari

Johdanto

Lapin AMKin tieto- ja viestintätekniikan opiskelijat Miikka Ruotsalainen, Pauli Sammalniemi ja Santeri Heiskari suorittivat insinööriopintoihin kuuluvan työharjoittelujakson FrostBit-ohjelmistolaboratoriossa kesällä 2026. Harjoittelijoiden toimeksiantona oli suunnitella ja rakentaa tasapainoalustaan perustuva peliohjain osana MOCAPPE-hanketta (MOCAP järjestelmät urheilu- ja hyvinvointianalyysin pelillistämisessä). Harjoitteluprojektin tavoitteena oli kehittää kestävä, helposti siirrettävä ja anturidataa hyödyntävä peliohjain. Ohjainalustan tuli toimia yhteistyössä Unity-pelimoottorilla toteutetun havaintomotoriikkapelin kanssa. Perinteisestä ohjelmistokehitykseen painottuvasta harjoittelusta poiketen projekti sisälsi elektroniikka-asennusten ja ohjelmakoodin toteuttamisen lisäksi kantavan puurakenteen suunnittelun, ohjaimen alustan 3D-mallintamisen ja valmistamisen sekä rakenteellisen testauksen.  

Tässä artikkelissa esitellään, miten suunnitellaan ja valmistetaan anturiteknologiaa hyödyntävä peliohjain, joka soveltuu erilaisten havaintomotoriikkapelien pelaamiseen. Liikkeenkaappausteknologiaa ja siihen nojaavia ohjaimia on mahdollista hyödyntää pelialan ohella esimerkiksi erilaisissa liikunta- ja hyvinvointialalle suunnatuissa sovelluksissa.

Tukirakenteen suunnittelu ja kokoaminen

Unity-pelimoottorista otettu kuvankaappaus, jossa näkyy 3D-malli juoksumatosta, sen vasemman ja oikean puolen tukikaiteista, maton päälle asennetusta neliömäisestä alustasta ja pyöreästä peliohjaimesta.
Kuva 1. Alkeellinen 3D-konsepti tukirakenteen ulkonäöstä, muotoiltu Unityssä.

Peliohjaimen suunnittelu aloitettiin tilanteessa, jossa varsinaisen pelin kehitys oli vielä kesken. Projektiryhmän käytettävissä oli ainoastaan pelin peruskonsepti sekä tieto siitä, että ohjaimen tuli mahdollistaa pelaajan kehon painopisteen muutosten hyödyntämisen pelissä. Suunnittelussa painotettiinkin ratkaisun laajennettavuutta siten, että ohjainta voisi soveltaa myös tuleviin peliversioihin ilman merkittäviä rakenteellisia muutoksia. Peliohjain tulee käyttöön Santasportille Sport Lab -ympäristössä sijaitsevan liikealustan päälle, joten ohjaimesta oli kehitettävä turvallinen, luotettava ja helposti siirrettävä. Peliohjaimeen asennettiin ESP32 Nano –mikrokontrolleriin liitetty MPU6050-anturi, joka sisältää kiihtyvyysanturin ja gyroskoopin. Anturi välittää dataa langattomasti Unity-pelille. 

Projektivaatimuksiin kuului se, että tasapainoalusta ei saisi aiheuttaa painetta Sports Labin liikealustalle, ja sen täytyi olla tarvittaessa myös siirrettävissä. Täten peliohjaimen tukirakenne täytyi rakentaa siltamaisesti liikealustan ylitse, ja kiinnitettäväksi alustan laidoilla sijaitsevien turvakaiteiden metallitankoihin. 

Suunnitteluvaiheessa pohdittiin useita rakenteeseen liittyviä ratkaisuja. Erityisesti kiinnitettiin huomiota keskilaudan tuentatapaan: tulisiko metallitankojen sijaita rakenteen sivuilla vai pohjassa, ja riittäisikö rakenteen alustaksi pelkkä paksu lauta. Lisäksi tarkasteltiin sivulautojen kiinnitysmekanismia liikealustan rakenteeseen ja kokonaisuuden liittämistä toisiinsa. 

Lopullisessa suunnitelmassa sivulautoja ei kiinnitetty pysyvästi liikealustan rakenteeseen, vaan ne vain liu’utetaan tankoihin kiinni ylhäältä alas. Sivulautoihin kaiverrettiin kolot keskilautaa varten, joka vain lasketaan ylhäältä katsoen aukkoihin kiinni. Keskilaudan materiaaliksi valittiin ohut vanerilevy ja tätä tukemaan kaksi (myöhemmin kolme) nelikulmaista metallitankoa. Tukirakenteen osien väliset liitokset toteutettiin siten, että osat lukittuvat toisiinsa omalla painollaan, ilman erillisiä liitoksia.

Musta juoksumatto sivusta kuvattuna. Juoksumaton sivuilla on neljä teräksistä tankoa, jotka ovat tukikaiteiden osia. Lisäksi maton sivurakenteen päällä alhaalla on työkalumitta ja mittanauha.
Kuva 2. Sports Labin Motek Grail -liikealusta ja mittaustyökaluja.

Ensimmäisenä prioriteettina liikealustasta mitattiin ja kirjattiin ylös kaikki merkitykselliset tiedot, muun muassa laitojen ja metallitankojen väliset mitat, sekä metallitankojen halkaisijatyven ja varren pituudet. 

Pelilaudan valmistamista varten hyödynnettiin Lapin ammattikorkeakoulun rakennuslaboratorion tiloja ja rakennusmateriaaleja, jotka edesauttoivat pelilaudan tukirakenteen toteuttamista. Koska projektiryhmään ei kuulunut rakennusalan opiskelijaa, monien tukirakenteen toteuttamiseen vaadittujen työkalujen käyttö opeteltiin projektin edetessä. 

Puinen tukirakenne teräksisen juoksumaton päällä ja sen tangon vieressä läheltä kuvattuna. Lankun päädyssä on puoliympyrän muotoinen porattu syvennys, joka on leveämpi kuin terästangon halkaisija, minkä vuoksi puupalkki ei kiinnity tiukasti tankoon.
Kuva 3. Kahden tangon halkaisijan mittausvirhe.

Ensimmäiset tukirakenteen sivupalkkien prototyypit valmistettiin rakennustekniikan varaston puutavarasta. Lankut olivat kosteudesta lievästi paisuneet, mutta kuitenkin projektiin sopivat. Lautojen sahauksissa tapahtui ensin mittausvirhe: liikealustalle valmiit laudat jäivät tismalleen kahden teräspalkin halkaisijan verran liian lyhyeksi. Korvaavat laudat hankittiin rautakaupasta. 

Rautakaupasta ostettiin myös: 

  1. Kolmimetrinen puulankku (kahtia sahattuna) 
  2. Vanerilevy 
  3. 20x20x1,5 suorakaideputki 2kpl 
  4. 25x25x1,5 suorakaideputki 1kpl 
  5. Kynnysmatto 
  6. Huopatarralevy 2kpl 

Muut tarvikkeet löytyivät rakennustekniikan laboratoriosta.

Kaksi opiskelijaa seisomassa puujyrsijän takana. Opiskelijoilla on päässä kuulosuojaimet. Edessä seisova opiskelija työntää jyrsintä eteenpäin ja takana oleva valvoo työkalun käyttöä.
Kuva 4. Santeri Heiskari (vas.) ja Miikka Ruotsalainen opettelemassa jyrsijän käyttöä.

Sivulautoihin käytettiin kolme metriä pitkästä lankusta sahattuja osia, joiden päihin porattiin reiät liikealustan teräsputkia varten. Reikien poraamisen jälkeen lankun pääty sahattiin pois U-kirjaimen muotoisen sisennyksen jättäen, joka hiottiin hiekkapaperilla liikealustalle sopiviin mittoihin. Kun sivulaudat sopivat onnistuneesti liikealustan käsinojien terästankoihin vankasti kiinni, voitiin lautoihin jyrsiä syvennykset suorakaideputkia ja keskiosan vanerilevyä varten. 

Syvennys merkittiin keskilaudan vanerilevyn pituussuunnan mukaisesti 3 cm leveyssuunnassa sivulaudan lankkuun, ja vaneriosan syvyyden verran. Suorakaideputkille jyrsittiin tämän jälkeen omat syvennykset keskilaudan alueen alle, jotta putket pystyvät kannattelemaan vanerilevyä ja sen päällä seisovaa ihmistä. Sivulaudan lankuissa otettiin jo ennen ostoa huomioon putkien ja vanerilevyn syvyydet. 

Suorakaideputkia ei tarvinnut lyhentää erikseen rautasahalla, eikä muutenkaan muokata sahauskohdan hiomista lukuun ottamatta. Rakenteen jäykkyys saavutetaan sivulautoihin tehtyjen tarkasti mitoitettujen syvennysten avulla, eikä keskilaudan vanerilevyä kiinnitetä suoraan putkirakenteeseen. Ratkaisu tukee pelialustan rakennetta riittävästi, säilyttäen sen helposti irrotettavana ja siirrettävänä paikasta toiseen. 

Tukirakenteen sovittaminen vaati useita testaus- ja viimeistelyvaiheita. Jokaisen muutoksen jälkeen varmistettiin rakenteen istuvuus. Tämän takia kiinnitysaukot jätettiin ennalta tavoitemittoja pienemmiksi, sillä liian suureksi työstettyjä aukkoja olisi ollut vaikea korjata myöhemmässä vaiheessa. Lopullinen sovitus tehtiin vaiheittain hiomalla koeasennusten yhteydessä.

Kuva 5. Onnistunut sovitus Miikka Ruotsalaisen (vas.) ja Santeri Heiskarin ihailun kohteena.

Peliohjaimen rakentaminen

Itse pelin ohjaamiseen tarkoitettu tasapainoilualusta jätettiin täysin irralliseksi muusta rakenteesta. Näin vältyttiin haastavan saranajärjestelmän suunnittelemisesta keskilautaan, mutta myös mahdollistettiin Z-akselin hyödyntäminen havaintomotoriikkapelissä. Tasapainoalustan päällysosiona toimii vanerilevy, joka löytyi Lapin AMKin rakennustekniikan laboratorion ylijäämämateriaalien joukosta. Alustasta sahattiin ympyrän muotoinen palanen, jonka reunat hiottiin hiomapaperilla. Laudan päälle liimattiin muotoon leikattu kynnysmatto parantamaan käyttömukavuutta ympäristössä, jossa käyttäjät liikkuvat ilman ulkojalkineita. Tämä estää myös jalkojen liukumisen pelilautaa kallistaessa. 

Laudan keskiosioon ja pohjaan porattiin kahdeksan ruuvireikää pyöreäpohjaisen tasapainoilualustan kiinnittämistä varten. Tasapainoalustan keskiö 3D-tulostettiin ja suunniteltiin kestämään aikuisen ihmisen (n. 100 kg) paino ja liike. Sen sisälle jätettiin kammio Arduino Nanolle ja MPU6050-anturin juotoksen sisältävälle laatikolle. Ohjausalustan sivuille jätettiin ruuvireiät ja mikrotietokoneen kammioon ulostuloreikä USB-johtoa varten.

Kuva 6. Onshape-mallinnusohjelmalla suunniteltu ensimmäinen keskiön malli vasemmalla, paranneltu oikealla.

3D-mallit ja tulostus

Keskiön suunnittelussa käytettiin pilvipohjaista Onshape-mallinnusohjelmistoa, jonka käyttöön saatiin opiskelijalisenssi. Tarkoituksena ei ollut keksiä pyörää täysin uudelleen, mutta myöskään täysin valmista 3D-malliakaan ei haluttu käyttää, sillä sen muokkaaminen olisi ollut tarvittaessa hankalaa. Tästä syystä esimerkkimallin sivuprofiilin pohjalta suunniteltiin ensin vastaava pyörähdyssymmetrinen kappale. Esimerkkimallista poiketen keskiön sivuille lisättiin vahvikkeet, jotta rakenteen kestävyydestä voitiin varmistua. 

Keskiön malli suunniteltiin täysin umpinaiseksi, ja sen sisälle tulevan Arduino Nano ESP32 -kotelon paikka muokattiin Bambu Labin tulostusohjelmalla. Tämä osoittautui hyväksi ratkaisuksi, koska upotuksen mittojen ja sijainnin muuttaminen oli helpointa ja nopeinta toteuttaa itse tulostussovelluksella. Arduino Nano -mikrokontrollerille ja sen MPU6050-anturille 3D-tulostettiin myös erillinen kotelo.  Koteloon piti myös saada korokkeet ja kiinnityspisteet piirilevyille sekä aukko USB-liitännälle. 

Kuva 6. Ensimmäinen tasapainoilukeskiö pyöristettyyn pelilautaan asennettuna (vas.) ja Arduino ja MPU6050 ennen juotosta 3D-tulostetussa suojakuoressa.

Keskiön ensimmäisessä versiossa huomattiin kuitenkin pieni suunnitteluvirhe: yksi ruuvirei’istä oli Arduino Nanon kammion USB-aukon tiellä. Keskiön todettiin olevan tasapainoilua ajatellen myös hieman liian matala, joten siitä päädyttiin mallintamaan uusi versio. 

Kuvassa 7. näkyy seuraus siitä, kun tulostimen asetuksiin unohtui ensin väärä filamentti (musta PAHT-CF), mikä huomattiin ennen tulostuksen aloittamista. Tämän jälkeen olisi ollut syytä tehdä huolellinen tulostuspään puhdistus, jotta väärä filamentti ei pääse sotkemaan tulostetta. Tästä syystä ensimmäisessä kerroksessa on havaittavissa hieman mustaa PAHT-CF –materiaalia sekoittuneena PLA:han.

3D-tulostetun tasapainoilukeskiön yläosa, eli puiseen alustaan kiinnittyvä puoli ylhäältä päin katsottuna. Yläosa on tasainen ja siinä on suorakulmion muotoinen syvennys Arduino Nano –laitteelle. Syvennyksen sisällä on nähtävillä mustaa 3D-tulostusmateriaalia, jota on sekoittunut muuten siniseen 3D-tulosteeseen.
Kuva 7. 3D-tulostukseen sotkeutunutta mustaa filamenttia.
Kaksi 3D-tulostettua pyöreäpohjaista tasapainoilukeskiötä vierekkäin pöydällä. Vasemmalla oleva sininen sininen keskiö on uudempi versio ja myös muutaman senttimetrin korkeampi kuin alkuperäinen punainen keskiö.
Kuva 8. Tasapainoilukeskiöiden eroja havainnollistava kuva, jossa uusi keskiö on korkeampi.
Kuva 9. USB-johto mahtuu uudessa versiossa hyvin kiinnityksen viereen.

Tasapainoalustan koodipohja

MPU6050-anturin toimivuus tasapainoalustaan kiinnitettynä testattiin seuraamalla sen tulostamia arvoja ArduinoIDE:n sarjamonitorissa ja erillisessä Unity-tekniikkademossa. Kun toiminnot näyttivät toimivan ensin langallisesti ja oikeaoppisesti, lähdettiin kehittämään langattomuutta tukevaa koodia. 

Arduino Nanossa on luonnostaan tuki Bluetooth-yhteydelle, joten peliohjaimen muuttaminen langattomaksi vaikutti ensin helpolta. Bluetooth Low Energy (BLE) -tekniikkaa tukevan Arduino Nanon ja monien muidenkin mikrokontrollereiden kanssa voidaan hyödyntää BLEDevice.h- ja BLEServer.h-kirjastoja. Ble-kirjastojen avulla koodiin määriteltiin tarvittavat langattomat palvelut ja ominaisuudet. Langattomuutta hyödyntäessä gyroanturin mittausarvot täytyy lähettää tavuina tekstin sijaan.

ArduinoIDE-ohjelman sarjamonitori-ikkunassa on tulostettuna kolmessa sarakkeessa kiihtyvyysanturin lähettämiä arvoja. Ylempänä on void-loopin sisällä lyhyt pätkä C++-koodia. (vasen kuva). Kiihtyvyysanturin lähettämiä arvoja Unity-ohjelmassa avattuna oikeassa laidassa. Keskellä näkyy kuvaa pelidemosta, jolla testattiin pelilaudan toimivuutta liikkeiden tarkkuutta. Demossa väisteltiin kolmeulotteisia geometrisia muotoja tasapainoilemalla laudan päällä. (oikea kuva).
Kuva 10. ArduinoIDE, ja kiihtyvyysanturin mittausarvot sarjaporttimonitorissa (vas.) ja Unity-demo ja anturin mittausarvot pelimoottorissa.

Arduino Nanon langaton yhdistäminen tietokoneeseen ja vaivaisen kolmen tavun lähettäminen osoittautui odotettua haastavammaksi kuin ensin odotettiin. Tätä lähdettiin ratkaisemaan testaamalla virtuaalisen sarjaportin luomista, hyödyntämällä apuna ”Null-modem” -emulaattoria nimeltä com0com. Com0com on sarjaporttiajuri Windows-käyttöjärjestelmien kerneliin.

Com0comilla on mahdollista luoda loputon määrä virtuaalisia sarjaporttipareja niitä tiedonsiirtoon tarvitseville sovelluksille. Com0comin ominaisuuksiin lukeutuu esimerkiksi simuloidun baudinopeuden asettaminen, TCP/IP-osoitteen uudelleenohjaus sarjaporttiin (ja toisin päin) ja liitäntäjärjestyksen mukauttaminen. Projektin kannalta tärkein ominaisuus oli com0comin kyky mahdollistaa langattomien laitteiden tiedonsiirto sarjaportin kautta. Com0com ei kuitenkaan itse toimi siltana laitteen ja virtuaalisen sarjaportin välillä, joten tälle tuli löytää erillinen ratkaisu. 

Ble-serial on Python-kirjasto, jolla voi yhdistää BLE-laitteen virtuaaliseen sarjaporttiin komentokehotteen kautta. Kirjasto osoittautui soveltuvaksi ratkaisuksi virtuaaliportin ja Arduino Nanon yhdistämisessä. Käyttöönotto kuitenkin edellytti useiden yhteysparametrien määrittämistä.

Com0com-ohjelman ikkuna, jossa on nähtävillä asetusvalikko COM- ja virtuaaliporteille. Virtuaaliportit on jaettu pareihin 0 ja 1. Molemmat niistä sisältävät kaksi COM-paikkaa.
Kuva 11. Setupg.exe virtuaaliporttien luonti- ja kustomointityökalu com0comissa.

Kirjaston GitHub-sivujen mukaan laitteen yhdistämiseen riittää pelkästään “ble-serial -d”, jota seuraa laitteen osoite HEX-formaatissa. Tällä ei kuitenkaan kuin vasta löydetä laite. Datan hakua varten BLE-yhteydestä tulee tarkistaa, tukeeko laite haluttua palvelua (service), joka toteutetaan komennolla -s. Jos laitteen palvelu tarjoaa haluttua ominaisuutta, kuten tässä tapauksessa anturin arvoja, niin ominaisuuteen (characteristic) tulee tehdä niin sanottu tilaus (subscribe) komennolla -r.  

Lisäksi muita parametreja voidaan syöttää tarkentamaan yhteyttä ja luomaan turvallisempi yhteys, kuten –permit, jonka avulla voidaan pakottaa yhteys joko read only-, read+write- ja write only -tilaan. Tässä tapauksessa haluttiin myös luoda sarjaporttiyhteys BLE:n välityksellä, joten käytettävä portti tuli myös määrittää itse komennolla -p, jota seuraa haluttu portin nimi. Myös erillinen aikakatkaisu (timeout) voidaan asettaa, jotta BLE-yhteydellä on aikaa käynnistyä käyttämällä komentoa –t. Esimerkkinä: “ble-serial -d 20:6E:F1:32:81:A5 -s 4FAFC201-1FB5-459E-8FCC-C5C9C331914B -r BEB5483E-36E1-4688-B7F5-EA07361B26A8 –permit ro -p COM9 -t 30.0”. (Jakeler 2024.)

Edessä ESP32 3D-tulostetussa suojakotelossa yhdistettynä USB-kaapelilla virtalähteeseen. Taka-alalla pyörii python-skripti komentoikkunassa, jolla laite yhdistyy langattomasti tietokoneeseen.
Kuva 12. Onnistunut linkitys BLE-laitteesta sarjaporttiin.

Alustan yhdistäminen pelidemoon onnistui ensimmäistä kertaa langattomasti, ilman USB-kaapelia. Valitettavasti edellä kuvailtu metodi ei ole käytännöllinen itse Sports Labiin kehitetyn pelidemon kanssa, koska siitä varten on asennettava kaksi eri ohjelmaa (com0com ja python), jotka vaativat Windows-tietokoneella järjestelmänvalvojan oikeuksia. Com0comin 3.0-versio ei toimi ilman ajureiden päivitystä ja vaatii tietokoneen uudelleenkäynnistyksen, jotta luodut virtuaaliportit aktivoituisivat. Pythonia varten pitää luoda uusi projekti, jonka sisälle tulee luoda virtuaaliympäristö, jossa BLE-serial-kirjasto on ladattuna. Ja mikäli havaintomotoriikkapeliä pyörittävässä tietokoneessa ei ole sisäänrakennettua Bluetooth-tukea, edellyttäisi sekin erillisen Bluetooth-sovittimen käyttöä. 

Toinen mikrokontrolleri 

Langattoman lähettimen käyttöönoton helpottamiseksi ja käyttöjärjestelmäriippuvuuksien selvittämiseksi päädyttiin tilaamaan toinen Arduino Nano -mikrokontrolleri vastaanotinkäyttöön. 

Tilausta odottaessa tulevan vastaanottajalaitteen ohjelmakoodia testattiin käyttäen rakennustekniikan laboratorion ESP32 WROOM-32D-mikrokontrolleria. Merkittävin ero väliaikaislaitteen ja lopullisen vastaanottajalaitteen välillä koski USB-porttien eri tyyppiä, mikä pakotti etsimään Micro USB -liitännäisen johdon. 

Myös langattomalle vastaanotinlaitteelle 3D-tulostettiin suojakuori, jonka pohjana toimi tasapainoalustankeskiön Arduino Nanon ja MPU6050-anturin juotoksen 3D-malli. Vastaanotttimen suojakuoren 3D-mallissa huomioitiin mikrokontrollerin kiinni jätetyistä pinneistä johtuva korkeustarve sekä lyhyempi pituus, koska se ei tarvinnut MPU6050-anturia. Kotelon rakenteen ansiosta yksinkertaisen vastaanottajalaitteen vaihtaminenkin on mahdollista, mikäli vanha Arduino Nano menisi esimerkiksi rikki. Vastaanottajalaite tarvitsi myös oman virtalähteensä, ja sellainen löytyi viidellä eurolla. Varavirtalähteelle luotiin oma kiinnityskotelonsa tasapainoalustan keskiön viereen. Virtalähteen paino kallistaa lautaa sen ollessa käyttämättömänä, mutta pelikokemuksen kannalta sillä ei ole merkitystä. 

ESP32-vastaanottajalaitteen C++-koodia avoinna ArduinoIDE-ohjelman ikkunassa. Koodissa kerrotaan, mitä sarjamonitoriin tulostetaan, jos yhteys muodostetaan tai se ei toimi.
Kuva 13. Vastaanottajalaitteen ohjelmakoodi ja tavuarvot sarjaportissa COM13.

Lähettimen ohjelmakoodia täytyi muokata tasapainoalustan lähettämien mittausarvojen tulostukseen sarjaportin kautta. Virtuaaliporttia käyttänyt aikaisempi ratkaisu tulosti arvopoikkeamia, jotka näkyivät Unity-demossa kuvan “säpsyilynä”. Välilaitteen onnistuneen yhdistämisen jälkeen poikkeamat katosivat, joten virhearvojen alkuperän pääteltiin johtuvan BLE-lähetyksen sijaan virtuaalisarjaportista. 

Vastaanottavalaite teki myös aiemmasta com0comia ja BLE-serial kirjastoa käyttävät toteutukset turhiksi, sillä sen sarjaporttia pystytään lukemaan suoraan COM-portin kautta sen ollessa kiinni koneessa, kunhan sitä varten olevat ajurit ovat päivitettynä. Tätä porttiyhteyttä voidaan lukea suoraan Unity-pelimoottorissa SerialPort-luokkaa käyttämällä.

Tasapainoalustan viimeistely

Tasapainoalustan tukirakenteen puuosien käyttäjälle näkyvät alueet maalattiin projektin loppupuolella mustaksi. Suunnitteluvaiheessa harkittiin ensin spraymaalin käyttöä, mutta opiskelijaryhmä päätyi lopulta käyttämään mustaa kalustemaalia. Pintaviimeistelyt suoritettiin rakennustekniikan laboratoriossa suojamuovien päällä.

Maalaaminen osoittautui fyysisesti hankalaksi, sillä maalia olisi kannattanut ohentaa ensin. Sivulautojen syvennykset suorakaideputkille osoittautuivat poikkeuksellisen hankalasti pinnoitettavaksi, joten niitä varten tarvittiin pienempi pensseli. Tästä huolimatta maalausjäljestä ei tullut syvennyksien kohdalla täydellistä, mutta nämä alueet eivät muutenkaan näy käyttäjälle havaintomotoriikkapeliä pelatessa.

Kuva 14. Tasapainolaudan valmiiksi mustaksi maalatut osat.

Pelilaudan päälle leikattiin ja liimattiin liukuesteeksi ja miellyttävämpää tuntumaa varten pyöreä kynnysmaton palanen. Liimaukseen käytettiin liimamassaa, joka levitettiin laudan päällyspuolelle. Kynnysmaton leike jätettiin laudan päälle puristimilla kiinni viikonlopun ylitse. Kynnysmaton liimaamisen jälkeen kiinnitysruuveille tuli tehdä reiät maton lävitse. Alkuperäiset kiinnitysruuvit korvattiin hieman pidemmillä kynnysmaton lisäämän korkeuden vuoksi.

Pöydällä olevan pelilaudan päälle liimattiin kynnysmatto liukuesteeksi. Pöydällä on myös teippirulla, kynä, työkalumitta ja mittanauha. (vas). 3D-tulostettu sininen keskiö kiinnitettynä ruuveilla mustaksi maalattuun pelilautaan. Keskiön sisälle johtaa USB-kaapeli, joka on kytketty myös laudan pohjaan kiinnitettyyn virtalähteeseen ja sen omaan 3D-tulostettuun koteloon. (oik.)
Kuva 15. Leikattu alustan kynnysmatto ennen liimausta (vas.) ja tasapainoalustan lopullisen pelilaudan pohja sivusta katsottuna.

Pohdinta

MOCAPPE-tasapainoalustaprojektissa tarvittiin lopulta hieman monialaisempaa osaamista, kuin tavallisessa ohjelmisto- ja tuotekehitykseen suuntautuvassa tieto- ja viestintätekniikan insinööriharjoitteluissa. Harjoitteluryhmällä oli ennalta kokemusta 3D-mallinnuksesta, Unity-pelimoottorista sekä IoT-teknologioista. Harjoittelun aikana päästiin myös harjoittelemaan ja hyödyntämään puukäsityö- ja mittaustaitoja. Projektin keskeisimmät haasteet liittyivät lopulta enemmän alustan rakennustekniseen suunnitteluun ja toteutukseen kuin varsinaiseen ohjelmistokehitykseen. Aluksi työskentely oman mukavuusalueen ulkopuolella herätti epävarmuutta lopputuloksen laadusta, mutta projektin edetessä huolet osoittautuivat turhiksi.

Harjoittelijatiimin jäsenet ottivat oma-aloitteisesti vastuuta niistä osa-alueista, joissa kokivat voivansa tuottaa eniten lisäarvoa. Laudan prototyyppi myös eli ja kehittyi projektin aikana. Esimerkiksi maalipintaa, karvamattoa ja langatonta lähetintä ei edes suunniteltu projektin alkuvaiheessa. Vaikka projektin lopputulos oli onnistunut, opintoihin kuuluvan harjoittelun merkittävin anti oli lopulta itse tuotekehitysprosessin näkeminen, joka jää mieleen merkittäväksi oppikokemukseksi. Vaikka IoT-ratkaisujen osuus jäi BLE-toteutusta lukuun ottamatta ennakoitua pienemmäksi, projekti tarjosi mahdollisuuden kehittää monipuolisia työelämässä tarvittavia taitoja.

MOCAPPE (MOCAP järjestelmät urheilu- ja hyvinvointianalyysin pelillistämisessä) on Lapin Liiton rahoittama EAKR-hanke, jonka toteutusaika on 1.10.2024 – 31.12.2026. Hankkeen kokonaisbudjetti on 1 000 141 € josta EU-rahoitusosuus on 799 874 €. 

Lähdekirjallisuus

Jakeler 2024. BLE Serial. GitHub. https://github.com/Jakeler/ble-serial


Artikkelijulkaisut ovat FrostBitin asiantuntijakirjoituksia Lapin ammattikorkeakoulun projektien toiminnasta ja tuloksista sekä muita TKI-toimintaa ja ICT-alaa koskevista aiheista. Artikkelit arvioi FrostBitin julkaisutoimikunta.

Ville Polvela

Asiantuntija, insinööri, tieto- ja viestintätekniikka

Ville Polvela toimii Lapin AMKin tieto- ja viestintätekniikan opetuksen tukena ja FrostBitin opiskelijaharjoittelujen koordinaattorina. Hänen suurimpia kiinnostuksen kohteita ovat yrittäjyys, hybriditapahtumien tuottaminen, audiovisuaalinen mediakulttuuri ja käyttöliittymien suunnittelu.