Obsah:

Kávovar s podporou IoT: 9 kroků (s obrázky)
Kávovar s podporou IoT: 9 kroků (s obrázky)

Video: Kávovar s podporou IoT: 9 kroků (s obrázky)

Video: Kávovar s podporou IoT: 9 kroků (s obrázky)
Video: Internet de las Cosas. Curso Introductorio a IoT. Parte 2: Hardware IoT. Parte2.3 Controladores 2024, Listopad
Anonim
Image
Image
Potřebné vybavení
Potřebné vybavení

Tento instruktáž je zařazen do soutěže IoT - Pokud se vám líbí, hlasujte pro ni

AKTUALIZOVÁNO: Nyní podporuje obousměrné komunikace a aktualizace OTA

Už nějakou dobu mám kávovar Jura a vždy jsem ho chtěl nějak automatizovat.

Několik let provozuji základní systém domácí automatizace, ale kávovar nebyl něco, co by bylo možné snadno upravit (nebo jsem si to alespoň myslel). Kávovary Jura mají obecně „diagnostický port“a/nebo port sloužící k přidání platebního systému do zařízení, ale nenašel jsem žádné informace o tom, jak by jej bylo možné využít. Nověji byl protokol některými jednotlivci přepracován a zveřejněn. Problém byl v tom, že většina odkazů na dostupné funkce byla pro mnohem větší stroje než moje (Ena 7).

Navíc můj stroj nemá trvalé pohotovostní napájení jako větší stroje, místo toho má spínač HV, díky kterému se napájecí zdroj „zapne“. Fyzické tlačítko na stroji ve skutečnosti aktivuje 2 spínače - jeden nízkonapěťový (logická strana, vypnutý) a jeden vysokonapěťový (zapnutý). Oba spínače jsou chvilkové.

Také jsem se potřeboval ujistit, že stroj stále funguje 100% nezávisle na jakémkoli řídicím mechanismu, tj. Stroj stále funguje normálně, jako by nebyl povolen IoT.

Automatizace stroje vyžaduje dvě věci: 1) Umět ovládat napájení stroje 2) Umět komunikovat se zařízením a aktivovat funkce pro přípravu kávy, oplach atd.

Krok 1: Jak to uděláme

K připojení k domácí wifi a přihlášení k odběru serveru MQTT/tématu naslouchání příkazům použijeme modul ESP8266 'ESP-01'. „Frontend“, který jsem použil, je OpenHAB2, ale neexistuje žádný důvod, proč byste nemohli přidat do webového rozhraní v zařízení a ovládat přímo, pokud byste chtěli nebo pomocí příkazů HTTP Get.

ESP8266 zvládne ovládání 2 relé souvisejících s tlačítkem napájení a také zpracovává sériové příkazy do/z kávovaru.

VAROVÁNÍ - Tento návod popisuje postup, který jsem použil k úpravě svého kávovaru Jura Ena7 tak, aby byl ovládán pomocí domácí automatizace. Zabývá se úpravou síťového elektrického zařízení, které může být nebezpečné, pokud je prováděno nesprávně. Informace zde mohou být neúplné, nepřesné a nebezpečné. Postupujte obezřetně. Žádná odpovědnost není přijata.

Krok 2: Potřebné vybavení

Potřebné vybavení
Potřebné vybavení
Potřebné vybavení
Potřebné vybavení
Potřebné vybavení
Potřebné vybavení

Díly

  • Modul ESP-01 a způsob jeho programování (Arduino IDE a fyzický adaptér pro programování)
  • 2cestný reléový modul EBAY
  • EBV regulátor 5v -> 3,3v
  • Malá 5V síťová nabíječka na telefon
  • Převodník logické úrovně* Freetronics
  • Různé vodiče, kolíkové hlavičky, tepelné smršťování atd. Pro připojení.

Nástroje

  • Páječka s jemným hrotem
  • Pájka
  • Praktické jsou odizolovače drátu
  • Ovladač Torx T15
  • Oválný bezpečnostní nástroj (nebo si jej vyrobte, zabere jen pár minut)

*Zpočátku jsem při testování všech sériových příkazů na stroji používal arduino UNO a fungovalo to bezchybně, nicméně modul ESP odmítl fungovat. Trojnásobně jsem zkontroloval kód a byl jsem si jistý, že příkazy opouštějící modul ESP byly stejné jako arduino, ale bylo to no-go. Dal jsem to dolů do modulu ESP, který pracoval pouze na logice 3,3 V, a nikoli na 5 V. Jakmile jsem vložil převodník logiky, fungovalo to dobře. To může, ale nemusí být vyžadováno u jiných strojů.

V ideálním případě byste měli existující systém domácí automatizace, který podporuje protokol MQTT (například openhab), protože na to je projekt zaměřen. Pokud jej chcete ovládat pouze pomocí tlačítek na webové stránce bez jakýchkoli podpůrných systémů, budete muset provést nějaké změny v kódu vložené webové stránky. Dosažení není příliš komplikované (možná rev2..)

Krok 3: Protokol Jura

Protokol Jura
Protokol Jura

Data do/ze stroje jsou jen sériová @ 9600, ale Jura má v rukávu také nějaké triky. Protokol to buď používá pro extra ECC a/nebo pro zmatení komunikace. Jednoduše řečeno, každý bajt dat (znak) je rozdělen na bity 2 a 5 ze 4 standardních sériových bytů, které jsou vlečeny s pauzou 8 ms. Pokud vás zajímá, jak to funguje, v odkazech je spousta informací.

Informace o protokolu extrahovány z:

Arduino kód to zjednodušuje a umožňuje vám přenášet standardní, pro člověka čitelné příkazy, které pak transponuje do protokolu Jura.

Můj kód je kombinací kódu z:

Příkazy uvedené na výše uvedených stránkách nebyly pro můj počítač přesné, ale metodou pokusu a omylu jsem dokázal přijít s následujícím:

FA: 01 - vypne se (ale nezdá se, že by se oplachoval, i když je to nutné) FA: 02 - odpoví „ok“, ale neví, co dělá. FA: 03 - Hlášení o vyplachování (Vynutí hlášení 'pláchání' na obrazovce, stisknutí rotačního máchacího stroje) FA: 04 - Oplachování - Oplachování, když se zobrazí hlášení 'Stiskněte otočné tlačítko', jinak nedělá nic FA: 05 - Silné na obrazovce (Pravděpodobně to zkombinujte s přípravou kávy pro silné) FA: 06 - Silné na obrazovce (Pravděpodobně to spojte s přípravou kávy pro silné) FA: 07 - „Speciální“na obrazovce, ale ve skutečnosti nedělá nic, nevíte, co je to proFA: 08 - Steam FA: 09 - Malá káva FA: 0A - Velká káva

Existují i jiné příkazy, ale tohle mi bohatě stačí …

Buďte opatrní při zadávání neznámých příkazů, například podle všeho AN: 0A vymaže EEPROM počítače …

Krok 4: Demontáž

Otevření samotného stroje není příliš snadné, protože potřebujete trochu speciální nástroje, ale vášnivý člověk si cestu najde - potřebujete bit T15 Torx a „oválný klíč“na 2 šrouby. Torx, který jsem již měl, oválný nástroj, který jsem vytvořil ze 4 mm šroubu s vnitřním šestihranem, vyvrtal a trochu zploštil kladivem.

Zde uvedené pokyny jsou poměrně dobře prezentovány-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

Krok 5: Zrušení záruky

Zrušení záruky
Zrušení záruky
Zrušení záruky
Zrušení záruky
Zrušení záruky
Zrušení záruky
Zrušení záruky
Zrušení záruky

Jakmile jste ve stroji, uvidíte hlavní součásti. Hlavní napájecí vstup má pod sebou pěkné místo pro přidání 5v nabíječky.

Přidal jsem (jmenovitě síťové) vodiče do svorkovnice u vstupu do stroje a pájené/tepelně smrštěné je na síťové piny 5v nabíječky. Můj konkrétní model nebyl typ portu USB, ale ten, který měl trvale připojený kabel. Možná nemáte dostatek místa pro jeden USB port, abyste mohli používat skutečný USB kabel, ale pokud jste otevřeli nabíječku, můžete USB port odebrat a nahradit standardním vodičem k bodům 5v a Gnd.

Pokud chcete, můžete nahradit jiný 5V napájecí zdroj. 500 ma by mělo bohatě stačit.

V blízkosti mlýnku je dostatek místa pro reléový modul. Musíme zapojit dvě relé, aby fungovala souběžně s hlavními výkonovými spínači. Jednoduše jsem přestřihl stávající dráty, svlékl, pocínoval, přidal další drát a připájel zpět k sobě (nezapomeňte na heatshrink). Na to bylo dost prověšení vodičů.

Reléový modul je držen na místě pomocí kvalitní oboustranné pásky. S připojenými vodiči as omezeným prostorem pro pohyb, i když páska ztratí přilnavost, modul nepůjde příliš daleko a nemůže přijít do styku s žádnými kovovými předměty.

Také jsem zpětně otestoval diagnostický port na svém počítači, abych určil umístění vnitřních připojení, abych mohl dosáhnout zcela skryté integrace. Používají se pouze vodiče tx, rx a Gnd.

Pokud máte komerčnější stroj, který podporuje záložní napětí a/nebo nechcete na svůj počítač zrušit záruku, můžete se místo toho připojit přímo k diagnostickému portu, ale nemusí být možné zařízení pomocí tohoto zařízení zapnout.

Můj stroj používá 7pinový konektor. Zleva doprava je:

NC Tx G Rx NC 5v NC

Odpovídající piny na základní desce: Červená = Gnd Oranžová = Rx Černá = Tx

Více informací najdete na pinoutech zde:

Krok 6: Zapojení logické strany

Zapojení logické strany
Zapojení logické strany
Zapojení logické strany
Zapojení logické strany
Zapojení logické strany
Zapojení logické strany

Zkontrolujte diagram - vypadá to příliš komplikovaně, ale ve skutečnosti to tak není.

Převodník hladiny jsem namontoval na zadní stranu (depinovaného) regulátoru napětí pomocí oboustranné pásky. Poté jsem použil některé komponentní nohy k pájení napájecích a uzemňovacích kolíků na obou stranách převodníku úrovní na odpovídající kolíky výkonového modulu. Celý tento modul pak funguje jako „průchod“pro veškerou logiku a napájení pro ESP-01.

Použil jsem dva střední převodníky pro sériová data a vnější dva pro reléové signály, ale nezáleží na tom, který používáte.

U těchto reléových modulů není vlastně nutné spouštět logiku 5v, protože jsou aktivní NÍZKÉ, ale fungovalo to dobře, takže jsem to stejně udělal.

Pro připojení k modulu ESP jsem použil hlavičku 4x2. To umožňuje snadné nahrání kódu nebo výměnu modulu.

Na obrázku není zobrazen 5V vstup - zapojil jsem můj přímo do reléového modulu (viz druhý obrázek). Černý vodič vlevo dole na obrázku jsou sériová data na hlavní desce. Použil jsem část stíněného 3,5 mm prodlužovacího kabelu pro sluchátka, abych pomohl snížit pravděpodobnost rušení datové linky.

Kód 12f používá místo sériového hardwaru SoftwareSerial - To umožňuje modulu hlásit stav pro ladění zpět pomocí běžného seriálu. Místo toho se připojují pomocí pinů 4 a 5. Přizpůsobil jsem stejné záhlaví, aby se z ESP12F stala zásuvná výměna pro ESP-01, jen jsem vyměnil ty sériové piny

Krok 7: Programování modulu

Programování modulu
Programování modulu

Kód byl zkompilován proti Arduino 1.8.1 s doplňkem desky ESP8266 a PubSubClient 2.6.0 (což je knihovna MQTT)

Upravte kód podle svých požadavků a nahrajte kód do modulu ESP-01 a připojte se ke stroji. Buďte opatrní s orientací kolíků!

Konfigurace

Možnost 1)

Pouze na základním kódu ve formátu zip. Když se modul ESP poprvé spustí, přejde do režimu AP a nastaví IP na 192.168.4.1. Poté se můžete připojit k modulu a změnit IP a připojit se k vlastnímu přístupovému bodu. Budete také muset nastavit IP pro vaše zařízení v tomto rozsahu, protože v modulu není DHCP.

Výchozí AP SSID je „ESPSwitch“a heslo je „12345678“

Ve výchozím nastavení zůstane v režimu AP 2 minuty. Toto nastavení můžete změnit v 'global.h' - Jmenuje se 'adminTimeout' a je v milisekundách. Doporučuji to změnit na něco nízkého, jakmile budete mít platnou konfiguraci v EEPROM, protože jinak to způsobí zbytečné zpoždění při zavádění zařízení.

Možnost 2)

Toto je výchozí režim pro novější kód, který podporuje obousměrné komunikace, možnost 1 není k dispozici. Výchozí nastavení SSID/hesla můžete také změnit v hlavním souboru ino (vyhledejte '// DEFAULT CONFIG'), takže se načte tato nastavení do EEPROM při prvním spuštění a změňte zpoždění režimu správce na něco nízkého v 'global.h'. Tím se zabrání nutnosti nepořádku při připojování k dočasnému přístupovému bodu.

Zařízení automaticky nastaví ID MQTT (a cestu předplatného) na poslední 4 číslice sériového čísla modulů. Cesta je ve výchozím nastavení ha/mod //#, změňte podle svého uvážení, ale přečtěte si komentáře v kódu, abyste se ujistili, že příslušné pole má správnou délku.

Dělám to, protože to znamená, že nemusím generovat jedinečné ID pro každý modul v mé síti.

ID zařízení je viditelné a server MQTT lze nastavit prostřednictvím stránky serveru MQTT na interním webovém serveru

Krok 8: Jak to udělat…

Příkazy MQTT jsou

ha/mod/xxxx/0 nebo 1 = Přepnout výkon

Jakýkoli jiný řetězec bude považován za příkaz a bude odeslán přes sériový port. Stav je hlášen /ha /káva v HEX

S OpenHAB

coffeemachine.items

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

Mapa webu

Skupinová položka = "Kávovar" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Přepnout položku = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Přepnout položku = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Přepnout položku = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Rinse"] Textová položka = Coffee_Status label = "Status [%s] "}

hlasové ovládání. pravidla

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

pravidlo „Pravidla hlasových příkazů“

když Item VoiceCommand přijal příkaz, pak var String příkaz = VoiceCommand.state.toString.toLowerCase logInfo („Voice. Rec“, „VoiceCommand přijato“+příkaz)

if (command.contains ("turn on the coffee machine") || command.contains ("turn off the coffee machine")) {

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 great coffee")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("opláchněte kávovar")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} konec

Pravidla (pro interpretaci HEX odpovědí na 'skutečné' hodnoty):

pravidlo „Stav kávovaru“, když položka Coffee_Machine_Status obdržela aktualizaci, pak 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 Řetězec 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 intinseBit = binaryString.substring (6, 7)

if (trayBit == "0") {

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

}

if (response == "Off") {postUpdate (Coffee_Status, "Off")} end

Krok 9: Upřesnění/Úkol

Zjednodušit počáteční nastavení připojení k wifi - Hotovo. Opustil myšlenku „režimu správce“, protože to bylo otravné. Nyní stačí zadat SSID a heslo do kódu. Uloží se do EEPROM, pokud aktualizujete/měníte prostřednictvím webového rozhraní.

Novější kód také podporuje aktualizace OTA, ale budete muset upgradovat EEPROM na modulu ESP-01, aby fungovalo nebo komentovalo odpovídající položky OTA

Přidejte kód pro zpracování odpovědí ze stroje a přečtěte si stav jako bez zásobníku, prázdné sedliny a plnicí nádrž - Hotovo. Přidal jsem kód, abych přečetl stav zpět a publikoval na ha/coffee. To jsou jen prvotní reakce a stále pracuji na jejich interpretaci, ale zatím mi chybí zásobník a prázdný tank. Když je zapnuto, dotazuje počítač každých 9 sekund a publikuje odpověď na MQTT

Odezva je v HEX, ale jednotlivé bity indikují senzory

Přidejte kód na webové stránky pro přímé ovládání pomocí příkazů HTTP GET.

Soutěž Internet věcí 2017
Soutěž Internet věcí 2017
Soutěž Internet věcí 2017
Soutěž Internet věcí 2017

První cena v soutěži Internet věcí 2017

Doporučuje: