Topias Liljegren
topias.liljegren@gmail.com
toplilje@student.jyu.fi
Tässä opintopäiväkirja, jonne koitan päivittää kaikkea opiskelemaani liittyvää omaa harrastuneisuutta (etinkin TIEP114 ja ohjelmoinita). Tätä sivua saa käyttää kaikkiin Jyväskylän yliopiston tutkimuksiin, opetustarkoituksiin jne. Tämä sivu ei ole kaupalliseen tai poliittiseen tarkoitukseen tehty ja yritän pysyä yliopiston sääntöjen sisällä. Yritän päivittää tätä sivua blogimaisesti ja kertoa siitä, mistä milloinkin aloitin ja mihin tulokseen olen milloinkin päättynyt. Kehut, haukut, kommentit, työtarjoukset, parannusehdotukset jne. voi lähettää minulle sähköpostiin: "topias.liljegren@gmail.com". Jos sivun koko kasvaa opintojen aikana paljonkin, niin lisään tarpeen tullen hakupalkin ja tagaan kaikkiin päivityksiin asiaankuuluvia tageja. Yritän myös muin tavoin päivitellä tätä sivua sekä harjoittelun, että yleisen käytettävyyden vuoksi.
Olen tilannut rasberry pi 4 model B:n, sekä siihen mukaan starter packin, jossa kaikenlaisia osia, sekä ohjeita mitä tehdä. Paketit eivät ole vielä saapuneet. Tavoitteeni on kasailla projektin koosta riippuen viikottain vähintään yksi projekti, joka löytyy ohjeista. Uskon, että alkuun vauhti on nopeampaa, kuin edellämainituissa odotuksissa, sillä aloittelijaprojektit ovat varmasti helpompia, kuin pitemmällä olevat. Lisäksi, koska tämä on uutta ja hienoa, niin luultavasti sysään kaiken muun sivuun vain tehdäkseni uutta tämän projektin parissa. Kunhan olen oppinut mielestäni tarpeeksi haluamastani aiheesta, aion yrittää myös luoda omia projekteja, jotka eivät tule suoraan ohjekirjasta. Yritän myös päivitellä tätä sivua mahdollisimman usein, ellei tule taukoja tekemisiin tai ellen unohda tämän sivun olemassaoloa kokonaan.
Rasberry pi pakettini tuli vihdoin perille. Alunperin mainostettiin, että kuljetuksessa menisi 2-3 päivää, mutta loputa siihen kului viikko. Seuraavana ongelmana huomasin, ettei minulla ole micro SD-USB adapteria, enkä siksi voi asentaa käyttöjärjestelmää rPI:lleni. Onneksi ne eivät ole kalliita ja niitä saa kaikkialta, joten sen hankkiminen ei pitäisi olla isokaan ongelma. Isompana ongelmana on se mitä tilasin rPI:n kanssa aloittelijapaketiksi, sillä se tulee Kiinasta asti, enkä usko näkeväni sitä vielä hetkeen. Ei se mitään, olen silti onnoissani jo pelkästään siitä, että sain käsiini jo pelkän vielä toimimattoman rPI:n.
Nyt olen vihdoin saanut kaiken tilaamani haltuuni, johan sitä on jo pari viikkoa odotettu. Sain rasbianin asennettua helposti yhdelle micro sd kortille ja ssh yhteys sun muut pelittää kaikki. Aluksi päivittelin kaikki sovellukset ja tarkistelin mitä sovelluksia löytyy valmiina. Rakensin myös kaksi ensimmäistä starter kitin python osion projektia. Ensimmäinen ole helppo, jossa piti vain saada ledi välkkymään. Ohjeet olivat selvät ja se ei tuottanut ongelmia. Toinen projekti, jossa piti saada rgb-ledi vaihtamaan väriä tuotti enemmän ongelmia. Ohjeet olivat todella selkeät ja sain sen kyllä heti toimmaan, mutta en ymmärtänyt sen koodia lähes ollenkaan. Yritin saada lediä välkkymään myös muillakin väreillä, kuin mitä ohjeessa tehtiin, mutta en ole siinä vielä onnistunut.
Vajaan kahden viikon asentelun jälkeen sain vihdoin kaiken toimimaan. Emulaattori ei halunnut käynnistyä, koska jotkin tiedostot olivat vanhoja. Googlailun mukaan raspi oli juuri saanut uuden päivityksen ja ongelma oli niin uusi, ettei siihen ollut vielä edes ratkaisua. Ensimmäinen ongelma oli se, että start4.elf tiedostot olivat liian vanhoja ja piti päivittää. Mutta Windows ei anna muokata img tiedostotoja, eikä uusia valmiita tarvitsemiani ollut missään valmiina. Onneksi on linux ja tässä tapauksessa rasbian. USB-adapteri kiinni raspiin ja eikun korvaamaan boot tiedostoja. Seuraava ongelma olikin sitten jo kernelin kanssa, sillä eri versiot samasta tiedostosta eivät suoraan ole vaihdettavissa. Lopulta kokeilemalla useita kombinaatioita ja ottamalla niistä lisää selvää nikkaroijien forumeilla, löysin lopulta oikean kombinaation, mitä tiedostoja vaihtaa. Kahdeksan tiedostoa piti vaihtaa ja vasta sitten emulaattorini käynnistyi.
Sain viime viikon aikana myös starter kitin projekteja tehtyä, mutta en niistä ehtinyt päivittää. Sain myös viime viikolla starter packin projekteja tehtyä muutaman. En kerennyt niistä päivittää silloin. Ensimmäinen oli LED palkkien rivi, jonka palkit sain päälle ja pois niinkuin jokin lataisi. Vaihtelin myös sen nopeutta ja eri ominaisuuksia joille en nyt keksi sanoja. Seuraavaksi aluksi yhdellä ja sitten neljällä 7-segmenttinäytöllä 0-F heksaluvut nousevana. Sen esitehtyä koodia en ymmärtänyt lähes ollenkaan, joten joudun paneutumaan siihen uudestaan. Lopulta sain vielä kasattua audio moduulin, joka sanoi kaiken kirjoittamani ääneen, sekä olisi soittanut valitsemaani musiikkia kaiuttimesta. Ikävä kyllä minulla ei ole raspillani yhtään musiikkia saati muita äänitiedostoja ladattuna, niin siinä tuli ongelma vastaan. Tähän väliin on kai hyvä mainita vielä, että olen ottanut aina ssh yhteyden raspiini ja nanolla kirjoittanut python koodini. Mallista tietenkin, yrittäen ensin ymmärtää sen. Voisin yhdistää HDMI-kaapelilla raspin näyttööni, mutta en halua uhrata näyttöäni siihen, että vain kirjoitan koodia. Haluaisin vaihtaa suurimmaksi osaksi raspi päätietokoneekseni, mutta siihen on vielä paljon matkaa, joten tällä hetkellä se on vain apuväline, jolla opettelen. Kunhan ensi viikolla kasaan lisää, niin koitan pistää myös kuvia sekaan.
Kevät lukukausi lähenee loppuaan ja tenttejä on luvassa. Siksi myös vapaa-aika ja projektien rakentelu on jäänyt vähiin. Siitä huolimatta yhtenä iltana olen saanut aikaan sen, että purin ikivanhan läppärini, joka hädintuskin enään edes käynnistyi. Tarkoituksena sillä on se, että saisin toimivan näppäimistö+hiiri setin, jonka voisi sen valmistuttua yhdistää USB:llä mihin tahansa laitteeseen ja silloin siinä olisi toimiva näppäimistö ja hiiri. Etinkin rPi:ni kanssa se olisi todella kätevää, jolloin ei enään tarvitsisi vaihdella pöytäkoneeni hiiren ja näppäimistön liitäntöjä edestakaisin koneen ja rPi:n välillä. Se helpottaisi myös rPi:n matkalle mukaan ottamista. Läppärin näytöstä aion yrittää saada toimivaa näyttöä, joka olisi myös yhtä monikäyttöinen, kuin edellämainittu hiiri+näppäimistö setti. Läppärin sisuskaluja tuskin tulee kovinkaan paljoa säästeltyä mihinkään tiettyyn, mutta saa nähdä jos niille jokin paikka löytyisi. SD-kortin lukijan voisin ainakin säästää, jos siitäkin saisi itsestään toimivan.
Aloitin discord botin tekemisen pythonilla. Osasin pythonia jo valmiiksi vähän, mutta en läheskään tarpeeksi tehdäkseni jotain oikeasti hyödyllistä. Tämä tulee siis hyvänä harjoituksena, sekä antaa hyvän konkreettisen esimerkin siitä mitä voi tehdä. Se osaa antaa random numeron joko annetun numeron alta, tai jos ei anna numeroa itse, niin vakiona on miljoona. Koska botti on vielä kehitysvaiheessa, niin se toimii vain testikanavalla, mutta kunhan sen saa toimimaan omasta mielestäni tarpeeksi, niin aion levittää sitä myös kavereideni kanaville. En usko että tämä tulee olemaan koskaan kovinkaan hyödyllinen tekele, muutakuin oppimisen kannalta, mutta jos inspiraatio iskee ja keksin jotain sopivaa, niin sen lisääminen ei pitäisi olla liiankaan suuri ongelma. Tällä hetkellä botti vain vastaa halutulla kanavalla ja osaa eristää sille puhujan nimen. Se osaa tervehtiä, hyvästellä ja antaa numeron. Seuraava tavoite olisi lisätä sille kyky liittyä puhekanaville ja soittaa musiikkia.
Koulu on taas hyvässä vauhdissa ja lomatkin ovat jo takana. Syyslukukauden aikana ohjelmointi on ollut aika olematonta, mutta kohti kevättä, sen pitäisi taas lisääntyä. Olen myös kääntänyt pöytäkoneeni pääkohtaisesti Linuxin puolelle ja löysin distron nimeltään nobara OS. Se on fedora pohjainen pelaamiseen soveltuva projekti, josta löytyy valmiiksi asennettuna useita hyödyllisiä sovelluksia. Tähän mennessä ratkaisemattomat ongelmat ovat vielä mysteeri, että johtuuko se omasta osaamattomuudesta, vai siitä, että nobara on yksityishenkilön oma projekti omaan käyttöönsä ja siksi netistä ei löydy apua kaikkiin ongelmiin. Suurimmaksi osaksi kaikki sujuu muuten oikein hyvin ja olen joitakin pelejä lukuunottamatta pystynyt käyttämään tätä täyspäiväisesti. Mielessä on pyörinyt pitkään, että asentaisin tälle vain virtuaali koneelle Windowsin, jolle asentaisin muutaman pelin ja voisin siirtyä tavallaan kokonaan Linuxin syliin, mutta tänään juuri ennen puoltayötä jouduin murskaamaan unelmani. Aloitin päivän yrittämällä ensin saada oraclen virtual boxia toimimaan ja ostin jopa uuden Windows 10 aktivointi avaimen sitä varten. Windowsin asentaminen ei ole ennenkään ollut vaikeaa, vain pitkällöistä ja sitä se oli nytkin. Ongelmana oli vain, että näytön resoluutio ei suostunut menemään yli 1600x900 vaikka mitä yritin. Internetillä piti olla helppo ratkaisu tähän ongelmaan, mutta vaikka miten asentelin mitä uudestaan ja seurasin kaikkia ohjeita kerrallaan, ei se toiminut.Lopulta löysin vastaukseni, eli vastikkeen VBoxille. QEMU ja/tai VMWare(en vieläkään täysin ymmärrä, ovatko ne sama asia, vai miten ne liittyvät toisiinsa) olisi paljon paremmin toimiva ja siinä olisi natiivisti sopiva resoluutio saatavilla ja mukavana boonuksena se olisi myös paljon VBoxia nopeampi. Niimpä asentelin ne ja asensin Windowsin taas kerran ja lopulta olin taas valmis ja voin todeta, että todellakin, toimii paljon paremmin. Seuraava ongelma olisi vain saada pelit pyörimään. Aikani pähkäillessä löysin vastaukseni. Yksi näytönohjain voi pyörittää vain yhtä käyttöjärjestelmää kerrallaan, mutta onneksi siihenkin olisi ratkaisu, GPU:n läpivienti, joten voisin käyttää virtuaali konetta löhes yhtä täysillä kuin jos käyttäisin Windowsia itsekseen ilman virtuaali koneita. Taas ohjeita seuraten olen suoristamassa seuraavaa mutkaa matkassani, kunnes saan tietää, että haluamani pelit tunnistavat, että käytän virtuaali konetta tai muuten vain eivät toimi niillä ja että kaikki tekemäni oli tavoitteideni kannalta turhaa. Noh, sellaista sattuu ja onpahan taas opittu jotain uutta monesta eri asiasta.
Olen jo pitkään halunnut kasata itselleni oman Magic Mirrorin ja nyt sen vihdoin tein, vaikkakaan en niinkuin olin alunperin suunnitellut. Siitä ei nimittäin tullut peiliä vaan smartscreen. Elikkä yhistin raspi neloseni toiseen näyttööni ja ainakun en käytä tietokonettani, on toinen näyttöni silti päällä ja esittelee minulle mm. sään ja uutisia. Tämä projekti olikin paljon helpompi kuin osasin odottaa, sillä MagicMirror2 on valmis ohjelma, jota on myös helppo muokata. Niin minä teinkin ja pääsin tutustumaan sentään siihen miten API:t toimivat. Nimittään mitään infoa ei saanut ilman API:ta ja nyt niihinkin perehtyneenä totean vain, että miten en ole ennen käyttänyt näitä kun ovat niin hyödyllisiä.