Isi kandungan:
- Langkah 1: Bagaimana Kita Akan Melakukannya
- Langkah 2: Peralatan Diperlukan
- Langkah 3: Protokol Jura
- Langkah 4: Pembongkaran
- Langkah 5: Membatalkan Jaminan
- Langkah 6: Pendawaian Sisi Logik
- Langkah 7: Memprogram Modul
- Langkah 8: Membuatnya Menjadi Perkara …
- Langkah 9: Penambahbaikan / Todo
Video: Mesin Kopi Diaktifkan IoT: 9 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Instruksional ini dimasukkan ke dalam pertandingan IoT - Sekiranya anda suka, sila pilih
DIKEMASKINI: Kini menyokong kemas kini 2 hala dan kemas kini OTA
Untuk beberapa waktu sekarang, saya mempunyai mesin kopi Jura dan saya ingin sentiasa mengautomasikannya.
Saya telah menjalankan sistem automasi rumah asas selama beberapa tahun tetapi mesin kopi bukanlah sesuatu yang mudah diubahsuai (atau saya kira). Mesin kopi Jura biasanya mempunyai 'Diagnostic port' dan / atau port yang digunakan untuk menambahkan sistem pembayaran ke mesin, namun saya tidak dapat menemukan maklumat mengenai bagaimana ia dapat digunakan. Baru-baru ini, protokol ini dibuat semula oleh beberapa individu dan dibuat untuk umum. Masalahnya adalah, sebilangan besar rujukan fungsi yang ada adalah untuk mesin yang jauh lebih besar daripada mesin saya (Ena 7).
Di samping itu, mesin saya tidak mempunyai kuasa sedia tetap seperti mesin yang lebih besar, sebaliknya ia mempunyai suis HV yang menjadikan bekalan kuasa 'mengunci'. Butang fizikal pada mesin sebenarnya mengaktifkan 2 suis - Satu volt rendah (sisi logik, matikan) dan satu Volt Tinggi (Kuasa hidup). Kedua-dua suis sesaat.
Saya juga perlu memastikan bahawa mesin masih beroperasi 100% bebas dari mekanisme kawalan apa pun, iaitu mesin masih berfungsi seperti biasa seolah-olah tidak diaktifkan IoT.
Untuk mengautomasikan mesin memerlukan dua perkara: 1) Mampu mengawal kuasa ke mesin 2) Mampu berkomunikasi dengan mesin untuk mengaktifkan fungsi membuat kopi, bilas dll.
Langkah 1: Bagaimana Kita Akan Melakukannya
Kami akan menggunakan modul ESP8266 'ESP-01' untuk menyambung ke wifi rumah dan melanggan pelayan / topik MQTT untuk mendengar arahan. 'Front End' yang saya gunakan adalah OpenHAB2 tetapi tidak ada alasan anda tidak dapat menambahkan ke antara muka web pada peranti dan mengendalikan secara langsung jika anda mahu atau melalui perintah HTTP Get.
ESP8266 akan mengendalikan 2 relai yang berkaitan dengan butang kuasa dan juga memproses arahan bersiri ke / dari mesin kopi.
PERINGATAN - Petunjuk ini menggariskan prosedur yang saya gunakan untuk mengubah suai mesin kopi Jura Ena7 saya untuk dikawal melalui automasi rumah. Ini berkaitan dengan mengubah suai peranti elektrik utama yang boleh membahayakan jika dilakukan dengan tidak betul. Maklumat di sini mungkin tidak lengkap, tidak tepat dan tidak selamat. Teruskan dengan berhati-hati. Tiada tanggungjawab yang diterima.
Langkah 2: Peralatan Diperlukan
Bahagian
- Modul ESP-01 dan cara memprogramnya (Arduino IDE dan penyesuai fizikal untuk pengaturcaraan)
- Modul relay 2 hala EBAY
- 5v -> 3.3v Regulator EBAY
- Pengecas telefon berkuasa 5v kecil
- Penukar tahap logik * Freetronics
- Lain-lain wayar, pin header, heat shrink dll untuk menghubungkan semuanya.
Alat
- Besi pematerian hujung halus
- Pateri
- Wire Strippers sangat berguna
- Pemandu Torx T15
- Alat keselamatan bujur (atau membuatnya, hanya memerlukan beberapa minit)
* Pada mulanya saya menggunakan arduino UNO dalam menguji semua arahan bersiri ke mesin dan ia berfungsi dengan sempurna, namun modul ESP enggan berfungsi. Saya tiga kali memeriksa kod dan saya yakin bahawa perintah yang keluar dari modul ESP adalah sama dengan arduino tetapi ia tidak boleh digunakan. Saya meletakkan ini pada modul ESP yang hanya menggunakan logik 3.3v dan bukan 5V. Sebaik sahaja saya memasukkan penukar Logik, ia berfungsi dengan baik. Ini mungkin atau tidak diperlukan di mesin lain.
Sebaik-baiknya, anda akan mempunyai sistem automasi rumah yang ada yang menyokong protokol MQTT (seperti openhab) kerana inilah tujuan projek ini. Sekiranya anda hanya mahu mengawalnya melalui butang di laman web tanpa sistem sokongan, anda perlu membuat beberapa perubahan pada kod halaman web yang disematkan. Ia tidak terlalu rumit untuk dicapai (mungkin rev2..)
Langkah 3: Protokol Jura
Data ke / dari mesin hanya bersiri @ 9600 tetapi Jura mempunyai beberapa tip di lengan baju mereka juga. Protokol menggunakan ini untuk ECC tambahan dan / atau untuk mengaburkan komunikasi. Ringkasnya, setiap bait data (watak) dibahagi pada bit 2 dan 5 dari 4 bait bersiri standard yang diikuti oleh jeda 8ms. Sekiranya anda berminat untuk mengetahui cara ini berfungsi, terdapat banyak maklumat dalam pautan di sini.
Maklumat Protokol diambil dari:
Kod arduino mempermudah ini, membolehkan anda menghantar perintah yang boleh dibaca oleh manusia yang kemudiannya dipindahkan ke protokol Jura.
Kod saya adalah gabungan kod dari:
Perintah yang dirujuk di laman web di atas tidak tepat untuk mesin saya tetapi melalui kaedah percubaan dan kesilapan, saya dapat menghasilkan yang berikut:
FA: 01 - Mematikan (tetapi nampaknya tidak membilas, walaupun diperlukan) FA: 02 - Menjawab 'ok' tetapi tidak pasti apa yang dilakukannya. FA: 03 - Bilas Mesej (Memaksa mesej 'bilas' di skrin, menekan mesin bilas putar) FA: 04 - Bilas Tindakan - Bilas apabila mesej 'Tekan Rotary button' muncul, jika tidak, tidak ada yang FA: 05 - Kuat pada skrin (Agaknya menggabungkan ini dengan membuat kopi yang kuat) FA: 06 - Kuat di skrin (Agak boleh menggabungkan ini dengan membuat kopi untuk yang kuat) FA: 07 - 'Istimewa' di skrin tetapi sebenarnya tidak melakukan apa-apa, tidak pasti apa ini untukFA: 08 - Steam FA: 09 - Kopi Kecil FA: 0A - Kopi Besar
Ada arahan lain tetapi ini banyak bagi saya …
Berhati-hati semasa mengeluarkan arahan yang tidak diketahui, misalnya, nampaknya AN: 0A akan menghapus EEPROM mesin …
Langkah 4: Pembongkaran
Membuka mesin dengan sendirinya terlalu mudah kerana anda memerlukan alat yang sedikit khas tetapi orang yang berminat akan mencari jalan - Anda memerlukan bit T15 Torx dan 'kunci bujur' untuk 2 skru. Torx yang sudah saya miliki, alat bujur yang saya buat dari bolt kepala soket 4mm yang digerudi dan diratakan sedikit dengan tukul.
Arahan di sini cukup baik -
Langkah 5: Membatalkan Jaminan
Setelah masuk ke mesin, anda akan melihat komponen utama. Saluran masuk utama mempunyai tempat yang bagus untuk menambahkan pengecas 5v.
Saya menambah kabel (arus utama) ke blok terminal di pintu masuk mesin dan menyolder / memanaskannya ke pin utama pengecas 5v. Model khusus saya bukanlah jenis port USB tetapi model yang mempunyai plumbum terpasang secara kekal. Anda mungkin tidak mempunyai cukup ruang untuk port usb jenis satu untuk dapat menggunakan kabel USB yang sebenarnya tetapi jika anda membuka pengecas, anda boleh mengeluarkan port USB dan mengganti dengan wayar standard ke titik 5v dan Gnd.
Anda boleh mengganti bekalan kuasa 5v yang lain jika anda suka. 500ma mesti banyak.
Terdapat banyak ruang untuk modul geganti di dekat penggiling. Kita mesti memasang dua relay untuk beroperasi selari dengan suis kuasa utama. Saya hanya memotong wayar yang ada, dilucutkan, dilekatkan, dimasukkan wayar tambahan dan disolder kembali bersama (jangan lupa sinki panas). Terdapat cukup kekurangan wayar untuk melakukan ini.
Modul relay dipasang di tempatnya dengan pita dua sisi berkualiti baik. Dengan wayar yang disambungkan dan hanya dengan ruang yang terhad untuk bergerak, walaupun pita itu tidak dapat dicengkam, modul tidak akan terlalu jauh dan tidak boleh bersentuhan dengan objek logam.
Saya juga menyokong port diagnostik pada mesin saya untuk menentukan lokasi sambungan dalaman supaya saya dapat mencapai integrasi yang tersembunyi sepenuhnya. Hanya wayar tx, rx dan Gnd yang digunakan.
Sekiranya anda mempunyai mesin yang lebih komersial yang menyokong voltan siap sedia dan / atau anda tidak mahu membatalkan jaminan pada mesin anda, anda boleh menyambung terus ke port diagnostik tetapi mungkin tidak dapat menghidupkan mesin menggunakan peranti ini.
Mesin saya menggunakan penyambung 7 pin. Dari kiri ke kanan adalah:
NC Tx G Rx NC 5v NC
Pin yang sesuai di papan utama: Merah = Gnd Orange = Rx Hitam = Tx
Maklumat lebih lanjut boleh didapati di pinout di sini:
Langkah 6: Pendawaian Sisi Logik
Kaji rajah - Ia kelihatan terlalu rumit tetapi sebenarnya tidak.
Saya memasang penukar aras ke belakang pengatur voltan (depinned) dengan pita dua sisi. Saya kemudian menggunakan beberapa kaki komponen untuk menyolder pin kuasa dan ground di kedua-dua sisi penukar aras ke pin modul kuasa yang sesuai. Seluruh modul ini kemudian berfungsi seperti 'jalan masuk' untuk semua logik dan bekalan kuasa untuk ESP-01.
Saya menggunakan dua penukar tengah untuk data bersiri dan dua luaran untuk isyarat pemanduan geganti tetapi tidak menjadi masalah yang anda gunakan.
Sebenarnya tidak diperlukan dengan modul relay ini untuk menjalankan logik 5v kerana mereka aktif RENDAH tetapi ia berfungsi dengan baik jadi saya tetap melakukannya.
Saya menggunakan header wanita 4x2 untuk menyambung ke modul ESP. Ini membolehkan memuat naik kod atau penggantian modul dengan mudah.
Tidak ditunjukkan dalam rajah adalah input 5V - Saya memasang kabel tambang terus ke modul geganti (lihat gambar kedua). Kawat hitam di kiri bawah gambar adalah data bersiri ke papan utama. Saya menggunakan bahagian kabel sambungan fon kepala 3.5mm terlindung hanya untuk membantu mengurangkan kemungkinan gangguan pada baris data.
Kod 12f menggunakan SoftwareSerial dan bukannya siri perkakasan - Ini membolehkan modul melaporkan status untuk debug kembali melalui siri biasa. Sambungan melalui pin 4 dan 5 sebaliknya. Saya mengadaptasi header yang sama untuk menjadikan ESP12F sebagai plug in swap untuk ESP-01, hanya menukar pin bersiri tersebut
Langkah 7: Memprogram Modul
Kod disusun melawan Arduino 1.8.1 dengan addon papan ESP8266 dan PubSubClient 2.6.0 (yang merupakan Perpustakaan MQTT)
Ubah kod mengikut keperluan anda dan muat naik kod ke modul ESP-01 dan sambungkan ke mesin. Berhati-hati dengan orientasi pin!
Konfigurasi
Pilihan 1)
Hanya pada kod asas dalam bentuk zip. Semasa modul ESP mula-mula melakukan boot, ia masuk ke mod AP dan menetapkan IP ke 192.168.4.1. Anda kemudian boleh menyambung ke modul dan menukar IP dan menyambung ke pusat akses anda sendiri. Anda juga perlu menetapkan IP untuk mesin anda dalam julat tersebut kerana tidak ada DHCP pada modul.
AP SSID lalai adalah 'ESPSwitch' dan kata laluan adalah '12345678'
Tetap dalam mod AP selama 2 minit secara lalai. Anda boleh mengubah tetapan ini dalam 'global.h' - Ia disebut 'adminTimeout' dan dalam milisaat. Saya mengesyorkan menukarnya kepada sesuatu yang rendah setelah anda mempunyai konfigurasi yang sah di EEPROM kerana ia akan menyebabkan kelewatan yang tidak perlu dalam boot peranti.
Pilihan 2)
Ini adalah mod lalai untuk kod yang lebih baru yang menyokong koma 2 arah, pilihan 1 tidak tersedia. Anda juga boleh mengubah tetapan SSID / Kata Laluan lalai dalam fail ino utama (cari '// DEFAULT CONFIG') sehingga akan dimuat tetapan tersebut ke dalam EEPROM pada boot pertama dan menukar kelewatan mod admin kepada sesuatu yang rendah di 'global.h'. Ini mengelakkan dari berlakunya gangguan semasa menyambung ke AP sementara.
Peranti akan menetapkan id MQTT (dan jalur langganan) secara automatik ke 4 digit terakhir nombor siri modul. Laluan secara lalai adalah ha / mod // #, ubah sesuai keinginan anda tetapi baca komen dalam kod untuk memastikan susunan yang sesuai mempunyai panjang yang betul.
Saya melakukan ini kerana ini bermaksud saya tidak perlu menghasilkan ID unik untuk setiap modul di rangkaian saya.
ID peranti dapat dilihat dan pelayan MQTT dapat diatur melalui halaman pelayan MQTT di pelayan web dalaman
Langkah 8: Membuatnya Menjadi Perkara …
Perintah MQTT adalah
ha / mod / xxxx / 0 atau 1 = Togol kuasa
Sebarang rentetan lain akan dianggap sebagai perintah dan dihantar melalui port bersiri. Status dilaporkan kepada / ha / kopi dalam HEX
Dengan OpenHAB
coffeemachine.items
Number Coffee_Machine_Power "Power" {mqtt = "> [control: ha / mod / 8002 /: command: *: default]"} String Coffee_Machine_Status {mqtt = "<[kawalan: ha / kopi: state: default]"}
Peta Laman
Item kumpulan = "Mesin Kopi" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Tukar item = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Bilas"] Item teks = Coffee_Status label = "Status [% s] "}
voicecontrol.rules
import org.openhab.model.script.actions. * import jenis org.openhab.core.library.type. * import java.util. *
peraturan "Peraturan arahan suara"
apabila Item VoiceCommand menerima perintah maka perintah var String = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand diterima" + perintah)
if (command.contains ("hidupkan mesin kopi") || command.contains ("matikan mesin kopi")) {
sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("jadikan saya kopi kecil")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} jika (command.contains ("jadikan saya kopi besar")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("bilas mesin kopi")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} akhir
Peraturan (untuk menafsirkan tindak balas HEX menjadi nilai 'nyata'):
peraturan "Status Mesin Kopi" apabila Item Coffee_Machine_Status menerima kemas kini maka var String Respons = Coffee_Machine_Status.state.toString () if (Respons.indexOf ("ic:")> -1) {var String hexString = Respons.substring (3, 5)
var int num = (Integer.parseInt (hexString, 16));
var String binaryString = String.format ("% 8s", Integer.toBinaryString (num)). ganti ('', '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)
jika (trayBit == "0") {
postUpdate (Coffee_Status, "Tray Missing")} if (tankBit == "1") {postUpdate (Coffee_Status, "Fill Tank")} if (rinseBit == "1") {postUpdate (Coffee_Status, "Tekan Rotary")} if (trayBit == "1" && tankBit == "0" && rinseBit == "0") {postUpdate (Coffee_Status, "Sedia")}
}
jika (respons == "Mati") {postUpdate (Coffee_Status, "Off")} berakhir
Langkah 9: Penambahbaikan / Todo
Permudahkan penyediaan awal penyambungan ke wifi - Selesai. Meninggalkan idea 'mod admin' kerana ia menjengkelkan. Sekarang masukkan SSID dan kata laluan dalam kod. Menyimpan ke EEPROM jika anda mengemas kini / menukar melalui antara muka web.
Kod yang lebih baru juga menyokong kemas kini OTA tetapi anda perlu meningkatkan EEPROM pada modul ESP-01 agar ini berfungsi atau mengulas item OTA yang sesuai
Tambahkan kod untuk memproses jawapan dari mesin dan baca status seperti tiada dulang, tempat kosong dan tangki pengisian - Selesai. Saya telah menambah kod untuk membaca kembali status dan menerbitkan ke kopi / kopi. Ini hanya tanggapan kasar dan saya masih berusaha untuk menafsirkannya tetapi setakat ini saya masih belum mempunyai Tray dan Tank kosong. Ia membuat tinjauan mesin setiap 9 saat ketika menyala dan menerbitkan respons terhadap MQTT
Tindak balas adalah dalam HEX tetapi bit individu menunjukkan sensor
Tambahkan kod ke laman web untuk kawalan langsung melalui Perintah HTTP GET.
Hadiah Pertama dalam Peraduan Internet of Things 2017
Disyorkan:
Mesin Kopi Pintar - Bahagian Ekosistem SmartHome: 4 Langkah
Mesin Kopi Pintar - Bahagian Ekosistem SmartHome: Mesin Kopi Diretas, menjadikannya sebahagian daripada Ekosistem SmartHomeSaya memiliki Mesin Kopi Delonghi (DCM) lama (bukan promosi dan mahu ia menjadi "pintar". Oleh itu, saya menggodamnya dengan memasang ESP8266 modul dengan antara muka ke otak / mikrokontrolernya menggunakan
Penjejak Mesin Kopi Dengan Raspberry Pi dan Helaian Google: 5 Langkah
Penjejak Mesin Kopi Dengan Raspberry Pi dan Helaian Google: Petunjuk ini akan menunjukkan kepada anda cara membina pelacak berasaskan Raspberry Pi untuk mesin kopi bersama di ruang pejabat anda. Dengan menggunakan paparan OLED dan suis mekanikal pelacak, pengguna dapat mencatat penggunaan kopi mereka, melihat keseimbangan dan
Jalur LED Diaktifkan Dengan Sensor Gerak Dengan Pemasa: 6 Langkah (dengan Gambar)
Jalur LED Diaktifkan Motion Sensor Dengan Pemasa: Hai semua! Saya sangat gembira dapat menulis arahan lain sekarang. Projek ini berlaku ketika saya dihubungi oleh rakan-rakan instruksional-er (?!) (David @dducic) beberapa bulan yang lalu untuk meminta bantuan reka bentuk. Jadi, inilah spesifikasi asal: & q
POV 1 Meter Dengan IOT Diaktifkan: 3 Langkah (dengan Gambar)
1 Meter POV Dengan IOT Diaktifkan: Sebelum memulakan penjelasan mengenai projek ini, saya ingin meminta maaf kerana gambar dan video berkualiti rendah, tetapi sejujurnya sangat sukar untuk mengambil gambar yang tajam dan jelas daripada menjalankan POV dengan kamera biasa seperti kamera mudah alih saya. Ia memerlukan
Pusat Pengumpulan Data Sensor IoT Diaktifkan Dengan ESP8266 & PubNub: 9 Langkah (dengan Gambar)
Pusat Pengumpulan Data Sensor Diaktifkan IoT Dengan ESP8266 & PubNub: Sebilangan besar tutorial mengenai ESP8266 sama ada di peringkat pemula (berkedip dari jauh) atau terlalu rumit untuk seseorang yang sedang mencari sesuatu untuk diperbaiki dan ditingkatkan berdasarkan kemahirannya yang berkedip. boleh diarahkan bertujuan untuk merapatkan jurang ini untuk mencipta