Satura rādītājs:

IoT iespējots kafijas automāts: 9 soļi (ar attēliem)
IoT iespējots kafijas automāts: 9 soļi (ar attēliem)

Video: IoT iespējots kafijas automāts: 9 soļi (ar attēliem)

Video: IoT iespējots kafijas automāts: 9 soļi (ar attēliem)
Video: BERMUDU DIVSTŪRIS x APVEDCEĻŠ - Brāl' Ar Dzīvi Nekaulē 2024, Jūnijs
Anonim
Image
Image
Nepieciešams aprīkojums
Nepieciešams aprīkojums

Šī pamācība ir iekļauta IoT konkursā - ja jums tas patīk, lūdzu, balsojiet par to

ATJAUNINĀTS: tagad atbalsta divvirzienu komu un OTA atjauninājumus

Jau kādu laiku man ir kafijas automāts Jura, un es vienmēr esmu gribējis to kaut kā automatizēt.

Dažus gadus esmu darbinājis pamata mājas automatizācijas sistēmu, taču kafijas automāts nebija vienkārši modificējams (vai tā es domāju). Jura kafijas automātiem parasti ir “diagnostikas ports” un/vai ports, ko izmanto, lai iekārtai pievienotu maksājumu sistēmu, tomēr es nevarēju atrast nekādu informāciju par to, kā to izmantot. Pavisam nesen dažas personas protokolu pārveidoja un publiskoja. Problēma bija tāda, ka lielākā daļa atsauču uz pieejamajām funkcijām bija daudz lielākām mašīnām nekā manējā (Ena 7).

Turklāt manai mašīnai nav pastāvīgas gaidstāves jaudas, piemēram, lielākām mašīnām, tā vietā tai ir HV slēdzis, kas barošanas avotu “ieslēdz”. Mašīnas fiziskā poga faktiski aktivizē 2 slēdžus - vienu zemu spriegumu (loģiskā puse, izslēdziet) un vienu lielu voltu (ieslēgšana). Abi slēdži ir īslaicīgi.

Man arī vajadzēja pārliecināties, ka mašīna joprojām darbojas 100% neatkarīgi no jebkādiem vadības mehānismiem, ti, iekārta joprojām darbojas kā parasti, it kā tā nebūtu iespējota IoT.

Lai automātu automatizētu, ir nepieciešamas divas lietas: 1) lai varētu kontrolēt iekārtas jaudu 2) lai varētu sazināties ar iekārtu, lai aktivizētu kafijas pagatavošanas, skalošanas u.c. funkcijas.

1. solis: kā mēs to darīsim

Mēs izmantosim moduli ESP8266 'ESP-01', lai izveidotu savienojumu ar mājas wifi un abonētu MQTT servera/tēmas klausīšanās komandas. Izmantotā "priekšgala daļa" ir OpenHAB2, taču nav iemesla, kāpēc jūs nevarētu pievienot ierīces tīmekļa saskarnei un tieši kontrolēt, ja vēlaties vai izmantojot HTTP saņemšanas komandas.

ESP8266 kontrolēs 2 relejus, kas saistīti ar barošanas pogu, kā arī apstrādās sērijveida komandas uz/no kafijas automāta.

BRĪDINĀJUMS - šajā pamācībā ir izklāstīta procedūra, ko izmantoju, lai pārveidotu savu Jura Ena7 kafijas automātu, lai to vadītu, izmantojot mājas automatizāciju. Tas attiecas uz elektrotīkla ierīces pārveidošanu, kas var būt bīstama, ja to veic nepareizi. Šeit sniegtā informācija var būt nepilnīga, neprecīza un nedroša. Turpiniet rīkoties piesardzīgi. Nekāda atbildība nav pieņemta.

2. darbība. Nepieciešams aprīkojums

Nepieciešams aprīkojums
Nepieciešams aprīkojums
Nepieciešams aprīkojums
Nepieciešams aprīkojums
Nepieciešams aprīkojums
Nepieciešams aprīkojums

Daļas

  • ESP-01 modulis un tā programmēšanas veids (Arduino IDE un fiziskais adapteris programmēšanai)
  • 2 virzienu releja modulis EBAY
  • 5v -> 3.3v regulators EBAY
  • Neliels 5V tīkla lādētājs
  • Loģikas līmeņa pārveidotājs* Freetronics
  • Dažādi vadi, tapas, siltuma saraušanās utt., Lai to visu savienotu.

Rīki

  • Lodāmurs ar smalku galu
  • Lodēt
  • Stiepļu noņēmēji ir ērti
  • Torx T15 draiveris
  • Ovāls drošības rīks (vai izveidojiet to, tas aizņem tikai dažas minūtes)

*Sākumā es izmantoju arduino UNO, pārbaudot visas mašīnas sērijas komandas, un tas darbojās nevainojami, tomēr ESP modulis atteicās strādāt. Es trīskārši pārbaudīju kodu un biju pārliecināts, ka komandas, kas iziet no ESP moduļa, ir tādas pašas kā arduino, tomēr tas bija aizliegts. Es to noliku uz ESP moduli, kas darbojas tikai ar 3.3V loģiku, nevis 5V. Kad es ievietoju Loģikas pārveidotāju, tas strādāja labi. Tas var būt vai nebūt vajadzīgs citās mašīnās.

Ideālā gadījumā jums būtu esoša mājas automatizācijas sistēma, kas atbalsta MQTT protokolu (piemēram, openhab), jo tas ir tas, uz ko projekts ir vērsts. Ja vēlaties to vienkārši kontrolēt, izmantojot tīmekļa lapas pogas bez atbalsta sistēmām, jums būs jāveic dažas izmaiņas iegultās tīmekļa lapas kodā. To sasniegt nav pārāk sarežģīti (varbūt rev2..)

3. solis: Jura protokols

Jura protokols
Jura protokols

Dati uz mašīnu un no tās ir tikai sērijas @ 9600, taču arī Jurai ir piedurknes. Protokols to izmanto papildu ECC un/vai saziņas sajaukšanai. Vienkārši sakot, katrs datu baits (rakstzīme) ir sadalīts pa 2 un 5 bitiem no 4 standarta sērijas baitiem, kam seko 8 ms pauze. Ja vēlaties uzzināt, kā tas darbojas, šeit esošajās saitēs ir daudz informācijas.

Informācija par protokolu iegūta no:

Arduino kods to vienkāršo, ļaujot pārraidīt standarta, cilvēkam lasāmas komandas, kuras tas pēc tam transponē Jura protokolā.

Mans kods ir koda kombinācija no:

Iepriekš minētajās vietnēs minētās komandas manai mašīnai nebija precīzas, taču, izmantojot izmēģinājumu un kļūdu metodi, es varēju nākt klajā ar sekojošo:

FA: 01 - izslēdzas (bet, šķiet, neskalo, pat ja nepieciešams) FA: 02 - atbild “labi”, bet nav pārliecināts, ko tā dara. FA: 03 - skalošanas ziņojums (piespiež ekrānā ziņojumu “skalošana”, nospiežot rotējošo skalošanas mašīnu) FA: 04 - skalošanas darbība - izskalojas, kad parādās paziņojums “Nospiest rotējošo pogu”, pretējā gadījumā nekas netiek darīts FA: 05 - spēcīgs ekrānā (FA: 06 - spēcīgs ekrānā (iespējams, apvienojiet to ar kafijas pagatavošanu stipram) FA: 07 - “Īpašs” ekrānā, bet faktiski neko nedara, neesot pārliecināts, kas tas ir FA: 08 - Steam FA: 09 - Small Coffee FA: 0A - Large Coffee

Ir arī citas komandas, bet man tas ir pietiekami…

Esiet piesardzīgs, izdodot nezināmas komandas, piemēram, acīmredzot AN: 0A noslaucīs iekārtas EEPROM …

4. solis: Demontāža

Iekārtas atvēršana nav pārāk vienkārša, jo jums ir nepieciešami daži īpaši instrumenti, bet labs cilvēks atradīs veidu - jums ir nepieciešams T15 Torx uzgalis un “ovāla atslēga” 2 skrūvēm. Torx, kas man jau bija, ovālais instruments, ko es izgatavoju no 4 mm ligzdas galvas skrūves, tika izurbts un nedaudz saplacināts ar āmuru.

Norādījumi šeit ir diezgan labi izklāstīti-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

5. solis: Garantijas anulēšana

Garantijas anulēšana
Garantijas anulēšana
Garantijas anulēšana
Garantijas anulēšana
Garantijas anulēšana
Garantijas anulēšana
Garantijas anulēšana
Garantijas anulēšana

Kad esat iekļuvis mašīnā, jūs redzēsit galvenās sastāvdaļas. Galvenajai strāvas ieejai zem tā ir jauka vieta 5v lādētāja pievienošanai.

Es pievienoju (elektrotīklam paredzētus) vadus spaiļu blokam pie mašīnas ieejas un lodēju/karsēju tos 5V lādētāja tīkla tapās. Mans konkrētais modelis nebija USB porta tips, bet tāds, kuram vads bija pastāvīgi pievienots. Iespējams, jums nav pietiekami daudz vietas, lai USB tipa ports varētu izmantot faktisko USB kabeli, bet, atverot lādētāju, varat noņemt USB portu un nomainīt to ar standarta vadu līdz 5v un Gnd punktiem.

Ja vēlaties, varat aizstāt citu 5V barošanas avotu. 500m vajadzētu būt daudz.

Netālu no dzirnaviņām ir pietiekami daudz vietas releja modulim. Mums ir jāpievieno divi releji, lai tie darbotos paralēli galvenajiem strāvas slēdžiem. Es vienkārši nogriezu esošos vadus, notīrīju, konservēju, pievienoju papildu vadu un pielodēju kopā (neaizmirstiet par termisko saraušanos). Lai to izdarītu, vados bija pietiekami vaļīgi.

Releja modulis tiek turēts vietā ar labas kvalitātes divpusēju lenti. Ja vadi ir pievienoti un ir ierobežota pārvietošanās vieta, pat ja lente zaudē saķeri, modulis nenonāks pārāk tālu un nesaskartos ar metāla priekšmetiem.

Es arī pārbaudīju savas mašīnas diagnostikas portu, lai noteiktu iekšējo savienojumu atrašanās vietu, lai es varētu sasniegt pilnīgi slēptu integrāciju. Tiek izmantoti tikai tx, rx un Gnd vadi.

Ja jums ir komerciālāka iekārta, kas atbalsta gaidstāves spriegumu un/vai nevēlaties anulēt iekārtas garantiju, varat izveidot savienojumu tieši ar diagnostikas portu, bet, iespējams, nevarēsit ieslēgt iekārtu, izmantojot šo ierīci.

Mana mašīna izmanto 7 kontaktu savienotāju. No kreisās uz labo ir:

NC Tx G Rx NC 5v NC

Atbilstošās tapas uz mātesplates: Sarkans = Gnd Oranžs = Rx Melns = Tx

Plašāku informāciju var atrast šeit:

6. darbība: loģiskās puses savienošana

Elektroinstalācija loģiskajā pusē
Elektroinstalācija loģiskajā pusē
Elektroinstalācija loģiskajā pusē
Elektroinstalācija loģiskajā pusē
Elektroinstalācija loģiskajā pusē
Elektroinstalācija loģiskajā pusē

Pārskatiet diagrammu - tas izskatās pārāk sarežģīti, bet patiesībā tā nav.

Es uzstādīju līmeņa pārveidotāju (atvienotā) sprieguma regulatora aizmugurē ar kādu divpusēju lenti. Pēc tam es izmantoju dažas detaļu kājas, lai lodētu strāvas un zemējuma tapas abās līmeņa pārveidotāja pusēs līdz atbilstošajām barošanas moduļa tapām. Viss šis modulis pēc tam darbojas kā “caurlaide” visai ESP-01 loģikai un barošanas avotam.

Es izmantoju divus vidējos pārveidotājus sērijas datiem un divus ārējos releja braukšanas signāliem, taču nav svarīgi, kuru jūs izmantojat.

Ar šiem releju moduļiem faktiski nav nepieciešams palaist 5V loģiku, jo tie ir aktīvi LOW, bet tas vienkārši strādāja labi, tāpēc es to darīju jebkurā gadījumā.

Lai izveidotu savienojumu ar ESP moduli, es izmantoju 4x2 sieviešu galveni. Tas ļauj viegli augšupielādēt kodu vai nomainīt moduli.

Diagrammā nav attēlota 5V ieeja - es vadu manu tieši pie releja moduļa (skat. Otro attēlu). Melnais vads attēla apakšējā kreisajā stūrī ir sērijas dati, kas tiek nosūtīti uz galveno plati. Es izmantoju daļu no ekranēta 3,5 mm austiņu pagarinājuma kabeļa, lai tikai samazinātu datu līnijas traucējumu iespējamību.

Kods 12f aparatūras sērijas vietā izmanto SoftwareSerial - tas ļauj modulim ziņot par atkļūdošanas statusu, izmantojot parasto sēriju. Savienojumi tiek veikti, izmantojot 4. un 5. tapu. Es pielāgoju to pašu galveni, lai padarītu ESP12F par kontaktdakšu ESP-01, vienkārši nomainot šīs sērijas tapas

7. solis: moduļa programmēšana

Moduļa programmēšana
Moduļa programmēšana

Kods tika apkopots pret Arduino 1.8.1 ar ESP8266 plates papildinājumu un PubSubClient 2.6.0 (kas ir MQTT bibliotēka)

Mainiet kodu atbilstoši savām prasībām un augšupielādējiet kodu ESP-01 modulī un izveidojiet savienojumu ar iekārtu. Esiet piesardzīgs ar tapu orientāciju!

Konfigurācija

1. iespēja)

Tikai zip bāzes kods. Kad ESP modulis pirmo reizi sāk darboties, tas nonāk AP režīmā un nosaka tā IP uz 192.168.4.1. Pēc tam varat izveidot savienojumu ar moduli un mainīt IP un izveidot savienojumu ar savu piekļuves punktu. Jums arī būs jāiestata savai iekārtai IP šajā diapazonā, jo modulī nav DHCP.

Noklusējuma AP SSID ir “ESPSwitch” un parole ir “12345678”

Pēc noklusējuma tas paliek AP režīmā 2 minūtes. Šo iestatījumu var mainīt sadaļā “global.h” - to sauc par “adminTimeout”, un tas ir milisekundēs. Es iesaku mainīt to uz kaut ko zemu, tiklīdz EEPROM ir derīga konfigurācija, jo pretējā gadījumā tas vienkārši radīs nevajadzīgu kavēšanos ierīces sāknēšanā.

2. iespēja)

Šis ir noklusējuma režīms jaunākajam kodam, kas atbalsta divvirzienu komiksus, 1. opcija nav pieejama. Jūs varat arī mainīt noklusējuma SSID/paroles iestatījumus galvenajā ino failā (meklējiet “// DEFAULT CONFIG”), lai tas tiktu ielādēts šos iestatījumus ievadiet EEPROM pirmajā palaišanas reizē un mainiet administratora režīma aizkavi uz kaut ko zemu “global.h”. Tādējādi nav jājaucas, veidojot savienojumu ar pagaidu AP.

Ierīce automātiski iestatīs tā MQTT id (un abonēšanas ceļu) uz moduļu sērijas numura pēdējiem 4 cipariem. Ceļš pēc noklusējuma ir ha/mod //#, mainiet pēc saviem ieskatiem, bet izlasiet koda komentārus, lai pārliecinātos, ka atbilstošajam masīvam ir pareizs garums.

Es to daru, jo tas nozīmē, ka man nav jāģenerē unikāls ID katram tīkla modulim.

Ierīces ID ir redzams, un MQTT serveri var iestatīt, izmantojot iekšējā tīmekļa servera MQTT servera lapu

8. solis: lai tas darītu lietas…

MQTT komandas ir

ha/mod/xxxx/0 vai 1 = Pārslēgt jaudu

Jebkura cita virkne tiks uzskatīta par komandu un nosūtīta, izmantojot seriālo portu. Par statusu tiek ziņots /ha /coffee HEX

Ar OpenHAB

kafijas automāts. preces

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

Vietnes karte

Group item = "Kafijas automāts" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Pārslēgt vienumu = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Skalot"] Teksta vienums = Coffee_Status label = "Statuss [%s] "}

voicecontrol.rules

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

noteikums "Balss komandu noteikumi"

kad vienums VoiceCommand saņēma komandu, tad var String komanda = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand saņēma"+komanda)

if (command.contains ("ieslēgt kafijas automātu") || command.contains ("izslēgt kafijas automātu")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("pagatavojiet man mazu kafiju")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("pagatavojiet man lielu kafiju")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("izskalot kafijas automātu")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} beigas

Noteikumi (HEX atbilžu interpretēšanai “reālajās” vērtībās):

noteikums "Kafijas automāta statuss", kad vienums Coffee_Machine_Status saņēma atjauninājumu, tad 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)). aizstāt ('', '0')

var int trayBit = binaryString.substring (0, 1)

var int tankBit = binaryString.substring (2, 3) var int heatBit = binaryString.substring (7, 8) var int washBit = binaryString.substring (6, 7)

ja (trayBit == "0") {

postUpdate (Coffee_Status, "Tray Missing")} if (tankBit == "1") {postUpdate (Coffee_Status, "Fill Tank")} if (washBit == "1") {postUpdate (Coffee_Status, "Press Rotary")} ja (trayBit == "1" && tankBit == "0" && washBit == "0") {postUpdate (Coffee_Status, "Ready")}

}

if (response == "Off") {postUpdate (Coffee_Status, "Off")} beigas

9. solis: uzlabojumi/uzdevums

Vienkāršojiet sākotnējo iestatīšanu, izveidojot savienojumu ar wifi - Gatavs. Atteicās no idejas par “administratora režīmu”, jo tas bija kaitinoši. Tagad vienkārši ievadiet kodā SSID un paroli. Saglabā EEPROM, ja atjaunināt/mainīt, izmantojot tīmekļa saskarni.

Jaunāks kods atbalsta arī OTA atjauninājumus, taču, lai tas darbotos vai komentētu atbilstošos OTA vienumus, jums būs jājaunina EEPROM modulī ESP-01

Pievienojiet kodu atbilžu apstrādei no iekārtas un nolasiet statusu, piemēram, nav paplātes, tukšas pamatnes un uzpildes tvertne - Gatavs. Esmu pievienojis kodu, lai lasītu statusu un publicētu ha/kafijā. Šīs ir tikai neapstrādātas atbildes, un es joprojām strādāju pie to interpretācijas, bet līdz šim man trūkst paplātes un tvertne ir tukša. Ierīcē tā aptaujās ik pēc 9 sekundēm un publicē atbildi uz MQTT

Atbilde ir HEX, bet atsevišķi biti norāda sensorus

Pievienojiet kodu tīmekļa lapām tiešai vadībai, izmantojot HTTP GET komandas.

Lietas interneta konkurss 2017
Lietas interneta konkurss 2017
Lietas interneta konkurss 2017
Lietas interneta konkurss 2017

Pirmā balva lietu interneta konkursā 2017

Ieteicams: