Mundarija:

IoT yoqilgan qahva mashinasi: 9 qadam (rasmlar bilan)
IoT yoqilgan qahva mashinasi: 9 qadam (rasmlar bilan)

Video: IoT yoqilgan qahva mashinasi: 9 qadam (rasmlar bilan)

Video: IoT yoqilgan qahva mashinasi: 9 qadam (rasmlar bilan)
Video: Самаркандлик ам товба 2024, Iyul
Anonim
Image
Image
Kerakli uskunalar
Kerakli uskunalar

Bu ko'rsatma IoT tanloviga kiritilgan - Agar sizga yoqsa, iltimos, ovoz bering

YANGILANGAN: Endi ikki tomonlama aloqa va OTA yangilanishlarini qo'llab -quvvatlaydi

Bir muncha vaqt menda "Jura" qahva mashinasi bor edi va men uni har doim qandaydir tarzda avtomatlashtirishni xohlardim.

Men bir necha yillardan beri uyni avtomatlashtirishning asosiy tizimini boshqaraman, lekin qahva mashinasi oddiy emas edi (yoki men o'yladim). Jura qahva mashinalarida odatda "Diagnostik port" va/yoki mashinaga to'lov tizimini qo'shish uchun ishlatiladigan port bor, lekin men undan qanday foydalanish mumkinligi haqida hech qanday ma'lumot topa olmadim. Yaqinda protokol ba'zi odamlar tomonidan teskari tarzda ishlab chiqilgan va ommaga oshkor qilingan. Muammo shundaki, mavjud funktsiyalarga havolalarning aksariyati menikidan ancha katta mashinalarga tegishli edi (Ena 7).

Buning ustiga, mening mashinam kattaroq mashinalar kabi doimiy kutish quvvatiga ega emas, buning o'rniga quvvat manbaini "qulfini" ochadigan HV kalitiga ega. Mashinadagi jismoniy tugma aslida 2 ta kalitni ishga tushiradi - bitta past voltli (mantiqiy tomoni, o'chirilgan) va bitta yuqori voltli (yoqilgan). Ikkala kalit ham bir zumda.

Shuningdek, men mashinaning har qanday boshqaruv mexanizmidan mustaqil ravishda 100% ishlayotganiga ishonch hosil qilishim kerak edi, ya'ni mashina IoT yoqilmaganidek normal ishlaydi.

Mashinani avtomatlashtirish uchun ikkita narsa talab qilinadi: 1) Mashinaning quvvatini nazorat qila olish uchun 2) Qahva tayyorlash, chayish va hk funktsiyalarini faollashtirish uchun mashina bilan aloqa o'rnatish.

1 -qadam: Biz buni qanday qilmoqchimiz

Biz uy Wi-Fi tarmog'iga ulanish va buyruqlarni tinglash uchun MQTT serveriga/mavzusiga obuna bo'lish uchun ESP8266 'ESP-01' modulidan foydalanamiz. Men ishlatgan "Front End" - bu OpenHAB2, lekin qurilmadagi veb -interfeysga qo'sha olmasligingiz va HTTP Get buyruqlari orqali yoki to'g'ridan -to'g'ri boshqarishingizga hech qanday sabab yo'q.

ESP8266 quvvat tugmasi bilan bog'liq 2 ta o'rni boshqaradi, shuningdek qahva mashinasiga ketma -ket buyruqlarni bajaradi.

OGOHLANTIRISH - Bu yo'riqnomada men Jura Ena7 qahva mashinasini uy avtomatizatsiyasi orqali boshqarish uchun qanday o'zgartirishlar kiritilgani ko'rsatilgan. U tarmoqdagi elektr qurilmasini o'zgartirish bilan shug'ullanadi, agar u noto'g'ri ishlatilsa, xavfli bo'lishi mumkin. Bu erda ma'lumotlar to'liq bo'lmagan, noto'g'ri va xavfli bo'lishi mumkin. Ehtiyotkorlik bilan davom eting. Hech qanday javobgarlik qabul qilinmaydi.

2 -qadam: uskunalar kerak

Kerakli uskunalar
Kerakli uskunalar
Kerakli uskunalar
Kerakli uskunalar
Kerakli uskunalar
Kerakli uskunalar

Qismlar

  • ESP-01 moduli va uni dasturlash usuli (Arduino IDE va dasturlash uchun jismoniy adapter)
  • EBAY ikki tomonlama o'rni moduli
  • 5v -> 3.3v EBAY regulyatori
  • Kichik 5v tarmoqli telefon zaryadlovchi
  • Mantiqiy darajadagi konvertor* Freetronics
  • Hammasini ulash uchun boshqa simlar, pin sarlavhalari, issiqlik qisqarishi va boshqalar.

Asboblar

  • Nozik uchli lehimli temir
  • Lehim
  • Tel -strippers qulay
  • Torx T15 uchun haydovchi
  • Oval xavfsizlik vositasi (yoki uni yasang, bir necha daqiqa vaqt ketadi)

*Men dastavval mashinaning barcha ketma -ket buyruqlarini sinab ko'rishda arduino UNO -dan foydalandim va u mukammal ishladi, lekin ESP moduli ishlashdan bosh tortdi. Men kodni uch marta tekshirib ko'rdim va ESP modulidan chiqadigan buyruqlar arduino bilan bir xil ekanligiga amin bo'ldim, lekin bu taqiqlangan. Men buni 5V emas, balki faqat 3.3v mantiqda ishlaydigan ESP moduliga qo'ydim. Men Logic konvertorini qo'yganimdan so'ng, u yaxshi ishladi. Bu boshqa mashinalarda talab qilinishi mumkin yoki bo'lmasligi mumkin.

Ideal holda, sizda MQTT protokolini (masalan, openhab) qo'llab -quvvatlaydigan mavjud uy avtomatlashtirish tizimi bo'lishi kerak, chunki loyiha aynan shu maqsadga qaratilgan. Agar siz uni qo'llab -quvvatlovchi tizimlarsiz veb -sahifadagi tugmalar orqali boshqarishni xohlasangiz, ko'milgan veb -sahifa kodiga ba'zi o'zgartirishlar kiritishingiz kerak bo'ladi. Bunga erishish unchalik murakkab emas (balki rev2..)

3 -qadam: Yura protokoli

Yura protokoli
Yura protokoli

Mashinadan olingan ma'lumotlar faqat ketma -ket @ 9600, lekin Yuraning ham hiyla -nayranglari bor. Protokol buni qo'shimcha ECC uchun va/yoki aloqani buzish uchun ishlatadi. Oddiy qilib aytganda, har bir bayt ma'lumot (belgi) 8 ms pauzadan so'ng 4 ta standart ketma -ket baytning 2 va 5 -bitlariga bo'linadi. Agar siz bu qanday ishlashini bilishni xohlasangiz, havolalarda juda ko'p ma'lumotlar mavjud.

Protokol ma'lumotlari https://protocoljura.wiki-site.com/ saytidan olingan.

Arduino kodi buni soddalashtiradi, bu sizga odamlarga o'qiladigan standart buyruqlarni yuborish imkonini beradi, so'ngra ularni Jura protokoliga o'tkazadi.

Mening kodim-bu kodning kombinatsiyasi: https://github.com/oliverk71/Coffeemaker-Payment-…

Yuqoridagi saytlarga havola qilingan buyruqlar mening mashinam uchun to'g'ri emas edi, lekin men sinov va xato usuli orqali men quyidagilarni bilib oldim:

FA: 01 - O'chadi (lekin kerak bo'lganda ham yuvilmaydi) FA: 02 - "OK" deb javob beradi, lekin nima qilishini bilmaydi. FA: 03 - Xabarni chayish ("Durulama" xabarini ekranda bosadi, aylantiruvchi chayish mashinasini bosadi) FA: 04 - Durulama harakati - "Qaytish tugmachasini bosing" degan xabar paydo bo'lganda yuviladi, aks holda FA: 05 - Ekranda kuchli (FA: 06 - Kuchli uchun qahva tayyorlash bilan birlashtiring) FA: 06 - Ekranda kuchli (Kuchli uchun qahva tayyorlash bilan birlashtiriladi) FA: 07 - "Maxsus" ekranda, lekin aslida hech narsa qilmaydi, buFA uchun nima ekanligini bilmayman: 08 - Bug 'FA: 09 - Kichik qahva FA: 0A - Katta qahva

Boshqa buyruqlar bor, lekin bu men uchun etarli …

Noma'lum buyruqlar berishda ehtiyot bo'ling, masalan, AN: 0A mashinaning EEPROMini o'chiradi …

4 -qadam: demontaj

Mashinani o'z -o'zidan ochish juda oson emas, chunki sizga ozgina maxsus asboblar kerak bo'ladi, lekin zukko odam yo'lni topadi - sizga T15 Torx va 2 vint uchun "oval kalit" kerak. Menda allaqachon mavjud bo'lgan Torx, 4 mm teshikli boltdan yasalgan oval asbob bolg'a yordamida biroz burilgan va tekislangan.

Bu erda ko'rsatmalar juda yaxshi berilgan-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

5 -qadam: Kafolatni bekor qilish

Kafolatni bekor qilish
Kafolatni bekor qilish
Kafolatni bekor qilish
Kafolatni bekor qilish
Kafolatni bekor qilish
Kafolatni bekor qilish
Kafolatni bekor qilish
Kafolatni bekor qilish

Mashinaga kirgandan so'ng, siz asosiy komponentlarni ko'rasiz. Asosiy quvvat manbai 5V zaryadlovchini qo'shish uchun yaxshi joyga ega.

Men mashinaning kirish joyidagi terminal blokiga simlarni qo'shdim va ularni 5v zaryadlovchining tarmoq pimlariga lehimladim/qizdirdim. Mening maxsus modelim USB port turi emas, balki doimiy ulangan sim edi. Haqiqiy USB kabelidan foydalanish uchun sizda usb port turiga etarli joy bo'lmasligi mumkin, lekin agar siz zaryadlovchini ochsangiz, USB portini chiqarib, 5v va Gnd nuqtalariga standart sim bilan almashtirishingiz mumkin.

Agar xohlasangiz, 5V quvvatga ega boshqa tarmoqni almashtirishingiz mumkin. 500ma ko'p bo'lishi kerak.

Tegirmonni yonida o'rni moduli uchun joy ko'p. Asosiy quvvat kalitlari bilan parallel ishlash uchun ikkita o'rni sim bilan ulashimiz kerak. Men shunchaki mavjud simlarni kesib tashladim, echib tashladim, qalayladim, qo'shimcha sim qo'shdim va yana lehimladim (issiqlik o'tkazuvchanligini unutmang). Buning uchun simlarning bo'shashishi etarli edi.

O'rnimizni moduli yaxshi sifatli ikki tomonlama lenta bilan ushlab turiladi. Simlar ulangan va harakatlanish uchun cheklangan joy bo'lsa ham, lenta ushlagichini yo'qotsa ham, modul juda uzoqqa ketmaydi va metall buyumlar bilan aloqa qila olmaydi.

Men, shuningdek, butunlay yashirin integratsiyaga erishish uchun ichki ulanishlarning joylashishini aniqlash uchun mashinamdagi diagnostika portini qayta ishlab chiqdim. Faqat tx, rx va Gnd simlari ishlatiladi.

Agar sizda kutish voltajini qo'llab -quvvatlaydigan ko'proq tijorat mashinasi bo'lsa va/yoki siz mashinangizda kafolatni bekor qilmoqchi bo'lmasangiz, siz uning o'rniga to'g'ridan -to'g'ri diagnostika portiga ulanishingiz mumkin, lekin bu qurilmadan foydalanib mashinani quvvatlantira olmasligingiz mumkin.

Mening mashinam 7 pinli ulagichdan foydalanadi. Chapdan o'ngga:

NC Tx G Rx NC 5v NC

Anakartdagi mos keladigan pinlar: Qizil = Gnd to'q sariq = Rx qora = Tx

Qo'shimcha ma'lumotni bu erda topishingiz mumkin:

6 -qadam: Mantiq tomonini ulash

Mantiq tomonini ulash
Mantiq tomonini ulash
Mantiq tomonini ulash
Mantiq tomonini ulash
Mantiq tomonini ulash
Mantiq tomonini ulash

Diagrammani ko'rib chiqing - bu juda murakkab ko'rinadi, lekin aslida unday emas.

Men darajali konvertorni voltaj regulyatorining orqa tomoniga ikki tomonlama lenta bilan o'rnatdim. Keyin men konvertorning har ikki tarafidagi quvvat va tuproq pimlarini mos keladigan quvvat moduli pinlariga lehimlash uchun ba'zi komponentli oyoqlardan foydalandim. Butun modul ESP-01 uchun barcha mantiq va quvvat manbai uchun "o'tish yo'li" kabi ishlaydi.

Men ketma -ket ma'lumotlar uchun ikkita o'rta konvertorni va o'rni haydash signallari uchun tashqi ikkitasini ishlatardim, lekin qaysi birini ishlatishingiz muhim emas.

5V mantig'ini ishga tushirish uchun bu o'rni modullari zarur emas, chunki ular LOW faol, lekin u juda yaxshi ishladi, shuning uchun men baribir qildim.

Men ESP moduliga ulanish uchun 4x2 o'lchamli ayol sarlavhadan foydalanardim. Bu kodni osongina yuklash yoki modulni almashtirish imkonini beradi.

Diagrammada 5V kirish tasvirlanmagan - men o'zimni to'g'ridan -to'g'ri o'rni moduliga uladim (ikkinchi rasmga qarang). Rasmning chap pastki qismidagi qora sim - bu ketma -ket ma'lumotlar asosiy kartaga. Ma'lumotlar uzatish shovqinini kamaytirishga yordam berish uchun men 3,5 mm naushnikni uzatuvchi kabelning bir qismini ishlatganman.

12f kodi apparat ketma -ketligi o'rniga SoftwareSerial -dan foydalanadi - bu modulga oddiy ketma -ketlik orqali disk raskadrovka holatini xabar qilish imkonini beradi. Ulanishlar 4 va 5 -pinlar orqali amalga oshiriladi. Men xuddi shu sarlavhani ESP12F-ni ESP-01-ga almashtirish moslamasiga aylantirdim, shunchaki o'sha ketma-ket pinlarni almashtirdim

7 -qadam: Modulni dasturlash

Modulni dasturlash
Modulni dasturlash

Kod Arduino 1.8.1 ga qarshi ESP8266 taxtali va PubSubClient 2.6.0 (MQTT kutubxonasi) bilan tuzilgan.

Kodni talablarga muvofiq o'zgartiring va ESP-01 moduliga yuklang va mashinaga ulaning. Pimlarning yo'nalishi bilan ehtiyot bo'ling!

Konfiguratsiya

Variant 1)

Faqat zip -dagi asosiy kodda. ESP moduli birinchi marta ishga tushganda, AP rejimiga o'tadi va IP -ni 192.168.4.1 ga o'rnatadi. Keyin siz modulga ulanishingiz va IP -ni o'zgartirishingiz va o'zingizning kirish nuqtangizga ulanishingiz mumkin. Bundan tashqari, ushbu diapazonda sizning mashinangiz uchun IP -ni o'rnatishingiz kerak bo'ladi, chunki modulda DHCP yo'q.

Standart AP SSID - "ESPSwitch" va parol "12345678"

U sukut bo'yicha AP rejimida 2 daqiqa qoladi. Siz bu sozlamani "global.h" da o'zgartirishingiz mumkin - "adminTimeout" deb nomlanadi va millisekundlarda. EEPROM -da haqiqiy konfiguratsiyaga ega bo'lgandan so'ng, men buni past darajaga o'zgartirishni maslahat beraman, chunki bu aks holda qurilmaning yuklanishida keraksiz kechikishlarga olib keladi.

2 -variant)

Bu ikki tomonlama aloqani qo'llab -quvvatlaydigan yangi kod uchun standart rejim, 1 -variant mavjud emas. Bundan tashqari, asosiy ino faylidagi standart SSID/Parol sozlamalarini o'zgartirishingiz mumkin ("// DEFAULT CONFIG" ni qidiring), shunda u yuklanadi. bu sozlamalar birinchi yuklashda EEPROM -ga o'rnatiladi va administrator rejimining kechikishini 'global.h' past darajasiga o'zgartiradi. Bu vaqtinchalik APga ulanishni buzishdan saqlaydi.

Qurilma MQTT identifikatorini (va obuna yo'lini) modullarning oxirgi 4 raqamiga avtomatik ravishda o'rnatadi. Odatiy yo'l - ha/mod //#, xohlaganingizcha o'zgartiring, lekin tegishli qatorning to'g'ri uzunligiga ishonch hosil qilish uchun koddagi izohlarni o'qing.

Men buni qilaman, chunki bu mening tarmog'imdagi har bir modul uchun yagona identifikatorni yaratish shart emas.

Qurilma identifikatori ko'rinadi va MQTT serverini ichki veb -serverdagi MQTT server sahifasi orqali sozlash mumkin

8 -qadam: ishni bajarish …

MQTT buyruqlari

ha/mod/xxxx/0 yoki 1 = Quvvatni almashtirish

Boshqa har qanday satr buyruq sifatida qabul qilinadi va ketma -ket port orqali yuboriladi. HEX holatida /ga /kofe holatiga xabar beriladi

OpenHAB bilan

qahva mashinasi. elementlar

Raqam Coffee_Machine_Power "Quvvat" {mqtt = "> [nazorat: ha/mod/8002/: buyruq:*: standart]"} Qahva_Machine_Status qatori {mqtt = "<[nazorat: ha/qahva: holat: standart]"}

Sayt xaritasi

Guruh elementi = "Kofe mashinasi" {Kalit elementi = Coffee_Machine_Power yorlig'i = "Quvvat" xaritalari = [1 = "O'tish"] O'zgartirish elementi = Coffee_Machine_Cmd yorlig'i = "" xaritalar = ["FA: 09" = "Kichik"] Elementni almashtirish = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Katta"] Elementni almashtirish = Coffee_Machine_Cmd label = "" xaritalar = ["FA: 04" = "Durulama"] Matn elementi = Coffee_Status yorlig'i = "Status [%s] "}

ovozli boshqaruv qoidalari

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

"Ovozli buyruq qoidalari" qoidasi

Item VoiceCommand buyrug'ini olganida, var String buyrug'i = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand qabul qilingan"+buyrug'i)

if (command.contains ("qahvaxonani yoqish") || buyrug'i o'z ichiga oladi ("qahva mashinasini o'chirish")))

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("menga kichkina qahva"))) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("menga katta qahva"))) sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("qahva mashinasini chayish"))) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} oxiri

Qoidalar (HEX javoblarini "haqiqiy" qiymatlarga talqin qilish uchun):

Coffee_Machine_Status elementi yangilanganida "qahva mashinasi holati" qoidasi 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 (son)). almashtiring ('', '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)

agar (trayBit == "0") {

postUpdate (Coffee_Status, "Laganda etishmayapti")} if (tankBit == "1") {postUpdate (Coffee_Status, "Fill Tank")} if (rinseBit == "1") {postUpdate (Coffee_Status, "Press Rotary")} agar (trayBit == "1" && tankBit == "0" && rinseBit == "0") {postUpdate (Coffee_Status, "Tayyor")}

}

agar (javob == "O'chirilgan") {postUpdate (Coffee_Status, "O'chirilgan")} oxiri

9 -qadam: takomillashtirish/Todo

Wi -Fi tarmog'iga ulanishni dastlabki sozlamalarini soddalashtiring - Bajarildi. Zerikarli bo'lgani uchun "admin rejimi" g'oyasidan voz kechdi. Endi kodga SSID va parolni kiriting. Agar veb -interfeys orqali yangilansangiz/o'zgartirsangiz, EEPROM -da saqlanadi.

Yangi kod OTA yangilanishlarini ham qo'llab-quvvatlaydi, lekin tegishli OTA elementlarini ishlashi yoki sharhlanishi uchun siz ESP-01 modulida EEPROMni yangilashingiz kerak bo'ladi

Mashinadan javoblarni qayta ishlash uchun kod qo'shing va laganda, bo'sh joy va to'ldirish idishi kabi holatni o'qing - Bajarildi. Men statusni o'qish va ha/qahvalarda nashr qilish uchun kod qo'shdim. Bu oddiy javoblar va men ularni talqin qilish ustida ishlamoqdaman, lekin hozircha menda Tray yo'qolgan va Tank bo'sh ishlagan. U har 9 soniyada mashinadan so'rov o'tkazadi va MQTT javobini e'lon qiladi

Javob HEXda, lekin individual bitlar sensorlarni ko'rsatadi

HTTP GET buyruqlari orqali to'g'ridan -to'g'ri boshqarish uchun veb -sahifalarga kod qo'shing.

Internet -narsalar tanlovi 2017
Internet -narsalar tanlovi 2017
Internet -narsalar tanlovi 2017
Internet -narsalar tanlovi 2017

2017 yil "Internet narsalar" tanlovida birinchi sovrin

Tavsiya: