Kotiautomaatioprojektin toteutus oli tarkoitus aloittaa korvaamalla jääkaapin termostaatti Arduinolla. Jääkaapin lämpötila on viime aikoina heitellyt rajusti, ja epäilin, että termostaatti vetelee viimeisiään. Eilen purin jääkaappia hieman, ja totesin, että siinä onkin elektroninen termostaatti perinteisen kapillaaritermostaatin sijaan. Epäilykseni termostaatin suhteen pienenivät, ja päätinkin toistaiseksi olla koskematta elektroniikkaan. Sen sijaan päätin, että tarkkailen jääkaapin lämpötilaa Arduinolla jonkin aikaa, jotta nähdään, missä rajoissa lämpötila heittelee.
Ajatuksena oli, että teen jääkaappiin (väliaikaisen) yksikön, joka koostuu Arduino Nanosta, lähettimestä ja lämpötila-anturista. Virtalähteeksi laitoin USB-hätälaturin kahdella AA-akulla. Vastaanottimen, joka tulee olemaan koko kotiautomaatiojärjestelmän master-yksikkö, tein Arduino Unosta, Ethernet Shieldistä ja NRF24L01+:sta. Virtalähteenä tällä toimii toistaiseksi 12 -> 5 V step-down-muunnin, jota syöttää normaali 12 voltin verkkovirtamuuntaja.
Sain langattoman yhteyden toimimaan yksiköiden välillä melko vaivattomasti. Asensin RF24-kirjaston sekä RF24Network-kirjaston ja käytin testaamiseen networkin rx- ja tx-esimerkkejä. Kytkin moduulin Arduinoon seuraavasti (sarake RF24 library):
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
Ethernet Shieldin lisäämisen jälkeen alkoivat ongelmat. Langaton yhteys ei enää toiminut. Lopulta en päässyt perille, johtuiko ongelma Ethernet Shieldin ja NRF24L01+:n jakamasta SPI-väylästä vai virransyötöstä. Kokeilin lukuisia eri vaihtoehtoja, ja lopulta (tuurilla?) langaton yhteys alkoi toimia. Tällöin NRF24L01+-moduulin pinnit CE ja CSN oli kytketty Arduinon portteihin 6 ja 7 sekä muutettu nämä portit esimerkkikoodiin ja moduulin virransyöttöpinneihin oli kytketty 1000 uF:n elko.
Tein masteriin oman koodin, joka vastaanottaa jääkaapin lämpötilan (http://milesburton.com/Dallas_Temperature_Control_Library) ja lähettää sen ethernetin kautta palvelimelleni (http://blog.protoneer.co.nz/arduino-http-post-requests/). Palvelimella on yksinkertainen PHP-koodi, joka vastaanottaa tiedon ja tallentaa sen txt-tiedostoon. Vastaavasti tein jääkaappiin tulevaan yksikköön koodin, joka lukee lämpötila-anturilta lämpötilan ja lähettää sen langattomasti masterille. Sen jälkeen yksikkö huilaa minuutin lepotilassa, jotta akut kestäisivät pidempään (http://www.electrodragon.com/put-arduino-into-sleep-mode-and-works-for-weeks/).
Menin innoissani kytkemään masteria reitittimeen, jotta näkisin, siirtyykö lämpötilatiedot palvelimelle. Tästä seurasi, että netti lakkasi toimimasta kaikilla laitteilla. Asiaa selviteltyäni tulin siihen tulokseen, että reititin hajosi/jumi totaalisesti. Resetointi tms. ei auttanut (Linksysin langaton reititin, johon asennettu DD-WRT). Epäilen, että virrankytkennästä aiheutui jännitepiikki, joka pääsi syystä tai toisesta reitittimelle saakka. Minulla ei nimittäin ollut DC-liittimiä, vaan virransyöttö masterille tapahtui teippaamalla virtajohdot verkkovirtamuuntajan 12 V:n DC-pistokkeeseen. Kontakti oli hieman pätkivä. Loppuilta menikin tilatessa uutta reititintä (valitsin suositun ASUS RT-N56U:n, joka oli tarjouksessa 65 €). Samalla tuli tilattua Linux-yhteensopiva N-sarjan verkkokortti pöytäkoneeseen (ASUS USB-N13).
Ensimmäisen toteutuspäivän jälkeen saldona oli suunnilleen "mikään ei onnistunut". Tänään kuitenkin jatkoin rohkeasti testejä ja kytkin master-yksikön vanhan 100MBps:n kytkimen kautta suoraan kaapelimodeemiin. Ensin kaapelimodeemi meni sekaisin, mutta tokeni boottaamalla. Toin testien ajaksi jääkaapin moduulin lähemmäs, jotta langaton signaali varmasti kulkee. Ethernet Shield ja NRF24L01+ vaikuttivat myös olevan taas yhteistyöhaluttomia, mutta purkamalla laitteiston ja testaamalla erikseen Ethernet Shieldin esimerkkikoodeilla ja lisäämällä sitten NRF24L01+:n homma alkoi toimia. Lämpötila alkoi kulkea lopulta nettiin asti!
Totesin, että langaton signaali kulkee epävarmasti jääkaapin sisältä faradayn häkistä olohuoneeseen saakka. Lopullisessa kokoonpanossa lähetin ei tietenkään tule olemaan jääkaapissa, vaan jossain muualla keittiössä ja jääkaapin sisällä vain lämpötila-anturi. Asunnossa tulee olemaan myös muita automaatioyksiköitä, joiden kautta signaali voidaan reitittää olohuoneeseen saakka. Seuraavaksi rakennan kolmannen yksikön testimielessä ja kokeilen signaalin reitittämistä. Sen avulla saan jääkaapin lämpötilaseurannan toimimaan ja voin jättää sen joksikin aikaa päälle. Jos innostun, saatan myös aloitella auton lämmityksen automatisointia.

Ei kommentteja:
Lähetä kommentti