Kerhoilta 17.10: Tekemisen täyteinen tiistai

Aiemmat kävijäennätykset taisivat rikkoutua tänä tiistaina kerhoillassa: paikalla oli yhtäaikaisesti enimmillään 16 henkilöä, ja vierailijoita yhteensä varmaan enemmänkin. Koska tekijöitä oli paljon, labralla nähtiinkin jos jonkinlaista tekemistä. Labralaiset jakautuivat sen verran tasaisesti kahteen eri huoneeseen, että ainakaan minusta ei tuntunut erityisen ahtaalta. Keväisestä uudelleenjärjestelystä taisi siis olla hyötyä.

Makitan jyrsin paikallaan.

Petteri ja Sandron CNC-jyrsinprojektiin saapui itse jyrsin, jolle Petteri teki kiinnikkeen puukappaleesta. Jyrsin on nyt asennettu paikalleen, ja seuraavassa kerhoillassa sillä varmaan päästään jo tekemään ensimmäinen koejyrsintä.

Moni puuhasteli myös tietotekniikan parissa. Jyrama ja rsl virittelivät Raspberry Pi:ta pyörittämään seinälle pystysuuntaan ripustettua näyttöä. Xorgin konffaamisessa oli omat hassuutensa, mutta siinä pyörii nyt jo graafinen käyttöliittymä Arch Linux ARMin päällä. Miika ja Joel ahkeroivat parannuksia labran verkkoon konffaamalla ja asentamalla käytöstä poistetun Ciscon labran runkokytkimeksi. Joni ja Valtteri säätivät PC-raudan parissa. Valtterilla oli myös mukana vanha MacBook, jossa on kadehdittavan paljon portteja verrattuna nykyisiin.

Elektroniikkapuuhaakin riitti: Mio korjasi mm. vanhan reitittimen ja Jarno ehosti näyttöä. Allekirjoittanut testaili tasapainorobotille suunniteltua uutta piirilevyä, joka viime viikolla saapui vihdoin postissa. Sainpa kirjoitettua projektista jonkinmoisen loginkin.

Lisäksi kerhoillassa Eetu valmisti sitsiproppeja. Myöhemmin nähtiin myös Pepe-patukan hakkerointia, josta ei valitettavasti ole kuvamateriaalia. Kaiken tämän tekemisen keskellä Milla onnistui keskittymään Calculus-kurssin laskuharjoitusten ratkomiseen.

Differentiaalilaskentaa, piirtämistä, konffaamista…

Labranäytön prototyyppi ja karmeat kaapeloinnit.

LCD-näytön sisuskalujen kasaamista.

Joskus kannettavissa tietokoneissa oli myös CD-asemia.

Tasapainoileva ESP8266-robotti

Olen jo pidempään muun muassa labrailloissa puuhaillut kahdella renkaalla tasapainoilevan robotin parissa. Projekti-idea ei sinänsä ole mitenkään uniikki – tasapainorobotteja löytyy YouTubesta vaikka millä mitalla hakusanalla self balancing robot.

Tässä projektissa on kuitenkin hieman tavanomaisesta poikkeavat lähtökohdat. Idea lähti itämään, kun kuulin ensi kertaa ESP8266-mikrokontrollerista, jossa on 32-bittinen prosessoriydin yhdistettynä WiFi-rautaan. Olin rakentanut aiemmin yksinkertaisen tasapainorobotin Arduino Nanon päälle, mutta paremmat kauko-ohjausmahdollisuudet kiinnostivat. ESP8266:lla voisi pyörittää HTTP-palvelinta, jonka kautta robottia voi ohjailla kännykällä. Eikä siinä vielä kaikki: halusin, että kaikki laskenta tapahtuisi samalla mikrokontrollerilla. Enpä silloin tiennyt, mihin olin ryhtymässä.

Noin vuoden päästä ensimmäisestä ideasta robotti liikkui jo. Ensimmäinen toteutus tehtiin ESP8266:lle portatun Arduino-ympäristön päälle. Arduinon avulla oli helppoa päästä alkuun perehtymättä mikro-ohjaimeen kovin syvällisesti.

Ensimmäisessä protossa käytin robotin asennon mittaamiseen MPU6050-anturia, jossa on kolmen akselin gyro sekä kiihtyvyysanturi samassa paketissa. Nyttemmin olen ottanut käyttöön vastaavan, hieman edullisemman LSM6DS3:n. Anturilukemista pystyy sensorifuusion avulla määrittämään robotin asennon – tai painovoimavektorin suunnan robotin koordinaatistossa. Tästä eteenpäin kaskadi-PID-säädin säätää DC-moottorien nopeuksia pitääkseen robotin pystyssä. Laskenta on toteutettu kokonaan kokonaislukuaritmetiikalla, sillä ESP8266:ssa ei ole liukulukuyksikköä, ja liukulukulaskujen tekeminen softalla veisi liikaa aikaa – 1.66 kHz näytteenottotaajuudella ei ole kovinkaan paljon aikaa mittausarvojen käsittelyyn.

Arduino-toteutuksessa oli kuitenkin omat ongelmansa. Koska WiFi-yhteys ja verkkototeutus pyörivät samalla prosessoriytimellä kuin aikakriittinen säätökoodi, aiheutti välillä sivun lataaminen kännykällä hieman nykimistä tasapainoiluun. Lisäksi aika ajoin tapahtui satunnaisia jumiutumisia. Netistä kuitenkin löytyi lupaava esp-open-rtos-projekti, jossa sovelluskoodi pyörii FreeRTOS-reaaliaikakäyttöjärjestelmän päällä. Huomattava parannus robotin vakauteen saavutettiin, kun laitoin laskentakoodin pyörimään korkeammalla prioriteetilla kuin TCP-yhteys. esp-open-rtos on muutenkin osoittautunut erinomaiseksi alustaksi, jota voisi suositella kenelle tahansa, joka haluaa kaivautua syvemmälle ESP8266:n maailmaan.

Aivan ongelmaton ESP8266 ei ole muutenkaan. Tarvitsen robotissa sekä PWM-lähtöä että I2C-yhteyttä, joista kummastakaan ei ole ESP8266:ssa rautatoteutusta. Softatoteutuksia molemmista pyörii netissä useita, mutta kesti hyvän aikaa löytää I2C-toteutus, joka todella saavuttaa lupaamansa siirtonopeudet. Lisäksi täytyy kehua ESP8266_new_pwm-kirjastoa, joka saavuttaa 20 kHz taajuuden 8 bitin resoluutiolla. Moottorien ininästä ei enää tarvitse kärsiä!

Moottoriohjaimena käytin aluksi L293D:tä, jossa pääteasteet on toteutettu bipolaaritransistoreilla. Myöhemmin kuitenkin selvisi, että niistä aiheutuu parin voltin jännitehäviö, jolloin DC-moottoreista ei saa täysiä tehoja irti. Niinpä vaihdoin myöhemmin DRV8835-piiriin, jossa on MOSFET-pääteasteet.

Protoversiossa käytettiin IC:itä valmiille breakout-levyille asennettuina ja johdoilla yhteen kytkettyinä. Hiljattain suunnittelin robolle varta vasten piirilevyn, ja OSH parkin valmistama lopputulos onkin varsin siistin näköinen.

Nyt kun pohjatyöt on tehty hyvin, aion seuraavaksi keskittyä käyttöliittymän hiomiseen – erityisesti PID-säädinten viritykseen tarkoitettu käyttöliittymä on nykyisellään hieman hankala. Olisi myös hauskaa suunnitella robolle 3D-tulostettava runko, jolloin se alkaisikin olla valmis massatuotantoon. Valmista tästä ei kuitenkaan varsinaisesti tule koskaan – onhan projekti jo ollut pari vuotta tekeillä. Jos alkaa tuntua tylsältä, saatan laittaa taas kaiken uusiksi päivittämällä ESP32:een ja ottamalla DC-moottorien sijaan käyttöön askelmoottorit.

Robotin koodit, piirilevykuvat ja kytkentäkaaviot ovat vapaasti saatavilla GitHubissa.

Vierailu DDR:ssä

Hacklabin jäsenmäärä on viimeisen vuoden aikana kasvanut hurjasti. Kerhoilloissa tämä onkin näkynyt – vilkkaimpina iltoina alkaa olla melko ahdasta. Kasvavana tarpeena on myös noussut esiin puu- ja metallitöiden sijoittaminen omaan tilaansa äänen, turvallisuuden ja pölyn vuoksi.

Olemmekin alkaneet hiljalleen selvittää mahdollista muuttoa uusiin tiloihin. Kortepohjan ylioppilaskylä kutsuikin meidät asian tiimoilta vierailulle – heillä olisi tarjolla meille tilaa DDR- eli MNOP-talokompleksin katutasosta, tarkemmin nykyisen Korkeakoululiikunnan kuntosalin tiloista.

Kävimme neljän hallituksen jäsenen kanssa katsomassa, minkälaiset tilat ovat kyseessä. Meille tarjotut tilat muodostuvat yhteensä neljästä eri huoneesta, joista suurin on noin 54 m² kokoinen. Yksi pienemmistä huoneista on kylmän tilan kautta käytävä huone, johon voisi sijoittaa esimerkiksi sotkevampia projekteja kuten spraymaalaus tai pyörän korjaus. Yksi huoneista on nykyisin kalustettu keittiöksi. Nykyisistä tiloista puuttuu erillinen keittiö, joten se olisi tervetullut muutos.

Tarjottua tilaa on yli 100 m² verran, ja kokonaisuus vaikuttaa toimivalta. Keskustelut käytiin hyvässä hengessä, ja Ylioppilaskylän henkilökunta vaikutti kiinnostuneelta kuulemaan muutostarpeistamme. Selvitettäväksi jäi mm. mahdollisuus puhkaista seiniä erillisten huoneiden välillä. Lisäksi samoissa tiloissa on väestönsuoja. Alkuperäisen puheen mukaan tämä olisi jäämässä JYY:n käyttöön, mutta tulevaisuudessa siitäkin voisi saada tilaa laajenemiselle esimerkiksi osittain.

Tiloissa on myös sauna, joka on tällä hetkellä pois käytöstä. Tiedustelimme sen käyttömahdollisuuksista tai muusta tavasta järjestää saunavuoro, ja keskusteluissa vilahtikin jo mahdollisuus varata Hacklabille viereisen talon saunasta oma vuoro.

Kuvia tiloista oli hieman hankalaa saada kännykkäkameralla, mutta eivät ne toisaalta kovin paljon kertoisikaan sen vuoksi, että ne ovat tällä hetkellä täynnä kuntoiluvälineitä. Joten tämä pohjapiirros kertoo enemmän: