Мазмуну:

IoT иштетилген кофе машинасы: 9 кадам (сүрөттөр менен)
IoT иштетилген кофе машинасы: 9 кадам (сүрөттөр менен)

Video: IoT иштетилген кофе машинасы: 9 кадам (сүрөттөр менен)

Video: IoT иштетилген кофе машинасы: 9 кадам (сүрөттөр менен)
Video: Бала качан кыймылдайт? Кош бойлуу учурундагы жыныстык катнаш... 2024, Июль
Anonim
Image
Image
Жабдуулар керек
Жабдуулар керек

Бул көрсөтмө IoT сынагына киргизилген - Эгер сизге жакса, ага добуш бериңиз

ЖАҢЫРТЫЛДЫ: Эми 2 тараптуу билдирүүлөрдү жана OTA жаңыртууларын колдойт

Бир нече убакыттан бери менде Jura кофе машинасы бар болчу жана мен аны кандайдыр бир жол менен автоматташтыргым келген.

Мен бир нече жылдардан бери үйдү автоматташтыруунун негизги тутумун иштетип келем, бирок кофе машинасы жөн эле жөнөкөй нерсе эмес болчу (же мен ойлогом). Юра кофе машиналарында жалпысынан "Диагностикалык порт" жана/же машинага төлөм системасын кошуу үчүн колдонулган порт бар, бирок мен аны кантип колдонуу керектиги тууралуу эч кандай маалымат таба алган жокмун. Жакында, протокол кээ бир адамдар тарабынан тескерисинче иштелип чыгып, коомчулукка жарыяланды. Көйгөй, жеткиликтүү функцияларга шилтемелердин көбү меникинен алда канча чоң машиналар үчүн болгон (Эна 7).

Анын үстүнө, менин машинам чоң машиналар сыяктуу туруктуу күтүүчү кубатка ээ эмес, анын ордуна электр менен камсыздоону "кулпулап" турган HV которгучу бар. Машинанын физикалык баскычы чындыгында 2 өчүргүчтү иштетет - Бири төмөн вольт (логикалык жагы, өчүрүү) жана бир Жогорку Вольт (Power on). Эки которгуч тең убактылуу.

Мен ошондой эле машина дагы деле эч кандай башкаруу механизминен 100% көз карандысыз иштешине көзүм жетиши керек болчу, башкача айтканда, машина IoT иштетилбегендей кадимкидей иштейт.

Машинаны автоматташтыруу үчүн эки нерсе талап кылынат: 1) Машинанын кубатын башкара билүү үчүн 2) Кофе жасоо, чайкоо ж.

1 -кадам: Биз муну кантип жасайбыз

Биз ESP8266 'ESP-01' модулун колдонуп, үйдөгү wifiга туташабыз жана буйруктарды угуу үчүн MQTT серверине/темасына жазылабыз. Мен колдонгон 'Front End' OpenHAB2, бирок сиз түзмөктөгү веб -интерфейске кошо албаганыңызга жана HTTP Get буйруктары аркылуу кааласаңыз түз башкарууга эч кандай себеп жок.

ESP8266 кубат баскычына байланышкан 2 релени башкарат, ошондой эле кофе машинасына/сериялык буйруктарды иштетет.

ЭСКЕРТҮҮ - Бул көрсөтмө менин автоматташтыруу аркылуу башкарыла турган Jura Ena7 кофе машинамды өзгөртүү үчүн колдонулган процедураны сүрөттөйт. Бул туура эмес аткарылганда коркунучтуу болушу мүмкүн болгон электр тармагын өзгөртүү менен алектенет. Бул жердеги маалымат толук эмес, так эмес жана кооптуу болушу мүмкүн. Этияттык менен улантыңыз. Эч кандай жоопкерчилик кабыл алынган жок.

2 -кадам: Жабдуулар керек

Жабдуулар керек
Жабдуулар керек
Жабдуулар керек
Жабдуулар керек
Жабдуулар керек
Жабдуулар керек

Бөлүктөр

  • ESP-01 модулу жана аны программалоо жолу (Arduino IDE жана программалоо үчүн физикалык адаптер)
  • EBAY 2 тараптуу реле модулу
  • 5v -> 3.3v Regulator EBAY
  • Чакан 5v электр кубаты менен иштеген телефон заряддагыч
  • Логикалык деңгээлди алмаштыргыч* Freetronics
  • Баарын туташтыруу үчүн башка зымдар, төөнөгүчтөр, жылуулукту кыскартуу ж.

Куралдар

  • Жакшы учтуу темир
  • Solder
  • Wire Stripers колдонууга ыңгайлуу
  • Torx T15 айдоочу
  • Oval коопсуздук куралы (же жасаңыз, бир нече мүнөт талап кылынат)

*Мен машинанын бардык сериялык буйруктарын текшерүүдө башында arduino UNO колдондум жана ал кемчиликсиз иштеди, бирок ESP модулу иштөөдөн баш тартты. Мен үч жолу кодду текшерип көрдүм жана ESP модулунан чыккан буйруктар arduino менен бирдей экенине ишендим, бирок бул эч нерсе эмес. Мен муну ESP модулуна 5V эмес, 3.3v логикасында гана иштедим. Мен Логика конвертерин койгондон кийин, ал жакшы иштеди. Бул башка машиналарда талап кылынышы мүмкүн же мүмкүн эмес.

Идеалында, сизде MQTT протоколун колдогон учурдагы үй автоматташтыруу системасы болмок (мисалы, openhab), бул долбоордун максаты. Эгерде сиз жөн гана колдоо системасы жок веб -беттеги баскычтар аркылуу башкаргыңыз келсе, анда камтылган веб -барак кодуна бир аз өзгөртүүлөрдү киргизишиңиз керек болот. Жетүү өтө татаал эмес (балким rev2..)

3 -кадам: Юра протоколу

Юра протоколу
Юра протоколу

Машинадан алынган/алынган маалыматтар жөн эле сериялуу @ 9600, бирок Юранын жеңдеринде дагы кээ бир амалдар бар. Протокол муну кошумча ECC үчүн жана/же байланышты түшүндүрүү үчүн колдонот. Жөнөкөй сөз менен айтканда, маалыматтын ар бир байты (символу) 8см тыныгуудан кийин 4 стандарттык сериялык байттын 2 жана 5 биттерине бөлүнөт. Эгер бул кантип иштээрин билгиңиз келсе, бул жердеги шилтемелерде көп маалымат бар.

Протокол маалыматы алынган:

Arduino коду муну жөнөкөйлөтүп, стандарттык, адам окуй турган буйруктарды өткөрүп, кийин Юра протоколуна которот.

Менин код бул коддун айкалышы:

Жогорудагы сайттарда айтылган буйруктар менин машинам үчүн так эмес болчу, бирок сыноо жана ката аркылуу мен төмөнкүлөрдү ойлоп таптым:

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 -кадам: Кепилдикти жокко чыгаруу

Кепилдикти жокко чыгаруу
Кепилдикти жокко чыгаруу
Кепилдикти жокко чыгаруу
Кепилдикти жокко чыгаруу
Кепилдикти жокко чыгаруу
Кепилдикти жокко чыгаруу
Кепилдикти жокко чыгаруу
Кепилдикти жокко чыгаруу

Машинага киргенде, сиз негизги компоненттерди көрөсүз. Негизги кубаттын кире беришинде 5v заряддагычты кошуу үчүн жакшы жер бар.

Мен машинанын кире беришиндеги терминалдык блокко зымдарды коштум жана аларды 5в заряддагычтын розеткасына ширетип/жылыттым. Менин өзгөчө моделим USB порттун түрү эмес, бирок коргошун биротоло тиркелген болчу. Чыныгы USB кабелин колдонуу үчүн USB порттун бир түрү үчүн жетиштүү орун жок болушу мүмкүн, бирок эгер сиз заряддагычты ачсаңыз, USB портун алып салып, 5v жана Gnd чекитине стандарттык зым менен алмаштырсаңыз болот.

Кааласаңыз 5v электр кубаттуулугу бар башка тармакты алмаштырсаңыз болот. 500ма көп болушу керек.

Жаргылчактын жанында реле модулуна орун көп. Биз негизги реле өчүргүчтөрү менен параллелдүү иштеши үчүн эки релени зым менен байланышыбыз керек. Мен жөн эле учурдагы зымдарды кесип, сыйрып, консервалаштырып, кошумча зым кошуп, кайра лактап коштум (ысытууну унутпаңыз). Бул үчүн зымдарда жетиштүү боштук бар болчу.

Реле модулу жакшы сапаттагы эки тараптуу лента менен кармалып турат. Байланышкан зымдар менен жана кыймыл үчүн чектелген гана мейкиндик менен, лентаны кармоо жоголсо да, модуль өтө алыска кетпейт жана эч кандай металл буюмдар менен байланышта боло албайт.

Мен толугу менен жашыруун интеграцияга жетүү үчүн ички туташуулардын жайгашкан жерин аныктоо үчүн машинамдагы диагностикалык портту кайра иштеттим. Бир гана tx, rx жана Gnd зымдары колдонулат.

Эгерде сизде күтүүчү чыңалууну колдогон жана/же сиз машинаңызда кепилдикти жокко чыгаргыңыз келбеген коммерциялык машинаңыз болсо, анын ордуна диагностикалык портко түз туташа аласыз, бирок бул аппаратты колдонуп машинаны күйгүзө албай калышыңыз мүмкүн.

Менин машинам 7 пин туташтыргычты колдонот. Солдон оңго карай:

NC Tx G Rx NC 5v NC

Негизги тактадагы тийиштүү казыктар: Red = Gnd Orange = Rx Black = Tx

Кененирээк маалыматты бул жерден таба аласыз:

6 -кадам: Логикалык тараптын зымдары

Логикалык тараптын зымдары
Логикалык тараптын зымдары
Логикалык тараптын зымдары
Логикалык тараптын зымдары
Логикалык тараптын зымдары
Логикалык тараптын зымдары

Диаграмманы карап чыгуу - Бул өтө татаал көрүнөт, бирок чынында андай эмес.

Мен деңгээл өзгөрткүчтү эки тараптуу скотч менен чыңалуу жөндөгүчүнүн артына орноттум. Мен андан кийин кээ бир компоненттердин буттарын колдонуп, деңгээлди которгучтун эки жагындагы кубаттуулукту жана жерге төөнөгүчтөрдү тиешелүү күч модулунун казыктарына туташтырдым. Бул модуль ESP-01дин логикасы жана электр менен камсыздоосу үчүн "өтмөк" сыяктуу иштейт.

Мен сериялык маалыматтар үчүн ортоңку эки өзгөрткүчтү жана релени айдоо сигналдары үчүн тышкы экөөнү колдондум, бирок сиз колдонгон мааниге ээ эмес.

Бул реле модулдары менен 5В логикасын иштетүү зарыл эмес, анткени алар LOW активдүү, бирок ал жөн эле жакшы иштеген, ошондуктан мен муну баары бир жасадым.

Мен ESP модулуна туташуу үчүн 4x2 аял башын колдондум. Бул кодду оңой жүктөөгө же модулду алмаштырууга мүмкүндүк берет.

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

12f коду аппараттык сериянын ордуна SoftwareSerialди колдонот - Бул модулга кадимки сериал аркылуу мүчүлүштүктөрдү оңдоо статусун билдирүүгө мүмкүндүк берет. Байланыштар анын ордуна 4 жана 5 -пиндер аркылуу жүргүзүлөт. Мен ошол эле баштыкты ESP12Fди ESP-01ге алмаштыруучу плагинге айландырдым, жөн гана ошол сериялык төөнөгүчтөрдү алмаштырам

7 -кадам: Модулду программалоо

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

Код Arduino 1.8.1ге каршы ESP8266 тактасы addon жана PubSubClient 2.6.0 менен түзүлдү (бул MQTT китепканасы)

Кодду талаптарга ылайык өзгөртүп, кодду ESP-01 модулуна жүктөп, машинага туташтырыңыз. Пиндердин багыты менен абайлаңыз!

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

Опция 1)

ESP модулу биринчи жолу жүктөлгөндө, ал AP режимине өтөт жана IPди 192.168.4.1 деп коет. Андан кийин модулга туташып, IPди өзгөртүп, өзүңүздүн кирүү чекитиңизге туташа аласыз. Сиз ошондой эле модулда DHCP жок болгондуктан, ошол диапазондо машинаңызга IP орнотушуңуз керек болот.

Демейки AP SSID 'ESPSwitch' жана сырсөз '12345678'

Ал демейки боюнча AP режиминде 2 мүнөт калат. Бул жөндөөнү 'global.h' ичинде өзгөртө аласыз - Бул 'adminTimeout' деп аталат жана миллисекундтарда болот. Мен муну EEPROMдо жарактуу конфигурация болгондон кийин төмөн нерсеге өзгөртүүнү сунуштайм, анткени ал жөн гана түзмөктүн жүктөлүшүндө керексиз кечигүүлөргө алып келет.

Опция 2)

Бул 2 жолку билдирүүнү колдогон жаңы коддун демейки режими, 1 -вариант жеткиликтүү эмес. Ошондой эле негизги ино файлындагы демейки SSID/Сырсөз жөндөөлөрүн өзгөртө аласыз ("// DEFAULT CONFIG" издеңиз), андыктан ал жүктөлөт бул орнотуулар биринчи жүктөөдө EEPROMго киргизилет жана администратор режиминин кечигүүсүн 'global.h' де төмөн нерсеге өзгөртөт. Бул убактылуу APга туташууда башаламандыкты болтурбайт.

Түзмөк MQTT идентификаторун (жана жазылуу жолун) модулдардын сериялык номеринин акыркы 4 цифрасына автоматтык түрдө коёт. Демейки жол ha/mod //#, сиз каалагандай өзгөрөт, бирок тиешелүү массивдин туура узундугуна ынануу үчүн коддогу комментарийлерди окуңуз.

Мен муну кылам, анткени бул менин тармагымдын ар бир модулу үчүн уникалдуу ID түзүүнүн кажети жок дегенди билдирет.

Түзмөктүн идентификатору көрүнүп турат жана MQTT серверин ички веб -сервердеги MQTT сервер баракчасы аркылуу коюуга болот

8 -кадам: Муну жасоо…

MQTT буйруктары болуп саналат

ha/mod/xxxx/0 же 1 = Күчтү которуу

Башка саптар буйрук катары каралат жана сериялык порт аркылуу жөнөтүлөт. Статус /га /кофеге HEXте билдирилет

OpenHAB менен

coffeemachine.items

Номер Coffee_Machine_Power "Power" {mqtt = "> [control: ha/mod/8002/: command:*: default]"} Сап Coffee_Machine_Status {mqtt = "<[control: ha/coffee: state: default]"}

Сайттын картасы

Group item = "Coffee Machine" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Элементти алмаштыруу = Coffee_Machine_Cmd label = "" картага түшүрүү = ["FA: 04" = "Чайкоо"] Тексттик пункт = Coffee_Status label = "Статус [%s] "}

үн көзөмөлдөө эрежелери

импорт org.openhab.model.script.actions.* импорт org.openhab.core.library.types.

эреже "Үн буйрук эрежелери"

Item 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 ("make a small coffee")) {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 жоопторун "чыныгы" баалуулуктарга чечмелөө үчүн):

Item Coffee_Machine_Status жаңыртууну алганда "Coffee Machine Status" эрежеси var String ответ = 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")} аягы

9 -кадам: Такташтар/Todo

Wi -Fiга туташуунун баштапкы жөндөөнү жөнөкөйлөтүңүз - Бүттү. "Админ режими" идеясынан баш тарттым, анткени ал тажатты. Эми жөн эле кодго SSID менен сырсөздү киргизиңиз. Веб интерфейси аркылуу жаңыртсаңыз/өзгөртсөңүз, EEPROMга сакталат.

Жаңы код дагы OTA жаңыртууларын колдойт, бирок бул үчүн тиешелүү OTA элементтерин иштеп чыгуу же комментарий берүү үчүн ESP-01 модулунда EEPROMду жаңыртуу керек болот

Машинадан жоопторду иштетүү үчүн кодду кошуңуз жана лоток жок, бош жерлер жана идишти толтуруу сыяктуу статусту окуңуз - Бүттү. Мен статусту кайра окуп, га/кофеге жарыялоо үчүн код коштум. Бул жөн эле чийки жооптор жана мен аларды чечмелөөнүн үстүндө иштеп жатам, бирок ушул убакка чейин менде Лоток жок жана Танк бош иштеп жатат. Ал машинаны күйгүзгөндө ар бир 9 секундда сурамжылоо жүргүзөт жана MQTTге жооп жарыялайт

Жооп HEXте, бирок жеке биттер сенсорлорду көрсөтөт

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

Интернет нерселер конкурсу 2017
Интернет нерселер конкурсу 2017
Интернет нерселер конкурсу 2017
Интернет нерселер конкурсу 2017

2017 -жылы Интернет нерселер конкурсунда биринчи сыйлык

Сунушталууда: