Tee se itse Näin teet laitteen, jolla voit mitata veresi

Tee se itse
TEKSTI, KOODI JA KUVAT: OLLI-PEKKA HEINISUO
Sosiaalinen
alkometri
Näin teet laitteen, jolla voit mitata veresi alkoholipitoisuuden
ja jakaa sen sosiaaliseen mediaan – sijaintitietojen kera!
ksinkertaisen alkometrin rakentaminen Arduino-mikrokontrollerin avulla on yllättävän
helppoa ja mielenkiintoista. Toteuttamiseen
tarvitaan vain sensori,
vastus ja ehkäpä lcd-näyttö. Pienellä lisävaivalla laitteesta saa tehtyä kuitenkin paljon
monipuolisemman, joten pakettiin on mukava
lisätä myös sekä matkapuhelinyhteys että ja
satelliittipaikannus.
Näiden ominaisuuksien avulla voi tehdä
kaikenlaista kivaa, kuten laittaa vehje päivittämään veren alkoholipitoisuus ja sijaintitiedot
Y
automaattisesti Twitteriin ja Facebookiin. Voit
siis marssia laite mukanasi missä tahansa
ja päivittää sen avulla sosiaaliseen mediaan,
mikä on humalasi aste (tai ei ole).
Järjestelmän osat
Fyysinen mittalaite koostuu rakennetaan
Arduino-mikrokontrollerin ympärille. Sen lisäksi tarvitaan kaasusensori, näyttömoduuli,
gsm/gprs/gps-moduuli sekä akku, kaapelit ja
virtakytkin.
Arduino on ikään kuin laitteen aivot, ja
sillä ohjataan sekä luetaan muita osia. Kaasusensorista luetaan hengitysilman alkoholipitoisuus, gsm/gprs/gps-moduulin avulla
1. SparkFunin MQ-3 sensorille kytkemistä helpottava
levy, itse sensori osoittaa pöytälevyä kohti.
44 MikroPC 9/2013
luodaan yhteys internetiin ja haetaan laitteen sijainti koordinaatteina. Näyttömoduuli
helpottaa käyttämistä, koska kunkin vaiheen
näkee näytöltä ja moduulissa on muutamia
painikkeita laitteen ohjaamista varten.
Koodiosuuden voi jakaa kahteen eri osaan:
itse alkometrin eli Arduinon koodi ja toinen
osa on pilvipalveluun tallennettava rajapinnan
koodi, jonka kautta Arduino lähettää tiedot
sosiaalisen median palveluihin.
Järjestelmän kolmas osa on myös softaa,
eli sosiaalisen median palveluihin luotavat
sovellukset, joilla voi esittää esimerkiksi Facebookissa ja Twitterissä rajapinnan lähettämät
tiedot käyttäjän tilasta.
2. Gsm/gprs/gps-moduuli kiinni Arduinossa,
vasemmalla jumpperit ja etualalla sim-kortti.
W W W . M I K R O P C . N E T
Järjestelmän rakenne
laitteisto
Kaasusensori
ohjelmisto
verkkopalvelu
Arduino
Sovellus
Heroku
HTTP POST
AT-komennot
Gsm/grps/
gps-moduuli
JSON-data
Rajapinta
Tietokanta
Sovellus
Sovellus
Facebook
Twitter
Näyttömoduuli
Sosiaalinen alkometrijärjestelmä koostuu laitteistosta, ohjelmistosta ja verkkopalveluista.
Laitteen toiminta
Kun käyttäjä kytkee Arduinoon virran, suoritetaan aluksi alustustoimenpiteitä laitteen
rekisteröimiseksi gms-verkkoon. Tällöin näytöllä lukee ”Initializing…”.
Tämän jälkeen laite kysyy, käytetäänkö
gps:ää vai ei, ja mihin sosiaalisen median
palveluihin tiedot lähetetään. Näytöllä näkyvät seuraavanlaiset vaihtoehdot (vuorotellen):
Use GPS: ON/OFF
Mode: All/Facebook/Twitter/None
Asetuksia voi muuttaa näyttömoduulin
Left- ja Right-painikkeilla sekä hyväksyä kaikki Select-painikkeella.
Näytölle ilmestyy teksti ”Ready to start!
Press select.” Kun Selectiä painetaan uudestaan, laite yrittää hakea koordinaatit gps:llä,
jos käyttäjä aikaisemmin asetti gps:n päälle.
Sisätiloissa gps ei välttämättä löydä satelliitteja
ollenkaan ja ulkonakin niiden löytyminen voi
3. LiPo-akku kytkettynä dc-plugiin virtakytkimen
läpi.
W W W . M I K R O P C . N E T
viedä useita minuutteja. Jos ja satelliittejä ei
löydy viiden minuutin sisällä, gps poistetaan
käytöstä.
Seuraavaksi näytölle ilmestyy teksti ”Press
select to start measuring.”. Kun Selectiä painaa jälleen uudestaan, alkaa sekunnin kuluttua mittaus, jonka aikana tulee puhaltaa
sensoriin. Mittaus kestää myös noin sekunnin
verran. Arduino lukee tällöin jonkin verran
arvoja sensorilta ja laskee niistä keskiarvon ja
muuntaa raakadatan promillearvoksi.
Kun mittaus on valmis, Arduino näyttää
veren alkoholipitoisuuden arvon ja lähettää
lukemat rajapinnalle matkapuhelinverkossa
gprs:llä. Lähetyksessä saattaa kestää hetki,
jonka jälkeen Arduino palaa takaisin alkutilaan, jossa valitaan asetukset ja sama voidaan
toistaa hetken kuluttua uudelleen.
Saapunut pyyntö käsitellään rajapinnassa,
joka päivittää sitten käyttäjän tilan haluttui-
hin palveluihin.
4. MQ-3-kaasusensori. Huomaa vastus sinisen ja
mustan johdon välissä. Sensori on kytketty näyttömoduulin pinneihin (vastaavat Arduinon pinnejä).
5. Peukalon vieressä ohjausnapit. Yläreunassa
hyppykaapelit.
Laitteiston kokoaminen
Rakentaminen kannattaa aloittaa sensorista. Kaasusensori eli MQ-3 vaatii vähintään
24 tunnin alkupolton, jotta se antaa yhtenäisempiä lukemia vakaammin. Poltto tapahtuu
kytkemällä sensori Arduinoon täysin samalla
tavalla kuin sieltä lukisi dataa ja jättämällä se
sitten ”polttamaan” itseään muutamaksi päiväksi. Arduinon on siis oltava päällä putkeen
muutama päivä niin, että sensori on kytketty
siihen. Huomaa myös, että sensorin kuuluu
lämmetä: jos se ei lämpene, se on todennäköisesti kytketty väärin.
Kytkemisen helpottamiseksi käytetään
tässä Sparkfunin kyseiselle sensorille tehtyä
kytkentälevyä.
Liittimet H1 ja A1 kytketään molemmat
Arduinon 5 voltin liitäntään. GND kytketään
MikroPC 9/2013 45
Tee se itse
nimensä mukaisesti Arduinon samannimiseen
liitäntään eli ”maahan”. B1 kytketään johonkin
analogipinniin, esimerkiksi A1:een.
GND:n ja B1:n välille kytketään 10 kOhm:n
vastus. Vastuksen kokoa säätelemällä analogipinnistä luettava arvoväli vaihtelee. Kokeilujen pohjalta 10 kOhm:n vastus tuottaa
arvoja suunnilleen väliltä 100–1 000, joista
sitten lasketaan veren alkoholipitoisuus. Yksinkertaisesti sanottuna: mitä suurempi luku,
sitä enemmän alkoholia on veressä.
Ennen kuin siirryt seuraavaan vaiheeseen,
suorita sensorin alkupoltto kuten aikaisemmin
ohjeistettiin.
Seuraavaksi Arduinoon kytketään gps/
gprs/gsm-moduuli.
Moduuliin asetetaan mikä tahansa normaalikokoinen sim-kortti.
Gsm/gps-kytkin laitetaan keskiasentoon,
sillä tila valitaan koodissa ohjelmallisesti.
Ohjelmointia ja kommunikointia varten
toisella laidalla sijaitsevat kytkimet laitetaan
myöhemmin oikeisiin asentoihinsa. Poista
näiden kytkimien vieressä olevat kolme siltauspalaa eli jumpperia.
Viimeiseksi lisätään näyttömoduuli. Tarvitset kolme naaras-naaras-hyppylankaa (tai
kolvin ja piuhaa), joiden toinen pää kytketään
gps/gprs/gsm-moduulin pinneihin, joista poistettiin kolme jumpperia. Toinen pää kytketään
lcd-moduulin pinneihin. Tällä tavalla vältytään käyttämästä samoja pinnejä molempien
korttien ohjaukseen.
Liitä näyttömoduuli pinon päällimmäiseksi.
Kytke johdot seuraavasti (toinen pää alemmasta moduulista poistettujen jumpperien
tilalle ulkoreunaa lähempänä oleviin pinneihin): D2_J10, D11_J11, D12_J12
Paketti on nyt akkua vaille valmis. Akku on
todennäköisesti helpoin kytkeä dc-plugin ja
virtakytkimen avulla Arduinon dc-liittimeen.
Akun osalta kannattaa varmistaa, että se antaa ulos vähintään 7 volttia mutta korkeintaan
12 volttia. Esimerkiksi kaksikennoisen LiPon
jännite on 7,4 V.
Ohjelmiston asentaminen
Järjestelmä vaatii melko paljon koodia toimiakseen, joten se on ylläpitämisen ja muutosten tekemisen helpottamiseksi jaossa
GitHub-nimisessä verkkopalvelussa. GitHub
on rakennettu Git-nimisen hajautetun versionhallintaohjelmiston ympärille, jonka on alun
perin kehittänyt linuxin isä Linus Torvalds.
Avoimen koodin kehittämiseen voi osallistua
GitHubissa kuka tahansa.
Mitä hölmömpi idea,
sitä hauskempaa sen
toteuttaminen on.
Koodin voi kloonata omalle koneelle tekemällä tilin GitHubiin, asentamalla Gitin ja
lataamalla koodin Git GUI:lla tai Git Bashilla.
Git GUI on windowsissa ja OS X:ssä toimiva
graafinen sovellus Gitin hallintaan. Git Bash
on vastaava tekstipohjainen sovellus.
Gitin voi ladata osoitteesta git-scm.com/
downloads. Lisää ohjeita aiheesta löydät GitHubista: help.github.com/articles/set-up-git.
Arduino-koodin saat ladattua valitsemalla
Git GUI:ssa Repository > Clone. Kirjoita sitten Source location -kenttään https://github.
com/skvark/ArduBreathalyzer.git, Target directory -kenttään koodille sopiva tallennuspaikka koneeltasi ja klikkaa lopuksi Clone.
Rajapinnan saat osoitteesta https://github.com/skvark/ArduBreathalyzerAPI.git.
Git Bashissa kopioinnin voi tehdä komennolla git clone [koodin https-osoite].
Mikäli tekstikomentojen suorittaminen
tuntuu hankalalta, voit navigoida selaimella suoraan osoitteisiin https://github.com/
skvark/ArduBreathalyzer jossa on painike
Download ZIP. Ladatun paketin voi sitten purkaa haluamaansa kohteeseen. Tämä tapa ei
kuitenkaan ole luontainen versionhallinnalle,
eikä tapaa voi käyttää, jos laittaa rajapinnan
Herokuun, sillä tällöin versionhallinta puuttuu
kansiosta kokonaan.
Nyt kun olet saanut koodin koneellesi, täytyy molemmat osat laittaa kuntoon käyttöä
varten. Rajapinta on pystytettävä ensimmäiseksi, koska Arduinon koodiin on tehtävä muutama muutos rajapinnan antamien arvojen
mukaan.
Rajapinnan rakenteesta ja toiminnasta on
tarkempia tietoja sivulla 49.
Rajapinta Herokuun
Seuraavilla ohjeilla laitetaan ArduBreathalyzerAPI-rajapinnan pyörimään Herokuun.
Heroku on web-sovellusten pyörittämiseen
tarkoitettu helppokäyttöinen ja ilmainen pilvipalvelu (ilmainen, jos ei käytä lisäominaisuuksia, kuten tehokkaampia ”dynoja”).
Toinen tapa olisi pystyttää omalle palvelimelle samanlainen ympäristö, mutta se on
melko työlästä ja vaatii oman palvelimen tai
pääsyn jollekin palvelimelle, jossa on tarvittavat oikeudet ohjelmistojen asentamiseen.
(Rajapinnan kehitys ei kuitenkaan ole tapahtunut Herokussa vaan omalla palvelimellani,
koska Heroku on tarkoitettu vain sovellusten
julkaisualustaksi.)
Mene osoitteeseen https://id.heroku.com/
signup/www-home-top ja luo tili. Lataa sitten
Heroku Toolbelt osoitteesta toolbelt.heroku.
com.
Toolbeltin mukana asentuu windowsille
Git Bash, muilla käyttöjärjestelmillä kannattanee käyttää järjestelmän omaa terminaalisovellusta.
1. Avaa joko Git Bash tai terminaali/komentorivi ja kirjoita siihen heroku login.
2. Syötä Herokun kirjautumistietosi.
6. Git GUI on yksinkertainen käyttöliittymä Gitin hallintaan.
7. Git Bashin näkymä, kun sovellus asennetaan tai päivitetään Herokuun.
Tässä tapauksessa Herokuun on menossa jo versio 21, jolloin ruudulle
tulostuu vähemmän tietoa, koska kaikkia riippuvuuksia ei tarvitse asentaa
uudestaan.
46 MikroPC 9/2013
W W W . M I K R O P C . N E T
3. Heroku kysyy luodaanko ssh-avain, jollei
sellaista jo löydy.
a. Luo uusi eli vastaa Y, jos sitä ei ole.
b. Jos sinulla on jo olemassa ssh-avain,
tämä vaihe hypätään yli automaattisesti.
4. Avaa kansio, jonne olet kloonannut GitHubista ArduBreathalyzerAPI:n: cd [polku
kansioon, jossa koodi sijaitsee].
5. Luo Herokuun sovellus komennolla heroku
create.
6. Luo tietokanta komennolla heroku
addons:add heroku-postgresqlev. Tietokannan nimi saattaa vaihdella, joten avaa
tässä välissä haluamaasi tekstieditoriin
kansiossa oleva tiedosto dbwrapper.py
ja kopioi Git Bashiin (nimen näkee myös
Herokun web-käyttöliittymästä) tulostunut nimi tiedoston riville 8: url = urlparse.
urlparse(os.environ[”NIMI_TÄHÄN”]).
7. Suorita komennot git add dbwrapper.py ja
git commit -m ’tietokannan nimi muutettu’
8. Sovelluksen ajaminen on nyt mahdollista,
joten suorita: git push heroku master.
9. Jos sovellus käynnistyi onnistuneesti, näet
sen aloitussivun ruudulle tulostuneessa
osoitteessa vierailemalla (älä kuitenkaan
täytä etusivun lomaketta vielä, ohjeet siihen tulevat seuraavaksi). Tarvitset rajapinnan osoitetta seuraavissa vaiheissa. Osoite
on täysin satunnaisesti nimetty.
Voit tämän jälkeen vielä vierailla Herokussa ja kirjautua tilillesi, josta näet myös
sovelluksesi tilan, nimen ja voit muuttaa sen
asetuksia.
Alkometri on tarkoitettu
vain hupikäyttöön. Sen
avulla ei voi missään
tapauksessa esimerkiksi
päätellä olevansa
ajokunnossa.
Sovellukset someen
Ennen kuin pääset syöttämään tietoja uunituoreeseen rajapintaan, täytyy luoda sovellukset sosiaalisen median palveluihin. Ilman
niitä promillemäärääsi ja sijaintiasi ei saa lähetettyä automaattisesti palveluihin.
Facebookiin voi luoda sovelluksen osoitteessa: developers.facebook.com/apps. Twitter- ja Foursquare-ohjeet ovat sivulla 49.
1. Create New App ja täytä sovelluksen nimi
sekä kategoria.
2. Lähetä lomake.
3. App ID ja App Secret ovat rajapinnassa
käytettävät arvot, ota nämä talteen.
4. Syötä sivusto Facebook Login -toiminnolla kohtaan: Heroku_sovelluksesi_osoite/
success.
5. Oletuksena on käytössä eristystila eli sovellus ei näy kuin kehittäjille, tämän voi
jättää päälle ellei halua julkaista sovellusta myös muiden ihmisten käyttöön (oleellista, jos joku muu kuin sinä haluaa käyttää
sosiaalista alkometriä).
6. Mene kohtaan oikeudet ja lisää User & Friends Permissions -kohtaan publish_actions.
Nyt kun sinulla on olemassa oma sovellus Facebookissa, voit mennä aikaisemmin
käynnistetyn rajapinnan etusivulle ja syöttää
Facebookin App ID:n ja App Secretin lomakkeeseen.
Jos haluat käyttöön myös Twitterin ja
Foursquaren, luo sovellus myös niihin ja kopioi
tarvittavat avaimet lomakkeeseen ennen kuin
lähetät sen. Ole tarkkana, sillä virheellisiä
avaimia ei syötetä tietokantaan eikä lomaketta
näytetä enää sen jälkeen, jos yksikin sovellus
on lisätty sinne onnistuneesti.
Tämän jälkeen voit lisätä käyttäjän rajapintaan. Kirjoita osoiteriville [sovelluksesi
osoite]/add_user ja täytä tarvittavat kentät,
jonka jälkeen lomakkeen lähettämällä sinut
ohjataan palveluihin yksi kerrallaan sallimaan
se, että sovellus voi päivittää tilasi puolestasi.
Kun kaikki on sallittu onnistuneesti, näytetään salainen avain, joka on lisättävä seuraavaksi muutaman muun tiedon kanssa Arduinon koodiin.
Koodi Arduinoon
Avaa Arduinon koodi (ArduBreathalyzer.ino)
Arduinon kehitysympäristöön sieltä, mihin sen
aikaisemmin GitHubista siirsit. Kehitysympäristön saa osoitteesta arduino.cc/en/Main/
Software.
Täydennä seuraavat koodin alussa olevat
muuttujien arvot lainausmerkkien väliin:
String user = String(”rajapinnan_käyttäjänimi”);
String token = String(”salainen_avain”);
String url = String(”http://sovelluksen_nimi.herokuapp.com”);
8. Rajapinnan etusivun lomakkeella tallennetaan ensin some-sovellusten
avaimet tietokantaan, lisätään käyttäjät ja lopuksi rajapinta näyttää käyttäjän nimen, salaisen avaimen ja palvelut, joihin käyttäjä voi lähettää tietoa
Arduinolla.
9. Herokussa voi linkittää sovelluksen esimerkiksi GitHubiin ja lisätä sovellukselle oman www-osoitteen.
W W W . M I K R O P C . N E T
MikroPC 9/2013 47
Tee se itse
String apn = String(”internet”);
APN-arvo riippuu operaattorista, jolta olet
ostanut liittymän. Sen voi etsiä esimerkiksi
täältä: wiki.androidsuomi.fi/Suomalaisten_
operaattoreiden_APN_asetukset
Suurin osa operaattoreista käyttää oletuksena arvoa ”internet”.
Näiden lisäksi saatat joutua muuttamaan
funktiota, jolla promillemäärä lasketaan verestä. Se löytyy koodista nimellä double calculate_bac(int raw_value).
Koodi on nyt lataamista varten valmis, eli
kytke Arduino usb-kaapelilla tietokoneeseen
ja paina Upload-painiketta kehitysympäristössä, jolloin koodi latautuu Arduinoon. Gsm/
gprs/gps-moduulin kaksi kytkintä pitää olla
koodin latauksen jälkeen asennossa Arduino ja Comm, jotta Arduino juttelee suoraan
moduulille.
Tämän jälkeen kaikki on käyttövalmista,
mutta suosittelen kalibroimaan sensorin ennen käyttämistä.
Testaamaan!
Ennen ensimmäistä käyttökertaa alkoholisensori pitää kalibroida. Kalibroiminen tapahtuu
juomalla alkoholiannoksia ja puhaltamalla
sensoriin noin kymmenen minuuttia juoman
nauttimisen jälkeen.
Varsinaisen koodin lisäksi olen laatinut
testikoodin, jolla voi testata sensorin antamia
arvoja. Testikoodi löytyy erillisenä tiedosto-
na nimellä sensortest.ino ja se tulee saman
paketin mukana GitHubista kuin varsinainen
alkometrin koodikin.
Testikoodi lukee sensorin arvoja koko ajan
kun Arduino on päällä ja sensori kytkettynä
testikoodissa määriteltyyn analogipinniin.
Tulokset näkee Arduinon kehitysympäristön
serial monitorista, kun Arduino on kytkettynä
tietokoneeseen ja testikoodi on ladattu siihen.
Raakadatasta voi sitten esimerkiksi taulukoiden (en.wikipedia.org/wiki/Blood_alcohol_content) perusteella päätellä jonkinlaisen muunnoskaavan, jotta luvuista saa
laskettua promillet. Tätä tarkempaa tiedettä
on turha harjoittaa, sillä sensorin antamiin
arvoihin vaikuttaa hyvin paljon ilmankosteus ja lämpötila, koska kyseessä on halpa
ja epätarkka sensori. Lukemat ovat siis vain
suuntaa antavia.
Tarkennuksia ja
parannusehdotuksia
Laitteen toiminta perustuu pitkälti gsm/gprs/
gps-moduulin vastaanottamiin at-komentoihin, joita myös tavalliset kännykät käyttävät.
Eri laitteet tukevat erilaisia komentoja. Gps
esimerkiksi kytketään päälle komennolla
AT+CGPSPWR=1. Arduinolla näitä komentoja
lähetetään shieldille Serial-kirjaston avulla.
Tietoturvan kannalta on oleellista ymmärtää, että käyttäjien tunnistaminen hoidetaan
rajapinnassa käyttäjäkohtaisella merkkisar-
jalla. Tällä pyritään estämään se, ettei kuka
tahansa käyttäjänimen ja palvelun osoitteen
tietävä voi lähettää väärää dataa käyttäjän
tileille (tässä tapauksessa siis veren alkoholipitoisuuden ja sijaintitiedot).
Ratkaisu ei todellakaan ole pomminvarma,
joten sen vuoksi oikeaa käyttöä varten kannattaa joko jatkokehittää koodia tai sitten luoda
tätä tarkoitusta varten erillinen tili Twitteriin
tai oma sivu Facebookiin.
Tekstissä esitellyt koodit ovat melko yksinkertaisia runkoja, joiden tarkoitus on helpottaa
kehittämään parempia ja laajempia sovelluksia. Runkojen avulla pystyy toteuttamaan
paljon hyvin erilaisia sosiaaliseen mediaan
Arduinon kautta kytköksissä olevia palveluja
– ja miksei myös muutakin.
Rajapintaa voi laajentaa ottamaan vastaan
myös erilaista tietoa tai esimerkiksi lisätä tietojen muokkaus- ja poistomahdollisuuden.
Datasta voisi vaikkapa luoda interaktiivisia
karttoja. Arduinon koodissa on paljon parannettavaa: siihen voi lisätä tuen useille
käyttäjille ja esimerkiksi hankkia tarkemman
sensorin.
Laitteesta saa nopeasti tehtyä myös yksinkertaisen seurantalaitteen, joka päivittää
sijaintisi tietyin väliajoin sosiaaliseen mediaan
tai pelkkään rajapintaan. Tällöin näyttöä ja
sensoria ei tarvita ollenkaan.앫
10. Sovellusten luominen Facebookissa on helppoa: luomiseen vaaditaan
ainoastaan nimi ja kategoria.
12. Sovelluksen perusasetuksista voi valita, kuinka sovellus toimii Facebookin kanssa: rajapinnan tapauksessa pitää valita Sivusto Facebook Login
-toiminnolla.
11. Sovelluksen oikeudet-välilehdeltä voi säätää, kenelle sovelluksen kautta
lähetetyt tiedot näkyvät vakiona ja esimerkiksi lisätä sovellukselle oikeudet
päivittää käyttäjän tilaa.
48 MikroPC 9/2013
W W W . M I K R O P C . N E T
Käsitteitä
Rajapinta (API, application programming interface)
Määritelmä, jonka perusteella eri sovellukset voivat vaihtaa tietoja.
Rest (Representational State Transfer)
Malli, jonka mukaan useimmat http-ohjelmointirajapinnat on toteutettu
yhteensopivuuden takaamiseksi.
At-komennot (Hayes AT commands)
Ohjeita, joita mobiililaitteiden ja tavallisten puhelimien modeemit
noudattavat.
Oauth Avoin standardi, jolla voidaan tunnistaa (autentikoida) käyttäjiä
erilaisiin palveluihin.
Json (JavaScript Object Notation)
Yksinkertainen tekstimuotoinen datansiirtomuoto, jota on helppo käyttää
javascript-ohjelmissa. Voidaan käyttää myös muilla ohjelmointikielillä.
Osat
Arduino-laitteen lisäksi tarvitset
○ DFRobot Arduino gsm/gprs/gps-shield
○ DFRobot Lcd Keypad Shield for Arduino
○ MQ-3-sensori
○ MQ-3 breakout -levy
○ 2,1 mm male barrel jack (kaapelilla)
○ Rocker switch (virtakytkin)
○ LiPo 7,4 V 1000 mAh -akku (+ ehkä omat liittimet)
○ Prepaid-dataliittymä
○ Johtoa
Osille tulee hintaa noin 140–150 euroa.
Kaikki tarvittavat osat esimerkiksi Robot Shopista: robotshop.com/eu/
home.html.
Rajapinnan
rakenne ja
toiminta
ARDUBREATHALYZERAPI-RAJAPINTA ON toteutettu Pythonilla ja CherryPy:llä. Itse rajapintaosuus sovelluksesta tottelee
vain post- ja get-pyyntöjä. Muut rest-arkkitehtuurin mukaiset
pyynnöt eivät toimi. Rajapinta toimii polussa /api, eikä sitä tule
sekoittaa aikaisemmin esiteltyihin tukena toimiviin lomakkeisiin, jotka lähinnä alustavat rajapinnan toiminnan.
Sovelluksen rakenne koostuu päätiedostosta, joka sisältää pääasiassa CherryPy:lle tarkoitettuja luokkia ja niiden
metodeja. Tämän lisäksi tietokantaoperaatioita varten on
dbwrapper-moduuli sekä sosiaalisen median palveluja varten
servicewrapper-moduuli.
Moduulit käyttävät pythonin tietokanta-ajuria sekä valmiita
eri sosiaalisen median palveluille tarkoitettuja kirjastoja. Sosiaalisen mediaan käyttäjät tunnistetaan Oauth-menetelmällä,
jota varten rajapinnan rekisteröintivaiheessa suoritetaan niin
kutsuttu oauth-tanssi, jolla haetaan tarvittavat avaimet käyttäjien tunnistamista varten.
Eri riippuvuudet asentuvat requirements.txt-nimisen tiedoston mukaan, jota pythonin pip-niminen pakettienhallinta
käyttää. Rajapinnan voi siksi ladata helposti Herokuun.
Osana rajapintasovellusta on PostgreSQL-tietokanta, jonne
käyttäjien tiedot ja asetukset tallennetaan.
Datan perillemenon rajapintaan voi varmistaa hakemalla
dataa palvelusta seuraavanlaisella get-pyynnöllä eli kirjoittamalla vastaavan mukaisen osoitteen selaimen osoiteriville
(vuosi, viikko ja viikonpäivä ovat numeroita), kun dataa on
lisätty sovellukseen: http://sovelluksen_nimi.herokuapp.com/
api/käyttäjänimi/vuosi/viikko/viikonpäivä. Tällöin vastauksena palautuu kyseisen päivän arvot ja tiedot json-muotoisena
koneluettavana datana.
Arduinon lähettämän post-pyynnön rakenne selviää joko
rajapinnan tai Arduinon koodia lukemalla.앫
Twitter-sovellus
13. Laitteisto käynnistyy. Kun kaikki on ok, keskimmäisen moduulin net-valo
vilkkuu 3 sekunnin välein ja kaksi muuta (pwr ja stat) palavat koko ajan.
Twitteriin voi luoda sovelluksen osoitteessa dev.twitter.com/apps.
1. Valitse Create a new application.
2. Täytä vaaditut kentät (Callback URL:
[Heroku-sovelluksesi osoite]/success)
3. Lähetä lomake.
4. OAuth settings -otsikon alta löytyy tarvittavat avaimet
5. Mene Settings-välilehdelle ja vaihda Application typeksi
Read and Write.
Foursquare-sovellus
Rajapinnassa on tuki Foursquare-sovelluksen lisäämiselle, mutta
itse datan lähettämistä palveluun ei ole toteutettu ainakaan vielä
tätä tekstiä kirjoitettaessa.
Foursquareen voi luoda sovelluksen osoitteessa
foursquare.com/developers/apps.
1. Valitse Create a New App ja täytä kentät.
2. Redirect URI(s): [Heroku-sovelluksesi osoite]/success.
3. Laita ruksi kohtaan New users can connect via the web.
4. Lähetä lomake.
5. Client ID ja Client Secret ovat rajapinnassa käytettävät arvot.
14. Tämä juttu kirjoitettiin selvinpäin.
W W W . M I K R O P C . N E T
MikroPC 9/2013 49