Tartalomjegyzék:

IoT -képes kávéfőző: 9 lépés (képekkel)
IoT -képes kávéfőző: 9 lépés (képekkel)

Videó: IoT -képes kávéfőző: 9 lépés (képekkel)

Videó: IoT -képes kávéfőző: 9 lépés (képekkel)
Videó: Chapter 02 - Babbitt by Sinclair Lewis 2024, Június
Anonim
Image
Image
Felszerelés szükséges
Felszerelés szükséges

Ez az oktatható anyag szerepel az IoT versenyen - Ha tetszik, kérjük, szavazzon rá

FRISSÍTVE: Mostantól támogatja a kétirányú kommunikációt és az OTA frissítéseket

Már egy ideje van egy Jura kávéfőzőm, és mindig is szerettem volna valahogy automatizálni.

Néhány éve működtetek egy alapvető otthoni automatizálási rendszert, de a kávéfőző nem volt egyszerűen módosítható (vagy legalábbis azt hittem). A Jura kávéfőző gépek általában rendelkeznek „diagnosztikai porttal” és/vagy egy porttal, amelyet fizetési rendszer hozzáadására használnak a géphez, de nem találtam információt arról, hogyan lehetne használni. A közelmúltban a protokollt egyes személyek fordítottan tervezték és nyilvánosságra hozták. A probléma az volt, hogy a rendelkezésre álló funkciókra való hivatkozások többsége sokkal nagyobb gépekre vonatkozott, mint az enyém (Ena 7).

Ráadásul a gépem nem rendelkezik állandó készenléti árammal, mint a nagyobb gépek, hanem van egy HV kapcsolója, amely "bekapcsolja" a tápegységet. A gép fizikai gombja valójában 2 kapcsolót aktivál - egy kisfeszültségű (logikai oldal, kikapcsolás) és egy nagyfeszültségű (bekapcsolás). Mindkét kapcsoló pillanatnyi.

Azt is meg kellett győződnöm arról, hogy a gép továbbra is 100% -ban működik minden vezérlőmechanizmustól függetlenül, azaz a gép továbbra is normálisan működik, mintha nem lenne engedélyezve az IoT.

A gép automatizálásához két dolog szükséges: 1) A gép áramellátásának szabályozása 2) Képes kommunikálni a géppel, hogy aktiválja a kávéfőzési, öblítési stb.

1. lépés: Hogyan fogjuk csinálni

Az ESP8266 „ESP-01” modult használva csatlakozunk az otthoni wifi-hez, és feliratkozunk az MQTT szerverre/témakörre a parancsokért. Az „Előlap”, amelyet használtam, az OpenHAB2, de nincs ok, amiért nem tudta hozzáadni az eszköz webes felületéhez és közvetlenül a vezérléshez, ha akarta, vagy a HTTP Get parancsok segítségével.

Az ESP8266 kezeli a bekapcsológombbal kapcsolatos két relé vezérlését, és soros parancsokat is feldolgoz a kávéfőzőből.

FIGYELMEZTETÉS - Ez az útmutató leírja az eljárást, amellyel módosítottam a Jura Ena7 kávéfőzőt az otthoni automatizáláson keresztül. A hálózati elektromos eszköz módosításával foglalkozik, amely veszélyes lehet, ha helytelenül végzik. Az itt található információk hiányosak, pontatlanok és nem biztonságosak. Óvatosan haladjon tovább. Nem vállalunk felelősséget.

2. lépés: Szükséges felszerelés

Felszerelés szükséges
Felszerelés szükséges
Felszerelés szükséges
Felszerelés szükséges
Felszerelés szükséges
Felszerelés szükséges

Alkatrészek

  • ESP-01 modul és programozásának módja (Arduino IDE és fizikai adapter a programozáshoz)
  • Kétirányú relé modul EBAY
  • 5v -> 3.3v EBAY szabályozó
  • Kisméretű 5V -os hálózati tápegységű telefon töltő
  • Logikai szint konverter* Freetronics
  • Különféle vezetékek, csapszegek, hőzsugorodás stb.

Eszközök

  • Finom hegyes forrasztópáka
  • Forrasztó
  • A huzalcsupaszítók praktikusak
  • Torx T15 illesztőprogram
  • Ovális biztonsági eszköz (vagy készítsen egyet, csak néhány percet vesz igénybe)

*Kezdetben arduino UNO -t használtam a gép összes soros parancsának tesztelésénél, és hibátlanul működött, azonban az ESP modul nem volt hajlandó működni. Háromszor ellenőriztem a kódot, és biztos voltam benne, hogy az ESP modulból kilépő parancsok megegyeznek az arduino-val, de ez nem megy. Ezt az ESP modulra tettem le, amely csak 3.3V logikával működik, és nem 5V -val. Miután beraktam a logikai átalakítót, jól működött. Erre más gépeken szükség lehet, vagy nem.

Ideális esetben van egy meglévő otthoni automatizálási rendszere, amely támogatja az MQTT protokollt (például az openhab), mivel ez a projekt célja. Ha csak támogató rendszerek nélkül szeretné irányítani a weblap gombjait, akkor módosítania kell a beágyazott weblap kódját. Nem túl bonyolult elérni (talán rev2..)

3. lépés: A Jura protokoll

A Jura -jegyzőkönyv
A Jura -jegyzőkönyv

A gépre/onnan érkező adatok csak soros @ 9600, de Jurának is vannak trükkjei. A protokoll vagy ezt használja az extra ECC -hez és/vagy a kommunikáció elfojtásához. Egyszerűen fogalmazva, minden adatbájt (karakter) fel van osztva a szabványos soros bájtok 2 és 5 bitjére 8 ms szünet után. Ha szeretné megtanulni ennek működését, akkor rengeteg információ található az itt található linkeken.

Protokoll-információk:

Az arduino kód leegyszerűsíti ezt, lehetővé téve a szabványos, ember által olvasható parancsok továbbítását, amelyeket ezután átültet a Jura protokollba.

A kódom a következő kódok kombinációja:

A fenti webhelyeken hivatkozott parancsok nem voltak pontosak a gépem számára, de a próba és a hiba módszerével az alábbiakra jutottam:

FA: 01 - Kikapcsol (de nem tűnik öblítőnek, még ha szükséges is) FA: 02 - "OK" -val válaszol, de nem biztos abban, hogy mit tesz. FA: 03 - Öblítési üzenet (Kényszeríti az „öblítés” üzenetet a képernyőn, megnyomva a forgó öblítőgépet) FA: 04 - Öblítőművelet - Öblít, ha megjelenik a „Nyomja meg a forgógombot” üzenet, különben semmi sem FA: 05 - Erős a képernyőn (FA: 06 - Erős a képernyőn (feltehetőleg ezt kombinálja az erős kávé készítésével) FA: 07 - „Különleges” a képernyőn, de valójában nem tesz semmit, nem tudja, mire való ez: 08 - Gőz FA: 09 - Kis kávé FA: 0A - Nagy kávé

Vannak más parancsok is, de ez nekem bőven elég…

Legyen óvatos ismeretlen parancsok kiadásakor, például nyilvánvalóan az AN: 0A törli a gép EEPROM -ját..

4. lépés: Szétszerelés

Magának a gépnek a kinyitása nem túl egyszerű, mivel szüksége van néhány kissé speciális szerszámra, de egy lelkes ember megtalálja a módját - Szüksége van egy T15 Torx -bitre és egy „ovális kulcsra” 2 csavarhoz. A Torx már megvolt, az ovális szerszám, amelyet egy 4 mm -es csavarfejű csavarból készítettem, kifúrt és egy kalapáccsal kissé lapított.

Az itt található utasítások meglehetősen jól vannak bemutatva-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

5. lépés: A garancia érvénytelenítése

A garancia érvénytelenítése
A garancia érvénytelenítése
A garancia érvénytelenítése
A garancia érvénytelenítése
A garancia érvénytelenítése
A garancia érvénytelenítése
A garancia érvénytelenítése
A garancia érvénytelenítése

Miután belépett a gépbe, látni fogja a fő alkatrészeket. A fő hálózati bemeneten van egy szép hely alatta az 5 voltos töltő hozzáadásához.

Hozzáadtam (hálózati névleges) vezetékeket a sorkapocshoz a gép belépésekor, és forrasztottam/hevítettem ezeket az 5V -os töltő hálózati csapjaihoz. A saját modellem nem USB -porttípus volt, hanem az, amelyhez állandóan csatlakoztatva volt a vezeték. Lehet, hogy nincs elég hely egy típusú USB -porthoz, hogy tényleges USB -kábelt használhasson, de ha kinyitotta a töltőt, eltávolíthatja az USB -portot, és egy szabványos vezetékkel helyettesítheti az 5 és Gnd pontokra.

Ha úgy tetszik, cserélhet másik 5V -os hálózati tápegységet. 500mának elégnek kell lennie.

Rengeteg hely áll rendelkezésre a relé modul számára a daráló közelében. A két relét be kell kötni, hogy párhuzamosan működjenek a főkapcsolókkal. Egyszerűen levágtam a meglévő vezetékeket, lecsupaszítottam, ónoztam, hozzáadtam egy extra vezetéket, és összeforrasztottam (ne felejtsük el a hőszigetelést). Ehhez elég laza volt a vezetékek.

A relé modul jó minőségű kétoldalas szalaggal van rögzítve. Ha a vezetékek csatlakoztatva vannak, és csak korlátozott mozgástérrel rendelkezik, még akkor is, ha a szalag elveszíti a tapadást, a modul nem megy túl messzire, és nem érintkezhet semmilyen fémtárggyal.

A gép diagnosztikai portját is visszaproblémáztam, hogy meghatározzam a belső kapcsolatok helyét, hogy teljesen rejtett integrációt érhessek el. Csak tx, rx és Gnd vezetékeket használnak.

Ha van egy kereskedelmi jellegű készüléke, amely támogatja a készenléti feszültséget, és/vagy nem akarja érvényteleníteni a gépre vonatkozó garanciát, akkor közvetlenül a diagnosztikai porthoz csatlakozhat, de előfordulhat, hogy nem tudja bekapcsolni a készüléket ezzel az eszközzel.

A gépem 7 tűs csatlakozót használ. Balról jobbra ez:

NC Tx G Rx NC 5v NC

Az alaplap megfelelő csapjai: Piros = Gnd Narancs = Rx Fekete = Tx

További információ a pinoutokról itt található:

6. lépés: A logikai oldal bekötése

A logikai oldal bekötése
A logikai oldal bekötése
A logikai oldal bekötése
A logikai oldal bekötése
A logikai oldal bekötése
A logikai oldal bekötése

Tekintse át a diagramot - Túl bonyolultnak tűnik, de valójában nem az.

A szintváltót a (lefejtett) feszültségszabályozó hátuljára szereltem fel kétoldalas szalaggal. Ezután néhány alkatrészláb segítségével forrasztottam a szint- átalakító mindkét oldalán lévő táp- és földelőcsapokat a megfelelő teljesítménymodul -tűkhöz. Ez az egész modul ezután átmenetként működik az ESP-01 összes logikája és tápegysége számára.

A két középső átalakítót használtam a soros adatokhoz, a külső kettőt pedig a relé meghajtó jeleihez, de nem mindegy, hogy melyiket használja.

Valójában ezekkel a relé modulokkal nem szükséges 5V -os logikát futtatni, mivel LOW aktívak, de egyszerűen jól működött, így mégis megtettem.

Az ESP modulhoz való csatlakozáshoz 4x2 -es női fejlécet használtam. Ez lehetővé teszi a kód egyszerű feltöltését vagy a modul cseréjét.

Az ábrán nem látható az 5 V -os bemenet - az enyémet közvetlenül a relé modulhoz kötöttem (lásd a második képet). A kép bal alsó sarkában lévő fekete vezeték a soros adatok az alaplapra kerül. Egy árnyékolt 3,5 mm -es fejhallgató -hosszabbító kábel egy részét használtam, hogy csökkentsem az adatvonalban fellépő interferencia esélyét.

A 12f kód a SoftwareSerial programot használja a hardver soros helyett - Ez lehetővé teszi a modul számára, hogy a hibakeresés állapotát a normál soroson keresztül jelezze. A csatlakozások helyette a 4 -es és az 5 -ös csapokon keresztül történnek. Ugyanazt a fejlécet úgy alakítottam ki, hogy az ESP12F csatlakozóaljzatot cseréljen az ESP-01-hez, csak lecseréltem ezeket a soros érintkezőket

7. lépés: A modul programozása

A modul programozása
A modul programozása

A kódot az Arduino 1.8.1 ellen fordítottuk, ESP8266 kártya kiegészítővel és PubSubClient 2.6.0 -val (ami az MQTT Library)

Módosítsa a kódot igényei szerint, és töltse fel a kódot az ESP-01 modulba, és csatlakozzon a géphez. Legyen óvatos a csapok tájolásával!

Konfiguráció

1.opció)

Csak zip alapkódon. Amikor az ESP modul először indul, akkor AP módba lép, és az IP -t 192.168.4.1 -re állítja. Ezután csatlakozhat a modulhoz, megváltoztathatja az IP -címet, és csatlakozhat saját hozzáférési pontjához. Ezen a tartományon belül be kell állítania a gép IP -címét is, mivel a modulon nincs DHCP.

Az alapértelmezett hozzáférési pont SSID -je "ESPSwitch", a jelszó pedig "12345678"

Alapértelmezés szerint 2 percig marad AP módban. Ezt a beállítást a "global.h" mappában módosíthatja - Ezt "adminTimeout" -nak hívják, és ezredmásodpercben van megadva. Azt javaslom, hogy változtassa meg ezt alacsony értékre, ha érvényes konfigurációja van az EEPROM -ban, különben szükségtelen késleltetést okoz az eszköz indításakor.

2. lehetőség)

Ez az alapértelmezett mód az újabb kódhoz, amely támogatja a kétirányú kommunikációt, az 1. opció nem érhető el. A fő ino fájlban is módosíthatja az alapértelmezett SSID/jelszó beállításokat (keresse meg a "// DEFAULT CONFIG" parancsot), így betöltődik ezeket a beállításokat az EEPROM -ba az első indításkor, és az adminisztrációs mód késleltetését valami alacsonyra állítja a „global.h” fájlban. Ezzel elkerülhető, hogy az ideiglenes AP -hez való csatlakozás során zavarba kell jönni.

Az eszköz automatikusan beállítja az MQTT azonosítóját (és előfizetési útvonalát) a modulok sorozatszámának utolsó 4 számjegyére. Az útvonal alapértelmezés szerint a ha/mod //#, módosítsa tetszés szerint, de olvassa el a kódban található megjegyzéseket, hogy megbizonyosodjon arról, hogy a megfelelő tömb megfelelő hosszúságú.

Ezt azért teszem, mert ez azt jelenti, hogy nem kell egyedi azonosítót generálnom a hálózatom minden moduljához.

Az eszköz azonosítója látható, és az MQTT szerver beállítható a belső webszerver MQTT szerver oldalán

8. lépés: Tegye dolgaivá…

Az MQTT parancsok

ha/mod/xxxx/0 vagy 1 = Kapcsolóerő

Bármely más karakterláncot parancsként kell kezelni, és soros porton keresztül kell elküldeni. Az állapotot a /ha /coffee a HEX -ben jelenti

OpenHAB segítségével

kávéfőzőgép.tételek

Kávé_gép_hatalom "Teljesítmény" {mqtt = "> [control: ha/mod/8002/: command:*: default]"} String Coffee_Machine_Status {mqtt = "<[control: ha/coffee: state: default]"}

Oldaltérkép

Group item = "Kávéfőző" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Elemváltás = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Öblítés"] Text item = Coffee_Status label = "Állapot [%s] "}

hangvezérlés.szabályok

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

"Hangparancs szabályok"

amikor a VoiceCommand elem megkapta a parancsot, akkor var String parancs = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand kapott"+parancs)

if (command.contains ("kapcsolja be a kávéfőzőt") || command.contains ("kapcsolja ki a kávéfőzőt")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("készíts nekem egy kis kávét")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("készíts nekem egy nagy kávét")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("öblítse ki a kávéfőzőt")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} end

Szabályok (a HEX -válaszok „valós” értékekre történő értelmezésére):

szabály "Kávéfőző állapota", amikor a Coffee_Machine_Status tétel frissítést kapott, akkor var String response = Coffee_Machine_Status.state.toString () if (response.indexOf ("ic:")> -1) {var String hexString = response.substring (3, 5))

var int szám = (Integer.parseInt (hexString, 16));

var String binaryString = String.format ("%8s", Integer.toBinaryString (szám)). csere ('', '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")} vége

9. lépés: Finomítások/feladat

Egyszerűsítse a wifi -hez való csatlakozás kezdeti beállítását - Kész. Elhagyta az „admin mód” gondolatát, mivel bosszantó volt. Most csak írja be az SSID -t és a jelszót a kódba. EEPROM -ba menti, ha webes felületen keresztül frissít/módosít.

Az újabb kód támogatja az OTA frissítéseket is, de ehhez frissítenie kell az ESP-01 modul EEPROM-ját, hogy ez működjön, vagy megjegyzéseket fűzzön a megfelelő OTA-elemekhez

Adjon hozzá kódot a válaszok feldolgozásához a gépről, és olvassa le az állapotot, például nincs tálca, üres por és töltse fel a tartályt - Kész. Hozzáadtam egy kódot, amellyel visszaolvashatom az állapotot, és közzétehetem a ha/kávéban. Ezek csak a nyers válaszok, és még mindig dolgozom azok értelmezésén, de eddig hiányzik a tálca és a Tank üres. Bekapcsoláskor 9 másodpercenként lekérdezi a gépet, és közzéteszi az MQTT válaszát

A válasz HEX -ben van, de az egyes bitek jelzik az érzékelőket

Adjon hozzá kódot a weboldalakhoz a közvetlen vezérléshez a HTTP GET parancsok segítségével.

A dolgok internete verseny 2017
A dolgok internete verseny 2017
A dolgok internete verseny 2017
A dolgok internete verseny 2017

Első díj a dolgok internete című versenyen, 2017

Ajánlott: