Агуулгын хүснэгт:

IoT идэвхжүүлсэн кофены машин: 9 алхам (зурагтай)
IoT идэвхжүүлсэн кофены машин: 9 алхам (зурагтай)

Видео: IoT идэвхжүүлсэн кофены машин: 9 алхам (зурагтай)

Видео: IoT идэвхжүүлсэн кофены машин: 9 алхам (зурагтай)
Видео: Собака лежала в луже. История борзой собаки по имени Мелвин. 2024, Арваннэгдүгээр
Anonim
Image
Image
Шаардлагатай тоног төхөөрөмж
Шаардлагатай тоног төхөөрөмж

Энэхүү зааварчилгааг IoT тэмцээнд оруулсан болно - Хэрэв танд таалагдаж байвал саналаа өгөөрэй

ШИНЭЧИЛСЭН: Одоо 2 талын харилцаа холбоо болон OTA шинэчлэлтийг дэмжиж байна

Хэсэг хугацааны турш би Jura кофены машинтай байсан бөгөөд үүнийг ямар нэгэн байдлаар автоматжуулахыг үргэлж хүсч байсан.

Би хэдэн жилийн турш гэрийн автоматжуулалтын үндсэн системийг ажиллуулж ирсэн боловч кофены машин нь энгийн зүйл биш байсан (эсвэл миний бодлоор). Юра кофены машин нь ерөнхийдөө 'оношлогооны порт' ба/эсвэл машинд төлбөрийн систем нэмэхэд ашигладаг порттой байдаг боловч үүнийг хэрхэн ашиглах талаар мэдээлэл олж чадаагүй байна. Саяхан протоколыг зарим хүмүүс урвуу инженерчлэл хийж, олон нийтэд зарласан. Асуудал нь боломжтой функцүүдийн ихэнх лавлагааг минийхээс хамаагүй том машинд зориулагдсан явдал байв (Ena 7).

Нэмж хэлэхэд, миний машин том машин шиг байнгын зогсолтын хүчгүй, харин цахилгаан хангамжийг "түгжээтэй" болгодог HV унтраалгатай. Машины физик товчлуур нь 2 унтраалгыг идэвхжүүлдэг - нэг бага вольт (логик тал, унтраах) ба нэг өндөр вольт (асаах). Хоёр унтраалга нь түр зуурынх юм.

Түүнчлэн, машин нь ямар ч хяналтын механизмаас 100% хараат бус ажиллаж байгаа эсэхийг шалгах шаардлагатай байсан, өөрөөр хэлбэл энэ төхөөрөмж IoT -ийг идэвхжүүлээгүй мэт хэвийн ажиллаж байна.

Машиныг автоматжуулахын тулд хоёр зүйлийг шаарддаг: 1) Машины хүчийг хянах чадвартай байх 2) Кофе хийх, зайлах гэх мэт функцүүдийг идэвхжүүлэхийн тулд машинтай харилцах чадвартай байх.

Алхам 1: Бид үүнийг хэрхэн хийх гэж байна

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

ESP8266 нь цахилгаан товчлууртай холбоотой 2 релеийг хянах, мөн кофены машинаас/командын цуваа тушаалуудыг боловсруулах болно.

АНХААРУУЛГА - Энэхүү зааварчилгаагаар би гэрийнхээ автоматжуулалтаар удирддаг Jura Ena7 кофены машинаа өөрчлөхөд ашиглаж байсан процедурыг тоймлон харуулав. Энэ нь цахилгаан сүлжээний төхөөрөмжийг өөрчлөхтэй холбоотой бөгөөд хэрэв буруу хийвэл аюултай байж болзошгүй юм. Энд байгаа мэдээлэл бүрэн бус, буруу, аюултай байж болзошгүй. Анхааралтай үргэлжлүүлээрэй. Ямар ч хариуцлага хүлээхгүй.

Алхам 2: Тоног төхөөрөмж шаардлагатай

Шаардлагатай тоног төхөөрөмж
Шаардлагатай тоног төхөөрөмж
Шаардлагатай тоног төхөөрөмж
Шаардлагатай тоног төхөөрөмж
Шаардлагатай тоног төхөөрөмж
Шаардлагатай тоног төхөөрөмж

Эд анги

  • ESP-01 модуль ба түүнийг програмчлах арга (Arduino IDE ба програмчлалын физик адаптер)
  • EBAY хоёр талын реле модуль
  • 5v -> 3.3v зохицуулагч EBAY
  • Жижиг 5в сүлжээгээр ажилладаг утасны цэнэглэгч
  • Логик түвшний хөрвүүлэгч* Freetronics
  • Янз бүрийн утас, зүү толгой, дулааны агшилт гэх мэт.

Багаж хэрэгсэл

  • Нарийн үзүүртэй гагнуурын төмөр
  • Гагнуур
  • Утас хуулагч нь ашиглахад тохиромжтой
  • Torx T15 драйвер
  • Зууван хэлбэрийн хамгаалалтын хэрэгсэл (эсвэл хийхдээ хэдхэн минут л шаардагдана)

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

Хамгийн тохиромжтой нь танд MQTT протоколыг дэмждэг гэрийн автоматжуулалтын систем байх болно (жишээ нь openhab гэх мэт). Хэрэв та үүнийг дэмжих системгүйгээр вэб хуудсан дээрх товчлууруудаар хянахыг хүсч байвал суулгагдсан вэб хуудасны кодод зарим өөрчлөлт оруулах шаардлагатай болно. Үүнд хүрэх нь тийм ч төвөгтэй биш юм (магадгүй rev2..)

Алхам 3: Юра протокол

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

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

Протоколын мэдээллийг https://protocoljura.wiki-site.com/ дээрээс авсан болно.

Arduino код нь үүнийг хялбарчилж, хүний уншиж болох стандарт тушаалуудыг дамжуулж, дараа нь Юра протокол руу шилжүүлдэг.

Миний код бол https://github.com/oliverk71/Coffeemaker-Payment-… https://github.com/psct/sharespresso дээрх кодын хослол юм.

Дээрх сайтууд дээр дурдсан командууд миний машинд үнэн зөв биш байсан боловч туршилт, алдааны аргаар би доорх зүйлсийг гаргаж чадсан юм.

FA: 01 - Унтраана (гэхдээ шаардлагатай байсан ч зайлдаггүй бололтой) FA: 02 - "зүгээр" гэж хариулсан боловч юу хийхээ мэдэхгүй байна. FA: 03 - Ангижруулагч мессеж ("зайлах" зурвасыг дэлгэцэн дээр дарж, эргүүлэх машиныг дарна) FA: 04 - Rinse Action - "Rotary button дээр дарна уу" гэсэн мессеж гарч ирэхэд зайлна, эс бөгөөс FA: 05 - Дэлгэц дээр хүчтэй (FA: 06 - Дэлгэц дээр хүчтэй (Үүнийг хүчтэй болгохын тулд кофе хийхтэй хослуулсан байх) FA: 07 - Дэлгэц дээр 'Тусгай' гэхдээ үнэндээ юу ч хийдэггүй, энэ нь FA -д зориулагдсан эсэхийг сайн мэдэхгүй байна.: 08 - Steam FA: 09 - Жижиг кофе FA: 0A - Том кофе

Бусад тушаалууд байдаг, гэхдээ энэ нь надад хангалттай …

Үл мэдэгдэх командыг өгөхдөө болгоомжтой байгаарай, жишээлбэл, 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 порт 1 -ийн зай байхгүй байж магадгүй, гэхдээ хэрэв та цэнэглэгчээ онгойлгосон бол USB портыг салгаад 5v ба Gnd цэгүүдэд стандарт утсаар сольж болно.

Хэрэв та хүсвэл 5V -ийн цахилгаан хангамжийг өөр сүлжээгээр сольж болно. 500ma хангалттай байх ёстой.

Бутлуурын ойролцоо буухиа модулийг байрлуулах хангалттай зай бий. Үндсэн реле унтраалгатай зэрэгцэн ажиллахын тулд бид хоёр релеийг утсаар холбох ёстой. Би одоо байгаа утсыг хайчилж, хуулаад, цагаан тугалга хийж, нэмэлт утас нэмж, гагнаж нийлүүлэв (халаахыг бүү мартаарай). Үүнийг хийхийн тулд утаснуудад хангалттай сул тал байсан.

Релений модулийг сайн чанарын хоёр талт соронзон хальсны тусламжтайгаар байрлуулна. Утаснууд холбогдсон, хөдөлгөөн хийх хязгаарлагдмал орон зайтай, соронзон хальсны хамгаалалт алдагдсан ч гэсэн модуль хэт хол явахгүй бөгөөд ямар нэгэн металл зүйлтэй холбоо барих боломжгүй болно.

Дотоод холболтын байршлыг тодорхойлохын тулд би машин дээрх оношлогооны портыг дахин боловсруулж, бүрэн далд интеграцид хүрч чадсан юм. Зөвхөн tx, rx, Gnd утаснуудыг ашигладаг.

Хэрэв танд зогсолтын хүчдэлийг дэмждэг илүү арилжааны машин байгаа бөгөөд/эсвэл та машиныхаа баталгааг хүчингүй болгохыг хүсэхгүй байгаа бол оронд нь оношлогооны порт руу шууд холбогдож болох боловч энэ төхөөрөмжийг ашиглан машинаа асааж чадахгүй байж магадгүй юм.

Миний машин 7 зүү холбогч ашигладаг. Зүүнээс баруун тийш:

NC Tx G Rx NC 5v NC

Үндсэн самбар дээрх харгалзах тээглүүрүүд: Улаан = Gnd Улбар шар = Rx Хар = Tx

Дэлгэрэнгүй мэдээллийг эндээс авах боломжтой:

Алхам 6: Логик талыг холбох

Логик талын утсыг холбож байна
Логик талын утсыг холбож байна
Логик талын утсыг холбож байна
Логик талын утсыг холбож байна
Логик талын утсыг холбож байна
Логик талын утсыг холбож байна

Диаграмыг үзээрэй - Энэ нь хэтэрхий төвөгтэй харагдаж байна, гэхдээ энэ нь тийм биш юм.

Би түвшин хувиргагчийг хоёр талт соронзон хальсны тусламжтайгаар хүчдэлийн зохицуулагчийн ар талд суулгасан. Дараа нь би түвшний хөрвүүлэгчийн хоёр талын цахилгаан болон газардуулгыг холбогдох цахилгаан модулийн гол руу гагнахын тулд зарим бүрэлдэхүүн хэсгүүдийн хөлийг ашигласан. Энэхүү бүх модуль нь ESP-01-ийн логик, тэжээлийн хангамжийн хувьд "дамжуулалт" шиг ажилладаг.

Би хоёр дунд хөрвүүлэгчийг цуваа өгөгдөлд, гадна талын хоёрыг реле жолоодлогын дохио болгон ашигласан боловч таны ашиглах нь хамаагүй.

Эдгээр реле модульд 5В логик ажиллуулах шаардлагагүй, гэхдээ тэдгээр нь LOW идэвхтэй боловч энэ нь зүгээр л сайн ажилласан тул би үүнийг хийсэн.

Би ESP модульд холбогдохын тулд 4х2 хэмжээтэй эмэгтэй толгой ашигласан. Энэ нь кодыг хялбархан байршуулах эсвэл модулийг солих боломжийг олгодог.

Диаграммд 5V оролт байхгүй байна. Би уурхайгаа релей модульд шууд холбосон (хоёр дахь зургийг үзнэ үү). Зургийн зүүн доод талд байгаа хар утас нь цувааны өгөгдлийг үндсэн самбар дээр байрлуулна. Би өгөгдлийн шугамд хөндлөнгөөс оролцох боломжийг багасгахын тулд 3.5 мм хамгаалалттай чихэвчний өргөтгөл кабелийн нэг хэсгийг ашигласан.

12f код нь тоног төхөөрөмжийн сериалын оронд SoftwareSerial ашигладаг - Энэ нь модулийг хэвийн цувралаар буцааж дибаг хийх статусыг мэдээлэх боломжийг олгодог. Холболтууд нь 4 ба 5 -р зүүгээр хийгддэг. Би ижил толгойг ESP12F-ийг ESP-01-ийн сэлгэн залгуур болгохоор тохируулсан бөгөөд эдгээр цуваа тээглүүрүүдийг сольсон

Алхам 7: Модулийг програмчлах

Модулийг програмчлах
Модулийг програмчлах

Кодыг Arduino 1.8.1 -ийн эсрэг ESP8266 самбарын addon болон PubSubClient 2.6.0 (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)

Энэ бол 2 талын харилцааг дэмждэг шинэ кодын анхдагч горим бөгөөд 1 -р сонголт байхгүй байна. Та мөн үндсэн ino файл дахь SSID/Нууц үгийн анхдагч тохиргоог өөрчилж болно ('// DEFAULT CONFIG' -г хайж олоорой). Эдгээр тохиргоог эхний ачаалах үед EEPROM руу оруулж, админы горимын саатлыг 'global.h' гэсэн утгатай болгож өөрчилнө үү. Энэ нь түр зуурын AP -тэй холбогдоход саад учруулахаас зайлсхийх болно.

Төхөөрөмж нь MQTT id (мөн захиалгын замыг) модулийн серийн дугаарын сүүлийн 4 орон руу автоматаар тохируулна. Анхдагч байдлаар зам нь ha/mod //#байна, хүссэнээрээ өөрчил, гэхдээ тохирох массив зөв урттай эсэхийг шалгахын тулд кодын тайлбарыг уншина уу.

Би сүлжээнд байгаа модуль бүрийн хувьд өвөрмөц ID үүсгэх шаардлагагүй гэсэн үг учраас үүнийг хийж байна.

Төхөөрөмжийн ID нь харагдах бөгөөд MQTT серверийг дотоод вэб сервер дээрх MQTT серверийн хуудсаар дамжуулан тохируулах боломжтой

Алхам 8: Үүнийг хийх

MQTT командууд нь

ha/mod/xxxx/0 эсвэл 1 = Эрчим хүчийг асаах

Бусад мөрүүдийг тушаал гэж үзээд цуваа портоор илгээнэ. HEX дахь /га /кофены төлөв байдлын талаар мэдээлдэг

OpenHAB програмын тусламжтайгаар

кофены машин. эд зүйлс

Coffee_Machine_Power "Power" дугаар {mqtt = "> [control: ha/mod/8002/: command:*: default]"} String Coffee_Machine_Status {mqtt = "<[control: ha/coffee: state: default]"}

Сайтын газрын зураг

Бүлгийн зүйл = "Кофены машин" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Зүйлийг солих = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Зүйлийг солих = Coffee_Machine_Cmd шошго = "" зураглал = ["FA: 04" = "Rinse"] Текстийн зүйл = Coffee_Status шошго = "Төлөв [%s] "}

дуут хяналт. дүрэм

org.openhab.model.script.actions импортлох.* import org.openhab.core.library.type.* import java.util.*

дүрэм "Дуут тушаалын дүрэм"

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 ("me 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 шинэчлэлтийг хүлээн авахад "Кофены машины статус" гэсэн дүрэм байдаг, дараа нь var String response = 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, "Tray Missing")} 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, "Бэлэн")}

}

хэрэв (хариу == "Off") {postUpdate (Coffee_Status, "Off")} төгсгөл

Алхам 9: Сайжруулалт/Тодо

Wifi -д холбогдох анхны тохиргоог хялбаршуулаарай - Дууссан. Уур бухимдалтай байгаа тул 'admin mode' гэсэн санаагаа орхисон. Одоо кодонд SSID болон нууц үгээ оруулна уу. Хэрэв та вэб интерфэйсээр шинэчлэх/өөрчлөх бол EEPROM -д хадгална.

Шинэ код нь OTA шинэчлэлтийг дэмждэг боловч холбогдох OTA зүйлүүдийг ажиллуулах эсвэл тайлбарлахын тулд ESP-01 модулийн EEPROM-ийг шинэчлэх шаардлагатай болно

Машины хариултыг боловсруулах кодыг нэмж, тавиургүй, хоосон газар, дүүргэсэн сав гэх мэт статусыг уншаарай - Дууссан. Би статусыг буцааж уншиж, ha/кофе дээр нийтлэх код нэмсэн. Энэ бол зүгээр л түүхий хариултууд бөгөөд би тэдгээрийг тайлбарлахаар ажиллаж байгаа боловч одоогоор надад Трэйс алга, Танк хоосон ажиллаж байна. Энэ нь машиныг асаах үед 9 секунд тутамд санал асуулга явуулж, MQTT -ийн хариуг нийтэлдэг

Хариулт нь HEX дээр байгаа боловч тус тусдаа бит нь мэдрэгчийг илтгэнэ

HTTP GET Commands ашиглан шууд хянахын тулд вэб хуудсуудад код нэмнэ үү.

Интернетийн зүйлсийн уралдаан 2017
Интернетийн зүйлсийн уралдаан 2017
Интернетийн зүйлсийн уралдаан 2017
Интернетийн зүйлсийн уралдаан 2017

Интернетийн зүйлсийн уралдааны 2017 оны тэргүүн шагнал

Зөвлөмж болгож буй: