Mundarija:
- 1 -qadam: Biz buni qanday qilmoqchimiz
- 2 -qadam: uskunalar kerak
- 3 -qadam: Yura protokoli
- 4 -qadam: demontaj
- 5 -qadam: Kafolatni bekor qilish
- 6 -qadam: Mantiq tomonini ulash
- 7 -qadam: Modulni dasturlash
- 8 -qadam: ishni bajarish …
- 9 -qadam: takomillashtirish/Todo
Video: IoT yoqilgan qahva mashinasi: 9 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
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
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
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
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
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
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.
2017 yil "Internet narsalar" tanlovida birinchi sovrin
Tavsiya:
Aqlli qahva mashinasi - SmartHome ekotizimining bir qismi: 4 qadam
Aqlli qahva mashinasi - SmartHome ekotizimining bir qismi: buzilgan qahva mashinasi uni SmartHome ekotizimining bir qismiga aylantirdi, menda eski Delonghi qahva mashinasi (DCM) bor (bu reklama emas va "aqlli" bo'lishini xohlayman. Shunday qilib, men uni ESP8266 ni o'rnatib buzib tashladim). uning miyasiga/mikrokontrolleriga interfeysli modul
Arduino tomonidan boshqariladigan DIY qahva qovurish mashinasi: 13 qadam (rasmlar bilan)
Arduino tomonidan boshqariladigan DIY qahva qovurish mashinasi: Ushbu yo'riqnomada biz issiq havodagi popkorn mashinasini to'liq avtomatik va harorat boshqariladigan uy qahvaxonasiga aylantirish uchun o'zgartirishni ko'rib chiqamiz. Uyda qahva qovurish hayratlanarli darajada sodda va hatto qovurish kabi oddiy narsa
Alexa Dragonboard, Android ilovasi va qahva mashinasi bilan qanday ishlash kerak: 7 qadam
Qanday qilib Alexa Dragonboard, Android ilovasi va qahva mashinasi bilan o'zaro aloqada bo'lish mumkin: Ushbu qo'llanmada qahva mashinasini Alexa Dragonboard va Android ilovasi bilan ulash, integratsiya qilish va ishlatish uchun zarur qadamlar berilgan
JavaStation (O'z-o'zidan to'ldiriladigan to'liq avtomatik IoT qahva mashinasi): 9 qadam (rasmlar bilan)
JavaStation (O'z-o'zidan to'ldiriladigan to'liq avtomatik IoT qahva qaynatgichi): Ushbu loyihaning maqsadi avtomatik ravishda o'z-o'zini suv bilan to'ldiradigan ovozli boshqariladigan to'liq avtomatik qahva qaynatgichni ishlab chiqarish edi, va siz faqat mijozlarni almashtirib, qahvangizni ichishingiz kerak; )
ESP8266 va PubNub bilan IoT yoqilgan sensorli ma'lumotlarni yig'ish markazi: 9 qadam (rasmlar bilan)
ESP8266 va PubNub bilan IoT yoqilgan sensorlar ma'lumotlarini yig'ish markazi: ESP8266 -dagi ko'pgina darsliklar yangi darajadagi (masofadan boshqariladigan chiroqni o'chirish) yoki o'z qobiliyatini yaxshilash va takomillashtirishni qidirayotganlar uchun juda murakkab. o'rgatuvchi maqsad bu bo'shliqni yaratishga qaratilgan