Sisukord:
- Samm: kuidas me seda teeme
- Samm 2: Vajalik varustus
- 3. samm: Jura protokoll
- 4. samm: demonteerimine
- Samm: garantii tühistamine
- 6. toiming: loogilise külje ühendamine
- 7. samm: mooduli programmeerimine
- Samm: pange see asju tegema…
- 9. samm: täiustused/ülesanne
Video: IoT -toega kohvimasin: 9 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
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
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
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
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
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
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.
Esimene auhind asjade interneti konkursil 2017
Soovitan:
STONE Display +STM32 +kohvimasin: 6 sammu
STONE Display +STM32 +kohvimasin: Olen MCU tarkvarainsener, hiljuti sain projekti, et kavatsen olla kohvimasin, majapidamisnõuded puutetundliku ekraaniga, funktsioon on hea, ekraani valik ei pruugi olla väga hea, Õnneks suudan selle projekti tühistada
Nutikas kohvimasin - SmartHome'i ökosüsteemi osa: 4 sammu
Nutikas kohvimasin - osa SmartHome'i ökosüsteemist: häkkinud kohvimasin muutis selle SmartHome'i ökosüsteemi osaks. Mul on vana hea Delonghi kohvimasin (DCM) (mitte reklaam ja tahan, et see oleks "tark". Niisiis, häkkisin selle, installides ESP8266 moodul, millel on liides oma aju/mikrokontrolleriga, kasutades
WiFi kohvimasin: 9 sammu
WiFi kohvimasin: Wifi kohvimasin kasutab tassi kohvi ohutuks ja kaugjuhtimiseks Arduino, NODE MCU ja ringlussevõetud osi
JavaStation (isetäituv täisautomaatne IoT kohvimasin): 9 sammu (koos piltidega)
JavaStation (isetäituv täisautomaatne IoT kohvimasin): Selle projekti eesmärk oli valmistada täisautomaatne hääljuhtimisega kohvimasin, mis täidab end automaatselt veega ja kõik, mida peate tegema, on kliendid asendada ja kohvi juua; )
IOT kohvimasin (UFEE): 7 sammu (koos piltidega)
IOT kohvimasin (UFEE): teadmiste tõestuseks pidime looma IOT-seadme, mida saaks juhtida isetehtud veebiliidese kaudu. Kuna ma armastan kohvi ja tarbin seda iga päev palju, otsustasin teha oma IOT kohvimasina. UFEE kohvimasin: "