torstai 29. toukokuuta 2014

Saunan audion etäohjaus

Tähän saakka saunan ja suihkuhuoneen audiot ovat tulleet teknisentilan vahvistimisesta joko 3.5"-audioplugin tai Bluetooth-streamauksen läpi. Yleensä olen käyttänyt Spotify:ta Nexus7-tabletista ja streamannut audion kodinhoitohuoneesta tekniseen tilaan.

Tästä aiheutuu saunoessa semmoinen pulma, mitä en heti ottanut huomioon, että jos saunassa ollessa Spotifyssä tulee hirveää kuraa soittoon, niin joutuu ryntäämään tekniseen tilaan painamaan "Next"-nappulaa.

Ja nyt kun oli ongelma selvillä, niin hullunkiilto heräsi koodarisilmissäni. Ja eikun googlettamaan ja ebayhin ostoksille. Projektissa on tarkoitus käyttää halpoja radiokaukosäätimiä (millä ohjaillaan esim tallin ovia) ja Rasberry pi:llä ottaa signaalit vastaan ja tulkita ne "Play/pause", "Next", "Volume Up" ja "Volume Down" -komennoiksi.

Ensimmäinen ostos minkä löysin ebaystä (ja tilasin näitä toisenkin kun totesin sen toimivaksi). "4CH Wireless RF Remote Control Decoding Receiver Transmitter Module Board IC2272" http://www.ebay.com/itm/131198056389 2.7e/kpl posteineen suomeen, joten puoli-ilmaista.

Tällä on ihan kivat speksit:

Remote control
1.Operating voltage: DC12V (27A/12V battery x1)
2.Operating Current: 10mA @ 12V
3.Radiated power: 10mw @ 12V
4..Transmission distance :50-100M (Open field, the receiver sensitivity of -100dbm)
5.Transmitting frequency: 315MHZ

With decoding receiver board
1.operating voltage DC5V
2.receiver sensitivity is-98db. Leg 7 bits, respectively, VT, D3, D2, D1, D0, the +5 V and GND.
3.VT is a valid signal high output pin Upon receiving a valid signal, the pin output high, may also drive the relay.
4.Size: 6.6*22*41mm

Testeissä tuntui mukavasti toimivan 5V:lla ja jokaisesta neljästä napista triggeröityi 5V D[0-3] pinneille. Rasperry Pi:llä kun tuota haluaa lukea, niin joutuu vielä väliin pistämään 5V->3.3V voltage step down diodit (tai resistoreita sopivasti sarjassa). Joten tilasin ebaystä kasan 3.3V zenereitä.

Tässä harjoituksessa otin yhden Raspberryn ja dedikoin sen nyt langattomien signaalien vastaanottamiseen ja kun laitteessa oli vielä muutama GPIO pinni vapaana, niin samaan syssyyn ohjelmoin tuon myöskin olemaan saunan kiukaan etäohjausserveri(josta erillinen postaus tulevaisuudessa). 5V to 3.3v signaalin muuttamiseksi käytin lähteenä tätä sivua http://jamesreubenknowles.com/level-shifting-stragety-experments-1741. Eli lopulta päädyin noiden neljän 5V signaalipinnin muuttamisen 3.3V:ksi seuraavalla tavalla 3.3V zenereitä käyttäen(osien yhteishinta reilusti alle euron):

Tässä hieno tilannekuva protoboardin testikasauksessa:

Ja sitten kuvaa kun pistin tuon langattoman vastaanottimen ja tupla relayn livenä kiinni raspberryyn. Kauhea piuhameri, mutta toimii(tm). Jossain vaiheessa teen vielä siistityn version.

Kun kytkennät sai toimimaan, niin sitten vuorossa oli sopivan softan koodaaminen. Ekana nopea testi, että hommat toimii; ssh:lla roottina raspberryn sisään ja:
# cd /sys/class/gpio/
# echo 24 > export
# cd gpio24/
# echo in > direction
# cat value
Ja value muuttuu hienosti kaukosäädinta painaessa. Joten voin ruveta turvallisesti aloittamaan oikean c++ ohjelman tekemisen tuota varten. Minulle olikin jo yksi koodinpätkä valmiina BeagleBoard blackia varten, jolla on tarkoitus tulevaisuudessa säätää valoautomaatiota, joten siitä kopioimalla pääsin hyvin vauhtiin ja tunnin jälkeen minulla oli jo serveri, joka tulosti kaukosäätiminen nappien alas- ja ylös-painalluseventit. Sitten tarvitsee vain tehdä palikka läppäriin joka Spotifyta pyörittää, että se myös tekisi haluamani asiat kun kaken nappulaa painaa.

Jokusen tunnin istuin koneen äärellä koodaten sopivaa serveri-clientti systeemiä. Raspberry pi ottaa kiinni kaukosäätimen signaalit, joka lähettää socketin yli ilmoituksen keskusserverille, joka puolestaan kertoo läppärille, että mitä pitää tehdä. Ja tuntuu hienosti toimivan, joten problem solved. Nyt voi saunasta langattomasti ohjata Spotifyn volume, next- ja pause-namiskoja. Radio-ohjauksen ja protolevyn osien hinta alle 10e (omalle koodaustyölle kun ei lasketa hintaa). Ohessa video, jossa demoan kaukosäätimen vaikutusta läppärissä pyörivään Spotifyhin.


Vielä pitää A,B,C,D-namiskojen päälle askarrelle audioikonit, jolloin kaken käyttö on loogisempaa. Eli eka versio näyttää tältä, vielä saatan tehdä inverssi väreillä, että ikonit olisi valkoisia ja tausta kaken ruskea:

2 kommenttia:

  1. Terve,

    liitit siis (433MHz taajuksia?) käyttävän avaimenperä kauko-ohjaimen vastaanottimeksi raspikseen ?

    Onnistuisiko sama tehdä myös toisinpäin, siis kytkeä avaimenperä kauko-ohjaimen neljä nappia hyppylangoilla raspiksen neljään GPIO -pinniin, jolloin raspis "painelee kaukosäätimen nappeja" GPIO:n kautta ?

    Ajatuksena käskyttää SONOFF -laitteen avaimenperä kauko-ohjaimella (http://www.dx.com/p/433mhz-4-channel-sonoff-rf-controller-with-abcd-4-buttons-black-485021) sille tarkoitettua vastaanotinta (http://www.dx.com/p/diy-smart-wi-fi-wireless-switch-w-remote-control-for-home-white-black-425700), jolloin voi tarkistaa etänä kännykkään asennettavan eWeLinkin kautta, että totteliko SONOFF -vastaanotin raspiksen käskytystä.

    VastaaPoista
  2. Avaimenperä kauko-ohjaimen ja raspiksen väliset tee-se-itse -hyppylangat voisi välttää koodaamalla ja/tai käyttämällä jotain valmista kirjastoa, joka tukee raspiksen GPIO -pinneihin liitettävää 433MHz lähetin-vastaanotinta: http://www.dx.com/p/si4432-433mhz-wireless-rf-transceiver-module-w-antenna-for-arduino-raspberry-pi-army-green-379445

    Vai löytyykö jokin yksinkertaisempi (siis ei 433MHz taajuuden käyttämiseen perustuva) tapa käskyttää SONOFF (ESP8266) -laitetta raspiksella ?

    Esim. tukeeko MQTT (tai jokin muu) protokolal ja/tai kirjasto suoraan raspiksen ja SONOFF -laitteen välistä WLAN liikennettä ?

    VastaaPoista