Sadržaj:

Aparat za kavu s omogućenim IoT -om: 9 koraka (sa slikama)
Aparat za kavu s omogućenim IoT -om: 9 koraka (sa slikama)

Video: Aparat za kavu s omogućenim IoT -om: 9 koraka (sa slikama)

Video: Aparat za kavu s omogućenim IoT -om: 9 koraka (sa slikama)
Video: Настройте свою кофемашину NESCAFÉ® Dolce Gusto® Infinissima от Krups® 2024, Septembar
Anonim
Image
Image
Potrebna oprema
Potrebna oprema

Ova instrukcija je prijavljena na IoT takmičenje - ako vam se sviđa, glasajte za nju

AŽURIRANO: Sada podržava dvosmjerne komunikacije i OTA ažuriranja

Već neko vrijeme imam aparat za kavu Jura i uvijek sam ga htio nekako automatizirati.

Već nekoliko godina vodim osnovni sistem kućne automatizacije, ali aparat za kafu nije bilo nešto što je jednostavno modifikovati (ili sam barem tako mislio). Jura aparati za kavu općenito imaju "dijagnostički port" i/ili port koji se koristi za dodavanje platnog sistema u aparat, međutim nisam mogao pronaći nikakve informacije o tome kako se on može koristiti. U novije vrijeme, pojedini pojedinci su protokol rekonstruisali i objavili. Problem je bio u tome što se većina referenci na dostupne funkcije odnosila na mnogo veće mašine od mojih (Ena 7).

Povrh toga, moja mašina nema stalno napajanje u stanju pripravnosti kao veće mašine, već ima visokonaponski prekidač zbog kojeg se napajanje "zaključava". Fizičko dugme na stroju zapravo aktivira 2 prekidača - jedan niski napon (logička strana, isključivanje) i jedan visoki napon (uključivanje). Oba prekidača su trenutna.

Također sam trebao biti siguran da stroj i dalje radi 100% neovisno o bilo kojem kontrolnom mehanizmu, tj. Stroj i dalje funkcionira normalno kao da nije omogućen IoT.

Za automatizaciju aparata potrebne su dvije stvari: 1) Da biste mogli kontrolirati napajanje aparata 2) Da biste mogli komunicirati sa aparatom za aktiviranje funkcija za pripremu kave, ispiranje itd.

Korak 1: Kako ćemo to učiniti

Koristit ćemo ESP8266 'ESP-01' modul za povezivanje na kućni wifi i pretplatiti se na MQTT server/temu koja sluša komande. 'Prednji kraj' koji sam koristio je OpenHAB2, ali nema razloga da ga ne dodate u web sučelje na uređaju i izravno kontrolirate ako to želite ili putem HTTP Get naredbi.

ESP8266 će upravljati upravljanjem 2 releja koji se odnose na dugme za uključivanje i takođe će obraditi serijske komande ka/iz aparata za kafu.

UPOZORENJE - Ovo uputstvo opisuje postupak koji sam koristio za izmjenu svog Jura Ena7 aparata za kavu za upravljanje putem kućne automatizacije. Bavi se izmjenom mrežnog uređaja koji može biti opasan ako se nepravilno izvodi. Podaci ovdje mogu biti nepotpuni, netočni i nesigurni. Nastavite s oprezom. Ne prihvatamo nikakvu odgovornost.

Korak 2: Potrebna oprema

Potrebna oprema
Potrebna oprema
Potrebna oprema
Potrebna oprema
Potrebna oprema
Potrebna oprema

Delovi

  • ESP-01 modul i način programiranja (Arduino IDE i fizički adapter za programiranje)
  • 2 -smjerni relejni modul EBAY
  • 5v -> 3.3v Regulator EBAY
  • Mali punjač za telefon sa 5V napajanjem iz mreže
  • Pretvarač logičkog nivoa* Freetronics
  • Ostala žica, zaglavlja iglica, termoskupljanje itd. Za sve povezivanje.

Alati

  • Lemilica sa finim vrhom
  • Solder
  • Skidači žice su zgodni
  • Torx T15 upravljački program
  • Ovalni sigurnosni alat (ili ga napravite, traje samo nekoliko minuta)

*U početku sam koristio arduino UNO u testiranju svih serijskih komandi na mašini i radio je besprekorno, međutim ESP modul je odbio da radi. Triput sam provjerio kôd i bio sam siguran da su naredbe koje izlaze iz ESP modula iste kao i arduino, međutim to je bilo zabranjeno. Ovo sam stavio na ESP modul koji radi samo na 3.3v logici, a ne na 5V. Kad sam stavio Logic pretvarač, radio je dobro. To može, ali i ne mora biti potrebno na drugim mašinama.

U idealnom slučaju, imali biste postojeći sistem kućne automatizacije koji podržava MQTT protokol (kao što je openhab) jer je tome cilj projekta. Ako ga samo želite kontrolirati pomoću gumba na web stranici bez ikakvih podržavajućih sustava, morat ćete unijeti neke promjene u kôd ugrađene web stranice. Nije previše komplicirano postići (možda rev2..)

Korak 3: Jura protokol

Protokol Jura
Protokol Jura

Podaci do/sa stroja su samo serijski @ 9600, ali i Jura ima neke trikove u rukavu. Protokol ili koristi ovo za dodatni ECC i/ili za ometanje komunikacije. Jednostavno rečeno, svaki bajt podataka (znak) podijeljen je na bitove 2 i 5 od 4 standardna serijska bajta praćena pauzom od 8 ms. Ako želite saznati kako ovo funkcionira, na linkovima ovdje ima mnogo informacija.

Informacije o protokolu izvučene sa:

Arduino kôd to pojednostavljuje, omogućujući vam prijenos standardnih, čitljivih naredbi koje čovjek može prenijeti u Jura protokol.

Moj kôd je kombinacija koda sa:

Komande navedene na gore navedenim stranicama nisu bile točne za moju mašinu, ali metodom pokušaja i grešaka uspio sam doći do sljedećeg:

FA: 01 - Isključuje se (ali ne ispire, čak i ako je potrebno) FA: 02 - Odgovara "u redu", ali nije siguran šta radi. FA: 03 - Poruka o ispiranju (Forsira poruku 'ispiranje' na ekranu, pritiskom na rotirajuću mašinu za ispiranje) FA: 04 - Radnja ispiranja - Ispire se kada se pojavi poruka 'Pritisnite dugme za okretanje', inače ništa ne čini FA: 05 - Jako na ekranu (Vjerovatno se ovo kombinira s pravljenjem jake kave) FA: 06 - Jaka na ekranu (Vjerovatno se ovo kombinira s jačom pripremom kave) FA: 07 - 'Posebno' na ekranu, ali zapravo ne radi ništa, nisam siguran čemu služi: 08 - Steam FA: 09 - Mala kafa FA: 0A - Velika kafa

Postoje i druge naredbe, ali meni je ovo dovoljno …

Budite oprezni pri izdavanju nepoznatih naredbi, na primjer, očigledno AN: 0A će izbrisati EEPROM uređaja …

Korak 4: Rastavljanje

Otvaranje same mašine nije pretjerano jednostavno jer su vam potrebni malo posebni alati, ali iskusna osoba će pronaći način - potreban vam je T15 Torx bit i 'ovalni ključ' za 2 vijka. Torx koji sam već imao, ovalni alat koji sam napravio od vijka sa utičnom glavom od 4 mm izbušen i malo spljošten čekićem.

Ovdje su upute prilično dobro predstavljene-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

Korak 5: poništavanje garancije

Poništavanje garancije
Poništavanje garancije
Poništavanje garancije
Poništavanje garancije
Poništavanje garancije
Poništavanje garancije
Poništavanje garancije
Poništavanje garancije

Kad uđete u stroj, vidjet ćete glavne komponente. Glavni ulaz za napajanje ima lijepo mjesto ispod za dodavanje 5v punjača.

Dodao sam (mrežne ocjene) žice na priključni blok na ulazu u mašinu i lemio ih/zagrijavao na mrežne igle 5V punjača. Moj određeni model nije bio tip USB porta, već onaj koji je imao trajno priključen provodnik. Možda nemate dovoljno mjesta za USB priključak tipa jedan da biste mogli koristiti stvarni USB kabel, ali ako ste otvorili punjač, mogli biste ukloniti USB priključak i zamijeniti ga standardnom žicom do 5v i Gnd točaka.

Ako želite, možete zamijeniti drugo napajanje s naponom od 5 V. 500ma bi trebalo biti dovoljno.

U blizini brusilice ima dovoljno prostora za relejni modul. Moramo spojiti dva releja da rade paralelno s glavnim prekidačima za napajanje. Jednostavno sam presjekao postojeće žice, ogolio ih, pokosio, dodao dodatnu žicu i lemio ih zajedno (ne zaboravite na hladnjak). Bilo je dovoljno opuštanja u žicama za to.

Relejni modul pričvršćen je dvostranom trakom dobre kvalitete. Sa spojenim žicama i sa samo ograničenim prostorom za kretanje, čak i ako traka izgubi prianjanje, modul neće otići predaleko i neće moći doći u dodir s metalnim predmetima.

Također sam provjerio dijagnostički port na svom računaru kako bih odredio lokaciju internih veza kako bih mogao postići potpuno skrivenu integraciju. Koriste se samo žice tx, rx i Gnd.

Ako imate komercijalniji stroj koji podržava napon u stanju mirovanja i/ili ne želite poništiti jamstvo za svoj uređaj, umjesto toga se možete spojiti izravno na dijagnostički port, ali možda nećete moći uključiti uređaj pomoću ovog uređaja.

Moja mašina koristi 7 -polni konektor. S lijeva na desno to je:

NC Tx G Rx NC 5v NC

Odgovarajući pinovi na matičnoj ploči: Crvena = Gnd Narandžasta = Rx Crna = Tx

Više informacija možete pronaći na pinout-ovima ovdje:

Korak 6: Ožičenje logičke strane

Ožičenje logičke strane
Ožičenje logičke strane
Ožičenje logičke strane
Ožičenje logičke strane
Ožičenje logičke strane
Ožičenje logičke strane

Pregledajte dijagram - Izgleda previše komplicirano, ali zapravo nije.

Pretvarač razine montirao sam na stražnju stranu (depiniranog) regulatora napona pomoću neke dvostrane trake. Zatim sam upotrijebio neke komponente nogu za lemljenje pinova za napajanje i uzemljenje s obje strane pretvarača nivoa na odgovarajuće pinove modula za napajanje. Cijeli ovaj modul tada radi kao „prolaz“za svu logiku i napajanje za ESP-01.

Koristio sam dva srednja pretvarača za serijske podatke, a dva vanjska za relejne upravljačke signale, ali nije važno koji koristite.

Zapravo nije potrebno s ovim relejnim modulima pokretati 5v logiku jer su aktivni NISKO, ali jednostavno je lijepo funkcioniralo pa sam to ipak učinio.

Koristio sam žensko zaglavlje 4x2 za spajanje na ESP modul. To omogućava jednostavno učitavanje koda ili zamjenu modula.

Na slici nije prikazan 5V ulaz - ja sam svoj spojio direktno na relejni modul (vidi drugu sliku). Crna žica u donjem lijevom kutu slike serijski je podatak s glavne ploče. Koristio sam dio zaštićenog produžnog kabla od 3,5 mm za slušalice samo kako bih smanjio šanse za smetnje u podatkovnoj liniji.

Kod 12f koristi SoftwareSerial umjesto hardverske serije - Ovo omogućava modulu da prijavi status radi otklanjanja grešaka natrag putem normalne serijske serije. Umjesto toga, veze se izvode putem pinova 4 i 5. Isti zaglavlje sam prilagodio kako bih ESP12F napravio kao zamjenu za ESP-01, samo zamijenivši te serijske pinove

Korak 7: Programiranje modula

Programiranje modula
Programiranje modula

Kôd je sastavljen u odnosu na Arduino 1.8.1 sa dodatkom ploče ESP8266 i PubSubClient 2.6.0 (što je MQTT biblioteka)

Izmijenite kôd prema svojim zahtjevima i prenesite kôd u modul ESP-01 i povežite se na uređaj. Budite oprezni s orijentacijom iglica!

Konfiguracija

Opcija 1)

Samo na osnovnom kodu u zip -u. Kada se ESP modul prvi put pokrene, prelazi u AP način rada i postavlja IP na 192.168.4.1. Zatim se možete povezati s modulom i promijeniti IP i povezati se sa svojom pristupnom tačkom. Također ćete morati postaviti IP za svoju mašinu u tom rasponu jer na modulu nema DHCP -a.

Zadani AP SSID je 'ESPSwitch', a lozinka je '12345678'

Prema zadanim postavkama ostaje u AP načinu rada 2 minute. Ovu postavku možete promijeniti u 'global.h' - Zove se 'adminTimeout' i nalazi se u milisekundama. Preporučujem da ovo promijenite na nešto nisko nakon što imate valjanu konfiguraciju u EEPROM -u jer će u protivnom samo uzrokovati nepotrebna kašnjenja pri pokretanju uređaja.

Opcija 2)

Ovo je zadani način rada za noviji kôd koji podržava dvosmjernu komunikaciju, opcija 1 nije dostupna. Također možete promijeniti zadane postavke SSID/lozinke u glavnoj ino datoteci (potražite '// DEFAULT CONFIG') kako bi se učitala te postavke u EEPROM pri prvom pokretanju i mijenjaju kašnjenje administratorskog načina rada na nešto nisko u 'global.h'. Time se izbjegava petljanje oko povezivanja na privremenu AP.

Uređaj će automatski postaviti svoj MQTT ID (i putanju pretplate) na posljednje 4 znamenke serijskog broja modula. Putanja je prema zadanim postavkama ha/mod //#, promijenite kako vam odgovara, ali pročitajte komentare u kodu kako biste bili sigurni da odgovarajući niz ima ispravnu dužinu.

Ovo radim jer to znači da ne moram generirati jedinstveni ID za svaki modul na svojoj mreži.

ID uređaja je vidljiv i MQTT server se može postaviti putem stranice MQTT servera na internom web serveru

Korak 8: Učinite to stvarima…

MQTT komande su

ha/mod/xxxx/0 ili 1 = Uključivanje/isključivanje

Bilo koji drugi niz bit će tretiran kao naredba i poslan putem serijskog porta. Status se prijavljuje /ha /coffee u HEX -u

Sa OpenHAB -om

coffeemachine.items

Broj Coffee_Machine_Power "Power" {mqtt = "> [control: ha/mod/8002/: command:*: default]"} Niz Coffee_Machine_Status {mqtt = "<[kontrola: ha/kava: stanje: zadano]"}

Sitemap

Stavka grupe = "Aparat za kavu" {Switch item = Coffee_Machine_Power label = "Power" preslikavanja = [1 = "Toggle"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Mala"] Promijeni stavku = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Promijeni stavku = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Ispiranje"] Tekstualna stavka = Coffee_Status label = "Status [%s] "}

voicecontrol.rules

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

pravilo "Pravila glasovne komande"

kada je stavka VoiceCommand primila naredbu tada je Var String naredba = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand primljena"+naredba)

if (command.contains ("uključite aparat za kafu") || command.contains ("isključite aparat za kafu")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("napravi mi malu kafu")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("napravi mi veliku kafu")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("isperite aparat za kafu")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} end

Pravila (za tumačenje HEX odgovora u 'stvarne' vrijednosti):

pravilo "Status aparata za kavu" kada je stavka Coffee_Machine_Status primila ažuriranje, tada 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 (num)). replace ('', '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)

if (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")} kraj

Korak 9: Poboljšanja/Todo

Pojednostavite početno postavljanje povezivanjem na WiFi - Gotovo. Odustao od ideje 'administratorskog moda' jer je bio dosadan. Sada samo unesite SSID i lozinku u kôd. Čuva se na EEPROM -u ako ažurirate/promijenite putem web sučelja.

Noviji kôd također podržava OTA ažuriranja, ali ćete morati nadograditi EEPROM na modulu ESP-01 da bi ovo radilo ili komentirati odgovarajuće OTA stavke

Dodajte kôd za obradu odgovora sa stroja i pročitajte status kao da nema pladnja, prazne zemlje i punjenja rezervoara - Gotovo. Dodao sam kôd za ponovno čitanje statusa i objavljivanje u ha/coffee. Ovo su samo sirovi odgovori i još uvijek radim na njihovom tumačenju, ali zasad mi nedostaje ladica, a spremnik prazan. On uključuje uređaj svakih 9 sekundi kada je uključen i objavljuje odgovor na MQTT

Odgovor je u HEX -u, ali pojedinačni bitovi ukazuju na senzore

Dodajte kôd web stranicama za direktnu kontrolu putem HTTP GET naredbi.

Takmičenje Internet stvari 2017
Takmičenje Internet stvari 2017
Takmičenje Internet stvari 2017
Takmičenje Internet stvari 2017

Prva nagrada na takmičenju Internet of Things 2017

Preporučuje se: