LEGO Junan ohjaaminen infrapunalähettimellä
Ollinen, Lassi (2021)
Ollinen, Lassi
2021
Teknisten tieteiden kandidaattiohjelma - Bachelor's Programme in Engineering Sciences
Tekniikan ja luonnontieteiden tiedekunta - Faculty of Engineering and Natural Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2021-08-16
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202108166574
https://urn.fi/URN:NBN:fi:tuni-202108166574
Tiivistelmä
Kandidaatintyössä tutkittiin reaaliaikaisen sovelluksen suunnittelua ja toteutettiin tapausesimerkkinä LEGO Power Functions RC -protokollalla ohjattavan LEGO Passenger Trainin® ohjausjärjestelmä. Ohjain toteutettiin käyttäen Raspberry Pi® -piiritietokonetta ja siihen liitettyä infrapunalähetintä siten, että sen voi jatkokehityksessä liittää Beckhoffin® automaatiologiikkaan. Kandidaatintyön keskeisimmät tutkintokysymykset ovat: kuinka toteuttaa mikrosekunnin reaaliaikaisuutta vaativa infrapunalähetin käyttäen Raspberry Pi -piiritietokonetta, kuinka huomioida automaatiojärjestelmältä vaadittavat luotettavuusvaatimukset ja miten Beckhoffin automaatiologiikka tulee huomioida ohjaimen ohjelmistorajapinnassa.
Työn teoriaosuudessa käsitellään Raspberry Piin liittimet ja rakenne sekä Raspbian® -käyttöjärjestelmän asentaminen. Ohjelmointia tarkastellaan Pythonin ja C++:n näkökulmasta keskittyen erityisesti C++:n ja Pythonin saatavilla oleviin ohjelmointikirjastoihin sekä näiden etuihin ja haittoihin etenkin reaaliaikaisuuden näkökulmasta. Lisäksi käsitellään LEGO Power Functions RC -protokollan signaalikoodauksen toiminta ja sen asettamat reaaliaikavaatimukset. Lisäksi käsitellään kyseisen protokollan eri signaalimuodot ja miten muodostaa infrapunakäsky protokollan ”single output mode” -signaalimuotoa käyttämällä.
Työn käytännön osuudessa ohjaimen tekeminen aloitettiin Python-ohjelmointikielellä, mutta lopullinen ohjain toteutettiin C++-ohjelmointikielellä. Tähän päädyttiin, koska oskilloskoopilla tarkasteltaessa todettiin, että Python ei kykene tuottamaan mikrosekunnin reaaliaikaisuutta vaativia signaaleja. Lopullinen ohjelma toteutettiin käyttäen avuksi C++:n ”Nanosleep”- ja ”WiringPi” -ohjelmointikirjastoja. Toteutuksessa keskityttiin etenkin siihen, miten mikrosekunnin reaaliaikaisuutta vaativa infrapunasignaali lähetetään Raspberry Piillä luotettavasti siten, että se täyttää automaatiojärjestelmälle keskeiset luotettavuusvaatimukset.
Työn teoriaosuuden pohjalta saatiin lopputuloksena toimiva ohjausjärjestelmä, joka täyttää järjestelmälle asetetut reaaliaikavaatimukset sekä luotettavuusvaatimukset lähettimen sijainnin ennakkoehtojen täyttyessä. Lisäksi jatkokehityksessä ideoidaan, kuinka luotettavuutta saisi parannettua vaihtamalla infrapunaledi tehokkaampaan ja signaalin reaaliaikaisuutta tarkentamalla. Lisäksi huomioidaan se, miten Raspberry Piillä toteutetun ohjaimen saisi liitettyä Beckhoffin automaatiologiikkaan OPC®-rajapintaa käyttämällä tai yksinkertaisemmin C++:n ”WiringPi”-ohjelmointikirjastoa hyödyntäen.
Työn teoriaosuudessa käsitellään Raspberry Piin liittimet ja rakenne sekä Raspbian® -käyttöjärjestelmän asentaminen. Ohjelmointia tarkastellaan Pythonin ja C++:n näkökulmasta keskittyen erityisesti C++:n ja Pythonin saatavilla oleviin ohjelmointikirjastoihin sekä näiden etuihin ja haittoihin etenkin reaaliaikaisuuden näkökulmasta. Lisäksi käsitellään LEGO Power Functions RC -protokollan signaalikoodauksen toiminta ja sen asettamat reaaliaikavaatimukset. Lisäksi käsitellään kyseisen protokollan eri signaalimuodot ja miten muodostaa infrapunakäsky protokollan ”single output mode” -signaalimuotoa käyttämällä.
Työn käytännön osuudessa ohjaimen tekeminen aloitettiin Python-ohjelmointikielellä, mutta lopullinen ohjain toteutettiin C++-ohjelmointikielellä. Tähän päädyttiin, koska oskilloskoopilla tarkasteltaessa todettiin, että Python ei kykene tuottamaan mikrosekunnin reaaliaikaisuutta vaativia signaaleja. Lopullinen ohjelma toteutettiin käyttäen avuksi C++:n ”Nanosleep”- ja ”WiringPi” -ohjelmointikirjastoja. Toteutuksessa keskityttiin etenkin siihen, miten mikrosekunnin reaaliaikaisuutta vaativa infrapunasignaali lähetetään Raspberry Piillä luotettavasti siten, että se täyttää automaatiojärjestelmälle keskeiset luotettavuusvaatimukset.
Työn teoriaosuuden pohjalta saatiin lopputuloksena toimiva ohjausjärjestelmä, joka täyttää järjestelmälle asetetut reaaliaikavaatimukset sekä luotettavuusvaatimukset lähettimen sijainnin ennakkoehtojen täyttyessä. Lisäksi jatkokehityksessä ideoidaan, kuinka luotettavuutta saisi parannettua vaihtamalla infrapunaledi tehokkaampaan ja signaalin reaaliaikaisuutta tarkentamalla. Lisäksi huomioidaan se, miten Raspberry Piillä toteutetun ohjaimen saisi liitettyä Beckhoffin automaatiologiikkaan OPC®-rajapintaa käyttämällä tai yksinkertaisemmin C++:n ”WiringPi”-ohjelmointikirjastoa hyödyntäen.
Kokoelmat
- Kandidaatintutkielmat [8430]