INHOUDSOPGAWE:

IoT -koffiemasjien: 9 stappe (met foto's)
IoT -koffiemasjien: 9 stappe (met foto's)

Video: IoT -koffiemasjien: 9 stappe (met foto's)

Video: IoT -koffiemasjien: 9 stappe (met foto's)
Video: РАДУЖНЫЕ ДРУЗЬЯ — КАЧКИ?! НЕЗАКОННЫЕ Эксперименты VR! 2024, Julie
Anonim
Image
Image
Toerusting benodig
Toerusting benodig

Hierdie instruksie is deel van die IoT -kompetisie - as u daarvan hou, stem asseblief daarvoor

OPgedateer: Ondersteun nou tweerigtingkommissies en OTA -opdaterings

Ek het al 'n geruime tyd 'n Jura -koffiemasjien en ek wou dit altyd op 'n manier outomatiseer.

Ek werk al 'n paar jaar met 'n basiese outomatiseringsstelsel, maar die koffiemasjien was nie maklik om te verander nie (of so het ek gedink). Jura -koffiemasjiene het gewoonlik 'n 'diagnostiese poort' en/of 'n poort wat gebruik word om 'n betaalstelsel by die masjien te voeg, maar ek kon geen inligting vind oor hoe dit gebruik kan word nie. Meer onlangs is die protokol deur sommige individue omgekeer en openbaar gemaak. Die probleem was dat die meeste verwysings na die beskikbare funksies na baie groter masjiene as myne was (Ena 7).

Boonop het my masjien nie 'n permanente bystandskrag soos die groter masjiene nie, maar 'n HV -skakelaar wat die kragtoevoer laat aansluit. Die fisiese knoppie op die masjien aktiveer eintlik 2 skakelaars - een lae volt (logiese kant, af) en een hoogspanning (aan). Beide skakelaars is kortstondig.

Ek moes ook seker maak dat die masjien steeds 100% onafhanklik van enige beheermeganisme werk, dws die masjien funksioneer nog steeds normaal asof dit nie IoT -aangeskakel is nie.

Om die masjien te outomatiseer, verg twee dinge: 1) Om die krag na die masjien te beheer 2) Om met die masjien te kan kommunikeer om die funksies vir die maak van koffie, spoel ens.

Stap 1: Hoe ons dit gaan doen

Ons sal 'n ESP8266 'ESP-01' module gebruik om aan te sluit by die tuis wifi en in te teken op die MQTT bediener/onderwerp om opdragte te luister. Die 'Front End' wat ek gebruik het, is OpenHAB2, maar daar is geen rede dat u nie by die webkoppelvlak van die toestel kan voeg nie en dit direk kan beheer as u wil of via HTTP Get -opdragte.

Die ESP8266 hanteer die beheer van 2 relais wat verband hou met die aan/uit -knoppie en verwerk ook reeksopdragte van/na die koffiemasjien.

WAARSKUWING - Hierdie instruksies gee 'n uiteensetting van die prosedure wat ek gebruik het om my Jura Ena7 -koffiemasjien te verander om deur middel van tuisautomatisering beheer te word. Dit handel oor die wysiging van 'n elektrisiteitsapparaat wat gevaarlik kan wees as dit verkeerd uitgevoer word. Inligting hier kan onvolledig, onakkuraat en onveilig wees. Gaan versigtig voort. Geen aanspreeklikheid aanvaar nie.

Stap 2: Toerusting benodig

Toerusting benodig
Toerusting benodig
Toerusting benodig
Toerusting benodig
Toerusting benodig
Toerusting benodig

Dele

  • ESP-01-module en 'n manier om dit te programmeer (Arduino IDE en fisiese adapter vir programmering)
  • 2 -weg aflosmodule EBAY
  • 5v -> 3.3v Reguleerder EBAY
  • Klein selfoonlaaier met 'n 5V -aansluiting
  • Logika -omskakelaar* Freetronics
  • Diverse draad, penkoppe, hitte krimp, ens.

Gereedskap

  • Soldeerbout met fyn punt
  • Soldeer
  • Draadstroppers is handig
  • Torx T15 bestuurder
  • Ovaal veiligheidsinstrument (of maak een, dit neem slegs 'n paar minute)

*Ek het aanvanklik 'n arduino UNO gebruik om al die reeksopdragte aan die masjien te toets, en dit het foutloos gewerk, maar die ESP -module wou nie werk nie. Ek het die kode drie keer gekontroleer en ek was seker dat die opdragte wat die ESP-module verlaat dieselfde was as die arduino, maar dit was 'n no-go. Ek het dit neergesit by die ESP -module wat slegs werk op 3.3v logika en nie 5V nie. Sodra ek die Logic converter ingesit het, werk dit goed. Dit mag al dan nie in ander masjiene benodig word.

Ideaal gesproke sou u 'n bestaande outomatiseringsstelsel hê wat die MQTT -protokol (soos openhab) ondersteun, aangesien dit die doel is van die projek. As u dit net via knoppies op 'n webblad wil beheer sonder enige ondersteunende stelsels, moet u die ingeboude webbladsykode verander. Dit is nie te ingewikkeld om te bereik nie (miskien rev2..)

Stap 3: Die Jura -protokol

Die Jura -protokol
Die Jura -protokol

Die data van/na die masjien is slegs seriële @ 9600, maar Jura het ook 'n paar truuks. Die protokol gebruik dit óf vir ekstra ECC en/of om die kommunikasie te verduister. Eenvoudig gestel, elke greep data (karakter) word verdeel oor bisse 2 en 5 van 4 standaard seriële grepe wat deur 'n pouse van 8 ms gesleep word. As u wil leer hoe dit werk, is daar baie inligting in die skakels hier.

Protokolinligting verkry uit:

Die arduino -kode vereenvoudig dit, sodat u standaard, menslik leesbare opdragte kan stuur wat dit dan in die Jura -protokol omskakel.

My kode is 'n kombinasie van kode van:

Die opdragte waarna op die bogenoemde plekke verwys word, was nie akkuraat vir my masjien nie, maar deur middel van 'n toets -en -fout metode kon ek die volgende opdink:

FA: 01 - Skakel uit (maar dit lyk nie of dit gespoel word nie, selfs as dit nodig is) FA: 02 - Reageer 'ok', maar weet nie wat dit doen nie. FA: 03 - Spoelboodskap (dwing 'n 'spoel' -boodskap op die skerm, druk op die draaispoelmasjien) FA: 04 - Spoelaksie - Spoel as' Press Rotary button 'boodskap verskyn, anders doen niks FA: 05 - Sterk op die skerm (Kombineer dit vermoedelik met die maak van 'n koffie vir sterk) FA: 06 - Sterk op die skerm (Kombineer dit vermoedelik met die maak van 'n koffie vir sterk) FA: 07 - 'Spesiaal' op die skerm, maar doen eintlik niks, weet nie wat dit is nie FA: 08 - Steam FA: 09 - Small Coffee FA: 0A - Large Coffee

Daar is ander opdragte, maar dit is genoeg vir my …

Wees versigtig wanneer u onbekende opdragte uitreik, byvoorbeeld, AN: 0A sal die EEPROM van die masjien uitvee.

Stap 4: Demontering

Dit is nie baie maklik om die masjien self oop te maak nie, aangesien u 'n bietjie spesiale gereedskap nodig het, maar 'n kranige persoon sal 'n manier vind - u benodig 'n T15 Torx -bit en 'n 'ovaal sleutel' vir 2 skroewe. Die Torx wat ek alreeds gehad het, die ovaal gereedskap wat ek uit 'n 4 mm -bout gemaak het, het geboor en effens platgedruk met 'n hamer.

Die instruksies hier word redelik goed aangebied-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

Stap 5: Maak die waarborg ongeldig

Ongeldigstelling van die waarborg
Ongeldigstelling van die waarborg
Ongeldigstelling van die waarborg
Ongeldigstelling van die waarborg
Ongeldigstelling van die waarborg
Ongeldigstelling van die waarborg
Ongeldigstelling van die waarborg
Ongeldigstelling van die waarborg

As u eers in die masjien is, sien u die hoofkomponente. Die hoofaansluiting het 'n goeie plek om die 5v -laaier by te voeg.

Ek het by die ingang van die masjien drade by die aansluitblok gevoeg (met netspanning) en dit aan die hoofspelde van die 5v -laaier gesoldeer/verhit. My spesifieke model was nie 'n USB -poort nie, maar een wat die kabel permanent aangeheg het. U het moontlik nie genoeg ruimte vir 'n usb -poort tipe om 'n werklike USB -kabel te kan gebruik nie, maar as u die laaier oopgemaak het, kan u die USB -poort verwyder en vervang met 'n standaarddraad na die 5v- en Gnd -punte.

U kan 'n ander 5V -kragtoevoer vervang as u wil. 500ma behoort genoeg te wees.

Daar is genoeg ruimte vir die aflosmodule naby die slypmasjien. Ons moet die twee aflosse bedraad om parallel met die hoofskakelaars te werk. Ek het die bestaande drade eenvoudig afgesny, gestroop, geblik, 'n ekstra draad bygevoeg en weer aanmekaar gesoldeer (vergeet nie heatsink). Daar was genoeg speling in die drade om dit te doen.

Die aflosmodule word vasgemaak met dubbelzijdige band van goeie gehalte. Met die drade verbind en met slegs beperkte bewegingsruimte, selfs al verloor die band die greep, gaan die module nie te ver nie en kan hy nie in aanraking kom met metaalvoorwerpe nie.

Ek het ook die diagnostiese poort op my masjien teruggegee om die ligging van die interne verbindings te bepaal, sodat ek 'n heeltemal verborge integrasie kon bewerkstellig. Slegs tx-, rx- en Gnd -drade word gebruik.

As u 'n meer kommersiële masjien het wat 'n bystandspanning ondersteun en/of u nie die waarborg op u masjien wil vernietig nie, kan u in plaas daarvan direk aan die diagnostiese poort koppel, maar u kan moontlik nie die masjien met hierdie toestel aanskakel nie.

My masjien gebruik 'n 7 -pins aansluiting. Van links na regs is dit:

NC Tx G Rx NC 5v NC

Die ooreenstemmende penne op die hoofbord: Rooi = Gnd Oranje = Rx Swart = Tx

Meer inligting kan gevind word oor die pinouts hier:

Stap 6: Koppel die logiese kant

Bedrading van die logiese kant
Bedrading van die logiese kant
Bedrading van die logiese kant
Bedrading van die logiese kant
Bedrading van die logiese kant
Bedrading van die logiese kant

Hersien die diagram - dit lyk te ingewikkeld, maar dit is regtig nie.

Ek het die vlakomskakelaar aan die agterkant van die (afgebakende) spanningsreguleerder gemonteer met 'n dubbelzijdige band. Ek gebruik dan 'n paar komponentbene om die krag- en grondpenne aan weerskante van die vlakomvormer aan die ooreenstemmende kragmodulepenne te soldeer. Hierdie hele module werk dan soos 'n 'deurloop' vir al die logika en kragtoevoer vir die ESP-01.

Ek het die twee middelste omsetters gebruik vir die seriële data en die buitenste twee vir die relais seine, maar dit maak nie saak watter een u gebruik nie.

Dit is eintlik nie nodig met hierdie aflosmodules om 'n 5v -logika te gebruik nie, aangesien dit LOW aktief is, maar dit het net goed gewerk, so ek het dit in elk geval gedoen.

Ek het 'n 4x2 vroulike kop gebruik om aan te sluit op die ESP module. Hiermee kan u die kode maklik oplaai of die module vervang.

Die 5V -ingang word nie in die diagram afgebeeld nie - ek het myne direk aan die aflosmodule gekoppel (sien tweede prentjie). Die swart draad links onder in die prentjie is die reeks data na die hoofbord. Ek het 'n deel van 'n afgeskermde 3,5 mm -koptelefoonverlengkabel gebruik om die kans op inmenging in die datalyn te verminder.

Die 12f -kode gebruik SoftwareSerial in plaas van seriële hardeware - Hiermee kan die module status rapporteer vir terugfout via normale reeks. Verbindings is in plaas daarvan via penne 4 en 5. Ek het dieselfde kopskrif aangepas om van die ESP12F 'n inruil-ruil vir die ESP-01 te maak, net om die seriële penne te ruil

Stap 7: Programmering van die module

Programmering van die module
Programmering van die module

Kode is saamgestel teen Arduino 1.8.1 met ESP8266 -bord -addon en PubSubClient 2.6.0 (wat die MQTT -biblioteek is)

Verander die kode volgens u vereistes en laai die kode op na die ESP-01-module en maak verbinding met die masjien. Wees versigtig met die oriëntasie van die penne!

Konfigurasie

Opsie 1)

Slegs op die basiskode in zip. Wanneer die ESP -module eers begin, gaan dit in die AP -modus en stel sy IP op 192.168.4.1. U kan dan aan die module koppel en die IP verander en aan u eie toegangspunt koppel. U moet ook 'n IP vir u masjien in die reeks stel, aangesien daar geen DHCP op die module is nie.

Die standaard AP SSID is 'ESPSwitch' en die wagwoord is '12345678'

Dit bly standaard 2 minute in die AP -modus. U kan hierdie instelling verander in 'global.h' - dit word 'adminTimeout' genoem en is in millisekondes. Ek beveel aan dat u dit verander na iets laag as u 'n geldige konfigurasie in EEPROM het, aangesien dit andersins onnodige vertragings in die opstart van die toestel kan veroorsaak.

Opsie 2)

Dit is die standaardmodus vir die nuwer kode wat tweerigtingkommissies ondersteun, opsie 1 is nie beskikbaar nie. U kan ook die standaard SSID-/wagwoordinstellings in die hoof ino -lêer verander (kyk na '// DEFAULT CONFIG') sodat dit laai die instellings in die EEPROM met die eerste opstart en verander die vertraging van die admin -modus na iets laag in 'global.h'. Dit vermy dat u met die tydelike AP moet skakel.

Die toestel stel sy MQTT -ID (en intekeningpad) outomaties in op die laaste 4 syfers van die reeksnommer van die modules. Die pad is standaard ha/mod //#, verander na goeddunke, maar lees die opmerkings in die kode om seker te maak dat die toepaslike skikking die regte lengte het.

Ek doen dit omdat dit beteken dat ek nie 'n unieke ID hoef te genereer vir elke module op my netwerk nie.

Die toestel -ID is sigbaar en die MQTT -bediener kan ingestel word via die MQTT -bedienerbladsy op die interne webbediener

Stap 8: maak dinge reg …

Die MQTT -opdragte is

ha/mod/xxxx/0 of 1 = skakel krag aan

Enige ander string word as 'n opdrag behandel en via 'n seriële poort gestuur. Status word gerapporteer aan /ha /koffie in HEX

Met OpenHAB

koffiemasjien.items

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

Werfkaart

Groepitem = "Koffiemasjien" {Skakel item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Wissel item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Klein"] Wissel item = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Skakel item = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Spoel"] Teks item = Coffee_Status label = "Status [%s] "}

stembeheer.reëls

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

reël "Stemopdragreëls"

as item VoiceCommand die opdrag ontvang het, dan var String command = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand ontvang"+command)

if (command.contains ("skakel die koffiemasjien aan") || command.contains ("skakel die koffiemasjien uit")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("maak vir my 'n klein koffie")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("maak vir my 'n groot koffie")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("spoel die koffiemasjien")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} end

Reëls (vir die interpretasie van HEX -antwoorde in 'werklike' waardes):

reël "Koffiemasjienstatus" wanneer item Coffee_Machine_Status opdatering ontvang het dan 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)). vervang ('', '0')

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

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

as (trayBit == "0") {

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

}

if (response == "Off") {postUpdate (Coffee_Status, "Off")} beëindig

Stap 9: Verfynings/Todo

Vereenvoudig die aanvanklike opstelling om verbinding met wifi te maak - klaar. Het die idee van 'admin -modus' verlaat, want dit was irriterend. Voer nou net SSID en wagwoord in die kode in. Stoor in EEPROM as u via die webkoppelvlak opdateer/verander.

Nuwer kode ondersteun ook OTA-opdaterings, maar u moet die EEPROM op die ESP-01-module opgradeer om die ooreenstemmende OTA-items te laat werk of kommentaar te lewer

Voeg kode by vir die verwerking van antwoorde van die masjien en lees die status soos geen skinkbord, leë gronde en vulbak - Klaar. Ek het kode bygevoeg om die status terug te lees en aan ha/koffie te publiseer. Dit is net die onverwagte antwoorde, en ek werk nog steeds daaraan om dit te interpreteer, maar tot dusver het ek 'n skinkbord vermis en 'n tenk leeg. Dit stem elke 9 sekondes na die masjien en publiseer die antwoord op MQTT

Die reaksie is in HEX, maar individuele stukkies dui die sensors aan

Voeg kode by die webblaaie vir direkte beheer via HTTP GET -opdragte.

Internet of Things Wedstryd 2017
Internet of Things Wedstryd 2017
Internet of Things Wedstryd 2017
Internet of Things Wedstryd 2017

Eerste prys in die Internet of Things -wedstryd 2017

Aanbeveel: