stage1

eBrewer: pirmas etapas baigtas!

Taigi, pagaliau baigiau su pirmu projekto etapu! Jau turiu veikiančią dėžutę gebančią iš temperatūros sensoriaus gauti informaciją, duomenis perduoti į serverį, garsu pranešti apie nustatytos temperatūros pasiekimą.

O veikia viskas taip… Yra du tumbleriniai mygtukai kurie įjungia arba išjungia dvi pagrindines funkcijas: aliarmo ir logger‘io. Taigi abi funkcijos gali veikti vienu metu ir viena kitai netrukdo. Įjungus aliarmo funkciją matuojama temperatūra ir jei temperatūra yra 5 laipsniais mažesnė nei nustatyta, pasigirsta pypsėjimas. Jei temperatūra pasiekia nustatytą reikšmę skamba pastovus signalas. Temperatūra nustatoma penkių mygtukų pagalba. Raudonas mygtukas įjungia „temperatūros nustatymo“ rėžimą – atsiranda kursorius kurį dviejų juodų mygtukų dėka galima stumdyti kairėn/dešinėn, o likusių dviejų mygtukų pagalba po kursoriumi esantis skaičius mažinamas arba didinamas. Tokiu būdu galima greitai nustatyti norimą temperatūrą. Dar kartą paspaudus raudoną mygtuką nustatyta temperatūra išsaugoma į valdiklio atmintį (EEPROM), tad dingus elektrai ar aparatui persikrovus sistema veikia toliau su ta pačia nustatyta temperatūra.

Temperatūros nuskaitymui panaudojau DS18B20 temperatūros sensorius, kurie deklaruoja 0.5 °C paklaidą. Kol kas mano įrenginyje stovi paprastas ant laido pajungtas sensoriukas iš Lemonos, tačiau artimiausiu metu iš Kiniečių turi atkeliauti analogiški, vandeniui atsparūs sensoriai. Teliks tik perkišti laidą iš vieno lizdo į kitą.

Alaus gamyboje dar neturėjau progos įrenginio išmėginti, tačiau pabandymui įmerkiau zondą į elektrinį arbatinuką. Pastebėjau vieną trūkumą – sensoriui reikia šiek tiek laiko kol jis pasiekia aplinkos temperatūrą, tad arbatinukui kaistant temperatūra atsiliko ~2C. Aišku verdant 20 litrų vandens temperatūra taip greitai nesikeis kaip 1 litro arbatinuke, tad tikiuosi aludarystėje tai netrukdys ir sensorius suspės kaisti kartu su skysčiu.

Logger‘io režime kas 10 sekundžių nuskaityta temperatūra atiduodama į Serial išvadą (mano atveju per USB jungtį į kompiuterį). Kompiuteryje paleistas paprastas Python programavimo kalba parašytas skriptas kuris gautus duomenis nusiunčia į mano interneto svetainę. Svetainėje savo ruožtu galiu matyti detalų temperatūros kitimo grafiką. Štai taip atrodo kelių valandų, kambario temperatūros matavimo rezultatai:

temperatūros grafikas

Projekte panaudoti komponentai:

Taigi pirmam projekto etapui įgyvendinti prireikė 78.56 Lt (neskaičiuojant Arduino kainos).

Iššūkiai su kuriais susidūriau ir ko išmokau gamindamas:

  • Koja ne kartą pakišo nemokėjimas lituoti. Visiem pradedantiems ką nors daryti, patarčiau pradėti nuo youtube.com video peržiūrų iš serijos „how to solder„. Ir kuo daugiau peržiūrėsite, tuo geriau. Aišku praktikuotis su nereikalingų laidų galiukų litavimu yra tiesiog būtina. Priešingu atveju laukia daug išsilydžiusių detalių, atšokusių kontaktų ir pan.
  • Tiesiog būtina iš anksto planuotis darbus ir užsisakinėti detales iš Kinolių. Palyginimui:
    • DS18B20 mikroschema Lietuvoje kainuoja 4.66 Lt. Ir čia tik plika mikroschema kurią nardinimui į vandenį dar reikia pritaikyti… tuo tarpu pas tolimuosius Kinus 2 metrų zondas su analogiška mikroschema ir nerūdyjančio plieno kapsule atsiėjo 3.27 Lt
    • 433Mhz radio imtuvo ir siųstuvo komplektas Lemonoje atsieis 52 Lt, pas Kiniečius – 3.31 Lt
    • Linijinių Holo sensorių Lietuvoje išvis neradau, o diskretinis kainuoja 5 Lt, pas Kiniečius linijinis kainuoja 0.92 Lt
  • Planavimas būtinas ir perkelinėjant komponentus nuo prototipavimo plokštės ant montažinės. Metodas „lituosiu on-the-fly“ tikrai neveikia – rezultatas kamuolys laidų. Reikia išmokti dirbti su eagle ir gamintis normalias PCB plokšteles
  • Kuo mažiau gyvenimą palengvinančių bibliotekų naudosite, tuo geriau. Tiesiog 32Kb Flash atminties pasirodo yra ne taip jau ir daug. Tad geriau kažkokias funkcijas pasidaryti pačiam nei naudoti bibliotekas kurių tik 5% galimo funkcionalumo išnaudosite savo projekte.
  • Įsitikinimas „neizoliuosiu aš šitų kontaktų, vistiek jie niekada nesusilies“ irgi labai klaidingas. Rezultate – užtrumpintas LCD ekrano apšvietimo LED‘as.
  • Tiesiog būtina numatyti galimybe pakeisti komponentus. T.y. kiek įmanoma daugiau naudoti atjungiamus kontaktus (lizdus/jungtis).
  • Programuodamas stengiausi nenaudoti delay() funkcijos, kadangi norėjau būti tikras, kad paspaudus mygtuką nepataikysiu ant kokio nors delay(), ko pasekoje jis nesuveiktų. Tai tikras iššūkis, ypač kai nori-nenori, bet užklausus sensoriaus temperatūros praeina 750ms kol jis gražina rezultatą. Visgi tai įmanoma :)

Kalbant apie atvirą kodą… Visas projekto kodas, komponentų schemos, prototipavimo plokštės išdėstymas ir pan. guli čia: https://bitbucket.org/styxas/ebrewer/

Jei turite klausimų – nesidrovėkite, mielai atsakysiu ar paaiškinsiu ką, kaip ir kodėl dariau.

Pasidalink!Share on Facebook0Share on Google+0Share on LinkedIn0Tweet about this on Twitter0Email this to someone

2 komentarai

  1. Ramtyns

    Įspūdinga!:) Jo aš irgi planuoju nuotolinį temperatūros matuoklį susikonstruot, čigoniškai bravoriaujant labai netgi reikalingas dalykas.

    Atsakyti
  2. JeMas

    Įdomu,
    jei neplanuoji patentuot ir pardavinėti, būtų taip pat šaunu gauti schemas, kodą.
    Kad žmonės paskaitę šį straipsnį galėtų patys tokį pat pasidaryt.

    Atsakyti

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *