Përmbajtje:

Makinë kafeje e aktivizuar në IoT: 9 hapa (me fotografi)
Makinë kafeje e aktivizuar në IoT: 9 hapa (me fotografi)

Video: Makinë kafeje e aktivizuar në IoT: 9 hapa (me fotografi)

Video: Makinë kafeje e aktivizuar në IoT: 9 hapa (me fotografi)
Video: SI TE GJEJME VENDODHJEN E PERSONAVE TJERE ME TELEFON 2024, Nëntor
Anonim
Image
Image
Pajisja e nevojshme
Pajisja e nevojshme

Ky udhëzues futet në konkursin IoT - Nëse ju pëlqen, ju lutemi votoni për të

P URDITSUAR: Tani mbështet komunikimet me dy drejtime dhe përditësimet OTA

Për ca kohë tani kam pasur një aparat kafeje Jura dhe gjithmonë kam dashur ta automatizoj disi.

Unë kam disa vite që drejtoj një sistem bazë të automatizimit të shtëpisë, por aparati i kafesë nuk ishte diçka që ishte e thjeshtë për tu modifikuar (ose kështu mendova). Makinat e kafesë Jura në përgjithësi kanë një 'Port Diagnostikues' dhe/ose një port të përdorur për shtimin e një sistemi pagese në makinë, megjithatë nuk gjeta asnjë informacion se si mund të përdoret. Kohët e fundit, protokolli u projektua në mënyrë të kundërt nga disa individë dhe u bë publik. Problemi ishte, shumica e referencave për funksionet në dispozicion ishin për makina shumë më të mëdha se të miat (Ena 7).

Për më tepër, makina ime nuk ka një fuqi të përhershme gatishmërie si makinat më të mëdha, përkundrazi ajo ka një ndërprerës HV që e bën furnizimin me energji të fiket. Butoni fizik në makinë në të vërtetë aktivizon 2 ndërprerës - Një volt i ulët (ana logjike, fikje) dhe një Volt i lartë (Ndizje). Të dy ndërprerësit janë momentalë.

Më duhej gjithashtu të sigurohesha që makina ende funksiononte 100% e pavarur nga çdo mekanizëm kontrolli, dmth makina akoma funksionon si normale sikur të mos ishte e aktivizuar IoT.

Për të automatizuar makinën duhen dy gjëra: 1) Të jeni në gjendje të kontrolloni fuqinë në makinë 2) Të jeni në gjendje të komunikoni me makinën për të aktivizuar funksionet për të bërë kafe, shpëlarje etj.

Hapi 1: Si do ta bëjmë

Ne do të përdorim një modul ESP8266 'ESP-01' për t'u lidhur me wifi-në e shtëpisë dhe për t'u abonuar në serverin MQTT/dëgjimin e temave për komandat. 'Front End' që kam përdorur është OpenHAB2 por nuk ka asnjë arsye që nuk mund të shtoni në ndërfaqen e uebit në pajisje dhe të kontrolloni drejtpërdrejt nëse dëshironi ose përmes HTTP Merrni komandat.

ESP8266 do të trajtojë kontrollimin e 2 stafetëve të lidhur me butonin e energjisë dhe gjithashtu do të përpunojë komandat serike drejt/nga aparati i kafesë.

KUJDES - Ky udhëzues përshkruan procedurën që kam përdorur për të modifikuar aparatin tim të kafesë Jura Ena7 për t'u kontrolluar përmes automatizimit në shtëpi. Merret me modifikimin e një pajisjeje elektrike që mund të jetë e rrezikshme nëse kryhet gabimisht. Informacioni këtu mund të jetë jo i plotë, i pasaktë dhe i pasigurt. Vazhdoni me kujdes. Asnjë përgjegjësi nuk pranohet.

Hapi 2: Pajisja e nevojshme

Pajisja e nevojshme
Pajisja e nevojshme
Pajisja e nevojshme
Pajisja e nevojshme
Pajisja e nevojshme
Pajisja e nevojshme

Pjesët

  • Moduli ESP-01 dhe një mënyrë për ta programuar atë (Arduino IDE dhe përshtatës fizik për programim)
  • Moduli i stafetës me 2 drejtime EBAY
  • 5v -> 3.3v Rregullatori EBAY
  • Ngarkues i vogël telefoni me energji elektrike 5v
  • Konvertuesi i nivelit logjik* Freetronics
  • Teli i ndryshëm, titujt e kunjave, tkurrja e nxehtësisë etj për t'i lidhur të gjitha.

Mjetet

  • Hekur saldimi me majë të hollë
  • Saldator
  • Shiritat me tela janë të dobishëm
  • Shofer Torx T15
  • Mjeti i sigurisë ovale (ose bëni një, merr vetëm disa minuta)

*Unë fillimisht kam përdorur një arduino UNO në testimin tim të të gjitha komandave serike në makinë dhe ai funksionoi në mënyrë të përsosur, megjithatë moduli ESP refuzoi të funksionojë. Unë kontrollova tre herë kodin dhe isha i sigurt se komandat që dilnin nga moduli ESP ishin të njëjta me arduino, megjithatë ishte një ndalim. Unë e vendos këtë në modulin ESP që punon vetëm në logjikën 3.3v dhe jo 5V. Pasi vendosa konvertuesin Logic, ai funksionoi mirë. Kjo mund ose nuk mund të kërkohet në makina të tjera.

Në mënyrë ideale, ju do të kishit një sistem ekzistues të automatizimit të shtëpisë që mbështet protokollin MQTT (siç është openhab) pasi kjo është ajo që synon projekti. Nëse thjesht dëshironi ta kontrolloni atë përmes butonave në një faqe në internet pa asnjë sistem mbështetës, do t'ju duhet të bëni disa ndryshime në kodin e integruar të faqes në internet. Nuk është shumë e komplikuar për të arritur (ndoshta rev2..)

Hapi 3: Protokolli Jura

Protokolli Jura
Protokolli Jura

Të dhënat për/nga makina janë vetëm serike @ 9600, por Jura gjithashtu ka disa truke në mëngë. Protokolli ose e përdor këtë për ECC shtesë dhe/ose për të errësuar komunikimin. E thënë thjesht, çdo bajt i të dhënave (karakteri) ndahet në bitët 2 dhe 5 nga 4 bajtë standardë serialë të ndjekur nga një pauzë 8ms. Nëse ju intereson të mësoni se si funksionon kjo, ka shumë informacion në lidhjet këtu.

Informacioni i Protokollit i nxjerrë nga:

Kodi arduino e thjeshton këtë, duke ju mundësuar që të transmetoni komanda standarde, të lexueshme nga njerëzit, të cilat më pas i transpozon në protokollin Jura.

Kodi im është një kombinim i kodit nga: https://github.com/oliverk71/Coffeemaker-Payment-…

Komandat e referuara në faqet e mësipërme nuk ishin të sakta për makinën time, por përmes një metode të provës dhe gabimit, unë arrita të dal me sa më poshtë:

FA: 01 - Fiket (por nuk duket të shpëlahet, edhe nëse është e nevojshme) FA: 02 - Përgjigjet 'në rregull', por nuk jam i sigurt se çfarë bën. FA: 03 - Mesazhi i Shpëlarjes (Forcon një mesazh 'shpëlarje' në ekran, duke shtypur makinën e shpëlarjes rrotulluese) FA: 04 - Veprimi i Shpëlarjes - Shpëlahet kur shfaqet mesazhi 'Shtypni butonin Rotary', përndryshe nuk bën asgjë FA: 05 - E fortë në ekran (Me sa duket kombinoni këtë me përgatitjen e një kafeje të fortë) FA: 06 - E fortë në ekran (Me sa duket kombinoni këtë me përgatitjen e një kafeje të fortë) FA: 07 - 'Special' në ekran, por në fakt nuk bën asgjë, nuk jam i sigurt se për çfarë është: 08 - Avulli FA: 09 - Kafe e Vogël FA: 0A - Kafe e madhe

Ka komanda të tjera, por kjo është e mjaftueshme për mua…

Bëni kujdes kur lëshoni komanda të panjohura, për shembull, me sa duket AN: 0A do të fshijë EEPROM të makinës …

Hapi 4: Çmontimi

Hapja e makinës në vetvete nuk është shumë e lehtë pasi keni nevojë për disa mjete pak të veçanta, por një person i etur do të gjejë një mënyrë - Ju keni nevojë për një bit T15 Torx dhe një "çelës ovale" për 2 vida. Torx që kisha tashmë, mjeti ovale që bëra nga një rrufe në kokë 4 mm e shpuar dhe e rrafshuar pak me një çekiç.

Udhëzimet këtu janë paraqitur mjaft mirë-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

Hapi 5: Anulimi i Garancisë

Anulimi i Garancisë
Anulimi i Garancisë
Anulimi i Garancisë
Anulimi i Garancisë
Anulimi i Garancisë
Anulimi i Garancisë
Anulimi i Garancisë
Anulimi i Garancisë

Pasi të hyni në makinë, do të shihni përbërësit kryesorë. Hyrja kryesore e energjisë ka një vend të bukur nën të për të shtuar karikuesin 5v.

Shtova tela (të vlerësuar nga rrjeti) në bllokun e terminalit në hyrje të makinës dhe i bashkova/i tkurra me nxehtësi në kunjat e rrjetit të ngarkuesit 5v. Modeli im i veçantë nuk ishte një lloj porte USB, por ai që e kishte lidhjen përgjithmonë. Ju mund të mos keni hapësirë të mjaftueshme për një port USB të tipit një që të jetë në gjendje të përdorë një kabllo USB aktuale, por nëse hapni ngarkuesin, mund të hiqni portën USB dhe ta zëvendësoni me një tel standard në pikat 5v dhe Gnd.

Nëse dëshironi, mund të zëvendësoni një furnizim me energji elektrike të vlerësuar me 5v. 500ma duhet të jetë e mjaftueshme.

Ka shumë hapësirë për modulin e stafetës pranë mulli. Ne duhet të lidhim dy stafetat për të punuar paralelisht me çelsat kryesore të energjisë. Thjesht i preva telat ekzistues, i hoqa, i kallajos, shtova një tel shtesë dhe u ngjita përsëri së bashku (mos harroni zvogëlimin e nxehtësisë). Kishte mjaft plogështi në tela për ta bërë këtë.

Moduli i stafetës mbahet në vend me kasetë të njëanshme me cilësi të mirë. Me telat e lidhur dhe vetëm me hapësirë të kufizuar për lëvizje, edhe nëse kaseta humbet kapjen, moduli nuk do të shkojë shumë larg dhe nuk mund të vijë në kontakt me ndonjë objekt metalik.

Unë gjithashtu testova përsëri portën diagnostikuese në makinën time për të përcaktuar vendndodhjen e lidhjeve të brendshme, në mënyrë që të arrija një integrim plotësisht të fshehur. Përdoren vetëm telat tx, rx dhe Gnd.

Nëse keni një makinë më komerciale që mbështet një tension në gatishmëri dhe/ose nuk doni të anuloni garancinë në pajisjen tuaj, mund të lidheni drejtpërdrejt me portin diagnostikues, por mund të mos jeni në gjendje të ndizni pajisjen duke përdorur këtë pajisje.

Makina ime përdor një lidhës 7 pin. Nga e majta në të djathtë është:

NC Tx G Rx NC 5v NC

Kunjat përkatëse në pllakën kryesore: E kuqe = Gnd Portokalli = Rx E zezë = Tx

Më shumë informacion mund të gjenden në pinouts këtu:

Hapi 6: Instalimi i telave në anën logjike

Instalimi i anës logjike
Instalimi i anës logjike
Instalimi i anës logjike
Instalimi i anës logjike
Instalimi i anës logjike
Instalimi i anës logjike

Rishikoni diagramin - Duket tepër e komplikuar, por në të vërtetë nuk është.

Unë e montova konvertuesin e nivelit në pjesën e pasme të rregullatorit të tensionit (të depinuar) me një shirit të dyanshëm. Më pas kam përdorur disa këmbë përbërëse për të bashkuar kunjat e energjisë dhe tokëzimit në të dy anët e konvertuesit të nivelit në kunjat e modulit përkatës të energjisë. I gjithë ky modul më pas funksionon si një "passthrough" për të gjithë logjikën dhe furnizimin me energji për ESP-01.

Kam përdorur dy konvertuesit e mesëm për të dhënat serike dhe dy të jashtmit për sinjalet e drejtimit të stafetës, por nuk ka rëndësi se cilën përdorni.

Në fakt nuk është e nevojshme me këto module stafetash të ekzekutojmë një logjikë 5v pasi ato janë aktive LOW, por thjesht funksionoi mirë kështu që e bëra gjithsesi.

Kam përdorur një kokë femër 4x2 për t'u lidhur me modulin ESP. Kjo lejon ngarkimin e lehtë të kodit ose zëvendësimin e modulit.

Hyrja 5V nuk është e paraqitur në diagram - unë e kam lidhur timin drejtpërdrejt në modulin e stafetës (shiko foton e dytë). Tela e zezë në pjesën e poshtme të majtë të figurës është e dhëna serike në tabelën kryesore. Kam përdorur një pjesë të një kablloje të mbrojtur të kufjeve 3.5 mm të mbrojtur vetëm për të ndihmuar në zvogëlimin e shanseve të ndërhyrjes në linjën e të dhënave.

Kodi 12f përdor SoftwareSerial në vend të serialit të harduerit - Kjo lejon që moduli të raportojë statusin për korrigjim përmes serialit normal. Lidhjet bëhen përmes kunjave 4 dhe 5 në vend. Përshtata të njëjtin kokë për ta bërë ESP12F një shkëmbim prizash për ESP-01, vetëm duke ndërruar ato kunjat serik

Hapi 7: Programimi i modulit

Programimi i modulit
Programimi i modulit

Kodi u përpilua kundër Arduino 1.8.1 me shtesën e bordit ESP8266 dhe PubSubClient 2.6.0 (që është Biblioteka MQTT)

Ndryshoni kodin sipas kërkesave tuaja dhe ngarkoni kodin në modulin ESP-01 dhe lidheni me pajisjen. Kini kujdes me orientimin e kunjave!

Konfigurimi

Opsioni 1)

Vetëm në kodin bazë në zip. Kur moduli ESP fillon së pari, kalon në modalitetin AP dhe vendos IP -në e tij në 192.168.4.1. Pastaj mund të lidheni me modulin dhe të ndryshoni IP dhe të lidheni me pikën tuaj të hyrjes. Ju gjithashtu do të duhet të vendosni një IP për makinën tuaj në atë rang pasi nuk ka DHCP në modul.

APID -ja e paracaktuar AP është 'ESPSwitch' dhe fjalëkalimi është '12345678'

Qëndron në modalitetin AP për 2 minuta si parazgjedhje. Ju mund ta ndryshoni këtë cilësim në 'global.h' - Quhet 'adminTimeout' dhe është në milisekonda. Unë rekomandoj që ta ndryshoni këtë në diçka të ulët sapo të keni një konfigurim të vlefshëm në EEPROM pasi do të shkaktojë vonesa të panevojshme në nisjen e pajisjes përndryshe.

Opsioni 2)

Kjo është mënyra e paracaktuar për kodin më të ri që mbështet komunikimin me dy drejtime, opsioni 1 nuk është i disponueshëm. Ju gjithashtu mund të ndryshoni cilësimet e paracaktuara të SSID/Fjalëkalimit në skedarin kryesor ino (shikoni për "// DEFAULT CONFIG") kështu që do të ngarkohet ato cilësime në EEPROM në nisjen e parë dhe ndryshoni vonesën e modalitetit të administratorit në diçka të ulët në 'global.h'. Kjo shmang nevojën për të ngatërruar lidhjen me AP të përkohshme.

Pajisja do të vendosë automatikisht id -në MQTT (dhe shtegun e abonimit) në 4 shifrat e fundit të numrit serik të moduleve. Rruga si parazgjedhje është ha/mod //#, ndryshoni ashtu siç e shihni të arsyeshme, por lexoni komentet në kod për t'u siguruar që grupi i duhur të ketë gjatësinë e duhur.

Unë e bëj këtë sepse do të thotë që nuk kam pse të krijoj një ID unike për çdo modul në rrjetin tim.

ID -ja e pajisjes është e dukshme dhe serveri MQTT mund të vendoset përmes faqes së serverit MQTT në serverin e brendshëm të uebit

Hapi 8: Të bësh gjëra të tilla…

Komandat MQTT janë

ha/mod/xxxx/0 ose 1 = Ndrysho fuqinë

Çdo varg tjetër do të trajtohet si një komandë dhe do të dërgohet përmes portit serik. Statusi raportohet në /ha /kafe në HEX

Me OpenHAB

makine kafeje.teme

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

Harta e faqes

Artikulli i grupit = "Makinë kafeje" {Artikulli ndërrues = Coffee_Machine_Power label = "Fuqia" mappings = [1 = "Toggle"] Ndrysho artikullin = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "E vogël"] Artikulli i ndërrimit = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Ndrysho artikullin = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Shpëlaj"] Artikulli i tekstit = Etiketa e kafesë_Status = "Statusi [%s] "}

voicecontrol.rregullimet

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

rregulli "Rregullat e komandës zanore"

kur Artikulli VoiceCommand mori komandën atëherë var String command = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand mori"+komandë)

nëse (komanda.përmban ("ndizni aparatin e kafesë") || komandën. përmban ("fikni aparatin e kafesë")) {

sendCommand (Coffee_Machine_Power, 1)} nëse (command.përmban ("më bëj një kafe të vogël")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")}} nëse (command.përmban ("më bëj një kafe të madhe")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")}} nëse (command.përmban ("shpëlaj makinën e kafesë")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} fund

Rregullat (për interpretimin e përgjigjeve HEX në vlera 'reale'):

rregulli "Statusi i makinës së kafesë" kur artikulli Coffee_Machine_Status mori azhurnim atëherë var String response = Coffee_Machine_Status.state.toString () if (respond.indexOf ("ic:")> -1) {var String hexString = answer.substring (3, 5)

var int num = (Integer.parseInt (hexString, 16));

var String binaryString = String.format ("%8s", Integer.toBinaryString (num)). zëvendëso ('', '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)

nëse (trayBit == "0") {

postUpdate (Coffee_Status, "Sirti mungon")} nëse (tankBit == "1") {postUpdate (Coffee_Status, "Fill Tank")} nëse (rinseBit == "1") {postUpdate (Coffee_Status, "Press Rotary")} nëse (trayBit == "1" && tankBit == "0" && rinseBit == "0") {postUpdate (Coffee_Status, "Ready")}

}

nëse (përgjigja == "Jo") {postUpdate (Coffee_Status, "Off")} përfundon

Hapi 9: Përmirësimet/Todo

Thjeshtoni konfigurimin fillestar që lidhet me wifi - U krye. Braktisur idenë e 'modalitetit admin' pasi ishte e bezdisshme. Tani thjesht shkruani SSID dhe fjalëkalimin në kod. Ruan në EEPROM nëse azhurnoni/ndryshoni përmes ndërfaqes në internet.

Kodi më i ri gjithashtu mbështet përditësimet OTA, por do t'ju duhet të azhurnoni EEPROM në modulin ESP-01 që kjo të funksionojë ose komentojë artikujt OTA përkatës

Shtoni kodin për përpunimin e përgjigjeve nga makina dhe lexoni statusin si pa tabaka, zona të zbrazëta dhe rezervuari mbushës - U krye. Unë kam shtuar kodin për të lexuar përsëri statusin dhe publikuar në ha/kafe. Këto janë vetëm përgjigjet e papërpunuara dhe unë jam ende duke punuar në interpretimin e tyre, por deri më tani unë kam Tray që mungon dhe Tank punon bosh. Sondazon makinën çdo 9 sekonda kur është aktiv dhe publikon përgjigjen ndaj MQTT

Përgjigja është në HEX por bitët individualë tregojnë sensorët

Shtoni kod në faqet e internetit për kontroll të drejtpërdrejtë përmes Komandave HTTP GET.

Konkursi i Internetit të Gjërave 2017
Konkursi i Internetit të Gjërave 2017
Konkursi i Internetit të Gjërave 2017
Konkursi i Internetit të Gjërave 2017

Çmimi i Parë në Konkursin e Internetit të Gjërave 2017

Recommended: