Hirdetés

Keresés

Új hozzászólás Aktív témák

  • atesss

    addikt

    Üdv !
    Egy Raspberry Pi Pico W-t szeretnék úgymond debuggolni.
    Egy szabadulószobás játékelem üzemel vele, és a Pico-n lévő (amúgy MicroPython) kódot direkt nem akarom megváltoztatni egyelőre, mert szeretném elkapni a ritkán előforduló hibát és az abból tanulni. Illetve adott esetben pl. tesztelni Watchdog-ot, stb.

    Van tartalék RPI4-esem, ami berakható ideiglenesen a Pico panel mellé, és el tudom érni nem csak az adott helyen, hanem távolról is VNC-vel.
    Az RPI-re dugnám rá a Pico-t USB kábellel, és Serial-on át a Pico Python Shell üzeneteit szeretném nem csak figyelni, hanem fájlba log-olni is. Lehetőleg sec pontos timestamp-el együtt.
    Tehát alapvetően a platform egy Raspbian Buster.

    - Az első próbám a Thonny volt (amit egyelőre használok a Pico programozásra is, amúgy Ubuntu alól is).
    Log funkciója van (pár hónapja csináltam ilyet már), de a panel illetve a vele való serial kommunikáció nem indítható újra egyszerűen, pl. billentyűkombinációval sem.
    - A következő ötlet terminalból valamilyen "serial monitor" megoldása + a terminal log-olása.
    rshell-el sikerült is kikisérleteznem nagynehezen:
    rshell -p /dev/ttyACM0 -d "repl ~ import machine ~ machine.soft_reset() ~ repl"
    Ezt kombinálnám a script paranccsal, és logolnám az egész terminal-t egy file-ba.
    De nem megy, onnantól hogy kiadtam a repl parancsot (azaz a Python Shell üzenetek jönnek), már nem megy tovább a file-ba.
    Van esetleg ötletetek valami komolyabb (3rdparty, akár még fizetős is) log rendszerre, ami esetleg ezt (is) tudná ?

    [ Szerkesztve ]

  • atesss

    addikt

    válasz Karma #7440 üzenetére

    Igazad van, tényleg kimaradt hogy miért is írtam ezt.
    Ha az eszközt kihúzzák a konnektorból, vagy áramszünet van, akkor belső, az AVR-t tápláló akkumulátor nélkül az AVR el fogja felejteni az időt.
    Viszont ha rakok bele egy RTC modult, akkor minden inicializálásnál le tudja kérdezni az időt tőle.
    És úgy tűnik olcsóbb egy ilyen modul, mint egy Li cella + töltő áramkör (és a Li cella se tudja nagyon hosszú ideig ellátni az AVR-t, max. ha valamilyen energiatakarékos módba kapcsolom szoftverből, de az okozhat problémákat - nem értek ehhez még eléggé, ezért nem vágnék ilyenbe bele).

    Plusz az AVR-be valahogy bele is kell vinnem a pontos időt egyszer. Külső periféria nélkül ezt felprogramozáskor lehetne maximum. Ezt a modult egyszer beállítom, és onnantól kezdve bármelyik AVR-re rakom is rá (akár csak majd hónapok múlva), nem fogja elfelejteni közben.
    (Sőt könnyen lehet hogy úgy szállítják, hogy ha nem szedem ki a gombelemet, alapból tudja a pontos időt.)

    Ha gyakran lekérdezem a modultól, lehet még külső kvarc sem kéne az AVR-nek (jó a nem annyira pontos belső oszcillátor is), de ez mondjuk már tényleg részletkérdés.
    Így tehát az időszinkronizáció biztosan rendben van, tehát onnantól nyugodtan lehet inkrementálisan is tárolni az adatokat.
    Biztonság kedvéért lehet bele kellene rakni időnként a teljes idő letárolását, de ez lehet több naponként is.

    De még így is két lehetőség van:
    A.) minden változáskor letárolom a legutóbbi változás óta eltelt időt.
    B.) vagy változáskor a pontos időt tárolom le - illetve csak annak a legutóbbi változás óta megváltozott részét (ha a másodperc változott csak, akkor csak azt; ha a perc is, akkor azt is; ha a nap is, akkor azt is).

    Ha jól számolom az első tárhely-gazdaságosabb lehet.

  • atesss

    addikt

    válasz dabadab #7419 üzenetére

    Hát a bitstream ilyen szempontból nem lenne rossz. Csak tényleg ez a gond vele...
    Még majd átgondolom hogy ha lesz már egy kész nem bitstream-es megoldásom, hogy mennyit nyernék ha átalakítanám.

    Egy pl. ilyen Huffman nem lehet hogy túl sok már egy ilyen kis AVR-nek ?
    Első körben az algoritmus memóriafelhasználásában, másrészt meg feldolgozási igényben is akár.

    Közben viszont változik a dolog annyiban, hogy nem kell az AVR-el az időt folyamatosan tárolnom.
    Mint kiderült külföldről akár 2 dollár alatt is lehet kapni az AVR-el I2C-n keresztül elérhető RTC modult: [link]
    Ez így nem növeli meg vészesen a kapcsolás/az egész kész eszköz árát.
    És mint kiderült az I2C használata nem is annyira bonyolult (elektronikailag sem), és mivel van hozzá egy jó kis library, leprogramozni sem annyira vészes. Persze nem mondom hogy nem kell beletanulnom, de úgy néz ki meg tudom majd csinálni.

    Így a pontos időt bármikor le tudom kérdezni I2C-n keresztül, ami azért könnyebbséget ad.
    Pl. így simán meg lehet azt csinálni, hogy csak változásnál tárolom le az időt és/vagy a dátumot.
    Célszerűen nem a teljes dátumot és időt - hanem csak ami a legutóbbi letárolás óta változott (mondjuk a másodpercen kívül a percet is lehet jó lenne minden alkalommal).
    Így már csak attól függ a tárhely igény, hogy milyen gyakran van változás.

    Illetve azon is gondolkozok, hogy az áttekinthetőség érdekében nem lenne rossz minden nap éjfélkor letárolni a teljes időinformációt: évtől a másodpercig.

  • atesss

    addikt

    válasz Karma #7417 üzenetére

    Valami olyan megoldás kell, ami gyakorlatilag a kódolást változtatja attól függően, hogy milyen hosszú az állandó jel.

    Szerintem ez a 2 perces adat alapvetően megfelelő. Az azért ritka, hogy valaki 1 percben többször is ki-be kapcsoljon egy 230-as fogyasztót .
    (Esetleg mikró, ha visszarakod még pár másodpercre a kaját; illetve a főzőlapok. Máshol is elképzelhető egyszer-egyszer, de nem tömegesen.)

    Viszont olyan esetben, amikor a 2 percnél jóval tovább (leginkább órákig) van egy állapotban a fogyasztó, oda kellene még valami.
    15 bit (2 bájt - 1 bit az ON/OFF jelzésére) az 9,1*3600s. 9 óránál jelentősen hosszabb állandó állapot is ritkán fordul azért elő.

    Még azt nem tudom, hogy a két kódolás "határát" hogyan fogom egymástól megkülönböztetni. Lehet az egyik bitet be kéne áldozni erre.

  • atesss

    addikt

    válasz atesss #7415 üzenetére

    Hát végigszámolva még sem az igazi.
    Ugyanis ez már 720bájt/nap, azaz 256kb/év.

    Keresek valami fejben is számolható perc/óra/nap többszöröst feljebb.

  • atesss

    addikt

    válasz atesss #7414 üzenetére

    Kitaláltam egy viszonylag hatékony, mégis átlátható kódolást:
    1 bájt (8 bit):
    1. 2. 3. 4. 5. 6. 7. 8.
    ON/OFF(1/0) ---------120sec=2min adatai----------

    [ Szerkesztve ]

  • atesss

    addikt

    válasz Karma #7413 üzenetére

    Viszont az átláthatóság (úgymond szemmel is fel tudjam "dolgozni") és az utólagos feldolgozhatóság miatt lehet a növelésnek lesz egy korlátja. Főleg, amíg még fejlesztés alatt vagyok.
    Pl. 60-ig növelve pont egy percet ad ki. Mondjuk ez nem a leggazdaságosabb.
    8 bites az AVR, úgyhogy a legoptimálisabb 255-ig lenne, csak az semminek sem osztója.

    A nullázás pont emiatt problémás, mert nem tudom egyszerűen eldönteni, hogy éppen 0-n vagy 1-en van-e.
    A legjobb lenne kiírni az értéket (0/1) is.
    De még gondolkodok, hogy hogyan.

  • atesss

    addikt

    Üdv !
    A kérdésem ugyan elég specifikusnak tűnik, de alapvetően algoritmus-technológiailag kérdeznék rá a témára:
    Egy AVR mikrokontrolleres áramkört szeretnék készíteni, amivel figyelem hogy egy adott fogyasztó be van-e kapcsolva (illetve hogy a készenléti pár W-nál többet vesz-e fel - de ez programozási szempontból lényegtelen).
    Ezt minden másodpercben (AVR belső "órájával" mérem) megvizsgálom, és az eredményt (1 - ha be van kapcsolva, és 0 - ha nincs bekapcsolva) lementeném.
    Ha ezt csak szimplán egymás után mentem, elég hamar kifutnék még a legnagyobb, 128Kbyte-os Flash méretéből is.

    Valami nagyon egyszerű kódolást kellene használnom tömörítési célból.
    Egyszerű futáshossz-kódolás [link] jónak tűnik így elsőre. Mit kell tudni erről ?
    Vagy mi az ami ilyen célra használható lehet még ?

  • atesss

    addikt

    Üdv !
    Egy kis segítségre lenne szükségem:
    Találtam egy cuTorrent nevű kiegészitést a uTorrenthez (illetve a WebUI-jához), amivel egy bat fájlon keresztül le tudnám állítani a seed-elést, ha elérem a napi 5GB-os feltöltési limitet (az adatforgalmat figyelő program már megvan).
    Hiába keresgéltem, csak Pythonos forráskódot találtam:
    [link] és letöltgető innen: [link]
    Na ezt le kéne fordítani még, Windows alá...
    Próbálkoztam is vele, de amilyen fejlesztői környezetet letöltöttem hozzá, azzal nem sikerült boldogulni, pl. rögtön sytax errort dobott.
    Tudnátok ajánlani valamilyen grafikus felületű (igazából a Visual Studiohoz hasonló lenne a legjobb, mivel abban tanultam C-t ) SDK-t ? Meg valami tutorial is jó lenne, hogy hogyan is működik ez.

    Vagy ha valaki meg tudná tenni nekem, hogy lefordítja a programot Windows alá, és elküldi nekem, azt nagyon megköszöném. :R

    Mégiscsak egyszerűbb lenne, mert ha valakinek fent van az SDK, és tudja is használni, akkor kb. 1 perc alatt le lehet fordítani gondolom, nekem meg akár több óra is lehet, mire tényleg kiismerem, hogy hogyan is kellene ezt csinálni.

Új hozzászólás Aktív témák