Tartalomjegyzék:
- 1. lépés: Hogyan fogjuk csinálni
- 2. lépés: Szükséges felszerelés
- 3. lépés: A Jura protokoll
- 4. lépés: Szétszerelés
- 5. lépés: A garancia érvénytelenítése
- 6. lépés: A logikai oldal bekötése
- 7. lépés: A modul programozása
- 8. lépés: Tegye dolgaivá…
- 9. lépés: Finomítások/feladat
Videó: IoT -képes kávéfőző: 9 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
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
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 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
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
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 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.
Első díj a dolgok internete című versenyen, 2017
Ajánlott:
STONE kijelző +STM32 +kávéfőző: 6 lépés
STONE Display +STM32 +Kávéfőző: MCU szoftvermérnök vagyok, nemrég kaptam egy projektet, hogy kávéfőző legyek, háztartási követelmények érintőképernyős működéssel, a funkció jó, a képernyő fölött nem feltétlenül jó, ezt a projektet szerencsére lebonthatom
Okos kávéfőző - a SmartHome ökoszisztéma része: 4 lépés
Intelligens kávéfőző - a SmartHome ökoszisztéma része: a feltört kávéfőző a SmartHome ökoszisztéma részévé vált modul interfésszel az agyához/mikrokontrolleréhez
Arduino vezérelt DIY kávéfőző: 13 lépés (képekkel)
Arduino vezérlésű DIY kávéfőző: Ebben az utasításban megvizsgáljuk a forrólevegős pattogatott kukorica-gép módosítását, hogy teljesen automatikus és hőmérséklet-szabályozott otthoni kávéfőzővé váljon. A kávé pörkölése otthon meglepően egyszerű, és még olyan egyszerű is, mint a sütés
JavaStation (önfeltöltő, teljesen automatikus IoT kávéfőző): 9 lépés (képekkel)
JavaStation (önfeltöltő teljesen automatikus IoT kávéfőző): A projekt célja az volt, hogy egy teljesen automatikus hangvezérelt kávéfőzőt készítsen, amely automatikusan feltöltődik vízzel, és csak annyit kell tennie, hogy lecseréli a védnököket és meginja a kávét; )
IOT kávéfőző (UFEE): 7 lépés (képekkel)
IOT kávéfőző (UFEE): A tudás bizonyítékaként létre kellett hoznunk egy IOT eszközt, amelyet saját készítésű webes felületen keresztül lehet vezérelni. Mivel szeretem a kávét, és sokat fogyasztok belőle naponta, úgy döntöttem, hogy saját IOT kávéfőzőt készítek. Az UFEE kávéfőző: " a co