Heikki pitää Arduinon alkeet-kurssia vielä muutaman kerran jonnekin arviolta maaliskuun puoleenväliin tms, ehkä. Sen jälkeen olin ajatellut jatkaa viime vuonna tauolle jätettyä ARM-kurssia ja edetä kohti uusia seikkailuja. Mikäli haluatte mukaan kurssille, niin ilmoittakaa halukkuutenne vastaamalla tähän viestiin.
Kurssin aloitus ja kurssipäivä kiinnitetään myöhemmin, mutta alustavasti kurssipäivä on torstai klo 18-21. Aloitus määräytyy Arduino-kurssin päättymisen mukaan.
Jos on aiheesta kiinnostuneita jotka eivät osallistuneet edelliseen sesonkiin, niin tämän kurssin aihepiiri on nimensä mukaisesti ottaa haltuun omien projektien toteuttaminen käyttäen 32-bittisiä ARM-arkkitehtuuria noudattavia mikrokontrollereita. ARM on siis aineeton arkkitehtuuri jota lisensoi samanniminen putka, ja piivalmistajat toteuttavat siitä omia mikropiirejään joita saa sitten ostaa kaupasta. Lisenssivalmistajia on vaikka kuinka monta, tällä kurssilla käytetään ST Microelectronicsin piirejä ja valmiita kehityslautoja, tarkemmin ST Nucleo-F303 jolla majailee ARM-Cortex M4 -arkkitehtuurin mukainen piiri STM32F303RE.
Ekalla esityskaudella käytiin läpi kehitysympäristön pystyttäminen, projektin perustaminen ja tutustuttiin itse pääosan esittäjään eli 32-bittiseen ARM-mikrokontrolleriin. Muutaman ledinvätkytys-tyyppisen demon jälkeen otettiin haltuun prosessorin sulautettuja oheislaitteita kuten GPIO-pinnit, I2C, SPI- ja UART-sarjaväyltä ja mitä näitä oli. Sen jälkeen tutustuttiin oikeaan pieneen reaaliaikakäyttöjärjestelmään nimeltä FreeRTOS jolla tehtiin joukko sen ominaisuuksia hyödyntäviä projekteja.
Demoprojektien yhteydessä käytettiin eri lähteistä haalittuja kokeilupiirilevyä joissa oli juttuja alkaen sajra-rinnan-sarja -muuntimista pieneen tekstipohjaiseen LCD-näyttöön. Kaikki saatiin suurinpiirtein toimimaan ja toivottavasti opittiin kokonaisuuksien rakentamista osista.
Harjoituksissa käytettiin C ja C++ -kieliä jotka on Arduino-maailmastakin jollain tavalla tuttua. Tällä kurssilla käytetty ohjelmankehitysympäristö on kuitenkin “pro” eli tarkoitettu ihan oikean kaupallisen koodin tuottamiseen. Kielessä sinänsä ei ole mitään eroa, ja ohjelmistokin on ilmainen mutta ei ihan niin aloittelijaystävällinen kuin Arduino. Vastineeksi saa sitten ihan toisella tavalla ominaisuuksia ja mahdollisuuksia.
Edellisen kauden aineistoa löytyy tallennettuna täältä: Kirjoitusalusta.fi: hacklab-kurssi-stm32intro
(*** kts kommentti lopussa ***)
Meille jäi yksi rästitehtävä eli Bosch Sensortechin BMP280 -ilmanpaine/lämpötila-anturiin liittyminen ja säätietojen keruu. Kurssilaisille hommattiin silloin kyseistä piiriä käyttäviä koelautoja joita saa tavanomaisilta epäillyiltä, mm eBaysta vaikka tämmöinen saksalainen versio joka tulee ilman tullia: https://www.ebay.com/itm/ESP8266-BMP280-Luftdruck-Barometric-Temp-I2C-Sensor-Modul-Arduino-high-precision/284122608477?hash=item422706f35d:g:M9EAAOSwDiZf4K~g
Yleisön pyynnöstä sen jälkeen käydään läpi ARM-prosessorin virransäästötilat jolla on mielenkiintoa niille jotka kyhäävät paristokäyttöisiä tai muuten energiapihejä sovelluksia. Tehdään siitä joku yksinkertainen demoprojekti jolla asia selviää. Tämäkin saadaan yhden illan aikana käsiteltyä hyvin.
Sen jälkeen aloitetaan uusi lukukausi kunnolla ja ruvetaan käymään läpi tässä ylempänäkin jo alustavasti puitua aihepiiriä, eli mekaanisen systeemin liikkeenohjaus pienen (DC) sähkömoottorin avulla. Siinä meillä menee loppuvuosi joutuisasti, katsotaan kuinka syvälle päästään ennen kuin on pakko tulla pintaan haukkaamaan happea. Käytännön harjoitusten lisäksi tässä tulee väistämättä teoriaa ihan jonkun verrankin, koska ilman sitä me ei päästä puusta pitkään. Koitetaan kumminkin pitää ote sillä tavalla intuitiivisena, ettei hommasta tehdä mitään laskuharjoitusta, eikä aleta läpikäymään puisevia johdantoja, vaan keskitytään olennaiseen.
()
Jos kurssille haluaa ilmoittautua mukaan sellaisia, jotka ei osallistuneet ekalle kaudelle, niin voin järjestää valmisteluistuntoja muutaman kerran ennen varsinaisen jatkokurssin aloitusta. Näin sellaisetkin jotka aloittavat alusta pääsevät kohtuudella mukaan.
()
Sille ei voi mitään, että tätä kurssia ei ole mahdollista vetää käyttämättä C- ja C++ kieliä siten kuin niitä on tarkoitettu käytettävän. Muu ei yksinkertaisesti ole mahdollista. Sen takia jotta kurssista saa hyötyä, on vähintään välttävä noiden kielten tuntemus tarpeen. Emme käytä mitään C++ -kielen kehittyneimpiä ominaisuuksia koska niitä ei muutenkaan käytetä sulautettujen järjestelmien koodauksessa. Mitään tasovaatimuksia kurssille ei ole, eli kuka vaan on tervetullut osaamisesta riippumatta, mutta tällä kurssilla ei opeteta ohjelmoinnin alkeita.
Kurssin ohjelmankehityslauta: Nucleo-F303
Ohjelmankehtysympäristö: STM32CubeIDE
Kurssilla käytetään viitematskuna tätä netistä ilmaiseksi ladattavaa e-kirjaa: The Fundamentals of Control Theory.