Talaan ng mga Nilalaman:

Pinagana ng IoT Coffee Machine: 9 Mga Hakbang (na may Mga Larawan)
Pinagana ng IoT Coffee Machine: 9 Mga Hakbang (na may Mga Larawan)

Video: Pinagana ng IoT Coffee Machine: 9 Mga Hakbang (na may Mga Larawan)

Video: Pinagana ng IoT Coffee Machine: 9 Mga Hakbang (na may Mga Larawan)
Video: DR. VICKI BELO's TRANSFORMATION💖🤩#vickibelo #doctor #transformation #viral #trending 2024, Hunyo
Anonim
Image
Image
Kailangan ng Equipement
Kailangan ng Equipement

Ang itinuturo na ito ay naipasok sa kumpetisyon ng IoT - Kung nais mo ito, mangyaring iboto ito

Nai-update: Ngayon ay sumusuporta sa 2 way comms at mga pag-update ng OTA

Para sa ilang oras ngayon ay mayroon akong isang Jura coffee machine at palagi kong nais na i-automate ito kahit papaano.

Nagpapatakbo ako ng pangunahing sistema ng automation ng bahay sa loob ng ilang taon ngunit ang kape machine ay hindi isang bagay na simpleng i-mod (o kaya naisip ko). Ang mga machine machine ng Jura sa pangkalahatan ay mayroong isang 'Diagnostic port' at / o isang port na ginamit para sa pagdaragdag ng isang sistema ng pagbabayad sa makina, subalit hindi ako makahanap ng anumang impormasyon tungkol sa kung paano ito magagamit. Kamakailan-lamang, ang protokol ay nabago ng engine ng ilang mga indibidwal at ginawang pampubliko. Ang problema ay, ang karamihan sa mga sanggunian sa magagamit na mga pagpapaandar ay para sa mas malaking machine kaysa sa minahan (Ena 7).

Bukod dito, ang aking makina ay walang permanenteng kapangyarihan ng standby tulad ng mas malaking machine, sa halip ay mayroon itong isang switch ng HV na ginagawang 'latch on' ang power supply. Ang pisikal na pindutan sa makina ay aktwal na nagpapagana ng 2 switch - Isang mababang boltahe (gilid ng lohika, patayin) at isang Mataas na Bolta (Power on). Ang parehong switch ay panandalian.

Kailangan ko ring tiyakin na ang makina ay nagpatakbo pa rin ng 100% na independyente sa anumang mekanismo ng pagkontrol, ibig sabihin ang machine ay gumagana pa rin bilang normal na parang hindi ito pinagana ng IoT.

Upang ma-automate ang machine ay nangangailangan ng dalawang bagay: 1) Upang makontrol ang lakas sa makina 2) Upang makapag-usap sa makina upang maisaaktibo ang mga pagpapaandar para sa paggawa ng kape, banlawan atbp.

Hakbang 1: Paano Mo Gagawin Ito

Gagamitin namin ang isang module na 'ESP -26' na ESP8266 upang kumonekta sa wifi sa bahay at mag-subscribe sa MQTT server / paksa na nakikinig para sa mga utos. Ang 'Front End' na ginamit ko ay OpenHAB2 ngunit walang dahilan na hindi ka maaaring idagdag sa web interface sa aparato at direktang kontrolin kung nais mo o sa pamamagitan ng HTTP Kumuha ng mga utos.

Hahawakan ng ESP8266 ang pagkontrol sa 2 relay na nauugnay sa power button at iproseso din ang mga serial command sa / mula sa coffee machine.

BABALA - Ang itinuturo na ito ay binabalangkas ang pamamaraang ginamit ko upang baguhin ang aking Jura Ena7 na kape machine upang makontrol sa pamamagitan ng pag-aautomat ng bahay. Nakikipag-usap ito sa pagbabago ng isang aparato ng kuryente na mains na maaaring mapanganib kung hindi nagawa nang wasto. Ang impormasyon dito ay maaaring hindi kumpleto, hindi tumpak at hindi ligtas. Magpatuloy nang may pag-iingat. Walang tanggap na pananagutan.

Hakbang 2: Kailangan ng Equipement

Kailangan ng Equipement
Kailangan ng Equipement
Kailangan ng Equipement
Kailangan ng Equipement
Kailangan ng Equipement
Kailangan ng Equipement

Mga Bahagi

  • Modulong ESP-01 at isang paraan upang mai-program ito (Arduino IDE at pisikal na adapter para sa pagprograma)
  • 2 way relay module EBAY
  • 5v -> 3.3v Regulator EBAY
  • Maliit na 5v mains na pinapatakbo ng charger ng telepono
  • Converter ng antas ng lohika * Freetronics
  • Misc wire, pin header, pag-urong ng init atbp para sa pagkonekta sa lahat.

Mga kasangkapan

  • Pinong naka-tip na bakal na panghinang
  • Panghinang
  • Madaling magamit ang Wire Strippers
  • Torx T15 Driver
  • Oval security tool (o gumawa ng isa, tumatagal lamang ng ilang mga minuto)

* Pauna kong ginamit ang isang arduino UNO sa aking pagsubok ng lahat ng mga serial command sa makina at ito ay gumana nang walang kamalian, subalit ang module ng ESP ay tumangging gumana. Dinoble ko ang tseke ng code at natitiyak ko na ang mga utos na lumalabas sa module ng ESP ay kapareho ng arduino subalit ito ay isang walang lakad. Inilagay ko ito sa module ng ESP na gumagana lamang sa 3.3v na lohika at hindi 5V. Sa sandaling mailagay ko sa converter ng Logic, gumana ito ng maayos. Ito ay maaaring kinakailangan o hindi sa ibang mga machine.

Sa isip, magkakaroon ka ng isang umiiral na system ng automation ng bahay na sumusuporta sa MQTT protocol (tulad ng openhab) dahil ito ang layunin ng proyekto. Kung nais mo lamang itong kontrolin sa pamamagitan ng mga pindutan sa isang web page nang walang anumang mga sumusuporta sa mga system, kakailanganin mong gumawa ng ilang mga pagbabago sa naka-embed na code ng web page. Hindi ito masyadong kumplikado upang makamit (maaaring rev2..)

Hakbang 3: Ang Jura Protocol

Ang Jura Protocol
Ang Jura Protocol

Ang data sa / mula sa makina ay serial @ 9600 lamang ngunit ang Jura ay may ilang mga trick up din ang kanilang manggas. Ginagamit ito ng protocol para sa labis na ECC at / o upang maiwaksi ang komunikasyon. Sa madaling salita, ang bawat byte ng data (character) ay nahahati sa mga bit 2 at 5 ng 4 na karaniwang mga byte ng serial na na-trailed ng isang pag-pause ng 8ms. Kung nagmamalasakit ka upang malaman kung paano ito gumagana, maraming impormasyon sa mga link dito.

Ang impormasyong Protocol ay nakuha mula sa:

Pinapasimple ito ng code ng arduino, na nagbibigay-daan sa iyo upang magpadala ng mga pamantayan, nababasa na mga utos na nababasa ng tao sa Jura protocol.

Ang aking code ay isang kumbinasyon ng code mula sa: https://github.com/oliverk71/Coffeemaker-Payment-…

Ang mga utos na isinangguni sa mga site sa itaas ay hindi tumpak para sa aking makina ngunit sa pamamagitan ng isang paraan ng pagsubok at error, naisip ko ang nasa ibaba:

FA: 01 - Patayin (ngunit tila hindi banlaw, kahit na kinakailangan) FA: 02 - Tumutugon sa 'ok' ngunit hindi sigurado kung ano ang ginagawa nito. FA: 03 - Banlawan ang Mensahe (Puwersa ang isang 'banlawan' mensahe sa screen, pagpindot sa rotary rinses machine) FA: 04 - Banlawan ang Aksyon - Banlaw kapag lumitaw ang mensahe na 'Press Rotary button', kung hindi man ay walang FA: 05 - Malakas sa screen (Malamang pagsamahin ito sa paggawa ng kape para sa malakas) FA: 06 - Malakas sa screen (Maaaring pagsamahin ito sa paggawa ng kape para sa malakas) FA: 07 - 'Espesyal' sa screen ngunit hindi talaga gumawa ng kahit ano, hindi sigurado kung ano ito para saFA: 08 - Steam FA: 09 - Maliit na Kape FA: 0A - Malaking Kape

Mayroong iba pang mga utos ngunit marami ito para sa akin …

Mag-ingat kapag nag-isyu ng hindi kilalang mga utos, halimbawa, tila AN: 0A ay tatanggalin ang EEPROM ng makina …

Hakbang 4: Pag-disassemble

Ang pagkuha ng mismong machine na bukas ay hindi masyadong madali dahil kailangan mo ng ilang bahagyang mga espesyal na tool ngunit ang isang masigasig na tao ay makakahanap ng isang paraan - Kailangan mo ng isang T15 Torx bit at isang 'hugis-itlog key' para sa 2 mga turnilyo. Ang Torx na mayroon ako, ang tool na hugis-itlog na ginawa ko mula sa isang 4mm na socket head bolt na drill out at pinatag ng isang martilyo.

Ang mga tagubilin dito ay medyo mahusay na ipinakita -

Hakbang 5: Pagtanggal sa Warranty

Ang pagtanggal ng Warranty
Ang pagtanggal ng Warranty
Ang pagtanggal ng Warranty
Ang pagtanggal ng Warranty
Ang pagtanggal ng Warranty
Ang pagtanggal ng Warranty
Ang pagtanggal ng Warranty
Ang pagtanggal ng Warranty

Kapag nasa makina, makikita mo ang pangunahing mga sangkap. Ang pangunahing papasok ng kuryente ay may magandang lugar sa ilalim nito para sa pagdaragdag ng 5v charger.

Nagdagdag ako (na-rate ang pangunahing) mga wire sa terminal block sa pagpasok ng makina at na-solder / heatshrink ang mga ito sa mga pin ng mains ng 5v charger. Ang aking partikular na modelo ay hindi isang uri ng USB port ngunit isa na may permanenteng nakakabit na lead. Maaaring wala kang sapat na silid para sa isang uri ng usb port upang magamit ang isang tunay na USB cable ngunit kung binuksan mo ang charger, maaari mong alisin ang USB port at palitan ng isang karaniwang kawad sa 5v at Gnd point.

Maaari mong palitan ang isa pang mains na na-rate ang 5v power supply kung nais mo. 500ma dapat maraming.

Mayroong maraming silid para sa relay module hanggang sa malapit sa gilingan. Kailangan nating i-wire ang dalawang relay upang gumana nang kahanay sa pangunahing mga switch ng kuryente. Pinutol ko lang ang mga mayroon nang mga wire, hinubaran, naka-tin, nagdagdag ng dagdag na kawad at muling pinaghinang (huwag kalimutan ang heatshrink). Mayroong sapat na slack sa mga wire upang magawa ito.

Ang module ng relay ay gaganapin sa lugar na may mahusay na kalidad ng double sided tape. Sa mga koneksyon na mga wire at may limitadong puwang lamang para sa paggalaw, kahit na mawalan ng mahigpit na pagkakahawak ang tape, ang module ay hindi lalayo at hindi makikipag-ugnay sa anumang mga metal na bagay.

Sinulit ko din ang diagnostic port sa aking makina upang matukoy ang lokasyon ng mga panloob na koneksyon upang makamit ko ang isang ganap na nakatagong pagsasama. Ang tx, rx at Gnd wires lang ang ginagamit.

Kung mayroon kang isang mas komersiyal na makina na sumusuporta sa isang standby boltahe at / o hindi mo nais na i-void ang warranty sa iyong machine, maaari kang direktang kumonekta sa diagnostic port sa halip ngunit maaaring hindi mapagana sa makina gamit ang aparatong ito.

Gumagamit ang aking makina ng isang konektor na 7 pin. Mula kaliwa hanggang kanan ito ay:

NC Tx G Rx NC 5v NC

Ang kaukulang mga pin sa mainboard: Pula = Gnd Orange = Rx Black = Tx

Makakakita ng mas maraming impormasyon sa mga pinout dito:

Hakbang 6: Mga kable sa Logic Side

Kable ng Logic Side
Kable ng Logic Side
Kable ng Logic Side
Kable ng Logic Side
Kable ng Logic Side
Kable ng Logic Side

Suriin ang diagram - Mukhang sobrang kumplikado ngunit talagang hindi.

Inilagay ko ang converter ng antas sa likuran ng (depinned) boltahe regulator na may ilang dobleng panig na tape. Gumamit ako pagkatapos ng ilang mga bahagi ng binti upang maghinang ang kapangyarihan at mga ground pin sa magkabilang panig ng antas ng converter sa kaukulang mga module ng kapangyarihan na mga pin. Gumagawa ang buong module na ito tulad ng isang 'passthrough' para sa lahat ng lohika at power supply para sa ESP-01.

Ginamit ko ang dalawang gitnang mga converter para sa serial data at ang panlabas na dalawa para sa mga signal ng relay sa pagmamaneho ngunit hindi mahalaga kung alin ang ginagamit mo.

Hindi talaga kinakailangan sa mga modyul na ito ng relay upang magpatakbo ng isang 5v na lohika dahil aktibo sila LOW ngunit gumana ito nang maayos kaya't ginawa ko pa rin.

Gumamit ako ng isang 4x2 babaeng header para sa pagkonekta sa module ng ESP. Pinapayagan nito ang madaling pag-upload ng code o pagpapalit ng module.

Hindi nakalarawan sa diagram ang input ng 5V - Nag-wire ko nang direkta ang relay module (tingnan ang pangalawang larawan). Ang itim na kawad sa kaliwang ibabang bahagi ng larawan ay ang serial data na papunta sa pangunahing board. Gumamit ako ng isang bahagi ng isang kalasag na 3.5mm headphone extension cable upang matulungan lamang na mabawasan ang mga pagkakataong makagambala sa linya ng data.

Gumagamit ang 12f code ng SoftwareSerial sa halip na serial serial - Pinapayagan ang module na mag-ulat ng katayuan para sa pag-debug pabalik sa pamamagitan ng normal na serial. Ang mga koneksyon ay sa pamamagitan ng mga pin 4 at 5 sa halip. Inangkop ko ang parehong header upang gawing isang plug in swap ang ESP12F para sa ESP-01, palitan lamang ang mga serial pin

Hakbang 7: Programming ang Modyul

Programming ang Modyul
Programming ang Modyul

Ang code ay naipon laban sa Arduino 1.8.1 kasama ang board ng addon ng ESP8266 at PubSubClient 2.6.0 (na ang MQTT Library)

Baguhin ang code alinsunod sa iyong mga kinakailangan at i-upload ang code sa module na ESP-01 at kumonekta sa makina. Mag-ingat sa orientation ng mga pin!

Pag-configure

Pagpipilian 1)

Sa base code lamang sa zip. Kapag ang unang module ng ESP na bota, pumupunta ito sa AP mode at itinatakda ang IP sa 192.168.4.1. Pagkatapos ay maaari kang kumonekta sa module at baguhin ang IP at kumonekta sa iyong sariling access point. Kakailanganin mo ring magtakda ng isang IP para sa iyong machine sa saklaw na iyon dahil walang DHCP sa module.

Ang default na AP SSID ay 'ESPSwitch' at ang password ay '12345678'

Ito ay mananatili sa AP mode ng 2 minuto bilang default. Maaari mong baguhin ang setting na ito sa 'global.h' - Ito ay tinatawag na 'adminTimeout' at nasa milliseconds. Inirerekumenda kong palitan ito sa isang bagay na mababa sa sandaling mayroon kang isang wastong config sa EEPROM dahil magdudulot ito ng hindi kinakailangang pagkaantala sa boot ng aparato kung hindi man.

Pagpipilian 2)

Ito ang default mode para sa mas bagong code na sumusuporta sa 2 way comms, hindi magagamit ang pagpipiliang 1. Maaari mo ring baguhin ang mga default na setting ng SSID / Password sa pangunahing file na ino (tingnan ang '// DEFAULT CONFIG') kaya't maglo-load ito ang mga setting na iyon sa EEPROM sa unang boot at palitan ang pagkaantala ng mode ng admin sa isang bagay na mababa sa 'global.h'. Iniiwasan nito ang pagkakaroon ng gulo sa pagkonekta sa pansamantalang AP.

Awtomatikong itatakda ng aparato ang MQTT id (at landas ng subscription) sa huling 4 na mga numero ng mga serial number. Ang path sa pamamagitan ng default ay ha / mod // #, baguhin ayon sa nakikita mong akma ngunit basahin ang mga komento sa code upang matiyak na ang naaangkop na array ay may tamang haba.

Ginagawa ko ito dahil nangangahulugan ito na hindi ko kailangang makabuo ng isang natatanging ID para sa bawat module sa aking network.

Ang aparato ID ay nakikita at ang MQTT server ay maaaring itakda sa pamamagitan ng pahina ng server ng MQTT sa panloob na web server

Hakbang 8: Ginagawa Ito Bagay-bagay …

Ang mga utos ng MQTT ay

ha / mod / xxxx / 0 o 1 = I-toggle ang lakas

Anumang iba pang mga string ay ituturing bilang isang utos at ipadala sa pamamagitan ng serial port. Ang status ay naiulat sa / ha / kape sa HEX

Sa OpenHAB

coffeemachine.item

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

Sitemap

Item sa pangkat = "Machine ng Kape" {Lumipat ng item = Kape_Machine_Power na label = "Power" mappings = [1 = "Toggle"] Lumipat ng item = Kape_Machine_Cmd label = "" mappings = ["FA: 09" = "Maliit"] Lumipat item = Kape_Machine_Cmd label = "" mappings = ["FA: 0A" = "Malaki"] Lumipat ng item = Kape_Machine_Cmd label = "" mappings = ["FA: 04" = "Rinse"] Text item = Coffee_Status label = "Status [% s] "}

voicecontrol.rules

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

panuntunan ang "Mga Panuntunan sa utos ng boses"

kapag nakatanggap ng utos ang Item VoiceCommand pagkatapos ay var String command = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "Natanggap ang VoiceCommand" + utos)

kung (command.contains ("i-on ang coffee machine") || command.contains ("patayin ang coffee machine")) {

sendCommand (Coffee_Machine_Power, 1)} kung (command.contains ("gumawa ako ng isang maliit na kape")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} kung (command.contains ("gumawa ako ng isang malaking kape")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} kung (command.contains ("banlawan ang coffee machine")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} pagtatapos

Mga Panuntunan (para sa pagbibigay kahulugan sa mga tugon sa HEX sa mga 'totoong' halaga):

patakaran ang "Katayuan ng Machine ng Kape" kapag ang Item Coffee_Machine_Status ay nakatanggap ng pag-update pagkatapos var String tugon = Coffee_Machine_Status.state.toString () kung (response.indexOf ("ic:")> -1) {var String hexString = response.substring (3, 5)

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

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

kung (trayBit == "0") {

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

}

kung (tugon == "Off") {postUpdate (Coffee_Status, "Off")} ay natapos na

Hakbang 9: Mga Pagpipino / Todo

Pasimplehin ang paunang pag-set up na kumokonekta sa wifi - Tapos Na. Inabandona ang ideya ng 'admin mode' dahil nakakainis ito. Ngayon ipasok lamang ang SSID at password sa code. Makatipid sa EEPROM kung nag-update / nagbago sa pamamagitan ng web interface.

Sinusuportahan din ng mas bagong code ang mga pag-update ng OTA ngunit kakailanganin mong i-upgrade ang EEPROM sa module na ESP-01 upang ito ay gumana o magkomento ng mga kaukulang item ng OTA

Magdagdag ng code para sa pagpoproseso ng mga tugon mula sa makina at basahin ang katayuan tulad ng walang tray, walang laman na bakuran at punong tangke - Tapos Na. Nagdagdag ako ng code upang mabasa ang katayuan pabalik at mai-publish sa ha / kape. Ito ay ang mga hilaw na tugon lamang at nagtatrabaho pa rin ako sa pagbibigay kahulugan sa kanila ngunit hanggang ngayon ay nawawala ko ang Tray at walang laman na pagtatrabaho ang Tank. Pinipili nito ang makina bawat 9 segundo kapag nasa at nai-publish ang tugon sa MQTT

Ang tugon ay nasa HEX ngunit ang mga indibidwal na piraso ay nagpapahiwatig ng mga sensor

Magdagdag ng code sa mga webpage para sa direktang kontrol sa pamamagitan ng Mga HTTP GET Command.

Internet of Things Contest 2017
Internet of Things Contest 2017
Internet of Things Contest 2017
Internet of Things Contest 2017

Unang Gantimpala sa Internet of Things Contest 2017

Inirerekumendang: