Мазмұны:

IoT қосылған кофеқайнатқыш: 9 қадам (суреттермен)
IoT қосылған кофеқайнатқыш: 9 қадам (суреттермен)
Anonim
Image
Image
Қажетті жабдықтар
Қажетті жабдықтар

Бұл нұсқаулық IoT байқауына қатысады - егер сізге ұнаса, оған дауыс беріңіз

ЖАҢАРТЫЛДЫ: Енді екі жақты хабарлар мен OTA жаңартуларын қолдайды

Біраз уақыттан бері менде Jura кофеқайнатқышы болды, мен оны қалай болса да автоматтандыруды қалаймын.

Мен бірнеше жылдар бойы үйді автоматтандырудың негізгі жүйесін басқардым, бірақ кофеқайнатқыш қарапайым емес еді (немесе мен ойладым). Юра кофеқайнатқыштарында әдетте «диагностикалық порт» және/немесе машинаға төлем жүйесін қосу үшін қолданылатын порт бар, бірақ мен оны қалай қолдануға болатыны туралы ешқандай ақпарат таба алмадым. Жақында хаттаманы кейбір адамдар кері жобалап, көпшілікке жария етті. Мәселе мынада, қол жетімді функцияларға сілтемелердің көпшілігі менікінен әлдеқайда үлкен машиналарға арналған (Ena 7).

Оның үстіне, менің машинам үлкен машиналар сияқты тұрақты күту режиміне ие емес, керісінше, оның қуат көзін «бекітетін» қосатын HV қосқышы бар. Машинадағы физикалық түйме іс жүзінде 2 қосқышты іске қосады - бір төмен вольт (логикалық жағы, өшіру) және бір жоғары вольт (қуатты қосу). Екі қосқыш та уақытша.

Мен сондай -ақ машинаның кез келген басқару механизміне тәуелсіз 100% жұмыс істейтініне көз жеткізуім керек еді, яғни машина IoT қосылмаған сияқты қалыпты жұмыс істейді.

Машинаны автоматтандыру үшін екі нәрсе қажет: 1) Машинаның қуатын басқара білу үшін 2) Кофе, шаю т.б функцияларын іске қосу үшін машинамен сөйлесе білу.

1 -қадам: Біз мұны қалай жасаймыз

Біз ESP8266 'ESP-01' модулін үйдегі Wi-Fi желісіне қосылу үшін және MQTT серверіне/командаларды тыңдайтын тақырыпқа жазылу үшін қолданамыз. Мен қолданған 'Front End' - OpenHAB2, бірақ егер сіз HTTP Get пәрмендері арқылы немесе қаласаңыз, құрылғыдағы веб -интерфейске қосыла алмайтындығыңызға және басқаруға ешқандай себеп жоқ.

ESP8266 қуат түймесіне қатысты 2 релені басқарады, сонымен қатар кофеқайнатқышқа/сериялы командаларды өңдейді.

ЕСКЕРТУ - Бұл нұсқаулықта менің үйдегі автоматтандыру арқылы басқарылатын Jura Ena7 кофеқайнатқышты өзгерту үшін қолданған процедурам көрсетілген. Ол желідегі электр қондырғысын өзгертуге қатысты, егер ол дұрыс орындалмаса қауіпті болуы мүмкін. Мұндағы ақпарат толық емес, дәл емес және қауіпті болуы мүмкін. Сақтықпен жалғастырыңыз. Ешқандай жауапкершілік қабылданбады.

2 -қадам: қажетті құрал -жабдықтар

Қажетті жабдықтар
Қажетті жабдықтар
Қажетті жабдықтар
Қажетті жабдықтар
Қажетті жабдықтар
Қажетті жабдықтар

Бөлшектер

  • ESP-01 модулі және оны бағдарламалау әдісі (Arduino IDE және бағдарламалауға арналған физикалық адаптер)
  • EBAY екі жақты релелік модулі
  • 5v -> 3.3v EBAY реттегіші
  • Шағын 5В қуат көзімен жұмыс істейтін телефон зарядтағыш
  • Логикалық деңгей түрлендіргіші* Freetronics
  • Әр түрлі сым, түйреуіштер, жылуды азайту және т.б.

Құралдар

  • Ұсақ ұшты дәнекерленген темір
  • Дәнекер
  • Сым тартқыштар өте ыңғайлы
  • Torx T15 драйвері
  • Сопақшаға арналған қауіпсіздік құралы (немесе оны жасаңыз, бірнеше минут кетеді)

*Мен машинаның барлық сериялық командаларын тестілеуде бастапқыда arduino UNO қолдандым және ол мінсіз жұмыс істеді, бірақ ESP модулі жұмыс істеуден бас тартты. Мен кодты үш рет тексердім және ESP модулінен шығатын командалар arduino-мен бірдей екеніне сенімді болдым, бірақ бұл мүмкін емес. Мен мұны ESP модуліне 5В емес, тек 3.3v логикасында жұмыс істедім. Мен логикалық түрлендіргішті енгізгеннен кейін, ол жақсы жұмыс істеді. Бұл басқа машиналарда қажет болуы мүмкін немесе болмауы мүмкін.

Ең дұрысы, сізде MQTT протоколына қолдау көрсететін қолданыстағы үй автоматтандыру жүйесі болады (мысалы, openhab), бұл жобаның мақсаты. Егер сіз оны қолдау жүйелері жоқ веб -беттегі түймелер арқылы басқарғыңыз келсе, ендірілген веб -бет кодына кейбір өзгерістер енгізу қажет болады. Бұған қол жеткізу өте қиын емес (мүмкін rev2..)

3 -қадам: Юра хаттамасы

Юра хаттамасы
Юра хаттамасы

Машинадан алынған/алынған деректер жай ғана @ 9600 сериялы, бірақ Юраның да жеңдері бар. Протокол мұны қосымша ЭКК үшін және/немесе хабарды түсіндіру үшін қолданады. Қарапайым тілмен айтқанда, деректердің әрбір байты (символы) 8см үзілістен кейін 4 стандартты сериялық байттың 2 және 5 биттеріне бөлінеді. Егер сіз бұл қалай жұмыс істейтінін білгіңіз келсе, мұнда сілтемелерде көптеген ақпарат бар.

Хаттама ақпараты мына жерден алынды:

Arduino коды мұны жеңілдетеді, бұл сізге қарапайым оқылатын командаларды жіберуге мүмкіндік береді, содан кейін ол Jura протоколына ауысады.

Менің кодым-бұл https://github.com/oliverk71/Coffeemaker-Payment-… https://github.com/psct/sharespresso кодының комбинациясы.

Жоғарыда көрсетілген сайттарда көрсетілген командалар менің машинам үшін дәл емес, бірақ сынақ пен қателік әдісі арқылы мен төмендегілерді шығара алдым:

FA: 01 - өшіріледі (бірақ қажет болған жағдайда да шаюға болмайды) FA: 02 - «жақсы» деп жауап береді, бірақ не істейтінін білмейді. FA: 03 - Шаю хабары (Айналмалы шаю машинасын басу арқылы экранда «шаю» хабарламасын күшейтеді) FA: 04 - Шаю әрекеті - «Айналмалы түймешікті басу» хабары пайда болған кезде шайылады, әйтпесе ештеңе болмайды FA: 05 - Экранда күшті (FA: 06 - Экранда берік (Мұны күшті үшін кофе дайындаумен біріктіруге болады) FA: 07 - экранда «ерекше», бірақ іс жүзінде ештеңе жасамайды, бұл FA үшін не екенін білмейді: 08 - Steam FA: 09 - Small Coffee FA: 0A - Large Coffee

Басқа командалар бар, бірақ бұл мен үшін жеткілікті …

Белгісіз пәрмендерді шығарғанда абай болыңыз, мысалы, AN: 0A машинаның EEPROM -ын өшіретін сияқты …

4 -қадам: бөлшектеу

Машинаны ашу өте оңай емес, өйткені сізге арнайы құрал қажет, бірақ білгіш адам жолды табады - сізге T15 Torx биті мен 2 бұрандаға арналған «сопақ кілт» қажет. Менде бұрыннан бар Torx, 4 мм розеткалы болттан жасалған сопақша құрал бұрғыланған және балғамен сәл тегістелген.

Мұндағы нұсқаулар өте жақсы ұсынылған-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

5 -қадам: Кепілдікті жою

Кепілдіктің күшін жою
Кепілдіктің күшін жою
Кепілдіктің күшін жою
Кепілдіктің күшін жою
Кепілдіктің күшін жою
Кепілдіктің күшін жою
Кепілдіктің күшін жою
Кепілдіктің күшін жою

Машинаға кіргеннен кейін сіз негізгі компоненттерді көресіз. Негізгі қуат кірісінің астында 5В зарядтағышты қосуға арналған жақсы орын бар.

Мен сымдарды машинаның кіреберісіндегі терминал блогына қостым және оларды 5в зарядтағыштың электр түйреуіштеріне дәнекерледім/қыздырдым. Менің нақты моделім USB порты емес, бірақ оның сымы тұрақты түрде бекітілген. Нақты USB кабелін пайдалану үшін сізге бірінші типті USB порты үшін орын жеткіліксіз болуы мүмкін, бірақ егер сіз зарядтағышты ашсаңыз, USB портын алып тастап, 5v және Gnd нүктелеріне стандартты сыммен ауыстыруға болады.

Қаласаңыз, 5 вольтты басқа қуат көзін ауыстыруға болады. 500ма жеткілікті болуы керек.

Тегістеуіш жанында реле модулі үшін көп орын бар. Біз негізгі реле қосқыштарымен параллель жұмыс істеу үшін екі релені сыммен байланыстыруымыз керек. Мен қолданыстағы сымдарды кесіп тастадым, шешілді, қаңылтырладым, қосымша сым қостым және қайтадан дәнекерледім (жылуды азайтуды ұмытпаңыз). Мұны істеу үшін сымдарда бос орын жеткілікті болды.

Реле модулі жақсы сапалы екі жақты таспамен бекітілген. Сымдар қосылған кезде және қозғалыс үшін шектеулі орын болса да, таспа ұстамасын жоғалтса да, модуль тым алысқа кетпейді және металл заттармен жанаспайды.

Мен сонымен қатар ішкі байланыстардың орнын анықтау үшін компьютердегі диагностикалық портты қайта жасаттым, осылайша мен толық жасырын интеграцияға қол жеткізе алдым. Тек tx, rx және Gnd сымдары қолданылады.

Егер сізде күту кернеуін қолдайтын неғұрлым коммерциялық машина болса және/немесе сіздің машинаңызға кепілдік беруден бас тартқыңыз келмесе, сіз оның орнына диагностикалық портқа тікелей қосыла аласыз, бірақ бұл құрылғыны қолданып машинаны қосуға болмайды.

Менің машинам 7 істікшелі қосқышты қолданады. Солдан оңға қарай:

NC Tx G Rx NC 5v NC

Негізгі тақтадағы тиісті түйреуіштер: Қызыл = Gnd Апельсин = Rx Қара = Tx

Қосымша ақпаратты мына жерден табуға болады:

6 -қадам: Логикалық жағын қосу

Логикалық жағының сымдары
Логикалық жағының сымдары
Логикалық жағының сымдары
Логикалық жағының сымдары
Логикалық жағының сымдары
Логикалық жағының сымдары

Диаграмманы қарап шығыңыз - бұл өте күрделі болып көрінеді, бірақ олай емес.

Мен деңгейлі түрлендіргішті екі жақты таспамен кернеу реттегішінің артына орнаттым. Содан кейін мен деңгейлік түрлендіргіштің екі жағындағы қуат пен жерге түйреуіштерді тиісті қуат модулінің түйреуіштеріне дәнекерлеу үшін кейбір компоненттерді қолдандым. Содан кейін бұл модуль ESP-01 логикасы мен қуат көзі үшін «өтпелі жол» сияқты жұмыс істейді.

Мен сериялық деректер үшін екі орта түрлендіргішті және реле сигналдары үшін сыртқы екеуін қолдандым, бірақ сіз қайсысын қолданғаныңыз маңызды емес.

Бұл релелік модульдер 5В логикасын іске қосудың қажеті жоқ, себебі олар LOW белсенді, бірақ ол жақсы жұмыс істеді, сондықтан мен бәрібір жасадым.

Мен ESP модуліне қосылу үшін 4х2 әйел тақырыбын қолдандым. Бұл кодты оңай жүктеуге немесе модульді ауыстыруға мүмкіндік береді.

Диаграммада 5В кірісі бейнеленбеген - мен релелік модульге тікелей минаны қостым (екінші суретті қараңыз). Суреттің төменгі сол жағындағы қара сым - бұл негізгі тақтадағы сериялық деректер. Мен деректер желісіндегі кедергілердің ықтималдығын азайту үшін 3,5 мм құлаққаптың ұзартқыш кабелінің бір бөлігін қолдандым.

12f коды аппараттық серияның орнына SoftwareSerial пайдаланады - бұл модульге қалыпты серия арқылы отладтау үшін күй туралы хабарлауға мүмкіндік береді. Қосылымдар оның орнына 4 және 5 түйреуіштер арқылы жүзеге асады. Мен сол тақырыпты ESP12F-ті ESP-01-ге ауыстыратын қосқышқа айналдырдым, тек сол сериялық түйреуіштерді ауыстырдым

7 -қадам: модульді бағдарламалау

Модульді программалау
Модульді программалау

Код ESP8266 тақтасының қосымшасы мен PubSubClient 2.6.0 көмегімен Arduino 1.8.1 -ге қарсы құрастырылды (бұл MQTT кітапханасы)

Кодты сіздің талаптарыңызға сәйкес өзгертіңіз және кодты ESP-01 модуліне жүктеп, құрылғыға қосыңыз. Түйреуіштердің бағытына мұқият болыңыз!

Конфигурация

1 -нұсқа)

Тек zip ішіндегі негізгі код бойынша. ESP модулі бірінші рет жүктелгенде, ол AP режиміне өтеді және оның IP мекенжайын 192.168.4.1 деп орнатады. Содан кейін сіз модульге қосылып, IP -ді өзгерте аласыз және өзіңіздің кіру нүктеңізге қосыла аласыз. Сондай -ақ, модульде DHCP жоқ болғандықтан, осы ауқымда сіздің машинаңызға IP орнату қажет болады.

Әдепкі AP SSID - «ESPSwitch» және құпия сөз - «12345678»

Ол әдепкі бойынша 2 минут бойы AP режимінде қалады. Сіз бұл параметрді 'global.h' ішінде өзгерте аласыз - ол 'adminTimeout' деп аталады және миллисекундтарда болады. Мен EEPROM -де жарамды конфигурация болғаннан кейін оны төмен деңгейге өзгертуді ұсынамын, себебі ол құрылғыны жүктеуде қажетсіз кідірістерге әкеледі.

2 -нұсқа)

Бұл екі жақты хабарды қолдайтын жаңа кодтың әдепкі режимі, 1 -нұсқа жоқ. Сонымен қатар, негізгі ино файлындағы SSID/Құпия сөздің әдепкі параметрлерін өзгертуге болады («// ӘДЕПСІЗ КОНФИГ» іздеңіз), ол жүктеледі. Бұл параметрлер EEPROM -ге бірінші жүктеу кезінде енгізіледі және әкімші режимінің кешігуін 'global.h' төмен деңгейге өзгертеді. Бұл уақытша кіру нүктесіне қосылу кезінде қиындық тудырмайды.

Құрылғы MQTT идентификаторын (және жазылу жолын) модульдердің сериялық нөмірінің соңғы 4 цифрына автоматты түрде орнатады. Әдепкі бойынша жол ha/mod //#болып табылады, қалағаныңызша өзгертіңіз, бірақ сәйкес массивтің дұрыс ұзындығына көз жеткізу үшін кодтағы түсініктемелерді оқыңыз.

Мен мұны істеймін, себебі бұл менің желімдегі әрбір модуль үшін бірегей идентификаторды құрудың қажеті жоқ дегенді білдіреді.

Құрылғы идентификаторы көрінеді және MQTT серверін ішкі веб -сервердегі MQTT сервер беті арқылы орнатуға болады

8 -қадам: оны бір нәрсеге айналдыру …

MQTT командалары

ha/mod/xxxx/0 немесе 1 = Қуатты ауыстыру

Кез келген басқа жол команда ретінде қарастырылады және сериялық порт арқылы жіберіледі. /Га /кофе күйі HEX -те хабарланады

OpenHAB көмегімен

кофе машинасы. заттар

Coffee_Machine_Power «Power» саны {mqtt = «> [control: ha/mod/8002/: command:*: default]»} Coffee_Machine_Status тізбегі {mqtt = «<[control: ha/coffee: state: default]»}

Сайт картасы

Топтық элемент = «Кофе машинасы» {Ауыстыру элементі = Coffee_Machine_Power белгісі = «Қуат» салыстырулары = [1 = «Ауыстыру»] Элементті ауыстыру = Coffee_Machine_Cmd белгісі = «» салыстырулар = [«FA: 09» = «Кіші»] Элементті ауыстыру = Coffee_Machine_Cmd label = «» салыстырулар = [«FA: 0A» = «Үлкен»] Элементті ауыстыру = Coffee_Machine_Cmd label = «» салыстырулар = [«FA: 04» = «Шаю»] Мәтін элементі = Coffee_Status жапсырмасы = «[%s] «}

дауысты басқару ережелері

org.openhab.model.script.actions импорттау.* import org.openhab.core.library.types.* импорт java.util.*

ереже «Дауысты команданың ережелері»

VoiceCommand элементі пәрменді алған кезде var String command = VoiceCommand.state.toString.toLowerCase logInfo («Voice. Rec», «VoiceCommand алынды»+пәрмені)

if (command.contains («кофеқайнатқышты қосу») || command.contains («кофеқайнатқышты өшіру»)) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains («маған кішкене кофе»))) {sendCommand (Coffee_Machine_Cmd, «FA: 09»)} if (command.contains («маған үлкен кофе жаса»))) sendCommand (Coffee_Machine_Cmd, «FA: 0A»)} if (command.contains («кофеқайнатқышты шаю»))) {sendCommand (Coffee_Machine_Cmd, «FA: 04»)}} соңы

Ережелер (HEX жауаптарын «нақты» мәндерге түсіндіру үшін):

Coffee_Machine_Status элементі жаңартуды алған кезде «Кофе машинасының күйі» ережесі 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 (num)). ауыстырыңыз ('', '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)

егер (trayBit == «0») {

postUpdate (Coffee_Status, «Науа жоқ»)} if (tankBit == «1») {postUpdate (Coffee_Status, «Fill Tank»)} if (rinseBit == «1») {postUpdate (Coffee_Status, «Press Rotary»)} егер (trayBit == «1» && tankBit == «0» && rinseBit == «0») {postUpdate (Coffee_Status, «Дайын»)}

}

егер (жауап == «Өшірулі») {postUpdate (Coffee_Status, «Off»)} end

9 -қадам: нақтылау/Тапсырма

Wi -Fi желісіне қосылуды бастапқы орнатуды жеңілдетіңіз - Орындалды. «Әкімші режимі» идеясынан бас тартты, себебі бұл тітіркендіргіш еді. Енді кодқа SSID мен парольді енгізіңіз. Егер сіз веб -интерфейс арқылы жаңартсаңыз/өзгертсеңіз, EEPROM сақтайды.

Жаңа код сонымен қатар OTA жаңартуларын қолдайды, бірақ сәйкес OTA элементтерін өңдеу немесе түсініктеме беру үшін сізге ESP-01 модулінде EEPROM жаңарту қажет болады

Машинадан жауаптарды өңдеу үшін код қосыңыз және науа, бос алаңдар мен құю цистернасы сияқты күйді оқыңыз - Орындалды. Мен мәртебені қайта оқып, ха/кофеге жариялау үшін кодты қостым. Бұл қарапайым жауаптар, мен оларды әлі де түсіндіруге тырысамын, бірақ әзірге менде науа жоқ, танк бос жұмыс істейді. Ол машинаны қосқан сайын әр 9 секунд сайын сауалнама жүргізеді және MQTT жауабын жариялайды

Жауап HEX -те, бірақ жекелеген биттер сенсорларды көрсетеді

HTTP GET Commands арқылы тікелей басқару үшін веб -беттерге код қосыңыз.

Интернет заттар конкурсы 2017
Интернет заттар конкурсы 2017
Интернет заттар конкурсы 2017
Интернет заттар конкурсы 2017

2017 жылы Интернет заттар конкурсының бірінші жүлдесі

Ұсынылған: