Taula de continguts:
- Pas 1: Com ho farem
- Pas 2: Equip necessari
- Pas 3: el protocol del Jura
- Pas 4: desmuntatge
- Pas 5: anul·lació de la garantia
- Pas 6: Connexió del costat lògic
- Pas 7: Programació del mòdul
- Pas 8: fer que faci coses …
- Pas 9: refinaments / Tot
Vídeo: Màquina de cafè activada per IoT: 9 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Aquest instructiu s’inscriu al concurs IoT. Si us agrada, voteu-lo
ACTUALITZAT: ara admet comunicacions de dues vies i actualitzacions OTA
Ja fa temps que tinc una màquina de cafè Jura i sempre he volgut automatitzar-la d’alguna manera.
Fa alguns anys que utilitzo un sistema domòtic bàsic, però la màquina de cafè no era una cosa senzilla de modificar (o això em pensava). Les màquines de cafè Jura solen tenir un "port de diagnòstic" i / o un port que s'utilitza per afegir un sistema de pagament a la màquina, però no he pogut trobar cap informació sobre com es podria utilitzar. Més recentment, el protocol va ser dissenyat inversament per algunes persones i es va fer públic. El problema era que la majoria de les referències a les funcions disponibles eren per a màquines molt més grans que les meves (Ena 7).
A més, la meva màquina no té una potència d'espera permanent com les màquines més grans, sinó que té un commutador d'alta tensió que fa que la font d'alimentació estigui "tancada". El botó físic de la màquina realment activa 2 interruptors: un de baix voltatge (costat lògic, apagat) i un alt voltatge (encès). Tots dos commutadors són momentanis.
També calia assegurar-me que la màquina continués funcionant al 100% independentment de qualsevol mecanisme de control, és a dir, que la màquina continués funcionant amb normalitat com si no estigués habilitada per l'IoT.
Per automatitzar la màquina es necessiten dues coses: 1) Poder controlar la potència de la màquina 2) Poder comunicar-se amb la màquina per activar les funcions de preparació de cafè, esbandida, etc.
Pas 1: Com ho farem
Utilitzarem un mòdul ESP8266 'ESP-01' per connectar-nos al wifi domèstic i subscriure-us al servidor / tema MQTT escoltant ordres. El "Front End" que he fet servir és OpenHAB2, però no hi ha cap raó per la qual no es pugui afegir a la interfície web del dispositiu i controlar directament si volia o mitjançant ordres HTTP Get.
L'ESP8266 gestionarà el control de 2 relés relacionats amb el botó d'engegada i també processarà ordres en sèrie des de / cap a la màquina de cafè.
ADVERTÈNCIA: aquest instructiu descriu el procediment que he utilitzat per modificar la màquina de cafè Jura Ena7 per controlar-la mitjançant la domòtica. Es tracta de modificar un dispositiu d’electricitat que pot resultar perillós si es realitza incorrectament. La informació aquí pot ser incompleta, inexacta i insegura. Procediu amb precaució. No s’accepta cap responsabilitat.
Pas 2: Equip necessari
Parts
- Mòdul ESP-01 i una manera de programar-lo (ID Arduino i adaptador físic per a la programació)
- Mòdul de relé de 2 vies EBAY
- 5v -> 3.3v Regulador EBAY
- Petit carregador de telèfon de 5V alimentat per xarxa
- Convertidor de nivell lògic * Freetronics
- Filferro divers, capçaleres de pins, encongiment, etc. per connectar-ho tot.
Eines
- Soldador de punta fina
- Soldar
- Els separadors de filferro són útils
- Controlador Torx T15
- Eina de seguretat ovalada (o fer-ne una, només triga uns quants minuts)
* Inicialment vaig utilitzar un arduino UNO en la prova de totes les ordres serials de la màquina i va funcionar perfectament, tot i que el mòdul ESP es va negar a funcionar. Vaig comprovar el codi per tres vegades i tenia la certesa que les ordres que sortien del mòdul ESP eren les mateixes que les de l’arduino, tot i que era inutilitzable. Ho poso al mòdul ESP només treballant en lògica de 3.3v i no de 5V. Un cop vaig posar el convertidor lògic, va funcionar bé. Això pot ser necessari o no en altres màquines.
L’ideal seria que tinguéssiu un sistema domòtic existent que admeti el protocol MQTT (com ara openhab), ja que a això s’orienta el projecte. Si només voleu controlar-lo mitjançant botons d'una pàgina web sense cap sistema de suport, haureu de fer alguns canvis al codi de pàgina web incrustat. No és massa complicat d'aconseguir (potser rev2..)
Pas 3: el protocol del Jura
Les dades cap a / des de la màquina només són el serial @ 9600, però Jura també té alguns trucs a la màniga. El protocol el fa servir per a ECC addicional i / o per confondre la comunicació. En poques paraules, cada byte de dades (caràcter) es divideix entre els bits 2 i 5 de 4 bytes sèrie estàndard arrossegats per una pausa de 8 ms. Si us interessa saber com funciona, hi ha molta informació als enllaços aquí.
Informació del protocol extreta de:
El codi arduino ho simplifica, cosa que us permet transmetre ordres estàndards llegibles per humans que després transmet al protocol Jura.
El meu codi és una combinació de codi de:
Les ordres a què es fa referència als llocs anteriors no eren exactes per a la meva màquina, però mitjançant un mètode d'assaig i error, vaig poder arribar a fer el següent:
FA: 01 - Apaga (però sembla que no esbandida, fins i tot si cal) FA: 02 - Respon "bé" però no sé ben bé què fa. FA: 03 - Missatge d'esbandida (Força un missatge "Esbandida" a la pantalla, prement la màquina d'esbandida rotativa) FA: 04 - Acció d'esbandida - Esbandida quan apareix el missatge "Premeu el botó giratori", en cas contrari no fa res FA: 05 - Fort a la pantalla (Presumiblement, combineu-ho amb fer un cafè per a forts) FA: 06 - Fort a la pantalla (presumiblement, combineu-ho amb fer un cafè per fer forts) FA: 07 - "Especial" a la pantalla, però en realitat no fa res, no estic segur de què serveix FA: 08 - Steam FA: 09 - Cafè petit FA: 0A - Cafè gran
Hi ha altres ordres, però això és molt per a mi …
Tingueu precaució quan emeteu ordres desconegudes, per exemple, aparentment AN: 0A netejarà la EEPROM de la màquina.
Pas 4: desmuntatge
Obrir la màquina en si no és massa fàcil, ja que necessiteu eines una mica especials, però una persona entusiasta trobarà la manera de fer-ho: necessiteu una broca Torx T15 i una "clau ovalada" per a 2 cargols. El Torx que ja tenia, l’eina oval que vaig fabricar amb un pern de cap de femella de 4 mm perforat i aplanat una mica amb un martell.
Les instruccions aquí estan força ben presentades:
Pas 5: anul·lació de la garantia
Un cop a la màquina, veureu els components principals. La presa d’alimentació principal té un bonic lloc per afegir el carregador de 5 V.
Vaig afegir cables (classificats a la xarxa) al bloc de terminals a l'entrada de la màquina i els heu soldat / encongit als passadors de xarxa del carregador de 5V. El meu model particular no era un port USB, sinó que tenia el cable connectat permanentment. És possible que no tingueu prou espai perquè un port USB tipus un pugui utilitzar un cable USB real, però si obriu el carregador, podeu treure el port USB i substituir-lo per un cable estàndard als punts 5v i Gnd.
Si voleu, podeu substituir una altra font d'alimentació de 5 V 500ma haurien de ser abundants.
Hi ha molt espai per al mòdul de relés a prop del molinet. Hem de connectar els dos relés per funcionar en paral·lel amb els interruptors d’alimentació principals. Simplement he tallat els cables existents, els he despullat, estanyat, he afegit un cable addicional i he tornat a soldar junts (no oblideu la contracció de calor). Hi havia prou folgància als cables per fer-ho.
El mòdul de relé es manté al seu lloc amb cinta de doble cara de bona qualitat. Amb els cables connectats i amb només un espai limitat per al moviment, fins i tot si la cinta perd l'adherència, el mòdul no anirà massa lluny i no podrà entrar en contacte amb cap objecte metàl·lic.
També he tornat a provar el port de diagnòstic de la meva màquina per determinar la ubicació de les connexions internes i així aconseguir una integració totalment oculta. Només s’utilitzen cables tx, rx i Gnd.
Si teniu una màquina més comercial que admet un voltatge d’espera i / o no voleu anul·lar la garantia a la vostra màquina, podeu connectar-vos directament al port de diagnòstic, però pot ser que no pugueu engegar la màquina mitjançant aquest dispositiu.
La meva màquina utilitza un connector de 7 pins. D'esquerra a dreta és:
NC Tx G Rx NC 5v NC
Els pins corresponents a la placa principal: vermell = Gnd taronja = Rx negre = Tx
Podeu trobar més informació als pinouts aquí:
Pas 6: Connexió del costat lògic
Reviseu el diagrama: sembla massa complicat, però realment no ho és.
Vaig muntar el convertidor de nivell a la part posterior del regulador de tensió (depinned) amb una cinta de doble cara. Aleshores vaig utilitzar algunes potes de components per soldar els pins d’alimentació i de terra a banda i banda del convertidor de nivell als pins corresponents del mòdul de potència. Tot aquest mòdul funciona com un "passthrough" per a tota la lògica i font d'alimentació de l'ESP-01.
He utilitzat els dos convertidors mitjans per a les dades de sèrie i els dos externs per als senyals de conducció del relé, però no importa el que utilitzeu.
En realitat, no és necessari amb aquests mòduls de relé executar una lògica de 5 V, ja que estan actius BAIX, però simplement va funcionar molt bé, així que ho vaig fer de totes maneres.
Vaig utilitzar una capçalera femella 4x2 per connectar-me al mòdul ESP. Això permet carregar fàcilment el codi o substituir el mòdul.
No apareix al diagrama l’entrada de 5V: he connectat la meva directament al mòdul de relé (vegeu la segona imatge). El cable negre situat a la part inferior esquerra de la imatge mostra les dades de sèrie que apareixen al tauler principal. He utilitzat una part d’un cable d’extensió d’auriculars blindat de 3,5 mm per ajudar a reduir les possibilitats d’interferències a la línia de dades.
El codi 12f utilitza SoftwareSerial en lloc de sèrie de maquinari: permet al mòdul informar de l'estat de depuració mitjançant sèrie normal. Les connexions es fan mitjançant els pins 4 i 5. Vaig adaptar la mateixa capçalera per fer de l'ESP12F un intercanvi d'endoll per l'ESP-01, només canviant els pins de sèrie
Pas 7: Programació del mòdul
El codi es va compilar contra Arduino 1.8.1 amb el complement ESP8266 i PubSubClient 2.6.0 (que és la biblioteca MQTT)
Modifiqueu el codi segons els vostres requisits i pengeu-lo al mòdul ESP-01 i connecteu-vos a la màquina. Vés amb compte amb l’orientació dels passadors!
Configuració
Opció 1)
Només al codi base en zip. Quan el mòdul ESP s’engega per primer cop, entra al mode AP i estableix la seva IP a 192.168.4.1. A continuació, podeu connectar-vos al mòdul i canviar la IP i connectar-vos al vostre propi punt d'accés. També haureu d’establir una IP per a la vostra màquina en aquest interval, ja que no hi ha DHCP al mòdul.
El SSID AP per defecte és "ESPSwitch" i la contrasenya és "12345678"
Per defecte, es manté en mode AP durant 2 minuts. Podeu canviar aquesta configuració a 'global.h': s'anomena "adminTimeout" i és en mil·lisegons. Recomano canviar-ho per una cosa baixa un cop tingueu una configuració vàlida a EEPROM, ja que en cas contrari provocarà retards innecessaris en l'arrencada del dispositiu.
Opció 2)
Aquest és el mode per defecte per al codi més recent que admet comunicacions bidireccionals, l'opció 1. No està disponible. També podeu canviar la configuració predeterminada SSID / Contrasenya al fitxer principal ino (busqueu '// DEFAULT CONFIG'), de manera que es carregarà aquests paràmetres a l'EEPROM al primer arrencada i canvien el retard del mode d'administrador a alguna cosa baixa a 'global.h'. D'aquesta manera s'evita haver de desordenar la connexió a l'AP temporal.
El dispositiu configurarà automàticament el seu identificador MQTT (i el camí de subscripció) als darrers 4 dígits del número de sèrie dels mòduls. El camí per defecte és ha / mod // #, canvieu com convingueu, però llegiu els comentaris del codi per assegurar-vos que la matriu adequada tingui la longitud correcta.
Ho faig perquè vol dir que no he de generar un identificador únic per a cada mòdul de la meva xarxa.
L'identificador del dispositiu és visible i el servidor MQTT es pot configurar a través de la pàgina del servidor MQTT del servidor web intern
Pas 8: fer que faci coses …
Les ordres MQTT són
ha / mod / xxxx / 0 o 1 = Commuta la potència
Qualsevol altra cadena es tractarà com una ordre i s'enviarà a través del port sèrie. L'estat es comunica a / ha / cafè a HEX
Amb OpenHAB
coffeemachine.items
Número Coffee_Machine_Power "Power" {mqtt = "> [control: ha / mod / 8002 /: command: *: default]"} String Coffee_Machine_Status {mqtt = "<[control: ha / coffee: state: default]"}
Mapa del lloc
Group item = "Cafetera" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Canvia item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Petit"] Canvia item = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Canvia element = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Esbandida"] Element de text = Coffee_Status label = "Estat [% s] "}
voicecontrol.rules
import org.openhab.model.script.actions. * import org.openhab.core.library.types. * import java.util. *
regla "Regles d'ordres de veu"
quan Item VoiceCommand ha rebut l'ordre, llavors var String command = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand Received" + ordre)
if (command.contains ("encendre la màquina de cafè") || command.contains ("apagar la màquina de cafè")) {
sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("make me a small coffee")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("make me a large coffee")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} si (command.contains ("esbandida la màquina de cafè")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} final
Regles (per interpretar les respostes HEX a valors "reals"):
regla "Estat de la màquina de cafè" quan l'element Coffee_Machine_Status ha rebut l'actualització de var 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 rinseBit = binaryString.substring (6, 7)
if (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 (answer == "Off") {postUpdate (Coffee_Status, "Off")} finalitza
Pas 9: refinaments / Tot
Simplifiqueu la configuració inicial de connexió a wifi - Fet. S'ha abandonat la idea de "mode d'administrador", ja que era molesta. Ara només cal introduir SSID i contrasenya al codi. Es desa a EEPROM si actualitzeu / canvieu mitjançant la interfície web.
El codi més recent també admet actualitzacions OTA, però haureu d'actualitzar l'EEPROM al mòdul ESP-01 perquè funcioni o comenteu els elements OTA corresponents
Afegiu codi per processar les respostes de la màquina i llegiu l'estat com si no hi ha safata, sòl buit i empleneu el dipòsit - Fet. He afegit codi per tornar a llegir l’estat i publicar-lo a ha / coffee. Aquestes són només les respostes crues i encara estic treballant en la seva interpretació, però fins ara em falta Tray i Tank buit. Sondeja la màquina cada 9 segons quan està activada i publica la resposta a MQTT
La resposta és en HEX, però els bits individuals indiquen els sensors
Afegiu codi a les pàgines web per obtenir un control directe mitjançant ordres HTTP GET.
Primer premi al concurs Internet de les coses 2017
Recomanat:
Làmpada de matriu activada per WiFi: 6 passos (amb imatges)
Llum Matrix WiFi activat: qui no vol tenir una làmpada impressionant que pugui mostrar animacions i sincronitzar-se amb altres làmpades de la casa? No, ningú. Per això he creat una làmpada RGB personalitzada. El llum consta de 256 LED adreçables individualment i tots els LED es poden controlar
Com interactuar amb Alexa Dragonboard, l'aplicació d'Android i la màquina de cafè: 7 passos
Com interactuar amb Alexa Dragonboard, aplicació per a Android i màquina de cafè: aquest tutorial proporciona els passos necessaris per connectar, integrar i utilitzar la màquina de cafè amb Alexa Dragonboard i l'aplicació per a Android. Per obtenir més informació sobre la màquina de cafè, consulteu aquesta informació
Tira LED activada amb sensor de moviment amb temporitzador: 6 passos (amb imatges)
Tira LED activada per sensor de moviment amb temporitzador: Hola a tothom! Estic molt content d’escriure ara un altre instructiu. Aquest projecte es va produir quan un company instructable (?!) (David @dducic) em va contactar fa uns mesos demanant ajuda al disseny. Així que aquí teniu les especificacions originals: & q
Càmera espia activada per moviment: 5 passos (amb imatges)
Càmera espia activada per moviment: ara podeu fer vigilància secreta amb aquest "atrapat en moviment" càmera de vídeo espia que grava vídeo i àudio encoberts. Mireu-ho en acció i els resultats de les proves
Fotografia d'alta velocitat activada per làser: 9 passos (amb imatges)
Fotografia d’alta velocitat activada per làser: per fotografiar de forma consistent alguna cosa com gotes de llet, el mètode habitual utilitza una càmera de gamma alta (500 $ o més), un flaix Speedlite (300 $ o més) i un disparador de flaix electrònic retardat òptic (120 $ o més) . Hi ha molts circuits de bricolatge per a