Talaan ng mga Nilalaman:
- Hakbang 1: Paano Mo Gagawin Ito
- Hakbang 2: Kailangan ng Equipement
- Hakbang 3: Ang Jura Protocol
- Hakbang 4: Pag-disassemble
- Hakbang 5: Pagtanggal sa Warranty
- Hakbang 6: Mga kable sa Logic Side
- Hakbang 7: Programming ang Modyul
- Hakbang 8: Ginagawa Ito Bagay-bagay …
- Hakbang 9: Mga Pagpipino / Todo
Video: Pinagana ng IoT Coffee Machine: 9 Mga Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
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
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 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
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
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
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.
Unang Gantimpala sa Internet of Things Contest 2017
Inirerekumendang:
IoT APIS V2 - Autonomous IoT-pinagana ng Automated Plant Irrigation System: 17 Mga Hakbang (na may Mga Larawan)
Ang IoT APIS V2 - Autonomous IoT na pinagana ng Automated Plant Irrigation System: Ang proyektong ito ay isang ebolusyon ng aking dating itinuro: APIS - Automated Plant Irrigation System Gumagamit ako ng APIS sa loob ng halos isang taon ngayon, at nais na mapabuti sa nakaraang disenyo: subaybayan ang halaman nang malayuan. Ganito
Pinagana ng Wifi ang OLED ESP32 Mga Car Gauge: 3 Hakbang (na may Mga Larawan)
Pinagana ng Wifi ang OLED ESP32 Mga Gauge ng Kotse: Mga pagpapakilala muna … Bumubuo ako ng mga gauge ng kotse bilang isang uri ng muli at off na libangan. Tingnan ang https: //www.instructables.com/id/Remote-Car-Monit … at https: //www.instructables.com/id/Remote-Car-Monit … para sa dalawa pang mga kamakailang halimbawa. Lalo na gusto ko
Pinagana ng WiFi ang Pinagana ng Temperatura na Kinokontrol ng Temperatura ng WiFi: 4 na Hakbang
Pinagana ng WiFi ang Pinagana na Temperatura na Kinokontrol ng Temperatura: Sa hanay ng tagubilin na ito titingnan namin kung paano bumuo ng isang probe ng temperatura na pinagana ng WiFi sa pamamagitan ng paggamit ng isang simpleng ESP8266 para sa mabibigat na nakakataas at isang sensor ng temperatura / kahalumigmigan ng DHT11. Gagamitin din namin ang circuit board na aking nilikha at
1 Meter POV Gamit ang IOT Pinagana: 3 Hakbang (na may Mga Larawan)
1 Meter POV Sa IOT Pinagana: Bago simulan ang paliwanag tungkol sa proyektong ito nais kong humingi ng paumanhin para sa mababang kalidad ng imahe at video, ngunit sa totoo lang mahirap talagang kumuha ng isang matalim at malinaw na imahe mula sa pagpapatakbo ng POV gamit ang normal na kamera tulad ng aking mobile camera. Kailangan nito ng napakabilis d
IoT Pinagana ang Sensor Data Collection Center Na May ESP8266 & PubNub: 9 Mga Hakbang (na may Mga Larawan)
IoT Pinagana ang Sensor Data Collection Center Sa ESP8266 & PubNub: Karamihan sa mga tutorial sa ESP8266 ay nasa antas ng newbie (malayo na kumikislap ng isang led) o masyadong kumplikado para sa isang tao na naghahanap ng isang bagay upang mapabuti at mag-upgrade sa kanyang pinangunahan na mga kasanayan sa pagpikit. Ito itinuturo na naglalayong tulay ang puwang na ito sa lumikha