Sisällysluettelo:
- Vaihe 1: Kuinka aiomme tehdä sen
- Vaihe 2: Tarvittavat laitteet
- Vaihe 3: Jura -pöytäkirja
- Vaihe 4: Purkaminen
- Vaihe 5: Takuun mitätöiminen
- Vaihe 6: Loogisen puolen kytkentä
- Vaihe 7: Moduulin ohjelmointi
- Vaihe 8: Tee siitä jotain…
- Vaihe 9: Tarkennukset/Tehtävä
Video: IoT -yhteensopiva kahvinkeitin: 9 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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
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
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ä
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
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.
Ensimmäinen palkinto esineiden internet -kilpailussa 2017
Suositeltava:
STONE -näyttö +STM32 +kahvinkeitin: 6 vaihetta
STONE Display +STM32 +Kahvinkeitin: Olen MCU -ohjelmistosuunnittelija, äskettäin saanut projektin olla kahvinkeitin, kotitalouden vaatimukset kosketusnäytöllä, toiminto on hyvä, näytön yläpuolella ei ehkä ole kovin hyvä, Onneksi tämän projektin voin purkaa
Älykäs kahvinkeitin - osa SmartHome -ekosysteemiä: 4 vaihetta
Älykäs kahvinkeitin - osa SmartHome -ekosysteemiä: hakkeroitu kahvinkeitin, joka on osa SmartHome -ekosysteemiä moduuli, jossa on liitäntä aivoihin/mikrokontrolleriin
WiFi -kahvinkeitin: 9 vaihetta
WiFi -kahvinkeitin: Wifi -kahvinkeitin käyttää Arduinoa, NODE MCU: ta ja kierrätettyjä osia kahvin valmistamiseen turvallisesti ja etänä
JavaStation (itse täytettävä täysin automaattinen IoT-kahvinkeitin): 9 vaihetta (kuvilla)
JavaStation (itse täytettävä täysin automaattinen IoT-kahvinkeitin): Tämän projektin tavoitteena oli valmistaa täysin automaattinen ääniohjattu kahvinkeitin, joka täyttää itsensä automaattisesti vedellä ja sinun tarvitsee vain vaihtaa asiakkaat ja juoda kahvisi; )
IOT -kahvinkeitin (UFEE): 7 vaihetta (kuvilla)
IOT-kahvinkeitin (UFEE): Todistuksena tietämyksestä meidän piti luoda IOT-laite, jota voitaisiin ohjata itse tehdyn web-käyttöliittymän kautta. Koska rakastan kahvia ja kulutan sitä paljon päivittäin, päätin tehdä oman IOT -kahvinkeittimen. UFEE -kahvinkeitin: "