Video lopputuloksesta MVI_1871.MOV
Projektin tavoitteena oli suunnitella ja rakentaa kauko-ohjattava, 3,5-metrinen vene ja sen ohjausjärjestelmä. Veneen olisi tarkoitus tulla olla prototyyppi mahdollisesti sotilas- tai pelastuskäyttöön tarkoitetusta sovelluksesta.
Ohjaus veneen päässä toteutettiin Arduino -mikro-ohjaimella. Ohjaustiedot lähettävältä tietokoneelta vastaanotetaan Satel-radiomodeemilla, joka on kiinni sarjaväylässä. Tietojen perusteella ohjataan kahta sähkötoimista karamoottoria-mikrokontrollerilla. Arduino vastaanottaa tietokoneelta tulevat ohjaustiedot sarjaväylään kytketyllä radiomodeemilla sekä käsittelee ja lähettää veneen ohjaustiedot CAN-väylälle ja lisäksi lukee CAN-väylällä liikkuvia viestejä. CAN-väylältä luetut viestit lähetetään radiomodeemilla takaisin ohjaustietokoneelle.
Arduinon myös huolehtii karamoottorien ohjauksesta, jotka säätävät vesijetin kauhaa ja suutinta PWM-lähdöillä, ja sähkömoottoria CAN-väylän viesteillä. Can-väylältä otetaan lisäksi vastaan tietoja mm. akuilta ja GPS:ltä. Vastaanotetut tiedot lähetetään radiomodeemilla takaisin ohjaustietokoneelle.
peruutuskauhaa ja ohjaussuuttimen asentoa. Karamoottoreiden ohjaustiedon Arduino lähettää PWM-signaalina.
Veneen CAN-väylä
Veneen CAN-väylällä liikkuu muun muassa seuraavia viestejä: sähkömoottorin (vesisuihkumoottorin) ohjausviestit, Arduinolle menevät karamoottorien ohjausviestit, GPS:ltä saatavat viestit ja veneen akkujen (jännite, kapasiteetti) sekä moottorin tilan (RPM, lämpötila) ilmaisevia viestejä.
Arduinon ohjelmointi
Arduino on yksinkertaista ohjelmoida ohjelmointiympäristöllä, joka toimitetaan laitteen mukana. Kieli on C:tä, jossa on mukana Arduinon omia kirjastoja. Ohjelmalla onnistuu myös koodin syöttäminen Arduinoon, jolloin tehty ohjelma käynnistyy aina, kun Arduinoon kytketään virrat.
Ohjausohjelmassa käytettiin Arduinon omien kirjastojen lisäksi CAN-kirjastoa, joka on CAN-shieldin käyttökirjasto. Sarjaväylän lukemiseen ja kirjoittamiseen käytettiin Serial-kirjastoa. Ohjelman lähdekoodi on erillisessä tiedostossa tämän sivun lopussa.
Linux-laudan ohjelmointi (ei käytössä)
Linux-laudan ohjelma ohjelmoitiin Arduinon tapaan C-kielellä. Käytössä oli peruskirjastojen lisäksi can4linux-kirjasto. Linux-lautaa käytettiin korvaamaan rikki mennyt RS232-TTL-kovertteri, mutta nyttemmin on hankittu uusi konvertteri, joten Linux-lauta ei ole enää käytössä.
Ohjausohjelman ohjelmointi
Ohajaustietokoneen ohjelma ja käyttöliittymä tehtiin Qt-ohjelmointiympäristöllä. Käyttöliittymään tehtiin säätömahdollisuudet sarjaväylän käyttämiseksi ja toimilaitteiden ohjaamiseksi tehtiin säätöpalkit ja 2-akselisen ohjaussauvan asemaa simuloiva kenttä, jossa koordinaatistoa klikkaamalla voi säätää lähetettäviä ohjaustietoja. Käyttöliittymään tehtiin lisäksi veneeltä vastaanotettavat tiedot näyttävät elementit sekä sarjaväylän asetukset.
Venettä voidaan ohjata myös USB-väylään yhdistettävällä PS2-ohjaimella. Ohjaimelta saatavat tiedot on yhdistetty ohjausohjelman säätöpalkkeihin.
Sarjaliikenne toteutettiin Minicanopen-kirjaston Serial-osiolla. Sarjaliikenne ja muut tarvittavat funktiot tehtiin omaan säikeeseen, jotta käyttöliittymä olisi niistä erillään ja ohjelma toimisi mahdollisimman sulavasti.
Projektin tilanne
Ensimmäisissä testeissä vesillä (kevät 2011) moottori ja ohjaus toimivat, mutta kauko-ohjauksessa oli vielä ongelmia. Moottori muun muassa sammui välillä ja ohjaustieto ei aina ollut sitä mitä haluttiin. Tämän jälkeen ohjelmakoodia paranneltiin ja varmistettiin, ettei väärää dataa voi tulla veneen ohjauslaitteille.
Viimeisimmissä testeissä (syksy 2012) mitattiin moottorin maksimikierrosnopeutta ja staattista voimaa köyden päässä olevalla jousivaa'alla. Vene toimi hyvin, lukuunottamatta mm. peruutuskauhan menemistä liian ylös, jolloin ohjaussuutin jäi mekaanisesti jumiin, sekä moottorinohjaimen sammumista itsestään ajoittain, jolloin se täytyi käynnistää uudelleen.
Projekti päätettiin syyskuun lopussa 2012. Projektia on kuitenkin mahdollista jatkaa eteenpäin, mikäli sille tulee tarvetta.
Kehityskohtia
Projektin edetessä mietittiin ominaisuuksia, jotka olisivat toteutettavissa, mutta joita ei ehditty tai kyetty tämän projektin puitteissa tekemään. Näitä ominaisuuksia tulisi miettiä, jos projektia jatketaan jossain muodossa tulevaisuudessa.
-GPS:n käyttöönotto. Sen pohjalta ohjausohjelmaan voisi tehdä kartan, josta näkisi veneen sijainnin. Lisäksi todellinen nopeus ja suunta olisivat hyödyllisiä tietoja testauksessa. GPS on ollut jo kiinni veneessä, mutta vaatii jatkokehittelyä. GPS on ollut jo kiinni veneessä, mutta vaatii jatkokehittelyä.
-Kamerakuva veneestä. Tämä asettaa kuitenkin haasteita veneen mikrokontrollerille ja radioliikenteelle.
-Käyttöliittymän kehitys. Esim. joystickin tai PS2-ohjaimen käyttöönotto. PS2-ohjainta on jo käytetty, mutta siinä on ollut ongelmia.
-Automaattinen ohjaus esimerkiksi määrättyihin koordinaatteihin. Tämä vaatii paljon kehitystä, koska mm. esteet, karikot ja muut veneet pitää ottaa huomioon.
Linkkejä
Linux-lauta koodi (+ kirjastot) (ei enää käytössä)
Ohjausohjelma ja koodi (linux, Qt)
Komponenttikaavio (vanhentunut)