Az idei FIRST LEGO Leauge versenyen a projektünket az okos hálózatok témájában valósítottuk meg. De egy működő okos várost megvalósítani nem lett volna megfelelő projekt, mivel ez egy nagyon komplex téma, több cég is foglalkozik ezzel és nem saját ötlet lett volna. Ezért úgy döntöttünk, hogy egy kis, programozható okos várost csinálunk, amin keresztül gyerekeknek meg tudjuk mutatni az okos hálózatok működését.

Az okos hálózat feladata az, hogy csökkentse az energia előállításának, szállításának és tárolásának költségét valamint biztonságosabbá tegye az energiaellátást. A most felnövő generációnak rengeteg feladata lesz ennek megvalósításában. Ezért fontos, hogy a gyerekek korán megismerkedjenek a témával, hiszen minél hamarabb kezdik annak megismerését, annál jobban el tudnak mélyülni a témában. Segít abban, hogy később minél többen válasszák ezt a pályát, ezzel segítve azt, hogy okosabban és gazdaságosabban használjuk az energiát.

Okos város modellünk

Városunk elemei:

Az okos városunk ,,okosságát” a beépített programozható elemek biztosítják. A LEGO EV3 MINDSTORM vezérlőn futó python kód irányítja a város energiaellátását. (Részletek később)

LEGO MINDSTORM EV3 – városunk vezérlője

A korlátozott periféria szám miatt egy BBC micro:bit vezérlőt is beépítettünk, ez irányítja a város ledmegvilágításait és biztosítja a további bővíthetőséget.

Az energia termelés és fogyasztás folyamatosan változik, hiszen az emberek mindig más mennyiségű áramot használnak és a természeti, megújuló forrásokból mindig változó mennyiségű áram termelődik. Az okos hálózatoknak ehhez kell alkalmazkodniuk. Ezt a mi modellünkben két „csúszkával” lehet változtatni és szabályozni, hogy az emberek éppen mennyi olyan áramot fogyasztanak (-), amit nem lehet távolról, okosan befolyásolni, és mennyi energia termelődik (+). A csuszkák helyzetét egy-egy távolságszenzorral olvassuk le.

Szabályozó csúszkák

A városunk elemei:

A modellünkben az energiát egy vízerőmű termeli. Az alsó csúszkával ennek teljesítményét tudjuk állítani. Ez az egyetlen termelő a városban, miután elvetettük azt az ötletet, hogy egy naperőművet is „telepítsünk” bele, mert nehezítette volna a rendszer működésének megértését.

Vízerőművünk

A város nincs elszigetelve a külvilágtól, szükség esetén tudunk energiát betáplálni, illetve kivenni a globális hálózatból. A villanyoszlopon, ami a hálózatot szimbolizálja, van egy kerek ledes kijelző. Ez, ha energiát veszünk fel a hálózatból, pirosan világít. Ha energiát táplálunk vissza, akkor zölden, ha pedig energiaegyensúly van, akkor kéken.

Villanyoszlop energiaegyensúlyban

Kétféle fogyasztó van. Távolról nem vezérelhető, ezeket a felhasználók bármikor ki-be kapcsolhatják, például világítás és konyhai gépek. Az okos otthonokban vannak olyan fogyasztók amik távolról, okosan szabályozhatók és kikapcsolhatók. Ilyen például a szárítógép vagy a bojler. Ezeket a kikapcsolható fogyasztókat a mi esetünkben egy mosógép szimbolizálja.

Mosógép a nappaliban 🙂

A modellünkben van egy elektromos autó is. Ez tárolóként és fogyasztóként is tud funkcionálni. Fogyasztóként, mert tud mozogni. Emellett van egy akkumulátora, amibe tudunk beletölteni energiát és ki is tudunk belőle venni ha kevés az energia. Az akkumulátor szintjét egy led csík mutatja, amely jelzi azt is, ha éppen töltjük vagy, ha energiát szívunk le belőle.

Elektromos autó

A városunkban van egy gravitációs erőmű is. Ez egy régi mély bányaaknába létesített súly, amit egy motorral, ha sok az energia, fel tudunk húzni. Így helyzeti energiává alakítjuk a többlet energiánkat. Ha pedig kevés az energia, akkor le tudjuk engedni és így vissza tudjuk nyerni az eltárolt elektromosságot.

Felhúzott gravitációs erőmű

Az egész okos várost egy python programkód irányítja. Alapból csak normálisan, „okosság nélkül” működik, a csuszkákkal beállított megtermelt és felhasznált energia a hálózatból jön vagy oda távozik. Azonban mindenki, könnyedén tud írni rá egy saját okos megoldást a komponensek felhasználásával. A programot írók építenek maguknak egy kis Lego figurát egy színes Lego kockára. A megépített karakter egy beépített színszenzorra helyezhető, ami felismeri a gyerekek saját megoldását a kis figurája segítségével. Innentől kezdve a város az ő okosságai, ötletei szerint működik.

Pár sor kód megírásával rögtön megtapasztalhatják, hogy vezérlik a várost:

A felesleges energiát a kikapcsolható fogyasztókba irányítják…

def hanna():
    global mosogep, auto_toltes, auto_kuld, gravitacios_eromu_toltes
    auto_kuld=1
    if termeles > fogyasztas:
        mosogep = termeles - fogyasztas
    else:
        mosogep = 0

… töltik vele az elektromos autót, de ha kevés az energia kivesznek belőle…

def mark():
    global mosogep, auto_toltes, auto_kuld, gravitacios_eromu_toltes
    auto_kuld=0
    if termeles > fogyasztas:
        mosogep = termeles - fogyasztas
        auto_toltes = 50
    else:
        mosogep = 0
        auto_toltes = -10

… bevonják a gravitációs erőművet az energia tárolásba …

def lili():
    global mosogep, gravitacios_eromu_toltes
    gravitacios_eromu_toltes = 10
    if termeles > fogyasztas:
        if (termeles - fogyasztas) < 20:
            mosogep = termeles - fogyasztas
        else:
            mosogep = (termeles - fogyasztas) / 2
            gravitacios_eromu_toltes = 10 + ((termeles - fogyasztas) / 2)

… vagy akár összetettebb, állapotgépeket tartalmazó, többlépcsős megoldást is írhatnak.

def andras():
    global mosogep, auto_toltes, auto_kuld, gravitacios_eromu_toltes, andrasallapot, auto_toltottseg
    if termeles > fogyasztas:
        if (termeles - fogyasztas) > 30:
            gravitacios_eromu_toltes = 10 
        if andrasallapot == 0:
            auto_toltes = 10
            andrasallapot = 1
        elif andrasallapot == 1:
            auto_toltes = 10
            if auto_toltottseg == 100:
                auto_toltes = 0
                auto_kuld = 1
                mosogep = termeles - fogyasztas
                andrasallapot = 2
        elif andrasallapot == 2:
            if abs(motorAuto.angle() - AUTO_KINT) < 10:
                auto_kuld = 0
                mosogep = termeles - fogyasztas
                andrasallapot = 3    
        elif andrasallapot == 3:
            if abs(motorAuto.angle() - AUTO_BENT) < 10:
                auto_toltottseg = 0
                mosogep = 0
                andrasallapot = 0    
    else:
        mosogep = 0
        auto_toltes = 0
        gravitacios_eromu_toltes = 0
        if abs(motorAuto.angle() - AUTO_KINT) < 10:
            auto_kuld = 0
            andrasallapot = 3
        if andrasallapot == 3:
            if abs(motorAuto.angle() - AUTO_BENT) < 10:
                auto_toltottseg = 0
                mosogep = 0
                andrasallapot = 0

Továbbfejlesztési lehetőségek

Szerintünk, a modell és a programkód már most nagyon jól használható az okos város energia háztartási problémainak bemutatására. Mindenkinek nagyon tetszett, és szívesen „játszottak” vele. Igazi oktatási segédeszközzé válásához iskolákba is tesztelni szeretnénk, ami ha jól megy hamarosan meg is történik. Jelenleg az energia számolása nem valós egységekben (-100, +100 között) történik, szakemberekkel valós energia egységekre lehetne ezt átalakítani.