Alkusanat
Tässä
artikkelissa käydään läpi Fritzing nimistä kytkentäkaavio ja
piirilevyjen suunnitteluohjelmaa. Fritzing on ilmainen ohjelma ja se on
saatavilla Linuxille, Macille ja Windowsille. Ohjelma on todella helppo
käyttää, joten se sopii ihan aloittelijoille.Itse olen ainakin ihastunut
kyseiseen ohjelmaan, koska se on nopea ja yksinkertainen. Ohjelmassa
voi suunnitella ja piirtää myös omia komponentteja ja internetistä
löytyy rutkasti lisää paketteja. Tässä oppaassa ei käydä läpi
asennusvaiheita koska ne löytyy ohjelman omilta sivuiltakin.
Artikkelissa tehdään yksinkertainen Arduinon Shieldi jossa on
SD-korttipaikka sekä muutama vastus.
Ohjelma löytyy osoitteesta: http://fritzing.org/
1. Aloitus
Aloitusnäkymä näyttää kutakuinkin tältä. Ohjelman oikeasta reunasta löytyy näyttönäkymä,
josta voi valita "Koekytkentä-", "Kytkentäkaavio-" tai "Piirilevy-" näkymän.
Valikon alapuolella on "Osaluottelo" jossa näkyy saatavilla
olevat komponentit. Komponentteja voi lisätä projektiin kaikissa
kolmessa näyttötilassa. Hiirellä kiinni halutusta komponentista ja
vedetään se haluamalle paikalle.
Osaluettelon alapuolella on "Ominaisuudet" valikko, joka
aukeaa aina kun jokin komponentti on valittuna ja tässä ikkunassa
voidaan muuttaa komponentin ominaisuuksia.
Tässä on tärkeimmät näin alkuun, mitä tulee tietää.
2. Uuden komponentin lisääminen
Koska
tässä oppaassa tarvitaan SD-Korttipaikkaa ja ohjelmasta ei sitä löydy
itsestään niin sellainen pitää hakea internetistä ja asentaa. Tämä on
helppoa.
1. Mennään osoitteeseen http://code.google.com/p/fritzing/issues/detail?id=875
2. Ladataan sieltä paketti "SD Card Connector.fzpz 6.8 KB" ja tallennetaan se koneelle.
3. Asennetaan paketti Fritzingiin
4.Valitaan paketti joka ladattiin ja ok.
Nyt voimme vetää hiirellä SD-Korttipaikan haluamaamme kohtaan koekytkentälevyä.
3. Arduinon lisääminen
Lisäämme Arduinon joka löytyy "Core Parts" ja
"Microcontroller". Jos käymme tässä vaiheessa katsomassa "Piirilevy
näkymää" (PCB), niin huomaamme että lisäämämme Arduino esiintyy nyt
Arduinon Shieldin tavoin. Eli kun teemme piirilevyn niin se sopii
suoraan Arduinon päälle, aivan kuten shieldit.
4. Johdotus
Johdottaminen
tapahtuu painamalla haluttua pistettä esim. Arduinon pinniä ja vedetään
hiirellä haluttuun paikkaan ja päästetään irti. Johtimien väriä voi
vaihtaa painamalla johtimen päällä hiiren oikeaa ja valitsemalla "Wire
color" ja haluttu väri. Värejä kannattaa käyttää helpottaakseen lukua.
Johtoja voi muotoilla painamalla hiiren vasenta johtimen päällä ja
vetämällä sen eri kohtaan.
Alla kuva johdotus esimerkistä:
Kuten huomaat olen lisännyt jo kolme vastusta
koekytkentälevylle. Kaikkia komponenttejä voi pyörittää haluamaansa
asentoon "Rotate" napista. Kun pitää hiiren vasenta painiketta pohjassa,
näkee keltaisilla täplillä mitkä johtimet ovat kytköksissä toisiinsa.
Viimein
lisätään kolme vastusta lisää ja muutama johdin ja kytkentä onkin
valmis. Yhtä helppoa kuin johdottaminen fyysisellä koekytkentälevyllä.
5. Piirilevyn suunnittelu
Kun
kytkentä on valmis, voidaan suunnitella itse piirilevy. Eli
näyttönäkymästä (PCB). Komponentit ovat nyt hujan hajan, eli
ensimmäisenä lähdetään siirtelemään komponentteja raahaamalla ja
kääntelemällä ne halutuille paikoilleen. (SD-Korttipaikassa taitaa olla
vikaa kun sitä ei voi liikuttaa; no liikutetaan muut oikeille
paikoilleen) Kun komponentit on mielestään oikeilla paikoilla voi
käyttää "Autoroutea" tai valita kumpaan "ylä- vai alapuolelle"
piirilevyä piirretään. Jos tehdään yksipuolinen levy, niin valitaan vain
toinen puolista, jonka jälkeen hiirellä vetämällä, piirretään reittejä.
Tässä artikkelissa ei panosteta niinkään ulkonäköön eikä
suorimpiin reitteihin, vaan ylipäätään kuinka tehdään, joten käytämme
"Autoroutea". Autorouten jälkeen lisäämme piirilevylle vielä
kuparitäytteen ettei tarvitse niin paljon syövyttää ylimäärästä kuparia
pois.
Ylävalikosta "Routing -> Ground Fill -> Copper Fill"
6. Exporttaus
Jokaisessa
näyttönäkymässä voidaan "Exportata" näkymää ulos. Vaihtoehtoja on
monia.. Mutta tässä tärkeintä onkin saada valmis piirilevy paperille.
Kun olemme (PCB) näkymässä painetaan "Export for PCB" alareunassa olevaa
mustaa nuolta ja valitaan haluttu muoto. Tämän jälkeen valitaan kansio
johon ohjelma tallentaa kaikki kuvat tai gerberit mitä tarvitaan
piirilevyn tekoon.
Loppusanat
Tämä
ohjelma on niin helppo käyttää että varmasti kuka vain oppii piirtämään
piirilevyjä. Tässä artikkelissa ei paneiduttu ollenkaan piirikaavioon,
mutta jokainen voi itse harjoitella sen käyttöä. Ohjelma noudattaa
tuttua kaavaa jokaisessa eri näyttötilassa, joten jos yhden sisäistää,
sisäistää kaiken. Kuten moni on varmaan huomannut että Arduinon
kotisivuilla ja monilla muilla sivuilla on käytetty kyseistä ohjelmaa
koekytkentäkuvien luomiseen.
maanantai 25. helmikuuta 2013
Piirilevyn valimistaminen tulostamalla
Alkusanat
Tässä artikkelissa käsitellään piirilevyn valmistamista tulostamalla piirilevy valokuvapaperille, jonka jälkeen se silitetään silitysraudalla piirilevyn pintaan ja syövytetään. Lopuksi lisäämme piirilevylle kalvon joka suojaa hapettumiselta ja antaa ammattimaisen lopputuloksen.
Työvälineet
Työvälineitä on tarvitsee aika paljon, toki kaikki ei aina ole ihan välttämättömiä. Parhaaseen lopputulokseen tarvitsee hieman harjoittelua ja voi olla että kaikki käyttämäni menetelmät eivät ole niitä parhaita.
Käyttämäni työvälineet:
1. Piirilevyn puhdistus
Tämä on hyvin tärkeä vaihe, jotta tulostusväri tarttuu piirilevyn pintaan kunnolla. Elikkä hiotaan piirilevyn pintaa kevyesti jotta piirilevystä tulisi kiiltävä ja varastointirasva lähtisi kunnolla pois. Hionnan jälkeen pestään levy paperilla ja jäänestoaineella. (jäänestoaine on >97% isopropanoolia)
2. Tulostus ja silitys
Seuraavaksi tulostetaan valokuvapaperille piirilevynkuva ja piirtoheitinkalvolle padsit ja viasit. Leikataan tulostettu piirilevynkuva sopivankokoiseksi ja asetetaan se piirilevynpäälle. Laitetaan silitysrauta täysille ja painetaan voimakkaasti silitysrautaa noin 40 sekuntia, jonka jälkeen silitysraudan kulmalla painellaan vielä koko piirilevyn kuva kauttaaltaan.
kokemuksesta on tullut huomattua että sitä silittää yleensä liian vähän aikaa ja kuva ei tartu kauttaaltaan. Kokemus tähän opettaa ja mikäli epäonnituu niin asetoonilla levy puhtaaksi ja uudestaan silittämään.
3. Tulostuspaperin liotus
Silityksen jälkeen annetaan levyn jäähtyä rauhassa ja asetetaan se puhtaaseen lämpimään veteen ja annetaan paperin vettyä muutaman minuutin. Sitten aletaan repimään paperia pois piirilevyltä ja katsotaan tulos. Levyä voi hinkata sormella ja hammasharjalla, jotta koko paperi lähtee pois.
lopputulos voi näyttää kutakuinkin tältä:
muutama pieni virhe tuli, mutta ei haittaa minua
4. Syövytys
Syövytykseen käytin natriumpersulfaattia. Aine tulee lämmittää ensin 45-50 asteesen, jolloin syövytysaika jää alle puoleentuntiin. Piirilevy astiaan ja välillä vähän pensselillä sutia.4
lopuksi kun piirilevy on kunnolla syöpynyt niin putsataan levy asetoonilla, jolloin jää puhdas kuparipinta.
5. Kalvon asennus
Seuraavaksi sulatamme kalvon piirilevyn pintaan. Ostamani kalvo on kolmikerroksista (suojakalvo, itse kalvo ja suojakalvo). Suojakalvot poistetaan yksitellen, eli kaksi teipinpalasta liimataan molemmille puolille kalvoa ja teipeillä irrotetaan ensimmäinen suojakalvo. Sitten kalvo asetetaan piirilevynpäälle, teipillä yhdestä reunasta kiinni ja laminointikoneeseen. Tämän jälestä teipillä poistetaan päälimmäinen suojakalvo ja asetetaan piirtoheitinkalvo piirilevynpäälle. Muutama minuutti auringonvaloa tai uv-lamppujen alle.
6. Tinauspisteiden putsaus
Lopuksi putsaamme tinauspisteet soodalla. Käytin itse ruokasoodaa koska ei muuta kaapista löytynyt. Eli ruokasoodaa lämpimään veteen, piirilevy uimaan ja pensselillä pyyhkimään. Lopputulos näyttää kutakuinkin tältä:
7. Loppusanat
Noin tuli piirilevy valmiiksi. Yksi johdin on poikki, muuten kaikki onnistui. Huomasin johtimen olevan poikki jo ennen syövytystä, mutta sallin itselleni sen virheen. Kohtuu helposti pääsee mukavan näköiseen tulokseen. Tämä oli itsellenikin ensimmäinen kerta kun valmistin piirilevyn kyseisellä tyylillä. Taidan jatkossakin valmistaa näin.
Tässä artikkelissa käsitellään piirilevyn valmistamista tulostamalla piirilevy valokuvapaperille, jonka jälkeen se silitetään silitysraudalla piirilevyn pintaan ja syövytetään. Lopuksi lisäämme piirilevylle kalvon joka suojaa hapettumiselta ja antaa ammattimaisen lopputuloksen.
Työvälineet
Työvälineitä on tarvitsee aika paljon, toki kaikki ei aina ole ihan välttämättömiä. Parhaaseen lopputulokseen tarvitsee hieman harjoittelua ja voi olla että kaikki käyttämäni menetelmät eivät ole niitä parhaita.
Käyttämäni työvälineet:
- Kuparilevyä
Asetoonia ja esim. jäänestoainetta
Laser-tulostin
Valokuvapaperia
Piirtoheitinkalvoa
Laminointikone
Silitysrauta
Hiomapaperia
Soodaa (ruokasoodaa)
Suojahanskat ja lasit
Natriumpersulfaatti
Dry Film Photoresist Sheets for DIY PCB (ebaysta)
1. Piirilevyn puhdistus
Tämä on hyvin tärkeä vaihe, jotta tulostusväri tarttuu piirilevyn pintaan kunnolla. Elikkä hiotaan piirilevyn pintaa kevyesti jotta piirilevystä tulisi kiiltävä ja varastointirasva lähtisi kunnolla pois. Hionnan jälkeen pestään levy paperilla ja jäänestoaineella. (jäänestoaine on >97% isopropanoolia)
2. Tulostus ja silitys
Seuraavaksi tulostetaan valokuvapaperille piirilevynkuva ja piirtoheitinkalvolle padsit ja viasit. Leikataan tulostettu piirilevynkuva sopivankokoiseksi ja asetetaan se piirilevynpäälle. Laitetaan silitysrauta täysille ja painetaan voimakkaasti silitysrautaa noin 40 sekuntia, jonka jälkeen silitysraudan kulmalla painellaan vielä koko piirilevyn kuva kauttaaltaan.
kokemuksesta on tullut huomattua että sitä silittää yleensä liian vähän aikaa ja kuva ei tartu kauttaaltaan. Kokemus tähän opettaa ja mikäli epäonnituu niin asetoonilla levy puhtaaksi ja uudestaan silittämään.
3. Tulostuspaperin liotus
Silityksen jälkeen annetaan levyn jäähtyä rauhassa ja asetetaan se puhtaaseen lämpimään veteen ja annetaan paperin vettyä muutaman minuutin. Sitten aletaan repimään paperia pois piirilevyltä ja katsotaan tulos. Levyä voi hinkata sormella ja hammasharjalla, jotta koko paperi lähtee pois.
lopputulos voi näyttää kutakuinkin tältä:
muutama pieni virhe tuli, mutta ei haittaa minua
4. Syövytys
Syövytykseen käytin natriumpersulfaattia. Aine tulee lämmittää ensin 45-50 asteesen, jolloin syövytysaika jää alle puoleentuntiin. Piirilevy astiaan ja välillä vähän pensselillä sutia.4
lopuksi kun piirilevy on kunnolla syöpynyt niin putsataan levy asetoonilla, jolloin jää puhdas kuparipinta.
5. Kalvon asennus
Seuraavaksi sulatamme kalvon piirilevyn pintaan. Ostamani kalvo on kolmikerroksista (suojakalvo, itse kalvo ja suojakalvo). Suojakalvot poistetaan yksitellen, eli kaksi teipinpalasta liimataan molemmille puolille kalvoa ja teipeillä irrotetaan ensimmäinen suojakalvo. Sitten kalvo asetetaan piirilevynpäälle, teipillä yhdestä reunasta kiinni ja laminointikoneeseen. Tämän jälestä teipillä poistetaan päälimmäinen suojakalvo ja asetetaan piirtoheitinkalvo piirilevynpäälle. Muutama minuutti auringonvaloa tai uv-lamppujen alle.
6. Tinauspisteiden putsaus
Lopuksi putsaamme tinauspisteet soodalla. Käytin itse ruokasoodaa koska ei muuta kaapista löytynyt. Eli ruokasoodaa lämpimään veteen, piirilevy uimaan ja pensselillä pyyhkimään. Lopputulos näyttää kutakuinkin tältä:
7. Loppusanat
Noin tuli piirilevy valmiiksi. Yksi johdin on poikki, muuten kaikki onnistui. Huomasin johtimen olevan poikki jo ennen syövytystä, mutta sallin itselleni sen virheen. Kohtuu helposti pääsee mukavan näköiseen tulokseen. Tämä oli itsellenikin ensimmäinen kerta kun valmistin piirilevyn kyseisellä tyylillä. Taidan jatkossakin valmistaa näin.
perjantai 22. helmikuuta 2013
Arduino WYSIWYG
- Ladataan ohjelmakoodi Arduinoon joka hoitaa kommunikoinnin
- Käynnistetään nauhoitus
- Mikäli jokin tilatieto muuttuu, käyttäjältä kysytään miten edetään (muutetaanko lähtöjen arvoja, käynnistetäänkö ajastin tms...)
- Ohjelma luo automaattisen koodin joka lopulta lähetetään Arduinoon
Mitä tällä tekee??
Mikäli ei osaa minkäänlaista ohjelmointia niin tällä voi toteuttaa jotain pienimuotoista. Monesti omalla kohdalla on jokin yksinkertainen lämpötilan säätö tms. niin tällä ohjelmalla se suoriutuisi alle minuutissa. Toivottavasti motivaatiota ja aikaa vain riittää.
Tässä pieni video ohjelman käyttöliittymästä:
Oma pilvipalvelin
Miltä kuulostaa oma pilvi, jossa jakaa tiedostot, kuvat, musiikin
yms. kaikkien omien laitteiden kesken vaivattomasti? Päätin kokeilla
ownCloud ohjelmaa, joka löytyy open sourcena http://owncloud.org/
sivuilta. Mikäli omistat serverin, tai kotisivutilaa jossa on PHP ja
MySQL, niin kannattaa kokeilla. Ohjelman asentaminen on vaivatonta sekä
ohjelman sivuilta löytyy Clientti ohjelmat, jotka saa asennettua
yleisimmille käyttöjärjestelmille (Linux, Mac, Win, Android).
Tiedostojen siirtäminen pilveen on automaattista ja vaivatonta, client ohjelmalla.
luonnollisesti pilveä voi käyttää suoraan selaimessa, joten se on alustariippumaton. Musiikkia voi kuunnella suoraan streamattuna, joten kappaleita ei tarvitse ladata jokaiselle koneelle ja alustalle. Huippua. Suosittelen!
Tiedostojen siirtäminen pilveen on automaattista ja vaivatonta, client ohjelmalla.
luonnollisesti pilveä voi käyttää suoraan selaimessa, joten se on alustariippumaton. Musiikkia voi kuunnella suoraan streamattuna, joten kappaleita ei tarvitse ladata jokaiselle koneelle ja alustalle. Huippua. Suosittelen!
Arduino, RasPI ja Gambas3
Alkusanat
Tässä artikkelissa opetetaan kuinka tehdään Raspberryyn graafinen ohjelma, jolla luetaan ja lähetetään tietoa Arduinolle. Grafiikkapuolta hoitaa Gambas3 joka muistuttaa hyvin pitkälti Visual Basic 6:sta. Gambasia ei ole saatavilla Windowsille, joten ne joilla ei ole omalla koneella Linuxia, joutuvat ohjelmoimaan suoraan Raspberryssä. Artikkelissa rikotaan vain jäävuoren huippua, mutta toivottavasti tästä on jollekkin hyötyä. Arduino sekä Gambas3 ohjelmat kirjoitan PC:llä sekä ohjelmoin Arduinon. Nämä toki voi suorittaa RPI:lläkin mutta tässä artikkelissa ei käsitellä Arduino Iden asentamista RPI:lle.
Artikkelilin ymmärtämiseksi on hyvä että osaat vähän ohjelmoinnin perusteita. Osaat ajaa ohjelman Arduinolle, sekä osaat käynnistää Raspberryn. Toki kaiken voi suorittaa ilman RPI:tä, mikäli tietokoneellasi on Linuxin käyttöjärjestelmä.
Laitteisto
-Raspberry Pi (minun tapauksessa 256Mb)
-jokin näyttö
-Arduino Uno ja USB kaapeli
-2x Potikka 10K
-Vastus ja ledi
-Hyppyjohtoja
-USB näppis ja hiiri
Aloitus
Gambas3 löytyy Debianin paketeista RPI:stä suoraan, mutta mitä olen intternettiä lukenut, niin siinä on jotain ongelmia kansioiden sijoittelussa tai jotain. No ei siitä sen enempää. Netistä löytyy suoraan käännetty versio jossa on Gambas3 valmiiksi asennettuna, joten käytämme sitä.
http://dl.dropbox.com/u/97096067/2012-07-15-wheezy-gambas3.zip
Asennamme imagen muistikortille ohjeet löytyy Ruuvipenkistä http://www.ruuvipenkki.fi/foorumi/viewtopic.php?f=15&t=682
Nyt meillä pitäisi olla toimiva versio jossa on Gambas3 valmiiksi asennettuna. Ensimmäisellä käynnistyskerralla kirjaudutaan sisään (pi, raspberry) ja käynnistetään x
Arduino
Teemme Arduinoon yksinkertaisen kytkennän, johon lisäämme kaksi potentiometriä, sekä yhden ledin. Näin ollen pystymme fyysisesti toteamaan ohjelman toiminnallisuuden.
Tutkitaan hieman koodia:
if (data==49){
Mistä tämä 49 oikeen muodostuu? Se on KeyAsciita. Eli Gambas lähettää numeron 1 joka muutetaan KeyAscii muotoon ja siitä tulee 49. Kaikki merkit löytyvät osoitteesta: http://www.asciitable.com/
Serial.print("POT1A");
Miksi lopussa iso "A"? No tämä voisi olla vai "x" tai mikä tahansa merkki. Tämä kuitenkin siksi että se helpottaa Gambas koodia. Seriaalista tuleva tieto on kirjoitettu yhteen pötköön, niin Gambas tietää että kun tulee iso "A" niin seuraavaksi tulee anturin arvo.
Serialissa liikkuu tämännäköistä tietoa: POT1A453FPOT2A678FPOT1A443FPOT2A578F....
Serial.print("F");
"F" lähetetään Serialiin niin Gambas tietää milloin anturin arvo on luettu loppuun asti.
käännetään ohjelma ja ajetaan se Arduinoon PC:n avulla.
Gambas
Käynnistämme Gambasin, jonka jälkeen vasemmalta "New project.." avautuu seuraavanlainen näkymä
Valitaan "Qt graphical application" ja painetaan "Next", valitaan kansio johon ohjelma luodaan ja painetaan "Next", lopuksi annetaan ohjelmalle nimi ja vielä "Ok"
Tässä on kuvattu tärkeimpiä kohteita ohjelmasta. Tässä artikkelissa ei opeteta Gambas ohjelmointia muutakuin vaadittavan verran, jotta esimerkin pystyy toteuttamaan.
1. Seriali kirjaston lisääminen
Ensimmäiseksi tarvitsemme kirjaston jolla käsitellään Serialia. Tässä kirjastossa on muutakin, mutta tarvitsemme vain sarjaporttia. Tämä löytyy yläpalkista "Project -> Properties.."
Selataan listaa ja laitetaan ruksi kohtaan "gb.net". Nyt meillä on kirjasto käytössä.
2. Graafinen käyttöliittymä
Formia voi venytellä haluamansa kokoiseksi, samoin yleensä kaikkia komponenttejä. Lisätään Formille kolme Buttonia eli nappia sekä kaksi LCDNumberia. Komponenttien lisääminen tapahtuu ihan hiirellä vetämällä ja pudottamalla Formille. Clikataan Ensimmäistä LCDNumberia ja muutetaan sen arvoa "Digits" ja annetaan arvoksi 4, koska Arduinolta saatava potentiometrin tilatieto on maksimissaan neljä numeroa eli 1023. Tehdään sama toiselle LCDNumberille. Buttoneiden tekstejä voi muuttaa klickaamalla haluttua nappia ja muuttamalla arvoa "Text".
Lopuksi lisäämme Formille "SerialPort1":n.
Nyt käyttöliittymä on valmis.
3. Ohjelmakoodi
Ohjelmakoodi on alla. Sen voi kirjoittaa Gambasiin kun tuplaclikkaa jotain komponenttia formilla, tai painaa formin yläpuolella olevaa valkoista nappia, jossa lukee "Code" kun hiiren cursorin vie sen päälle. Pyyhi valmiiksi tullut koodi ja kopio koodi alapuolelta. En rupea Iden käyttöä käymään tässä läpi tarkemmin. En tiedä onko Gambasista kirjoitettu mitään suomenkielistä opasta, mutta Visual Basic 6 löytyy ainakin ja niillä pääsee aika pitkälti alkuun. Muutamia eroavaisuuksia toki on mutta niistä lukee ohjelman kotisivuilla.
Olen kommentoinut ohjelmakoodia parhaani mukaan.
4. Ohjelman kääntäminen
Ohjelmaa voi ajaa yläpalkissa olevalla vihreällä nuolella. Seuraavaksi käännämme ohjelman yhdeksi ajettavaksi tiedostoksi. Tämän jälkeen ohjelman voi käynnistää suoraan päättestä.
Ylävalikosta "Project -> Make -> Executable..." Nimi ja ok. Nyt meillä on tiedosto jota voi ajaa ettei Gambasia tarvitse käynnistää.
5. Kopio
Kopioidaan kansio, jonka alussa loimme uuden Gambas projektin luomisen yhteydessä ja liitämme kansion Raspberrylle. Tämän voi suorittaa USB muistitikulla tai vaihtoehtoisesti siirtämällä kansio suoraan muistikortille, omaan kotikansioon. Kytketään Arduino USB-kaapelilla Raspberryyn. Ohjelman ajaminen tapahtuu kohdekansiossa päätteellä
tai tiedostojenhallinnassa tuplaclikkaamalla Ohjelmannimi.gambas tiedostoa.
Loppusanat
Mitä tällä voi tehdä? Mahdollisuudet ovat tietysti rajattomat. Gambas tuntuu olevan vielä aika vieras monelle, joten halusin luoda arttikkelin jossa hiukan raapaistaan pintaa ja saisi harrastelijat huomaamaan että graafisen käyttöliittymän tekeminen ei vaadi ihmeitä ja kymmenien rivien kirjoittamista, että saa muutaman napin näytölle. Joten raja on nyt laskettu niin alas kuin mahdollista -> nyt koodaamaan!
Tässä artikkelissa opetetaan kuinka tehdään Raspberryyn graafinen ohjelma, jolla luetaan ja lähetetään tietoa Arduinolle. Grafiikkapuolta hoitaa Gambas3 joka muistuttaa hyvin pitkälti Visual Basic 6:sta. Gambasia ei ole saatavilla Windowsille, joten ne joilla ei ole omalla koneella Linuxia, joutuvat ohjelmoimaan suoraan Raspberryssä. Artikkelissa rikotaan vain jäävuoren huippua, mutta toivottavasti tästä on jollekkin hyötyä. Arduino sekä Gambas3 ohjelmat kirjoitan PC:llä sekä ohjelmoin Arduinon. Nämä toki voi suorittaa RPI:lläkin mutta tässä artikkelissa ei käsitellä Arduino Iden asentamista RPI:lle.
Artikkelilin ymmärtämiseksi on hyvä että osaat vähän ohjelmoinnin perusteita. Osaat ajaa ohjelman Arduinolle, sekä osaat käynnistää Raspberryn. Toki kaiken voi suorittaa ilman RPI:tä, mikäli tietokoneellasi on Linuxin käyttöjärjestelmä.
Laitteisto
-Raspberry Pi (minun tapauksessa 256Mb)
-jokin näyttö
-Arduino Uno ja USB kaapeli
-2x Potikka 10K
-Vastus ja ledi
-Hyppyjohtoja
-USB näppis ja hiiri
Aloitus
Gambas3 löytyy Debianin paketeista RPI:stä suoraan, mutta mitä olen intternettiä lukenut, niin siinä on jotain ongelmia kansioiden sijoittelussa tai jotain. No ei siitä sen enempää. Netistä löytyy suoraan käännetty versio jossa on Gambas3 valmiiksi asennettuna, joten käytämme sitä.
http://dl.dropbox.com/u/97096067/2012-07-15-wheezy-gambas3.zip
Asennamme imagen muistikortille ohjeet löytyy Ruuvipenkistä http://www.ruuvipenkki.fi/foorumi/viewtopic.php?f=15&t=682
Nyt meillä pitäisi olla toimiva versio jossa on Gambas3 valmiiksi asennettuna. Ensimmäisellä käynnistyskerralla kirjaudutaan sisään (pi, raspberry) ja käynnistetään x
startx
Arduino
Teemme Arduinoon yksinkertaisen kytkennän, johon lisäämme kaksi potentiometriä, sekä yhden ledin. Näin ollen pystymme fyysisesti toteamaan ohjelman toiminnallisuuden.
- Koodi:
void setup()
{
Serial.begin(9600); // serialin asetukset
pinMode(2, OUTPUT); // Ledin pinni outputiks
digitalWrite(2, LOW); // Ledi alas
}
void loop()
{
int data; // data muuttuja serialille
if (Serial.available()) { // jos seriali on saatavilla
data=Serial.read(); // data muuttujaan serialilta tieto
if (data==49){ // jos saapuva data on 1 keyascii 49
digitalWrite(2, HIGH); // Ledi päälle
}
if (data==48){ // jos saapuva data on 0 keyascii 48
digitalWrite(2, LOW); // Ledi pois päältä
}
data=0; // kun seriali on lukenut data=0
}
Serial.print("POT1A"); // lähetetään serialiin "POT1A"
Serial.print(analogRead(0)); // lähetetään serialiin A0:n arvo
Serial.print("F"); // lähetetään serialiin lopetus "F"
Serial.print("POT2A"); // lähetetään serialiin "POT2A"
Serial.print(analogRead(1)); // lähetetään serialiin A1:n arvo
Serial.print("F"); // lähetetään serialiin lopetus "F"
delay(100); // viive jotta seriali pysyy perässä
}
Tutkitaan hieman koodia:
if (data==49){
Mistä tämä 49 oikeen muodostuu? Se on KeyAsciita. Eli Gambas lähettää numeron 1 joka muutetaan KeyAscii muotoon ja siitä tulee 49. Kaikki merkit löytyvät osoitteesta: http://www.asciitable.com/
Serial.print("POT1A");
Miksi lopussa iso "A"? No tämä voisi olla vai "x" tai mikä tahansa merkki. Tämä kuitenkin siksi että se helpottaa Gambas koodia. Seriaalista tuleva tieto on kirjoitettu yhteen pötköön, niin Gambas tietää että kun tulee iso "A" niin seuraavaksi tulee anturin arvo.
Serialissa liikkuu tämännäköistä tietoa: POT1A453FPOT2A678FPOT1A443FPOT2A578F....
Serial.print("F");
"F" lähetetään Serialiin niin Gambas tietää milloin anturin arvo on luettu loppuun asti.
käännetään ohjelma ja ajetaan se Arduinoon PC:n avulla.
Gambas
Käynnistämme Gambasin, jonka jälkeen vasemmalta "New project.." avautuu seuraavanlainen näkymä
Valitaan "Qt graphical application" ja painetaan "Next", valitaan kansio johon ohjelma luodaan ja painetaan "Next", lopuksi annetaan ohjelmalle nimi ja vielä "Ok"
Tässä on kuvattu tärkeimpiä kohteita ohjelmasta. Tässä artikkelissa ei opeteta Gambas ohjelmointia muutakuin vaadittavan verran, jotta esimerkin pystyy toteuttamaan.
1. Seriali kirjaston lisääminen
Ensimmäiseksi tarvitsemme kirjaston jolla käsitellään Serialia. Tässä kirjastossa on muutakin, mutta tarvitsemme vain sarjaporttia. Tämä löytyy yläpalkista "Project -> Properties.."
Selataan listaa ja laitetaan ruksi kohtaan "gb.net". Nyt meillä on kirjasto käytössä.
2. Graafinen käyttöliittymä
Formia voi venytellä haluamansa kokoiseksi, samoin yleensä kaikkia komponenttejä. Lisätään Formille kolme Buttonia eli nappia sekä kaksi LCDNumberia. Komponenttien lisääminen tapahtuu ihan hiirellä vetämällä ja pudottamalla Formille. Clikataan Ensimmäistä LCDNumberia ja muutetaan sen arvoa "Digits" ja annetaan arvoksi 4, koska Arduinolta saatava potentiometrin tilatieto on maksimissaan neljä numeroa eli 1023. Tehdään sama toiselle LCDNumberille. Buttoneiden tekstejä voi muuttaa klickaamalla haluttua nappia ja muuttamalla arvoa "Text".
Lopuksi lisäämme Formille "SerialPort1":n.
Nyt käyttöliittymä on valmis.
3. Ohjelmakoodi
Ohjelmakoodi on alla. Sen voi kirjoittaa Gambasiin kun tuplaclikkaa jotain komponenttia formilla, tai painaa formin yläpuolella olevaa valkoista nappia, jossa lukee "Code" kun hiiren cursorin vie sen päälle. Pyyhi valmiiksi tullut koodi ja kopio koodi alapuolelta. En rupea Iden käyttöä käymään tässä läpi tarkemmin. En tiedä onko Gambasista kirjoitettu mitään suomenkielistä opasta, mutta Visual Basic 6 löytyy ainakin ja niillä pääsee aika pitkälti alkuun. Muutamia eroavaisuuksia toki on mutta niistä lukee ohjelman kotisivuilla.
- Koodi:
' Gambas class file
Public Luettu As String 'Muuttuja
Public Sub SerialPort1_Read() 'Kun Serialportti lukee se suorittaa kyseisen function
Dim Kirjain As String 'Luettu kirjain Serialista
Dim Katkottu As New String[] 'Taulu johon kirjaimet luetaan, tauluja on niin monta kuin Arduino lähettää
Read #SerialPort1, Kirjain, 1 'Luetaan kunnes ei ole mitään luettavaa
If Kirjain <> "F" Then 'niin kauan kunnes tulee F joka tarkoitti että tulee seuraavan anturin tieto
Luettu &= Kirjain 'lisätään Luettu muuttujaan Kirjain muuttujan arvo
Else
Katkottu = Split(Luettu, "A") 'katkotaan Luettu A:n kohdalta
If Katkottu[0] = "POT1" Then ' jos kyseessä on POT1
LCDNumber1.Value = Val(Katkottu[1]) 'Asetetaan LCDNumber1 valueksi arvo joka saatiin arduinolta
Endif
If Katkottu[0] = "POT2" Then
LCDNumber2.Value = Val(Katkottu[1])
Endif
Luettu = "" 'Tyhjennetään Luettu
Endif
End
Public Sub Yhdista()
'tämä functio hoitaa Arduinon yhdistämisen
'
If SerialPort1.Status = Net.Active Then 'Mikäli yhteys on jo muodostettu
Close SerialPort1 'suljetaan yhteys
Else 'muuten hoidetaan yhteys kuntoon
SerialPort1.portname = "/dev/ttyACM0" ' osoite jossa Arduino sijaitsee
SerialPort1.Speed = 9600
SerialPort1.parity = SerialPort.none
SerialPort1.databits = SerialPort.Bits8
SerialPort1.StopBits = SerialPort.Bits1
SerialPort1.FlowControl = SerialPort.none
Try SerialPort1.Open() 'yritetään avata yhteys
If Error Then Message.Error("Ongelmia yhdistäessä laitteistoon") 'jos ei onnistu annetaan virhe
Endif
End
Public Sub Arduino(viesti As String)
'Tällä functiolla lähetetään tietoa Arduinolle
Try Print #SerialPort1, viesti 'lähetetään tietoa serialille
If Error Then 'jos virhe
Message.Error("Viestin lähettäminen ei onnistunut") 'tulostetaan virhe
Endif
End
Public Sub Button1_Click()
'kun Button1 clicataan, niin tämä koodi suoritetaan
Arduino("1") 'kutsutaan functiota Arduino ja lähetetään viesti 1
'joka Arduinonkoodissa tarkoittaa että sytytetään led
End
Public Sub Button2_Click()
'kun Button2 clicataan, niin tämä koodi suoritetaan
Arduino("0") 'kutsutaan functiota Arduino ja lähetetään viesti 0
'joka Arduinonkoodissa tarkoittaa että sammutetaan led
End
Public Sub Button3_Click()
Yhdista 'suljetaan yhteys
Quit 'suljetaan ohjelma
End
Public Sub Form_Open()
'tämä koodi suoritetaan kun formi käynnistyy
Sleep 1 'odotetaan sekuntti
Yhdista 'yhdistetään seriali
End
Public Sub Form_Close()
'tämä koodi suoritetaan kun ohjelma suljetaan ruksista
Yhdista 'suljetaan jos yhteys on päällä
End
Olen kommentoinut ohjelmakoodia parhaani mukaan.
4. Ohjelman kääntäminen
Ohjelmaa voi ajaa yläpalkissa olevalla vihreällä nuolella. Seuraavaksi käännämme ohjelman yhdeksi ajettavaksi tiedostoksi. Tämän jälkeen ohjelman voi käynnistää suoraan päättestä.
Ylävalikosta "Project -> Make -> Executable..." Nimi ja ok. Nyt meillä on tiedosto jota voi ajaa ettei Gambasia tarvitse käynnistää.
5. Kopio
Kopioidaan kansio, jonka alussa loimme uuden Gambas projektin luomisen yhteydessä ja liitämme kansion Raspberrylle. Tämän voi suorittaa USB muistitikulla tai vaihtoehtoisesti siirtämällä kansio suoraan muistikortille, omaan kotikansioon. Kytketään Arduino USB-kaapelilla Raspberryyn. Ohjelman ajaminen tapahtuu kohdekansiossa päätteellä
tai tiedostojenhallinnassa tuplaclikkaamalla Ohjelmannimi.gambas tiedostoa.
Loppusanat
Mitä tällä voi tehdä? Mahdollisuudet ovat tietysti rajattomat. Gambas tuntuu olevan vielä aika vieras monelle, joten halusin luoda arttikkelin jossa hiukan raapaistaan pintaa ja saisi harrastelijat huomaamaan että graafisen käyttöliittymän tekeminen ei vaadi ihmeitä ja kymmenien rivien kirjoittamista, että saa muutaman napin näytölle. Joten raja on nyt laskettu niin alas kuin mahdollista -> nyt koodaamaan!
Tilaa:
Blogitekstit (Atom)