Sisukord:

IoT -toega kohvimasin: 9 sammu (piltidega)
IoT -toega kohvimasin: 9 sammu (piltidega)

Video: IoT -toega kohvimasin: 9 sammu (piltidega)

Video: IoT -toega kohvimasin: 9 sammu (piltidega)
Video: Учим цвета Разноцветные яйца на ферме Miroshka Tv 2024, November
Anonim
Image
Image
Vajalik varustus
Vajalik varustus

See juhend on osalenud asjade Interneti konkursil - kui teile meeldib, palun hääletage selle poolt

UUENDATUD: toetab nüüd kahesuunalisi kommentaare ja OTA värskendusi

Mul on juba mõnda aega Jura kohvimasin ja olen alati tahtnud seda kuidagi automatiseerida.

Olen juba mõnda aastat kasutanud lihtsat koduautomaatikasüsteemi, kuid kohvimasinat ei olnud lihtne modifitseerida (või nii ma arvasin). Jura kohvimasinatel on tavaliselt diagnostikaport ja/või port, mida kasutatakse masinasse maksesüsteemi lisamiseks, kuid ma ei leidnud teavet selle kasutamise kohta. Hiljuti töötasid mõned isikud protokolli ümber ja avalikustasid selle. Probleem oli selles, et enamik viiteid saadaolevatele funktsioonidele olid palju suuremate masinate puhul kui minu oma (Ena 7).

Pealegi ei ole minu masinal püsivat ooterežiimi toite nagu suurematel masinatel, selle asemel on sellel HV lüliti, mis muudab toiteallika "lukustatuks". Masina füüsiline nupp aktiveerib tegelikult 2 lülitit - üks madalpinge (loogiline külg, lülitage välja) ja üks kõrgepinge (toide sisse). Mõlemad lülitid on hetkelised.

Samuti pidin veenduma, et masin töötab endiselt 100% sõltumatult mis tahes juhtimismehhanismist, st masin töötab endiselt normaalselt, nagu poleks IoT lubatud.

Masina automatiseerimiseks on vaja kahte asja: 1) masina toite juhtimist; 2) masinaga suhtlemist, et aktiveerida kohvivalmistamise, loputamise jne funktsioone.

Samm: kuidas me seda teeme

Kasutame koduse wifi-ga ühenduse loomiseks ESP8266 'ESP-01' moodulit ja tellime käske MQTT serveri/teema kuulamiseks. Kasutatud 'kasutajaliides' on OpenHAB2, kuid pole põhjust, miks te ei saaks seadme veebiliidesesse lisada ja seda otse juhtida, kui soovite või HTTP -käskude kaudu.

ESP8266 haldab kahte toitenupuga seotud releed ja töötleb ka kohvimasinale ja sealt pärinevaid jadakäske.

HOIATUS - See juhend annab ülevaate protseduurist, mida kasutasin oma kohvimasina Jura Ena7 modifitseerimiseks koduautomaatika kaudu juhitavaks. See käsitleb elektrivõrgu elektriseadme muutmist, mis võib valesti toimides olla ohtlik. Siin olev teave võib olla puudulik, ebatäpne ja ebaturvaline. Jätka ettevaatlikult. Vastutust ei võeta.

Samm 2: Vajalik varustus

Vajalik varustus
Vajalik varustus
Vajalik varustus
Vajalik varustus
Vajalik varustus
Vajalik varustus

Osad

  • ESP-01 moodul ja selle programmeerimise viis (Arduino IDE ja füüsiline adapter programmeerimiseks)
  • Kahesuunaline releemoodul EBAY
  • 5v -> 3.3v regulaator EBAY
  • Väike 5v võrgutoitega telefonilaadija
  • Loogika taseme muundur* Freetronics
  • Muu juhe, tihvtide päised, kahaneb jne selle ühendamiseks.

Tööriistad

  • Peene otsaga jootekolb
  • Jootma
  • Traadi eemaldajad on käepärased
  • Torx T15 draiver
  • Ovaalne turvatööriist (või tehke see, võtab vaid paar minutit)

*Algselt kasutasin masina kõigi jadakäskude testimisel arduino UNO -d ja see töötas veatult, kuid ESP -moodul keeldus töötamast. Kontrollisin koodi kolm korda ja olin kindel, et ESP-moodulist väljuvad käsud olid samad, mis arduino, kuid see oli keelatud. Panin selle ESP -mooduli juurde ainult 3.3v loogikaga ja mitte 5V -ga. Kui ma loogikamuunduri sisse panin, töötas see hästi. Teistes masinates võib seda nõuda või mitte.

Ideaalis oleks teil olemasolev koduautomaatikasüsteem, mis toetab MQTT -protokolli (näiteks openhab), kuna see on projekti eesmärk. Kui soovite seda lihtsalt juhtida veebilehe nuppude kaudu ilma tugisüsteemideta, peate sisseehitatud veebilehe koodi muutma. Selle saavutamine pole liiga keeruline (võib -olla rev2..)

3. samm: Jura protokoll

Jura protokoll
Jura protokoll

Andmed masinasse/masinast on ainult seeria @ 9600, kuid Jural on ka mõningaid nippe varrukas. Protokoll kasutab seda kas täiendava ECC jaoks ja/või side hägustamiseks. Lihtsamalt öeldes on iga andmebait (tähemärk) jagatud kaheks ja viieks bitiks nelja standardse jadabaidi kohta, mille vahele jääb 8 ms paus. Kui soovite teada, kuidas see töötab, on siin linkidel palju teavet.

Protokolli teave pärineb aadressilt:

Arduino kood lihtsustab seda, võimaldades teil edastada standardseid, inimloetavaid käske, mille see seejärel Jura protokolli üle võtab.

Minu kood on kombinatsioon koodist: https://github.com/oliverk71/Coffeemaker-Payment- …

Ülaltoodud saitidel viidatud käsud ei olnud minu masina jaoks täpsed, kuid katse -eksitusmeetodi abil suutsin tulla järgmisega:

FA: 01 - lülitub välja (kuid tundub, et ei loputa, isegi kui vaja) FA: 02 - vastab "ok", kuid pole kindel, mida see teeb. FA: 03 - Loputusteade (sunnib ekraanile loputusteate, vajutades pöörlevat loputusmasinat) FA: 04 - Loputustoiming - Loputab, kui kuvatakse teade „Vajutage pöördnuppu”, vastasel juhul ei tee midagi FA: 05 - Tugev ekraanil (Eeldatavasti ühendage see tugeva kohvi valmistamisega) FA: 06 - tugev ekraan (eeldatavasti kombineerige see tugeva kohvi valmistamisega) FA: 07 - ekraanil olev „eriline”, kuid ei tee tegelikult midagi, pole kindel, mis see on: 08 - Steam FA: 09 - Väike kohv FA: 0A - Suur kohv

On ka muid käske, kuid sellest piisab minu jaoks…

Olge tundmatute käskude andmisel ettevaatlik, näiteks ilmselt kustutab AN: 0A masina EEPROMi.

4. samm: demonteerimine

Masina enda avamine ei ole liiga lihtne, kuna vajate veidi spetsiaalseid tööriistu, kuid innukas inimene leiab selle - teil on vaja T15 Torxi otsikut ja kahe kruvi jaoks ovaalset võtit. Torx, mis mul juba oli, ovaalne tööriist, mille tegin 4 mm pistikupoldist, puuriti välja ja haamriga natuke lapikuks.

Siin on juhised üsna hästi esitatud-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

Samm: garantii tühistamine

Garantii tühistamine
Garantii tühistamine
Garantii tühistamine
Garantii tühistamine
Garantii tühistamine
Garantii tühistamine
Garantii tühistamine
Garantii tühistamine

Masinasse sisenedes näete peamisi komponente. Peamise toitepistiku all on kena koht 5v laadija lisamiseks.

Lisasin (vooluvõrguga) juhtmed masina sisenemisel klemmliistule ja jootsin/kuumutasin need 5V laadija vooluvõrkudele. Minu konkreetne mudel ei olnud USB -pordi tüüp, vaid see, mille juhe oli püsivalt ühendatud. Teil ei pruugi olla piisavalt ruumi, et USB -pordi tüüp saaks tegelikku USB -kaablit kasutada, kuid kui laadija avasite, võite USB -pordi eemaldada ja asendada standardjuhtmega 5v ja Gnd punktide vahel.

Soovi korral võite asendada mõne teise 5V toiteallika. 500mast peaks piisama.

Relemooduli jaoks on veski lähedal palju ruumi. Peame ühendama kaks releed, et need toimiksid paralleelselt peamiste toitelülititega. Lõikasin lihtsalt olemasolevad juhtmed lahti, eemaldasin, tinutasin, lisasin lisatraadi ja jootsin kokku (ärge unustage kuumaõhtu). Selle tegemiseks oli juhtmetes piisavalt lõtku.

Relee moodul hoitakse paigas kvaliteetse kahepoolse teibiga. Kui juhtmed on ühendatud ja liikumisruum on piiratud, isegi kui teip kaotab haarde, ei lähe moodul liiga kaugele ega puutu kokku metallesemetega.

Samuti testisin oma masina diagnostikaporti, et teha kindlaks siseühenduste asukoht, et saaksin saavutada täiesti varjatud integratsiooni. Kasutatakse ainult tx, rx ja Gnd juhtmeid.

Kui teil on kaubanduslikum masin, mis toetab ooterežiimi pinget ja/või te ei soovi oma masinale garantiid tühistada, saate selle asemel ühendada otse diagnostikaporti, kuid ei pruugi seda seadet kasutades masinat sisse lülitada.

Minu masin kasutab 7 -kontaktilist pistikut. Vasakult paremale on see:

NC Tx G Rx NC 5v NC

Emaplaadi vastavad tihvtid: punane = Gnd oranž = Rx must = Tx

Lisateavet leiate siit:

6. toiming: loogilise külje ühendamine

Loogilise poole juhtmestik
Loogilise poole juhtmestik
Loogilise poole juhtmestik
Loogilise poole juhtmestik
Loogilise poole juhtmestik
Loogilise poole juhtmestik

Vaadake diagramm üle - see tundub liiga keeruline, kuid tegelikult pole see nii.

Paigaldasin nivoo muunduri (kahepoolse) pingeregulaatori tagaküljele kahepoolse teibiga. Seejärel jootsin mõne komponendijala abil nivoo muunduri mõlemal küljel asuvaid toite- ja maandusnõelu vastavateks võimsusmooduli tihvtideks. Seejärel töötab kogu see moodul ESP-01 kogu loogika ja toiteallika jaoks läbipääsuna.

Ma kasutasin seeriaandmete jaoks kahte keskmist muundurit ja relee sõidusignaalide jaoks kahte välimist muundurit, kuid pole vahet, millist te kasutate.

Nende releemoodulitega pole tegelikult vaja 5v loogikat käivitada, kuna need on LOW aktiivsed, kuid see lihtsalt töötas kenasti, nii et tegin seda ikkagi.

Kasutasin ESP mooduliga ühendamiseks 4x2 naissoost päist. See võimaldab koodi hõlpsalt üles laadida või moodulit asendada.

Diagrammil pole 5V sisendit - ma ühendasin oma otse releemooduliga (vt teine pilt). Pildi vasakus alanurgas olev must traat on seeriaandmed emaplaadile. Kasutasin osa varjestatud 3,5 mm kõrvaklappide pikenduskaablist, et vähendada andmesidehäirete tõenäosust.

Kood 12f kasutab riistvara jada asemel SoftwareSerialit - see võimaldab moodulil tavalise seeria kaudu silumiseks tagasi anda. Ühendused toimuvad hoopis tihvtide 4 ja 5 kaudu. Ma kohandasin sama päist, et muuta ESP12F ESP-01 pistikupesaks, vahetades lihtsalt need jadapoldid

7. samm: mooduli programmeerimine

Mooduli programmeerimine
Mooduli programmeerimine

Kood koostati Arduino 1.8.1 vastu, koos ESP8266 tahvli lisandiga ja PubSubClient 2.6.0 -ga (mis on MQTT raamatukogu)

Muutke koodi vastavalt oma vajadustele ja laadige kood ESP-01 moodulisse ning ühendage masinaga. Olge tihvtide orientatsiooniga ettevaatlik!

Seadistamine

Valik 1)

Ainult zip -põhikood. ESP -mooduli esmakordsel käivitamisel läheb see AP -režiimi ja määrab selle IP -väärtuseks 192.168.4.1. Seejärel saate mooduliga ühenduse luua, IP -d muuta ja oma pääsupunktiga ühenduse luua. Samuti peate oma masinale selles vahemikus määrama IP -aadressi, kuna moodulil pole DHCP -d.

AP vaikeseade on vaikimisi ESPSwitch ja parool on 12345678

Vaikimisi jääb see AP -režiimi 2 minutiks. Seda seadet saate muuta kaustas „global.h” - selle nimi on „adminTimeout” ja see kuvatakse millisekundites. Soovitan muuta selle madalaks, kui teil on EEPROMis kehtiv konfiguratsioon, sest muidu põhjustab see seadme käivitamisel tarbetuid viivitusi.

Valik 2)

See on vaikerežiim uuemale koodile, mis toetab kahesuunalisi kommentaare, valik 1 pole saadaval. Samuti saate SSO/parooli vaikeseadeid muuta põhilises failis (otsige "// DEFAULT CONFIG"), nii et see laaditakse need sätted sisestatakse EEPROM -i esmakordsel käivitamisel ja muudetakse administraatori režiimi viivitus millekski „global.h” -le madalaks. See väldib ajutise AP -ga ühenduse loomisega segadust.

Seade määrab automaatselt oma MQTT id (ja tellimustee) moodulite seerianumbri viimasele neljale numbrile. Vaikimisi on tee ha/mod //#, muutke oma äranägemise järgi, kuid lugege koodi kommentaare, veendumaks, et sobival massiivil on õige pikkus.

Teen seda, sest see tähendab, et ma ei pea iga võrgu mooduli jaoks unikaalset ID -d looma.

Seadme ID on nähtav ja MQTT -serverit saab seadistada sisemise veebiserveri MQTT -serveri lehe kaudu

Samm: pange see asju tegema…

MQTT käsud on

ha/mod/xxxx/0 või 1 = võimsuse vahetamine

Mis tahes muud stringi käsitletakse käsuna ja saadetakse jadapordi kaudu. HEX -i olekust teatatakse /ha /kohvi

Koos OpenHABiga

kohvimasin.üksused

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

Sisukaart

Group item = "Kohvimasin" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Vaheta üksust = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Loputus"] Tekstiüksus = Coffee_Status label = "Olek [%s] "}

voicecontrol.reeglid

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

reegel "Häälkäskluse reeglid"

kui element VoiceCommand sai käsu, siis käsk var String = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand saanud"+käsk)

if (command.contains ("lülita kohvimasin sisse") || command.contains ("lülita kohvimasin välja")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("tee mulle väike kohv")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("tee mulle suur kohv")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("loputa kohvimasin")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} lõpp

Reeglid (HEX -vastuste tõlgendamiseks tegelikuks väärtuseks):

reegel "Kohvimasina olek", kui üksus Coffee_Machine_Status sai värskenduse, siis var String response = Coffee_Machine_Status.state.toString () if (response.indexOf ("ic:")> -1) {var String hexString = response.substring (3, 5))

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

var String binaryString = String.format ("%8s", Integer.toBinaryString (arv)). asenda ('', '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)

kui (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, "Valmis")}

}

if (response == "Off") {postUpdate (Coffee_Status, "Off")} lõpp

9. samm: täiustused/ülesanne

Lihtsustage esmast seadistamist WiFi -ga ühenduse loomiseks - Valmis. Hülgas idee administraatori režiimist, kuna see oli tüütu. Nüüd lihtsalt sisestage koodi SSID ja parool. Salvestab EEPROM -i, kui värskendate/muudate veebiliidese kaudu.

Uuem kood toetab ka OTA värskendusi, kuid selle toimimiseks või vastavate OTA-üksuste kommenteerimiseks peate uuendama ESP-01 mooduli EEPROM-i

Lisage kood masina vastuste töötlemiseks ja lugege olekut nagu salve pole, tühjad alused ja paagi täitmine - Valmis. Olen lisanud koodi oleku lugemiseks ja ha/kohvis avaldamiseks. Need on vaid toored vastused ja ma töötan endiselt nende tõlgendamisega, kuid siiani on mul salv puudu ja paak tühi. See küsitleb masinat iga 9 sekundi järel ja avaldab vastuse MQTT -le

Vastus on HEX, kuid üksikud bitid näitavad andureid

Lisage veebisaitidele kood otseseks juhtimiseks HTTP GET -käskude kaudu.

Asjade Interneti konkurss 2017
Asjade Interneti konkurss 2017
Asjade Interneti konkurss 2017
Asjade Interneti konkurss 2017

Esimene auhind asjade interneti konkursil 2017

Soovitan: