Obsah:
- Krok 1: Jak to uděláme
- Krok 2: Potřebné vybavení
- Krok 3: Protokol Jura
- Krok 4: Demontáž
- Krok 5: Zrušení záruky
- Krok 6: Zapojení logické strany
- Krok 7: Programování modulu
- Krok 8: Jak to udělat…
- Krok 9: Upřesnění/Úkol
Video: Kávovar s podporou IoT: 9 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
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í
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
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
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
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
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.
První cena v soutěži Internet věcí 2017
Doporučuje:
IoT APIS V2 - autonomní automatizovaný systém zavlažování rostlin s podporou IoT: 17 kroků (s obrázky)
IoT APIS V2 - Autonomní automatizovaný zavlažovací systém s podporou IoT: Tento projekt je evolucí mého předchozího pokynu: APIS - automatizovaný zavlažovací systém rostlin Používám APIS již téměř rok a chtěl jsem vylepšit předchozí návrh: Schopnost monitorovat závod na dálku. Takto
JavaStation (plně automatický kávovar IoT s automatickým doplňováním): 9 kroků (s obrázky)
JavaStation (plně automatický kávovar IoT s automatickým doplňováním): Cílem tohoto projektu bylo vytvořit plně automatický hlasem ovládaný kávovar, který se automaticky doplní vodou a vše, co musíte udělat, je vyměnit patrony a vypít kávu; )
IOT kávovar (UFEE): 7 kroků (s obrázky)
IOT Coffeemaker (UFEE): Jako důkaz znalostí jsme museli vytvořit zařízení IOT, které by bylo možné ovládat prostřednictvím vlastního webového rozhraní. Protože miluji kávu a denně ji hodně konzumuji, rozhodl jsem se vyrobit si vlastní IOT kávovar. Kávovar UFEE: " co
Planetárium/Orrery s podporou Bluetooth: 13 kroků (s obrázky)
Planetárium/Orrery s podporou Bluetooth: Tento návod byl vytvořen při splnění požadavku projektu Makecourse na University of South Florida (www.makecourse.com). Toto je moje 3-planetární planetárium/orrery. Začalo to jako pouhý semestrální projekt pro Makecour
Centrum shromažďování dat senzorů s podporou IoT s ESP8266 a PubNub: 9 kroků (s obrázky)
Centrum shromažďování dat senzorů s podporou IoT s ESP8266 a PubNub: Většina výukových programů na ESP8266 je buď na úrovni nováčků (vzdáleně bliká LED), nebo je příliš složitá pro někoho, kdo hledá něco, co by mohl vylepšit a upgradovat na základě svých schopností blikání LED. instructable si klade za cíl překlenout tuto mezeru a vytvořit