Sisällysluettelo:

IoT -yhteensopiva kahvinkeitin: 9 vaihetta (kuvilla)
IoT -yhteensopiva kahvinkeitin: 9 vaihetta (kuvilla)

Video: IoT -yhteensopiva kahvinkeitin: 9 vaihetta (kuvilla)

Video: IoT -yhteensopiva kahvinkeitin: 9 vaihetta (kuvilla)
Video: 9 серия - "Кастинг юных цирковых артистов для Парижа", детского сериала - "Хочу в Париж". 2024, Heinäkuu
Anonim
Image
Image
Tarvittavat laitteet
Tarvittavat laitteet

Tämä ohje on mukana IoT -kilpailussa - jos pidät siitä, äänestä sitä

PÄIVITETTY: Tukee nyt 2 -tieyhteyksiä ja OTA -päivityksiä

Minulla on ollut jo jonkin aikaa Jura -kahvinkeitin ja olen aina halunnut automatisoida sen jotenkin.

Olen käyttänyt perusautomaatiojärjestelmää jo muutaman vuoden ajan, mutta kahvinkeitin ei ollut yksinkertaisesti muokattava (tai niin luulin). Juran kahvinkeittimissä on yleensä diagnostiikkaportti ja/tai portti, jota käytetään maksujärjestelmän lisäämiseen koneeseen, mutta en löytänyt mitään tietoa siitä, miten sitä voitaisiin käyttää. Viime aikoina jotkut henkilöt muuntivat protokollan käänteisesti ja julkistivat sen. Ongelmana oli, että suurin osa viittauksista käytettävissä oleviin toimintoihin koski paljon suurempia koneita kuin minun (Ena 7).

Lisäksi koneellani ei ole pysyvää valmiustilaa, kuten isommilla koneilla, vaan siinä on HV -kytkin, joka saa virtalähteen "lukkoon". Koneen fyysinen painike aktivoi itse asiassa 2 kytkintä - yhden pienjännitteisen (looginen puoli, sammuta) ja yhden korkean voltin (virta päällä). Molemmat kytkimet ovat hetkellisiä.

Minun oli myös varmistettava, että kone toimii edelleen 100% riippumatta kaikista ohjausmekanismeista, eli kone toimii edelleen normaalisti ikään kuin se ei olisi IoT -käytössä.

Koneen automatisointi edellyttää kahta asiaa: 1) Koneen virran hallintaa 2) Kykyä kommunikoida koneen kanssa kahvin valmistus-, huuhtelut jne. Toimintojen aktivoimiseksi.

Vaihe 1: Kuinka aiomme tehdä sen

Käytämme ESP8266 'ESP-01' -moduulia muodostaaksesi yhteyden kotiverkkoon ja tilataksesi MQTT-palvelimen/aiheen kuuntelun komentoja varten. Käyttämäni käyttöliittymä on OpenHAB2, mutta ei ole mitään syytä, miksi et voisi lisätä laitteen web -käyttöliittymään ja ohjata sitä suoraan halutessasi tai HTTP Get -komentojen kautta.

ESP8266 käsittelee kahden virtapainikkeeseen liittyvän releen ohjaamista ja käsittelee myös sarjakomentoja kahvinkeittimelle/siitä pois.

VAROITUS - Tässä ohjeessa kuvataan menettely, jota käytin Jura Ena7 -kahvinkeittimen muokkaamiseen ohjattavaksi kotiautomaation avulla. Se käsittelee verkkovirtalaitteen muuttamista, mikä voi olla vaarallista, jos se suoritetaan väärin. Tässä olevat tiedot voivat olla puutteellisia, epätarkkoja ja vaarallisia. Etene varovaisesti. Vastuuta ei hyväksytä.

Vaihe 2: Tarvittavat laitteet

Tarvittavat laitteet
Tarvittavat laitteet
Tarvittavat laitteet
Tarvittavat laitteet
Tarvittavat laitteet
Tarvittavat laitteet

Osat

  • ESP-01-moduuli ja tapa ohjelmoida se (Arduino IDE ja fyysinen sovitin ohjelmointia varten)
  • 2 -tierele moduuli EBAY
  • 5v -> 3.3v Säädin EBAY
  • Pieni 5V verkkovirtainen puhelinlaturi
  • Loogisen tason muunnin* Freetronics
  • Muut johdot, nastat, lämmön kutistuminen jne. Kaiken liittämiseksi.

Työkalut

  • Hieno kärki juotin
  • Juottaa
  • Langanpoistimet ovat käteviä
  • Kuljettaja Torx T15
  • Soikea suojaustyökalu (tai tee se, kestää vain muutaman minuutin)

*Käytin aluksi arduino UNO: ta testatessani kaikkia koneen sarjakomentoja ja se toimi moitteettomasti, mutta ESP -moduuli kieltäytyi toimimasta. Tarkistin koodin kolminkertaisesti ja olin varma, että ESP-moduulista poistuvat komennot olivat samat kuin arduino, mutta se oli ei-go. Laitoin tämän ESP -moduuliin, joka toimii vain 3.3v -logiikalla eikä 5V: lla. Kun laitoin Logic -muuntimen sisään, se toimi hyvin. Tätä voidaan vaatia muissa koneissa tai ei.

Ihannetapauksessa sinulla olisi olemassa oleva kotiautomaatiojärjestelmä, joka tukee MQTT -protokollaa (kuten openhab), koska tämä on projektin tarkoitus. Jos haluat vain hallita sitä verkkosivun painikkeilla ilman tukijärjestelmiä, sinun on tehtävä joitakin muutoksia sulautetun verkkosivun koodiin. Sen saavuttaminen ei ole liian monimutkaista (ehkä rev2..)

Vaihe 3: Jura -pöytäkirja

Juran pöytäkirja
Juran pöytäkirja

Tiedot koneelle/koneesta ovat vain sarjaa @ 9600, mutta Juralla on myös temppuja hihoissaan. Protokolla joko käyttää tätä ylimääräiseen ECC: hen ja/tai hämärtää viestinnän. Yksinkertaisesti sanottuna, jokainen datatavu (merkki) on jaettu biteille 2 ja 5 /4 vakio -sarjatavusta, joita seuraa 8 ms: n tauko. Jos haluat oppia, miten tämä toimii, tässä linkissä on paljon tietoa.

Protokollatiedot poimittu osoitteesta:

Arduino -koodi yksinkertaistaa tätä, jolloin voit lähettää tavallisia, ihmisen luettavissa olevia komentoja, jotka se sitten siirtää Jura -protokollaan.

Koodini on yhdistelmä koodia osoitteesta:

Edellä mainituilla sivustoilla mainitut komennot eivät olleet tarkkoja koneelleni, mutta kokeilu- ja erehdysmenetelmän avulla pystyin keksimään seuraavat:

FA: 01 - Sammuu (mutta ei näytä huuhtelevan, vaikka sitä tarvittaisiin) FA: 02 - Vastaa "ok", mutta ei ole varma, mitä se tekee. FA: 03 - Huuhteluviesti (Pakottaa "huuhteluviestin" näytölle painamalla pyörivää huuhtelukonetta) FA: 04 - Huuhtelutoiminto - Huuhtelee, kun viesti "Paina kiertopainiketta" tulee näkyviin, muuten ei mitään FA: 05 - Vahva näytöllä (Oletettavasti yhdistä tämä kahvin valmistamiseen vahvalle) FA: 06 - Vahva näytöllä (Yhdistä tämä oletettavasti kahvin valmistamiseen vahvalle) FA: 07 - 'Erikoisnäyttö' näytöllä, mutta ei oikeastaan tee mitään, en ole varma mitä tämä on FA: 08 - Höyry FA: 09 - Pieni kahvi FA: 0A - Suuri kahvi

Muitakin komentoja on, mutta tämä riittää minulle…

Ole varovainen antaessasi tuntemattomia komentoja, esimerkiksi ilmeisesti AN: 0A pyyhkii koneen EEPROMin …

Vaihe 4: Purkaminen

Itse koneen avaaminen ei ole liian helppoa, koska tarvitset hieman erikoistyökaluja, mutta innokas henkilö löytää tien - Tarvitset T15 Torx -kärjen ja soikean avaimen kahdelle ruuville. Torx, joka minulla jo oli, soikea työkalu, jonka tein 4 mm: n hylsypultista, porattiin ja litistettiin hieman vasaralla.

Tässä olevat ohjeet on esitelty melko hyvin-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

Vaihe 5: Takuun mitätöiminen

Takuun mitätöiminen
Takuun mitätöiminen
Takuun mitätöiminen
Takuun mitätöiminen
Takuun mitätöiminen
Takuun mitätöiminen
Takuun mitätöiminen
Takuun mitätöiminen

Kun pääset koneeseen, näet pääkomponentit. Päävirtaliitännän alla on mukava paikka 5 voltin laturin lisäämiseksi.

Lisäsin (verkkovirralla mitoitetut) johdot riviliittimeen koneen sisääntulossa ja juotin/kutistin ne 5 V: n laturin verkkotappeihin. Erityinen mallini ei ollut USB -porttityyppi, vaan sellainen, johon johto oli kiinnitetty pysyvästi. Sinulla ei ehkä ole tarpeeksi tilaa USB -porttityypille, jotta voit käyttää varsinaista USB -kaapelia, mutta jos avasit laturin, voit poistaa USB -portin ja korvata sen vakiovaijerilla 5v- ja Gnd -pisteisiin.

Voit halutessasi korvata toisen 5 voltin virtalähteen. 500m pitäisi riittää.

Relemoduulilla on runsaasti tilaa hiomakoneen lähellä. Meidän on kytkettävä molemmat releet toimimaan rinnakkain päävirtakytkimien kanssa. Leikkasin yksinkertaisesti olemassa olevat johdot, irrotin, tinoin, lisäsin ylimääräisen langan ja juotin takaisin yhteen (älä unohda lämpökutistusta). Johdoissa oli tarpeeksi löysää tätä varten.

Relemoduuli pidetään paikallaan laadukkaalla kaksipuolisella teipillä. Kun johdot on kytketty ja niillä on vain vähän liikkumavaraa, vaikka teippi menettää otteensa, moduuli ei mene liian pitkälle eikä voi joutua kosketuksiin metalliesineiden kanssa.

Olen myös testannut koneen diagnostiikkaportin sisäisten yhteyksien sijainnin määrittämiseksi, jotta voin saavuttaa täysin piilotetun integroinnin. Vain tx-, rx- ja Gnd -johtoja käytetään.

Jos sinulla on kaupallisempi laite, joka tukee valmiustilan jännitettä ja/tai et halua mitätöidä koneesi takuuta, voit muodostaa yhteyden suoraan diagnostiikkaporttiin, mutta et ehkä voi käynnistää laitetta tällä laitteella.

Koneessa on 7 -nastainen liitin. Vasemmalta oikealle se on:

NC Tx G Rx NC 5v NC

Emolevyn vastaavat nastat: Punainen = Gnd Oranssi = Rx Musta = Tx

Lisätietoja löytyy pinouteista täältä:

Vaihe 6: Loogisen puolen kytkentä

Loogisen puolen kytkentä
Loogisen puolen kytkentä
Loogisen puolen kytkentä
Loogisen puolen kytkentä
Loogisen puolen kytkentä
Loogisen puolen kytkentä

Tarkista kaavio - Se näyttää liian monimutkaiselta, mutta se ei todellakaan ole sitä.

Asensin tasonmuuntimen (poistetun) jännitesäätimen taakse kaksipuoleisella teipillä. Käytin sitten joitain komponenttijalkoja juottamaan tasonmuuntimen molemmin puolin olevat virta- ja maadoitusnastat vastaaviin tehomoduulin nastoihin. Tämä koko moduuli toimii sitten "läpivienninä" kaikelle ESP-01: n logiikalle ja virtalähteelle.

Käytin kahta keskimuunninta sarjatiedoille ja kahta ulkoista releen ohjaussignaaleille, mutta sillä ei ole väliä mitä käytät.

Näiden relemoduulien kanssa ei ole välttämätöntä ajaa 5v -logiikkaa, koska ne ovat aktiivisia LOW, mutta se vain toimi hienosti, joten tein sen joka tapauksessa.

Käytin 4x2 naarasliitintä ESP -moduuliin yhdistämiseen. Tämä mahdollistaa helpon koodin lataamisen tai moduulin vaihtamisen.

Kaaviossa ei ole 5 V: n tuloa - johdotin omani suoraan relemoduuliin (katso toinen kuva). Kuvan vasemmassa alakulmassa oleva musta johto on emolevyn sarjatiedot. Käytin osaa suojatusta 3,5 mm: n kuulokkeiden jatkojohdosta vain vähentääkseen datalinjan häiriöiden mahdollisuutta.

12f -koodi käyttää SoftwareSerialia laitteistosarjan sijaan - Tämä antaa moduulille mahdollisuuden ilmoittaa virheenkorjauksen tilan normaalin sarjasarjan kautta. Liitännät tehdään sen sijaan nastojen 4 ja 5 kautta. Muokkasin samaa otsikkoa tehdäkseni ESP12F: stä ESP-01: n pistokkeen vaihdon, vain vaihtamalla nuo sarjatapit

Vaihe 7: Moduulin ohjelmointi

Moduulin ohjelmointi
Moduulin ohjelmointi

Koodi on koottu Arduino 1.8.1 vastaan ESP8266 -kortin lisäosalla ja PubSubClient 2.6.0 (joka on MQTT -kirjasto)

Muokkaa koodia tarpeidesi mukaan ja lataa koodi ESP-01-moduuliin ja muodosta yhteys laitteeseen. Ole varovainen nastojen suunnan kanssa!

Asetukset

Vaihtoehto 1)

Vain peruskoodilla zip -muodossa. Kun ESP -moduuli käynnistyy ensimmäisen kerran, se siirtyy AP -tilaan ja asettaa sen IP -arvoksi 192.168.4.1. Tämän jälkeen voit muodostaa yhteyden moduuliin ja vaihtaa IP -osoitteen ja muodostaa yhteyden omaan tukiasemaan. Sinun on myös määritettävä laitteellesi IP tällä alueella, koska moduulissa ei ole DHCP: tä.

AP: n oletus SSID on ESPSwitch ja salasana 12345678

Se pysyy AP -tilassa oletuksena 2 minuuttia. Voit muuttaa tätä asetusta kohdassa global.h - Sen nimi on adminTimeout ja se näkyy millisekunteina. Suosittelen vaihtamaan sen matalaksi, kun sinulla on kelvollinen määritys EEPROMissa, koska se vain aiheuttaa tarpeettomia viiveitä laitteen käynnistyksessä.

Vaihtoehto 2)

Tämä on oletustila uudemmalle koodille, joka tukee kaksisuuntaisia kommunikaatioita, vaihtoehto 1 ei ole käytettävissä. nämä asetukset EEPROM -järjestelmään ensimmäisen käynnistyksen yhteydessä ja muuta järjestelmänvalvojan viive jonkin matalaksi kohdassa global.h. Näin vältetään sekaannus väliaikaiseen tukiasemaan yhdistämisen kanssa.

Laite asettaa automaattisesti MQTT -tunnuksen (ja tilauspolun) moduulien sarjanumeron 4 viimeiselle numerolle. Oletuksena polku on ha/mod //#, muuta haluamallasi tavalla, mutta lue koodin kommentit varmistaaksesi, että sopivan taulukon pituus on oikea.

Teen tämän, koska se tarkoittaa, että minun ei tarvitse luoda yksilöllistä tunnusta jokaiselle verkon moduulille.

Laitetunnus näkyy ja MQTT -palvelin voidaan asettaa sisäisen verkkopalvelimen MQTT -palvelinsivun kautta

Vaihe 8: Tee siitä jotain…

MQTT -komennot ovat

ha/mod/xxxx/0 tai 1 = Vaihda tehoa

Kaikki muut merkkijonot käsitellään komennona ja lähetetään sarjaportin kautta. Tila ilmoitetaan /ha /kahvi HEX: ssä

OpenHABin kanssa

coffeemachine.items

Numero Coffee_Machine_Power "Power" {mqtt = "> [control: ha/mod/8002/: command:*: default]"} String Coffee_Machine_Status {mqtt = "<[control: ha/coffee: state: default]"}

Sivustokartta

Group item = "Kahvikone" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Vaihda tuote = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Vaihda tuote = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Vaihda tuotetta = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Huuhtelu"] Tekstikohde = Coffee_Status label = "Tila [%s] "}

voicecontrol.rules

tuoda org.openhab.model.script.actions.* tuoda org.openhab.core.library.types.* tuoda java.util.*

sääntö "Äänikomentojen säännöt"

kun kohde VoiceCommand vastaanotti komennon sitten var String -komento = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand vastaanotettu"+komento)

if (command.contains ("käynnistä kahvinkeitin") || command.contains ("sammuta kahvinkeitin")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("tee minulle pieni kahvi")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("tee minulle suuri kahvi")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("huuhtele kahvinkeitin")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} end

Säännöt (HEX -vastausten tulkitsemiseksi todellisiksi arvoiksi):

sääntö "Kahvikoneen tila", kun tuote Coffee_Machine_Status vastaanotti päivityksen, sitten var String response = Coffee_Machine_Status.state.toString () if (response.indexOf ("ic:")> -1) {var String hexString = response.substring (3, 5))

var int numero = (Integer.parseInt (hexString, 16));

var String binaryString = String.format ("%8s", Integer.toBinaryString (numero)). korvata ('', '0')

var int trayBit = binaryString.substring (0, 1)

var int tankBit = binaryString.substring (2, 3) var int heatBit = binaryString.substring (7, 8) var int washBit = binaryString.substring (6, 7)

jos (trayBit == "0") {

postUpdate (Coffee_Status, "Tray Missing")} if (tankBit == "1") {postUpdate (Coffee_Status, "Fill Tank")} if (washBit == "1") {postUpdate (Coffee_Status, "Press Rotary")} if (trayBit == "1" && tankBit == "0" && washBit == "0") {postUpdate (Coffee_Status, "Ready")}

}

if (response == "Off") {postUpdate (Coffee_Status, "Off")} loppu

Vaihe 9: Tarkennukset/Tehtävä

Yksinkertaista alkuasennusta wifi -yhteyteen - Valmis. Hylättiin ajatus "admin -tilasta", koska se oli ärsyttävää. Kirjoita nyt vain SSID ja salasana koodiin. Tallentaa EEPROMiin, jos päivität/muutat verkkoliittymän kautta.

Uudempi koodi tukee myös OTA-päivityksiä, mutta sinun on päivitettävä EEPROM ESP-01-moduulissa, jotta tämä toimii tai kommentoi vastaavia OTA-kohteita

Lisää koodi vastausten käsittelyyn koneelta ja lue tila, kuten ei lokeroa, tyhjiä sakkoja ja täyttösäiliö - Valmis. Olen lisännyt koodin tilan lukemiseen ja julkaisemiseen ha/kahvi. Tämä on vain raaka vastaus ja olen edelleen tulkitsemassa niitä, mutta toistaiseksi minulla on lokero puuttuu ja säiliö tyhjä toimii. Se kyselee koneen 9 sekunnin välein, kun se on päällä, ja julkaisee vastauksen MQTT: lle

Vaste on HEX, mutta yksittäiset bitit osoittavat antureita

Lisää koodi verkkosivuille suoraa ohjausta varten HTTP GET -komentojen avulla.

Esineiden Internet -kilpailu 2017
Esineiden Internet -kilpailu 2017
Esineiden Internet -kilpailu 2017
Esineiden Internet -kilpailu 2017

Ensimmäinen palkinto esineiden internet -kilpailussa 2017

Suositeltava: