İçindekiler:
- Adım 1: Nasıl Yapacağız?
- 2. Adım: Gerekli Ekipman
- Adım 3: Jura Protokolü
- Adım 4: Sökme
- Adım 5: Garantiyi İptal Etme
- Adım 6: Mantık Tarafını Kablolama
- Adım 7: Modülün Programlanması
- Adım 8: Bir Şeyler Yapmak…
- 9. Adım: İyileştirmeler/Yapılacaklar
Video: IoT Etkin Kahve Makinesi: 9 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu talimat, IoT yarışmasına girildi - Beğendiyseniz, lütfen oy verin
GÜNCELLENDİ: Artık 2 yönlü iletişimi ve OTA güncellemelerini destekliyor
Bir süredir bir Jura kahve makinem var ve her zaman onu bir şekilde otomatikleştirmek istemişimdir.
Birkaç yıldır temel bir ev otomasyon sistemi çalıştırıyorum ama kahve makinesi modifiye edilmesi kolay bir şey değildi (ya da ben öyle sanıyordum). Jura kahve makinelerinde genellikle bir 'Diyagnostik bağlantı noktası' ve/veya makineye ödeme sistemi eklemek için kullanılan bir bağlantı noktası bulunur, ancak bunun nasıl kullanılacağına dair herhangi bir bilgi bulamadım. Daha yakın zamanlarda, protokol bazı kişiler tarafından tersine mühendislik uygulandı ve halka açıldı. Sorun şu ki, mevcut fonksiyonlara yapılan referansların çoğu benimkinden çok daha büyük makineler içindi (Ena 7).
Bunun da ötesinde, makinemin daha büyük makineler gibi kalıcı bir bekleme gücü yok, bunun yerine güç kaynağını 'mandallı' hale getiren bir HV anahtarı var. Makinedeki fiziksel düğme aslında 2 anahtarı etkinleştirir - Bir düşük volt (mantık tarafı, kapatma) ve bir Yüksek Volt (Güç açık). Her iki anahtar da anlık.
Ayrıca makinenin herhangi bir kontrol mekanizmasından %100 bağımsız olarak çalıştığından, yani makinenin hala IoT etkin değilmiş gibi normal şekilde çalıştığından emin olmam gerekiyordu.
Makineyi otomatikleştirmek için iki şey gerekir: 1) Makineye giden gücü kontrol edebilmek 2) Kahve yapma, durulama vb. fonksiyonları etkinleştirmek için makine ile iletişim kurabilmek.
Adım 1: Nasıl Yapacağız?
Ev wifi'sine bağlanmak ve komutlar için MQTT sunucusuna/konu dinlemeye abone olmak için bir ESP8266 'ESP-01' modülü kullanacağız. Kullandığım 'Front End' OpenHAB2 ama cihaz üzerindeki web arayüzüne ekleyememeniz ve isterseniz doğrudan veya HTTP Get komutları ile kontrol edememeniz için hiçbir neden yok.
ESP8266, güç düğmesiyle ilgili 2 röleyi kontrol edecek ve ayrıca kahve makinesine/makinesinden gelen seri komutları işleyecektir.
UYARI - Bu talimat, Jura Ena7 kahve makinemi ev otomasyonu ile kontrol edilecek şekilde değiştirmek için kullandığım prosedürü özetlemektedir. Yanlış yapıldığında tehlikeli olabilecek bir ana elektrik cihazının değiştirilmesi ile ilgilidir. Buradaki bilgiler eksik, yanlış ve güvensiz olabilir. Dikkatle ilerle. Hiçbir sorumluluk kabul edilmez.
2. Adım: Gerekli Ekipman
Parçalar
- ESP-01 modülü ve onu programlamanın bir yolu (Arduino IDE ve programlama için fiziksel adaptör)
- 2 yollu röle modülü EBAY
- 5v -> 3.3v Regülatör EBAY
- Küçük 5v elektrikle çalışan telefon şarj cihazı
- Mantık seviye dönüştürücü* Freetronics
- Hepsini bağlamak için çeşitli tel, pin başlıkları, ısıyla daralan vb.
Aletler
- İnce uçlu havya
- Lehim
- Tel Sıyırıcılar kullanışlıdır
- Torx T15 Sürücü
- Oval güvenlik aracı (veya bir tane yapın, yalnızca birkaç dakika sürer)
*Makinedeki tüm seri komutları test ederken başlangıçta bir arduino UNO kullandım ve kusursuz çalıştı, ancak ESP modülü çalışmayı reddetti. Kodu üç kez kontrol ettim ve ESP modülünden çıkan komutların arduino ile aynı olduğundan emindim, ancak hareketsizdi. Bunu, 5V değil, yalnızca 3.3v mantığı üzerinde çalışan ESP modülüne indirdim. Mantık dönüştürücüyü taktığımda iyi çalıştı. Bu, diğer makinelerde gerekli olabilir veya olmayabilir.
İdeal olarak, projenin amacı bu olduğundan MQTT protokolünü (openhab gibi) destekleyen mevcut bir ev otomasyon sisteminiz olacaktır. Herhangi bir destekleyici sistem olmadan sadece bir web sayfasındaki düğmeler aracılığıyla kontrol etmek istiyorsanız, gömülü web sayfası kodunda bazı değişiklikler yapmanız gerekecektir. Elde edilmesi aşırı karmaşık değildir (belki rev2..)
Adım 3: Jura Protokolü
Makineden gelen/makineden gelen veriler sadece seri @ 9600'dür ancak Jura'nın da bazı hileleri vardır. Protokol bunu ya fazladan ECC için ve/veya iletişimi karartmak için kullanır. Basitçe söylemek gerekirse, her veri baytı (karakter), 8 ms'lik bir duraklama ile takip edilen 4 standart seri baytın 2 ve 5 bitlerine bölünür. Bunun nasıl çalıştığını öğrenmek istiyorsanız, buradaki bağlantılarda bol miktarda bilgi var.
Protokol Bilgileri şu adresten alınmıştır:
Arduino kodu bunu basitleştirir ve daha sonra Jura protokolüne aktardığı standart, insan tarafından okunabilir komutları iletmenizi sağlar.
Kodum, https://github.com/oliverk71/Coffeemaker-Payment-… https://github.com/psct/sharespresso adresindeki kodun bir kombinasyonudur.
Yukarıdaki sitelerde atıfta bulunulan komutlar makinem için doğru değildi, ancak bir deneme yanılma yöntemiyle aşağıdakileri bulabildim:
FA:01 - Kapanıyor (ancak gerekirse bile durulamıyor gibi görünüyor) FA:02 - 'Tamam' yanıtını veriyor ancak ne yaptığından emin değil. FA:03 - Durulama Mesajı (Döner durulama makinesine basarak ekranda bir 'durulama' mesajını zorlar) FA:04 - Durulama Eylemi - 'Döner düğmeye basın' mesajı göründüğünde durular, aksi takdirde hiçbir şey yapmaz FA:05 - Ekranda güçlü (Muhtemelen bunu güçlü bir kahve yapmakla birleştirin) FA:06 - Ekranda güçlü (Muhtemelen bunu güçlü bir kahve yapmakla birleştirin) FA:07 - Ekranda 'Özel' ama aslında hiçbir şey yapmıyor, bunun ne için olduğundan emin değilimFA:08 - Buhar FA:09 - Küçük Kahve FA:0A - Büyük Kahve
Başka komutlar da var ama bana bu kadarı yeter…
Bilinmeyen komutlar verirken dikkatli olun, örneğin AN:0A makinenin EEPROM'unu silecektir…
Adım 4: Sökme
Biraz özel aletlere ihtiyacınız olduğu için makinenin kendisini açmak aşırı kolay değil, ancak meraklı bir kişi bir yolunu bulacaktır - 2 vida için bir T15 Torx ucuna ve bir 'oval anahtara' ihtiyacınız var. Zaten sahip olduğum Torx, 4 mm lokma başlı cıvatadan yaptığım oval alet bir çekiçle delindi ve biraz düzleştirildi.
Buradaki talimatlar oldukça iyi sunulmuştur -
Adım 5: Garantiyi İptal Etme
Makineye girdikten sonra ana bileşenleri göreceksiniz. Ana güç girişinin altında 5v şarj cihazı eklemek için güzel bir yer var.
Makinenin girişindeki terminal bloğuna (şebeke dereceli) teller ekledim ve bunları 5v şarj cihazının şebeke pinlerine lehimledim/ısı büzüştürdüm. Özel modelim bir USB bağlantı noktası türü değil, ucu kalıcı olarak takılı olan bir modeldi. Gerçek bir USB kablosunu kullanabilmek için bir usb bağlantı noktası türü için yeterli alanınız olmayabilir, ancak şarj cihazını açtıysanız, USB bağlantı noktasını çıkarabilir ve 5v ve Gnd noktalarına standart bir kablo ile değiştirebilirsiniz.
İsterseniz, 5v olarak derecelendirilmiş başka bir şebeke güç kaynağını değiştirebilirsiniz. 500ma yeterli olacaktır.
Öğütücünün yanında röle modülü için bolca yer var. Ana güç anahtarlarıyla paralel çalışacak iki röleyi kablolamamız gerekiyor. Ben sadece mevcut kabloları kestim, soydum, kalayladım, fazladan bir kablo ekledim ve tekrar lehimledim (ısı büzüşmesini unutmayın). Bunu yapmak için tellerde yeterince gevşeklik vardı.
Röle modülü, kaliteli çift taraflı bantla yerinde tutulur. Kablolar bağlı ve sınırlı hareket alanı ile, bant tutuşunu kaybetse bile, modül çok uzağa gitmeyecek ve herhangi bir metal nesne ile temas etmeyecektir.
Ayrıca, tamamen gizli bir entegrasyon elde edebilmek için dahili bağlantıların yerini belirlemek için makinemdeki tanılama bağlantı noktasını geri sorguladım. Sadece tx, rx ve Gnd telleri kullanılır.
Bekleme voltajını destekleyen daha ticari bir makineniz varsa ve/veya makinenizin garantisini geçersiz kılmak istemiyorsanız, bunun yerine doğrudan tanılama bağlantı noktasına bağlanabilir, ancak bu aygıtı kullanarak makineyi açamayabilirsiniz.
Makinem 7 pinli bir konektör kullanıyor. Soldan sağa şöyledir:
NC Tx G Rx NC 5v NC
Anakart üzerindeki ilgili pinler: Red = Gnd Orange = Rx Black = Tx
Buradaki pinoutlar hakkında daha fazla bilgi bulunabilir:
Adım 6: Mantık Tarafını Kablolama
Diyagramı gözden geçirin - Aşırı karmaşık görünüyor ama gerçekten değil.
Seviye dönüştürücüyü (belirlenmiş) voltaj regülatörünün arkasına çift taraflı bantla monte ettim. Daha sonra seviye dönüştürücünün her iki tarafındaki güç ve topraklama pinlerini ilgili güç modülü pinlerine lehimlemek için bazı bileşen ayakları kullandım. Bu modülün tamamı daha sonra ESP-01 için tüm mantık ve güç kaynağı için bir 'geçiş' gibi çalışır.
Ortadaki iki dönüştürücüyü seri veriler için, dıştaki ikisini ise röle sürüş sinyalleri için kullandım ama hangisini kullandığınızın bir önemi yok.
Aktif DÜŞÜK oldukları için bu röle modüllerinde 5v mantığı çalıştırmaları aslında gerekli değil ama sadece güzel çalıştı, ben yine de yaptım.
ESP modülüne bağlanmak için 4x2 dişi başlık kullandım. Bu, kodun kolayca yüklenmesini veya modülün değiştirilmesini sağlar.
Şemada gösterilmeyen 5V giriştir - Madeni doğrudan röle modülüne bağladım (ikinci resme bakın). Resmin sol alt tarafındaki siyah kablo, ana karta giden seri veridir. Veri hattında parazit olasılığını azaltmaya yardımcı olmak için korumalı 3,5 mm kulaklık uzatma kablosunun bir parçasını kullandım.
12f kodu, donanım dizisi yerine SoftwareSerial kullanır - Bu, modülün normal seri yoluyla hata ayıklama için durumu rapor etmesine olanak tanır. Bağlantılar bunun yerine pin 4 ve 5 üzerinden yapılır. Aynı başlığı ESP12F'yi ESP-01 için bir fiş takası yapmak için uyarladım, sadece bu seri pinleri değiştirdim
Adım 7: Modülün Programlanması
Kod, ESP8266 kart eklentisi ve PubSubClient 2.6.0 (MQTT Kitaplığı olan) ile Arduino 1.8.1'e karşı derlendi
Kodu gereksinimlerinize göre değiştirin ve kodu ESP-01 modülüne yükleyin ve makineye bağlayın. Pimlerin yönüne dikkat edin!
Yapılandırma
Seçenek 1)
Sadece zip'teki temel kodda. ESP modülü ilk başlatıldığında, AP moduna girer ve IP'sini 192.168.4.1 olarak ayarlar. Daha sonra modüle bağlanabilir ve IP'yi değiştirebilir ve kendi erişim noktanıza bağlanabilirsiniz. Modülde DHCP olmadığından makineniz için de bu aralıkta bir IP ayarlamanız gerekecektir.
Varsayılan AP SSID'si 'ESPSwitch' ve parolası '12345678'
Varsayılan olarak 2 dakika AP modunda kalır. Bu ayarı 'global.h' içinde değiştirebilirsiniz - Buna 'adminTimeout' denir ve milisaniye cinsindendir. EEPROM'da geçerli bir konfigürasyona sahip olduğunuzda bunu düşük bir değere değiştirmenizi tavsiye ederim, aksi halde bu sadece cihazın açılışında gereksiz gecikmelere neden olur.
Seçenek 2)
Bu, 2 yönlü iletişimi destekleyen yeni kod için varsayılan moddur, seçenek 1 mevcut değildir. Ana ino dosyasındaki varsayılan SSID/Parola ayarlarını da değiştirebilirsiniz ('// VARSAYILAN YAPILANDIRMA'yı arayın) böylece yüklenecektir. bu ayarları ilk açılışta EEPROM'a ekleyin ve yönetici modu gecikmesini 'global.h'de düşük bir değere değiştirin. Bu, geçici AP'ye bağlanmak için uğraşmaktan kaçınır.
Cihaz, MQTT kimliğini (ve abonelik yolunu) modüllerin seri numarasının son 4 hanesine otomatik olarak ayarlayacaktır. Varsayılan yol ha/mod//# şeklindedir, uygun gördüğünüz gibi değiştirin ancak uygun dizinin doğru uzunluğa sahip olduğundan emin olmak için koddaki yorumları okuyun.
Bunu yapıyorum çünkü ağımdaki her modül için benzersiz bir kimlik oluşturmam gerekmiyor.
Cihaz kimliği görülebilir ve MQTT sunucusu, dahili web sunucusundaki MQTT sunucu sayfası aracılığıyla ayarlanabilir
Adım 8: Bir Şeyler Yapmak…
MQTT komutları şunlardır:
ha/mod/xxxx/ 0 veya 1 = Gücü değiştir
Diğer tüm dizeler komut olarak kabul edilecek ve seri bağlantı noktası aracılığıyla gönderilecektir. Durum HEX'te /ha/kahveye bildirilir
OpenHAB ile
kahve makinesi.öğeler
Numara Coffee_Machine_Power "Güç" { mqtt=">[kontrol:ha/mod/8002/:command:*:varsayılan]" }String Coffee_Machine_Status { mqtt="<[control:ha/coffee:state:default]" }
Site Haritası
Grup öğesi="Kahve Makinesi" { Öğeyi değiştir=Kahve_Makinesi_Güç etiketi="Güç" eşlemeleri=[1="Geçiş"] Öğeyi değiştir=Kahve_Machine_Cmd eşlemeleri=["FA:09"="Küçük"] Öğeyi değiştir= Coffee_Machine_Cmd mappings=["FA:0A"="Large"] Öğeyi değiştir=Coffee_Machine_Cmd mappings=["FA:04"="Durulama"] Metin öğesi=Kahve_Status label="Durum [%s]" }
ses kontrolü.kurallar
org.openhab.model.script.actions.* import org.openhab.core.library.types.* import java.util.*
kural "Sesli komut Kuralları"
Öğe VoiceCommand komutu aldığında, var String command = VoiceCommand.state.toString.toLowerCase logInfo("Voice. Rec", "VoiceCommand "+command alındı)
if (command.contains("kahve makinesini açın") || command.contains("kahve makinesini kapatın")) {
sendCommand(Coffee_Machine_Power, 1) } if (command.contains("bana küçük bir kahve yap")) { sendCommand(Coffee_Machine_Cmd, "FA:09") } if (command.contains("bana büyük bir kahve yap")) { sendCommand(Coffee_Machine_Cmd, "FA:0A") } if (command.contains("kahve makinesini durulayın")) { sendCommand(Coffee_Machine_Cmd, "FA:04") } } end
Kurallar (HEX yanıtlarını 'gerçek' değerlere yorumlamak için):
"Kahve Makinesi Durumu" kuralı Öğe Coffee_Machine_Status güncelleme aldığında var String yanıtı = Coffee_Machine_Status.state.toString() if (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))).replace(' ', '0')
var int tepsiBit = binaryString.substring(0, 1)
var int tankBit = binaryString.substring(2, 3) var int heatBit = binaryString.substring(7, 8) var int durulamaBit = ikiliString.substring(6, 7)
if (trayBit == "0") {
postUpdate(Coffee_Status, "Tepsi Eksik") } if (tankBit == "1") { postUpdate(Coffee_Status, "Tank Doldur") } if (rinseBit == "1") { postUpdate(Coffee_Status, "Döner Basın") } if (trayBit == "1" && tankBit == "0" && durulamaBit == "0") { postUpdate(Coffee_Status, "Hazır") }
}
if (response == "Kapalı"){ postUpdate(Coffee_Status, "Kapalı") } end
9. Adım: İyileştirmeler/Yapılacaklar
Wi-Fi'ye bağlanmak için ilk kurulumu basitleştirin - Tamamlandı. Can sıkıcı olduğu için 'yönetici modu' fikrini terk etti. Şimdi sadece SSID ve şifreyi koda girin. Web arayüzü üzerinden güncelleme/değişiklik yaparsanız EEPROM'a kaydeder.
Daha yeni kod ayrıca OTA güncellemelerini de destekler, ancak bunun çalışması veya ilgili OTA öğelerini yorumlaması için ESP-01 modülündeki EEPROM'u yükseltmeniz gerekir
Makineden gelen yanıtları işlemek için kod ekleyin ve tepsi yok, boş alan ve dolum tankı gibi durumu okuyun - Tamamlandı. Durumu geri okumak ve ha/kahveye yayınlamak için kod ekledim. Bu sadece ham yanıtlar ve hala onları yorumlamaya çalışıyorum ama şu ana kadar Tepsi eksik ve Tank boş çalışıyor. Açıkken her 9 saniyede bir makineyi yoklar ve yanıtı MQTT'ye yayınlar
Yanıt HEX'tedir ancak ayrı bitler sensörleri gösterir
HTTP GET Komutları aracılığıyla doğrudan kontrol için web sayfalarına kod ekleyin.
2017 Nesnelerin İnterneti Yarışmasında Birincilik Ödülü
Önerilen:
STONE Ekran +STM32 +Kahve Makinesi: 6 Adım
STONE Display +STM32 +Kahve Makinesi: Ben bir MCU yazılım mühendisiyim, yakın zamanda bir kahve makinesi olacak bir proje aldım, dokunmatik ekranlı ev gereksinimleri, işlev iyi, ekran seçiminin üstünde çok iyi olmayabilir, Neyse ki, bu projeyi kapatabilirim
Akıllı Kahve Makinesi - SmartHome Ekosisteminin Bir Parçası: 4 Adım
Akıllı Kahve Makinesi - SmartHome Ekosisteminin Bir Parçası: Hacked Kahve Makinesi, SmartHome Ekosisteminin bir parçası yaptı Eski güzel bir Delonghi Kahve Makinesine (DCM) sahibim (bir promosyon değil ve "akıllı" olmasını istiyorum. Bu yüzden, ESP8266'yı yükleyerek hackledim. kullanarak beynine/mikrodenetleyicisine arayüzlü modül
Arduino Kontrollü Kendin Yap Kahve Kavurma Makinesi: 13 Adım (Resimlerle)
Arduino Kontrollü Kendin Yap Kahve Kavurucu: Bu Eğitilebilir Kitapta, sıcak hava patlamış mısır makinesini tam otomatik ve sıcaklık kontrollü bir ev kahve kavurma makinesine dönüştürmek için değiştirmeye bir göz atacağız. Evde kahve kavurmak şaşırtıcı derecede basittir ve hatta kızartma kadar basit bir şeydir
JavaStation (Kendi Kendini Dolduran Tam Otomatik IoT Kahve Makinesi): 9 Adım (Resimlerle)
JavaStation (Kendi Kendini Dolduran Tam Otomatik IoT Kahve Makinesi): Bu projenin amacı, kendini suyla otomatik olarak dolduran tam otomatik ses kontrollü bir kahve makinesi yapmaktı ve gerçekten yapmanız gereken tek şey patronları değiştirmek ve kahvenizi içmek; )
IOT Kahve Makinesi (UFEE): 7 Adım (Resimlerle)
IOT Kahve Makinesi (UFEE): Bilginin kanıtı olarak, kendi kendine yapılan bir web arayüzü aracılığıyla kontrol edilebilecek bir IOT cihazı oluşturmamız gerekiyordu. Kahveyi çok sevdiğim ve günlük olarak çok tükettiğim için kendi IOT kahve makinemi yapmaya karar verdim. UFEE kahve makinesi: "co