HSF18 – Hacklab Summit Finland 1.–4.3.2018 Jyväskylässä

Arvoisa hakkerikansa! Linkki Jyväskylä ry:n Instanssi-työryhmä ja Hacklab Jyväskylä ry ovat päättäneet HSF18-tapahtuman järjestämisestä Jyväskylässä Schildtin lukion Voionmaan toimipisteellä 1.–4.3.2018. Tapahtuma on nelipäiväinen, mutta varsinainen HSF-ohjelma tullaan ajoittamaan perjantaista sunnuntaihin.

HSF:n käyttöön varataan yläkerrasta luentosali ja tapahtumapaikalla on mahdollisuus myös yöpyä demoskenetyyliin lattiamajoituksessa. Mikäli lattiamajoitus ei innosta, niin lähimmät hotellit löytyvät keskustasta 1,5km päästä. Korttelin päästä löytyy kauppa ja baari.

Tapahtuman kanssa samaan aikaan kerrosta alempana järjestetään jo yhdeksättä kertaa järjestettävä digitaalisen tekemisen festivaali ja demoparty Instanssi. Tapahtumien ohjelmia pyritään sovittamaan myös yhteen siten, että HSF:n ohjelmaa voisi sisällyttää osaksi Instanssia ja näin saada molemminpuoleista näkyvyyttä ja sitä paljon puhuttua positiivista pöhinää.

Monet Jyväskylän Hacklabin aktiiveista ovat työllistettyjä Instanssin järjestämisessä ja HSF-puitteiden toteuttamisessa, joten kutsumme nyt muiden paikkakuntien hacklabit mukaan suunnittelemaan HSF18:n ohjelmaa ja excua. Ideoinnille on jo luotu lanka Hacklab.fi:n discoursessa.

Tapahtuman lippujen hinnaksi arvioimme tällä hetkellä 10€, joka sisältää majoituksen ja osallistumisen tapahtumaan torstaista sunnuntaihin. Lisähintaan saa salin puolelta oman tietokonepaikan. Lipulla voi kulkea pääovista kellon ympäri. Lisäksi lipulla pääsee vapaasti kulkemaan HSF:n ja Instanssin välillä. Tapahtumapaikka on päihteetön.

Kuvat: HSF16-ryhmäkuva (Helsinki Hacklab), Instanssin teaser-juliste (Linkki Jyväskylä)

Hacklabin Internet of Things pärisee radioaalloilla

Kaikki alkoi vuonna 2016 siitä, kun Eetu osti Anttilan konkurssimyynnistä etäohjattavia pistorasioita ja labilla mietittiin mitä niillä voisi tehdä. Ne päädyttiin liittämään labin kattovalaistuksen pistorasioihin, jonka jälkeen labille sai kätevästi valot päälle jo ulko-ovelta painamalla oven vieressä olevaa kaukosäädintä. Kauko-ohjattavat pistorasiat olivat kuitenkin porttihuume kovempiin säätöihin.

Seuraavaksi pohdimme voisiko sitä lähetettä, jolla kaukosäädin lähettää pistorasioille, kuunnella. Voihan niitä. Taajuus on 433 MHz. Näitä lähetteitä varten on olemassa tarkoitusta varten tehtyjä vastaanottimia, mutta on näppärintä niitä on kuunnella USB-väylään liitettävällä DVB-T -tikulla ja Linux-koneella. Tikut ovat nykyään muutaman euron hintaisia Kiinasta tilattuna ilmeisesti suurten tuotantomäärien. Niiden kysyntä alkuperäiseen tarkoitukseen myös lienee laskusssa, koska TV-lähetykset ovat jo osittain siirtyneet DVB-T2 -verkkoon. Ostaessa tikkua kannattaa tarkistaa, että siinä on yhteensopiva Realtekin piirisarja. Esimerkiksi tällainen maksaa 11€ eikä ole edes halvin.

Mutta mitä tällä sitten voisi tehdä? Jo aiemmin Hacklabille oli toteutettu WLAN-käyttäjätunnistus, jonka koodit löytyvät Githubista nimellä HacklabJKL/visitors. Se tunnistaa Hacklabin langattomaan verkkoon kännykällä tai läppärillä liittyjän MAC-osoitteen perusteella ja ilmoittaa sekä IRCiin sekä Hacklabin sivuille läsnäolevat kävijät. Valojen seuranta yhdistettiin samaan systeemiin, ja nyt IRCiin tulee myös ilmoitus siitä, kun joku sytyttää tai sammuttaa Hacklabin valaistuksen. Homma ei kuitenkaan jäänyt tähän, koska valokaukosäätimessä on 8 nappia ja valojen ohjauksiin tarvitaan vain kahta. Neljäs nappipari otettiin käyttöön kerhoillasta ilmoittamiseen. Vasemmanpuoleisella painikkeella voi julistaa kerhoillan alkaneeksi ja oikeanpuoleisella voi kertoa, että labilta ollaan pian lähdössä. Kerhoilta-toimintoa voidaan käyttää muulloinkin kuin virallisina kerhoiltoina, jos on pidempään paikalla ja valmis ottamaan vastaan vierailijoita. Aluksi lisättiin myös mahdollisuus varoittaa nappia painamalla ydinsodan syttymisestä, mutta ydinsotien harvinaisuuden vuoksi painikkeelle löytyi parempi käyttö: SLAY Radion soittaminen labran kaiuttimista. Teknisesti painikkeet käynnistävät ja sammuttavat systemd:n palveluita. Sen jälkeen on luovuus vain rajana.

Mikon työpaikalla oli puolestaan ongelma, että jääkaapin ovi ei aina suostunut menemään kiinni. Ihmisten eväät saattoivat löytyä kaapista lämpiminä ja Mikko rakensikin työpaikalleen magneettisen sensorin, joka huomaa jos jääkaapin ovi on auki ja ilmoittaa siitä. Rautana on Raspberry Pi 3 ja magneettikytkin. Lähdekoodi löytyy Cinian Githubista nimellä fridgebot. Vastaavanlainen toteutus löytyy myös Hacklabilta, ja nyt jääkaapin ovenkin tilanne on IRC-seurannassa. Välillä magneetit liikkuvat rajun kerhoilun seurauksena ja tulee vääriä hälytyksiä. Tekninen toteutus vaatii vielä hiontaa. Ulkoasukin on hiukan purkkainen, kuten allaolevasta kuvasta näkee:

Eikä labin IoT-tarjonta lopu vielä tähän! Labralta löytyy nykyään myös Mumbleen liitetty intercom-laite, jolla voi puhua Mumblessa olevien kanssa kuin radioon. Mehustelemme sitä seikkaperäisemmin myöhemmässä jaksossa. Eikä tässä vielä kaikki! Olemme myös sijoittaneet labralle kolme lämpötila-anturia, joiden datankeruusta myöskin lupaamme kertoa myöhemmin. Pysykää taajuudella!

Hacklabien yhteinen puhepalvelin mumble.hacklab.fi

Olemme kaipailleet tapaa keskustella kerhotilassa olevien kanssa ja muutenkin pitää palavereja puheviestintänä tekstimuotoisen IRC:n ja Telegrammin lisäksi. Siispä päätimme ottaa käyttöön Mumblen, joka on avoin, pelaajien suosiossa ja saatavissa kaikille vähänkään järkeville käyttöjärjestelmille.

Hacklab Jyväskylä ry. tarjoaa kaikille Suomen hacklabeille avoimen puhepalvelimen:

Osoite mumble.hacklab.fi
Portti 64738 (oletus)
Ylläpitäjät BFlorry
Zouppen

Palvelimella on kanavat jokaiselle Suomen labille ja lisäksi kävijät voivat luoda omia väliaikaisia kanaviaan vapaasti. Kanavat ovat oletuksena suomenkielisiä, mutta erikielisiä kanavia voi perustaa ja erilaisista käytänteistä voi sopia kanavakohtaisesti. Pysyviä kanavia tai muita säätöjä voi pyytää ylläpitäjiltä.

Kanavien tarkoitukset

Kanava Kuvaus Kieli
AFK Tänne kannattaa mennä, jos on poissa koneelta
Kahvihuone Yleistä keskustelua, joka ei välttämättä liity hacklab-toimintaan suomi
Village pump Sama kuin Kahvihuone, mutta englanniksi englanti
Hacklab.fi Suomen yhteisön keskustelukanava suomi
Kerhokanavat Jokaisella Suomen hacklabilla on oma kanava ryhmän Hacklab.fi alla paikallisesti sovittava

Sopivia ohjelmia

Debian ja Ubuntu sudo apt install mumble Maksuton, BSD-style
Windows, macOS, muut Linuxit Mumble Maksuton, BSD-style
Android Plumble Maksuton, GPLv3
iOS Mumble Maksuton, BSD-3-clause

Palvelin sijaitsee Jyväskylässä IT Ihmeen konesalissa, joka on linkitetty Jyväskylän alueella toimivaan Keski-Suomen radioamatöörien ylläpitämään linkkiverkkoon, joten palvelin on käytettävissä myös pula-ajan olosuhteissa. Nuudeli- ja kolavarmuusvarastojen riittävyydestä voidaan tällöin keskustella Mumble-palvelimella sijaitsevassa Ydintalvipuutarha-ryhmässä.

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.