Mündəricat:

IoT Aktiv Qəhvə Maşını: 9 Addım (Şəkillərlə birlikdə)
IoT Aktiv Qəhvə Maşını: 9 Addım (Şəkillərlə birlikdə)

Video: IoT Aktiv Qəhvə Maşını: 9 Addım (Şəkillərlə birlikdə)

Video: IoT Aktiv Qəhvə Maşını: 9 Addım (Şəkillərlə birlikdə)
Video: Bakı metrosunda gənclərin elədiyi zarafat 2024, Iyul
Anonim
Image
Image
Lazımi avadanlıqlar
Lazımi avadanlıqlar

Bu təlimat IoT yarışmasına daxil edilmişdir - İstəsəniz, zəhmət olmasa ona səs verin

YENİLƏNİB: İndi 2 yollu mesaj və OTA yeniləmələrini dəstəkləyir

Bir müddətdir ki, bir Jura qəhvə maşını aldım və həmişə onu bir şəkildə avtomatlaşdırmaq istəyirdim.

Bir neçə ildir ki, əsas ev avtomatlaşdırma sistemi ilə işləyirəm, amma qəhvə maşını sadə bir şey deyildi (və ya düşündüm). Jura qəhvə maşınlarında ümumiyyətlə 'Diaqnostik port' və/və ya maşına ödəniş sistemi əlavə etmək üçün istifadə olunan bir liman var, lakin bunun necə istifadə ediləcəyi ilə bağlı heç bir məlumat tapa bilmədim. Bu yaxınlarda, protokol bəzi şəxslər tərəfindən tərs tərtib edildi və ictimaiyyətə açıqlandı. Problem, mövcud funksiyalara istinadların çoxu mənimkindən daha böyük maşınlar üçün idi (Ena 7).

Üstəlik, maşınım daha böyük maşınlar kimi daimi bir gözləmə gücünə malik deyil, bunun əvəzinə enerji təchizatı 'kilidini açan' bir HV açarı var. Maşındakı fiziki düymə əslində 2 açarı işə salır - Bir aşağı volt (məntiq tərəfi, söndür) və bir Yüksək Volt (Güc aç). Hər iki açar bir anlıqdır.

Maşının hələ də heç bir idarəetmə mexanizmindən 100% müstəqil işlədiyinə əmin olmalıydım, yəni maşın hələ də IoT -nin aktiv olmadığı kimi normal işləyir.

Maşını avtomatlaşdırmaq üçün iki şey lazımdır: 1) Maşının gücünü idarə edə bilmək üçün 2) Qəhvə hazırlamaq, durulama və s. Funksiyalarını aktivləşdirmək üçün maşınla ünsiyyət qura bilmək.

Addım 1: Bunu necə edəcəyik

Ev wifi-yə qoşulmaq və əmrləri dinləmək üçün MQTT serverinə/mövzuya abunə olmaq üçün ESP8266 'ESP-01' modulundan istifadə edəcəyik. İstifadə etdiyim 'Ön Uç' OpenHAB2 -dir, ancaq HTTP Al əmrlərini istəsəniz və ya istəsəniz cihazdakı veb interfeysinə əlavə edə bilməməyinizə və idarə etməyinizə heç bir səbəb yoxdur.

ESP8266, güc düyməsi ilə əlaqəli 2 röleyi idarə edəcək və eyni zamanda qəhvə maşınından gələn/gələn əmrləri işləyəcək.

XƏBƏRDARLIQ - Bu təlimat Jura Ena7 qəhvə maşınının ev avtomatlaşdırılması vasitəsi ilə idarə olunmasını dəyişdirmək üçün istifadə etdiyim proseduru təsvir edir. Yanlış yerinə yetirildikdə təhlükəli ola biləcək bir elektrik cihazının dəyişdirilməsi ilə məşğul olur. Buradakı məlumatlar natamam, qeyri -dəqiq və təhlükəli ola bilər. Ehtiyatla davam edin. Heç bir məsuliyyət qəbul edilmir.

Addım 2: Lazımi avadanlıq

Lazımi avadanlıqlar
Lazımi avadanlıqlar
Lazımi avadanlıqlar
Lazımi avadanlıqlar
Lazımi avadanlıqlar
Lazımi avadanlıqlar

Hissələri

  • ESP-01 modulu və onu proqramlaşdırma yolu (Arduino IDE və proqramlaşdırma üçün fiziki adapter)
  • 2 tərəfli röle modulu EBAY
  • 5v -> 3.3v EBAY tənzimləyicisi
  • Kiçik 5v şəbəkədən işləyən telefon şarj cihazı
  • Məntiq səviyyəsi çeviricisi* Freetronics
  • Hər şeyi birləşdirmək üçün müxtəlif tellər, pin başlıqları, istilik daralma və s.

Alətlər

  • İncə uclu lehimləmə dəmiri
  • Lehim
  • Tel çıxarıcılar əlverişlidir
  • Torx t15 sürücü
  • Oval təhlükəsizlik vasitəsi (və ya düzəldin, yalnız bir neçə dəqiqə çəkir)

*Əvvəlcə maşının bütün seriyalı əmrlərini sınaqdan keçirərkən bir arduino UNO istifadə etdim və qüsursuz işləyirdi, lakin ESP modulu işləməkdən imtina etdi. Kodu üç dəfə yoxladım və ESP modulundan çıxan əmrlərin arduino ilə eyni olduğuna əmin idim, amma bu heç bir iş deyil. Bunu 5V yox, yalnız 3.3v məntiqlə işləyən ESP moduluna qoydum. Məntiq çeviricisini qoyduqdan sonra yaxşı işləyir. Digər maşınlarda bu tələb oluna bilər və ya olmaya da bilər.

İdeal olaraq, MQTT protokolunu (məsələn, openhab) dəstəkləyən mövcud bir ev avtomatlaşdırma sisteminiz olardı, çünki layihənin məqsədi budur. Heç bir dəstəkləyici sistem olmadan bir veb səhifədəki düymələr vasitəsilə idarə etmək istəyirsinizsə, quraşdırılmış veb səhifə kodunda bəzi dəyişikliklər etməlisiniz. Buna nail olmaq çox çətin deyil (bəlkə rev2..)

Addım 3: Jura Protokolu

Jura Protokolu
Jura Protokolu

Maşına olan/gələn məlumatlar sadəcə 9600 seriyalıdır, amma Juranın da qollarını qaldırmaq üçün bəzi hiylələri var. Protokol ya bunu əlavə ECC üçün və/və ya ünsiyyəti ləkələmək üçün istifadə edir. Sadə dillə desək, hər bir bayt məlumat (xarakter) 8 ms fasilə ilə izlənilən 4 standart serial baytın 2 və 5 -ci bitlərinə bölünür. Bunun necə işlədiyini öyrənmək istəyirsinizsə, buradakı bağlantılarda çoxlu məlumatlar var.

Protokol Məlumatı:

Arduino kodu, bunu sadələşdirir və standart Jura protokoluna köçürdüyü insan tərəfindən oxunan əmrləri ötürməyə imkan verir.

Kodum, https://github.com/oliverk71/Coffeemaker-Payment-… https://github.com/psct/sharespresso kodunun birləşməsidir

Yuxarıdakı saytlarda istinad edilən əmrlər maşınım üçün doğru deyildi, amma sınaq və səhv üsulu ilə aşağıdakıları ortaya qoya bildim:

FA: 01 - söndürür (lakin lazım olsa belə durulamır) FA: 02 - "tamam" cavabını verir, amma nə etdiyindən əmin deyil. FA: 03 - Durulama Mesajı (Ekranda 'durulama' mesajını məcbur edir, fırlanan durulama maşını basaraq) FA: 04 - Durulama Fəaliyyəti - 'Rotary düyməsinə basın' mesajı görünəndə durulayır, əks halda heç bir iş görmür FA: 05 - Ekranda güclü (FA: 06 - Ekranda güclü (Çox güman ki, bunu güclülər üçün qəhvə hazırlamaqla birləşdirin) FA: 07 - Ekranda 'Xüsusi' amma əslində heç nə etmir, bununFA üçün nə olduğunu bilmir: 08 - Buxar FA: 09 - Kiçik Qəhvə FA: 0A - Böyük Qəhvə

Başqa əmrlər var, amma bu mənim üçün çoxdur …

Naməlum əmrlər verərkən ehtiyatlı olun, məsələn, görünür AN: 0A, maşının EEPROMunu siləcək …

Addım 4: Sökmə

Maşının özünü açmaq o qədər də asan deyil, çünki bir az xüsusi vasitələrə ehtiyacınız var, amma həvəsli bir insan bir yol tapacaq - T15 Torx ucu və 2 vint üçün 'oval açar' lazımdır. Artıq sahib olduğum Torx, 4 mm -lik bir baş cıvatasından düzəltdiyim oval alət, çəkiclə bir az düzəldildi.

Buradakı təlimatlar kifayət qədər yaxşı təqdim edilmişdir-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

Addım 5: Zəmanətin ləğv edilməsi

Zəmanətin ləğvi
Zəmanətin ləğvi
Zəmanətin ləğvi
Zəmanətin ləğvi
Zəmanətin ləğvi
Zəmanətin ləğvi
Zəmanətin ləğvi
Zəmanətin ləğvi

Maşına daxil olduqdan sonra əsas komponentləri görəcəksiniz. Əsas güc girişinin altında 5v şarj cihazını əlavə etmək üçün gözəl bir yer var.

Maşının girişindəki terminal blokuna tellər əlavə etdim və bunları 5v şarj cihazının elektrik pinlərinə lehimlədim/qızdırdım. Xüsusi modelim bir USB portu tipi deyil, həmişəki olaraq qurğunu bağlayan bir model idi. Həqiqi bir USB kabelindən istifadə edə biləcəyiniz bir usb portu üçün kifayət qədər yeriniz olmaya bilər, ancaq şarj cihazını açsanız, USB portunu çıxarıb 5v və Gnd nöqtələrinə standart bir tel ilə əvəz edə bilərsiniz.

İstəsəniz 5v gücündə başqa bir elektrik şəbəkəsi ilə əvəz edə bilərsiniz. 500ma çox olmalıdır.

Taşlama cihazının yanında röle modulu üçün çox yer var. Əsas güc açarları ilə paralel olaraq çalışmaq üçün iki röleyi bağlamalıyıq. Mövcud telləri kəsdim, soydum, qalayladım, əlavə bir tel əlavə etdim və yenidən birlikdə lehimlədim (istilik daralmasını unutmayın). Bunu etmək üçün tellərdə kifayət qədər boşluq var idi.

Röle modulu yaxşı keyfiyyətli iki tərəfli lentlə yerində tutulur. Bağlanan tellər və hərəkət üçün yalnız məhdud yer olduqda, lent tutuşunu itirsə belə, modul çox uzağa getməyəcək və heç bir metal əşya ilə təmasda ola bilməz.

Tamamilə gizli bir inteqrasiya əldə etmək üçün daxili əlaqələrin yerini təyin etmək üçün maşınımdakı diaqnostik portu yenidən hazırladım. Yalnız tx, rx və Gnd telləri istifadə olunur.

Gözləmə gərginliyini dəstəkləyən daha çox ticarət maşınınız varsa və/və ya maşınınızda zəmanəti ləğv etmək istəmirsinizsə, bunun əvəzinə birbaşa diaqnostik porta qoşula bilərsiniz, ancaq bu cihazı istifadə edərək maşını işə sala bilməyəcəksiniz.

Cihazım 7 pinli bir bağlayıcıdan istifadə edir. Soldan sağa:

NC Tx G Rx NC 5v NC

Anakartdakı müvafiq sancaqlar: Qırmızı = Gnd Turuncu = Rx Qara = Tx

Daha çox məlumatı buradakı pinoutlarda tapa bilərsiniz:

Addım 6: Məntiq tərəfini naqilləşdirin

Məntiq tərəfinin naqilləri
Məntiq tərəfinin naqilləri
Məntiq tərəfinin naqilləri
Məntiq tərəfinin naqilləri
Məntiq tərəfini çəkmək
Məntiq tərəfini çəkmək

Diaqramı nəzərdən keçirin - Çox mürəkkəb görünür, amma əslində belə deyil.

Səviyyə çeviricisini bir neçə tərəfli lentlə (tükənmiş) gərginlik tənzimləyicisinin arxasına quraşdırdım. Səviyyə çeviricisinin hər iki tərəfindəki güc və torpaq sancaqlarını müvafiq güc modulu pinlərinə lehimləmək üçün bəzi komponent ayaqlarından istifadə etdim. Bütün bu modul daha sonra ESP-01 üçün bütün məntiq və enerji təchizatı üçün 'keçid' kimi işləyir.

Seriya məlumatları üçün iki orta çeviricini və röle sürücülük siqnalları üçün xarici ikisini istifadə etdim, amma hansından istifadə etməyinizin əhəmiyyəti yoxdur.

Bu röle modulları ilə 5 V məntiqi işə salmaq lazım deyil, çünki onlar LOW aktivdirlər, amma çox gözəl işləyirdi, buna görə də bunu etdim.

ESP moduluna qoşulmaq üçün 4x2 dişi başlıqdan istifadə etdim. Bu, kodu asanlıqla yükləməyə və ya modulu dəyişdirməyə imkan verir.

Diaqramda 5V girişi göstərilməmişdir - minanı birbaşa röle moduluna bağladım (ikinci şəkilə baxın). Şəklin sol alt hissəsindəki qara tel, ana kartdakı serial məlumatlarıdır. Məlumat xəttinə müdaxilə şansını azaltmaq üçün ekranlaşdırılmış 3,5 mm qulaqlıq uzatma kabelinin bir hissəsini istifadə etdim.

12f kodu, hardware seriyası əvəzinə SoftwareSerial istifadə edir - Bu, modulun normal serial vasitəsilə geri çəkilmə vəziyyətini bildirməsinə imkan verir. Bağlantılar 4 və 5 -ci pinlər vasitəsilə aparılır. Eyni başlığı ESP12F-ni ESP-01 üçün dəyişdirmə fişinə çevirmək üçün uyğunlaşdırdım, sadəcə bu seriyalı pinləri dəyişdirin

Addım 7: Modulun proqramlaşdırılması

Modulun proqramlaşdırılması
Modulun proqramlaşdırılması

Kod Arduino 1.8.1 əleyhinə ESP8266 lövhə addon və PubSubClient 2.6.0 (MQTT Kitabxanası) ilə tərtib edilmişdir.

Kodu ehtiyaclarınıza uyğun olaraq dəyişdirin və kodu ESP-01 moduluna yükləyin və maşına qoşulun. Pimlərin istiqamətinə diqqət yetirin!

Konfiqurasiya

Seçim 1)

Yalnız zipdəki əsas kodda. ESP modulu ilk açıldıqda AP rejiminə keçir və IP -ni 192.168.4.1 olaraq təyin edir. Daha sonra modula qoşula və IP -ni dəyişə və öz giriş nöqtənizə qoşula bilərsiniz. Modulda DHCP olmadığı üçün bu aralıqda maşınınız üçün bir IP təyin etməlisiniz.

Varsayılan AP SSID 'ESPSwitch' və parol '12345678' dir

Varsayılan olaraq AP rejimində 2 dəqiqə qalır. Bu ayarı 'global.h' də dəyişə bilərsiniz - 'adminTimeout' adlanır və milisaniyələrdədir. EEPROM -da etibarlı bir konfiqurasiya əldə etdikdən sonra bunu aşağı bir şeyə dəyişdirməyi məsləhət görürəm, əks halda cihazın açılışında lazımsız gecikmələrə səbəb olacaq.

Seçim 2)

Bu, 2 yollu əlaqəni dəstəkləyən daha yeni kod üçün standart rejimdir, seçim 1 mövcud deyil. Siz də əsas ino faylında standart SSID/Şifrə parametrlərini dəyişə bilərsiniz ('// VARSAYILAN KONFİG' ə baxın), beləliklə yüklənəcək. bu parametrləri ilk açılışda EEPROM -a daxil edin və idarəetmə rejiminin gecikməsini 'global.h' -də aşağı bir şeyə dəyişdirin. Bu, müvəqqəti AP -yə qoşulmaqda çətinlik çəkməyin qarşısını alır.

Cihaz avtomatik olaraq MQTT id (və abunəlik yolunu) modulların seriya nömrəsinin son 4 rəqəminə təyin edəcək. Varsayılan yol ha/mod //#-dir, uyğun gördüyünüz kimi dəyişin, lakin uyğun serialın düzgün uzunluğa malik olduğundan əmin olmaq üçün koddakı şərhləri oxuyun.

Bunu edirəm, çünki şəbəkədəki hər modul üçün unikal bir şəxsiyyət kodu yaratmaq məcburiyyətində deyiləm.

Cihaz identifikatoru görünür və MQTT serveri daxili veb serverdəki MQTT server səhifəsi vasitəsi ilə təyin edilə bilər

Addım 8: Bir şeylər etmək …

MQTT əmrləri belədir

ha/mod/xxxx/0 və ya 1 = Gücü dəyişdirin

Hər hansı digər simli bir əmr olaraq qəbul ediləcək və serial port vasitəsilə göndəriləcək. HEX -də /ha /kofe vəziyyət bildirilir

OpenHAB ilə

qəhvə maşını. maddələr

Sayı Coffee_Machine_Power "Güc" {mqtt = "> [nəzarət: ha/mod/8002/: əmr:*: default]"} Qəhvə_Maşın_Statusu {mqtt = "<[nəzarət: ha/qəhvə: vəziyyət: standart]"}

Sayt xəritəsi

Qrup maddəsi = "Qəhvə Maşını" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Maddəni dəyişdir = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Maddəni dəyişdir = Coffee_Machine_Cmd label = "" eşlemeler = ["FA: 04" = "Durulama"] Mətn maddəsi = Coffee_Status etiketi = "Status [%s] "}

səs idarəetmə qaydaları

idxal org.openhab.model.script.actions.* idxal org.openhab.core.kitabxana.tiplər.* idxal java.util.

qayda "Səs əmri qaydaları"

Item VoiceCommand əmri aldıqdan sonra var String əmri = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand alındı"+əmri)

if (əmr. tərkibində ("qəhvə maşını yandır") || əmr. ehtiva edir ("qəhvə maşını söndür")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("me a small coffee")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("me a large coffee")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("qəhvə maşını yaxalamaq")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} son

Qaydalar (HEX cavablarını 'real' dəyərlərə şərh etmək üçün):

Item Coffee_Machine_Status yeniləmə aldıqda "Coffee Machine Status" qaydası var String answer = 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 (sayı)). əvəz edin ('', '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)

əgər (trayBit == "0") {

postUpdate (Coffee_Status, "Tray Missing")} if (tankBit == "1") {postUpdate (Coffee_Status, "Fill Tank")} if (rinseBit == "1") {postUpdate (Coffee_Status, "Press Rotary")} əgər (trayBit == "1" && tankBit == "0" && rinseBit == "0") {postUpdate (Coffee_Status, "Hazır")}

}

əgər (cavab == "Off") {postUpdate (Coffee_Status, "Off")} son

Addım 9: İnkişaf/Todo

Wi -Fi -ya qoşulmaq üçün ilkin quraşdırmanı sadələşdirin - Bitti. Sinir bozucu olduğu üçün 'admin rejimi' fikrindən imtina etdi. İndi koda SSID və şifrənizi daxil edin. Veb interfeysi vasitəsilə yeniləsəniz/dəyişdirsəniz EEPROM -da saxlayır.

Daha yeni kod OTA yeniləmələrini də dəstəkləyir, lakin bunun üçün uyğun OTA maddələrini işlətmək və ya şərh etmək üçün ESP-01 modulunda EEPROM-u təkmilləşdirməlisiniz

Maşından gələn cavabları emal etmək üçün kod əlavə edin və heç bir tepsi, boş yer və doldurma tankı kimi vəziyyəti oxuyun - Bitti. Vəziyyəti geri oxumaq və ha/coffee -də dərc etmək üçün kod əlavə etdim. Bu, yalnız xam cavablardır və mən hələ də onları şərh etmək üzərində işləyirəm, amma indiyə qədər Tepsinin itməsi və Tankın boş işlənməsi var. Hər 9 saniyədə bir maşın sorğu keçirir və MQTT cavabını dərc edir

Cavab HEX -dədir, lakin fərdi bitlər sensorları göstərir

HTTP GET əmrləri ilə birbaşa nəzarət etmək üçün veb səhifələrə kod əlavə edin.

Əşyaların İnterneti 2017 müsabiqəsi
Əşyaların İnterneti 2017 müsabiqəsi
Əşyaların İnterneti 2017 müsabiqəsi
Əşyaların İnterneti 2017 müsabiqəsi

Əşyaların İnterneti 2017 Müsabiqəsində Birinci Mükafat

Tövsiyə: