Month: October 2017

Muj prvni bulvarni clanek

Muj prvni bulvarni clanek

Tohle je muj prvni bulvarni clanek. K jeho vyrobe jsem pouzil bulvu cervene repy, stary hrebik a kus medeneho dratu. Po zprovozneni dodaval zkratovy proud 24 μA napeti naprazdno 211 mV. Behem nekolika malo minut se hodnoty vyrazne zlepsily na 105 μA a 450mV. Zkratovy proud velmi rychle klesa, zde by pomohlo udelat z toho bulvarni platek a umistit ho mezi medeny a zelezny plech.

Pokud po precteni planujete zacit konkurovat Elonove Gigafactory, tak vezte, ze ze ctvrtkilove repy dostanete asi 11 μW*, takze pro pouhe nabijeni telefonu (USB 5 V / 500 mA) by bylo potreba asi 55 tun repy. Nicmene design clanku by sel o neco zlepsit a myslim, ze by se dalo dostat i na nekolik malo metraku :-). A repa neni nejdrazsi casti teto elektrarny, behem pokusu byste brzy prisli na to, ze to bude fungovat i s levnejsi bramborou a jeste levnejsimi elektrolyty, protoze klicovou soucasti je medena elektroda.

*) Vynasobite-li 100 μA a 450 mV, ziskate vykon 45 μW, ale ten samozrejme nejde ze zdroje odebrat, protoze nelze zaroven odebirat napeti naprazdno a proud nakratko. Nejvetsi vykon lze z linearniho zdroje odebrat, pokud jeho zatez ma stejny odpor jako vnitrni odpor zdroje. Tento vykon je ctvrtina hodnoty ziskane vynasobenim napeti naprazdno a proudu nakratko. Vysvetleni s odvozenim. Druha ctvrtina vykonu disipuje na vnitrnim odporu zdroje a zahriva bulvu obrim vykonem 11 μW. Jako zdroj tepla pro uvareni repy to ale neni dostatecne, i hnilobne procesy budou mit vykon o nekolik radu vyssi.

Proud nakratko.

Posted by zelenohlav in Elektronika

Klavesnicova makra poprve

Tento prispevek navazuje na jak automaticky vkladat text i kdyz se nekdo snazil aby to neslo a odkazuje na SW a HW v nem zmineny.

Klavesnicova makra si predstavuji jako funkce, kterym jdou dat parametry a podle nich se vygeneruje vlozena sekvence uhozu na klavesnici. V nejjednodussim pripade se se parametry dosadi nekam do textu, ktery se posle. Ve slozitejsich pripadech se muze treba podle zadane mailove adresy prijemce rovnou prednastavit osloveni a podpis a podobne pokrocilejsi funkce.

Zatim mam napsana jen hloupa makra: serkbd_in_loop.py. Cely HW a SW na strane prijemce zustava stejny. Staci spustit program v pythonu, jako root* a pak mackat klavesy. Klavesou q se program ukonci, ostatni klavesy zpusobi pokus o nalezeni souboru s jednopismennym nazvem v aktualnim adresari a poslani jeho obsahu.

Pismena jsou samozrejme zadavana na klavesnici druheho pocitace a retezce znaku definovane v souborech prijdou do pocitace prijimaciho.

Takze kdyz vytvorim textovy soubor se jmenem u a s obsahem uname -a, staci na klavesnici ovladajicicho pocitace zmacknout u a na ovladanem pocitaci se napise uname -a (at uz bude focus kdekoliv – do terminalu, do mailu, jako by to bylo napsano primo na klavesnici).

V UNIXu neni prilis prakticke vytvares soubory se jmeny *, nebo – a vytvorit soubor se jmenem / by nastesti nemelo jit vubec. Takze pro seriozni pouziti by se hodil jiny zpusob ukladani maker. Tohle je spise proof of concept.

*) Kdyz poustite program jako root, ziska kontrolu nad celym vasim pocitacem. Takze se hodi alespon trochu rozumet tomu, co v nem je. Mohl jsem tam schovat neco zakerneho (neudelal jsem to, ale to bych sem napsal i v pripade, ze bych to udelal, to da rozum). Nekdo mohl odchytit packety po ceste na siti a zmenit obsah. Nakonec nejjednodussi zpusob je ukrast muj text a program (ten se krade blbe, ma licenci GPL :-)), dat oboje nekam na freeweb a do programu pridat nejaky nechteny bonus.

Happy hacking!

P.S. odmitam prijmout zodpovednost, za skody zpusobene makry. Takze pokud si vytvorite makra s hesly a odkazy na sve oblibene pornostranky a povede se vam je omylem vlozit do pracovniho emailu a diky enteru na konci makra rovnou i odeslat, muzete si za to sami, ja vas varoval.

Posted by zelenohlav in Linux

Jak automaticky vkladat text i kdyz se nekdo snazil, aby to neslo

Clovek obcas narazi na program, nebo webovou stranku, kde si nekdo dal tu praci, se znemoznenim vkladani textu prostrednim tlacitkem mysi. Nekdy se da text vlozit klavesovymi zkratkami, nekdy pres menu, nekdy vubec a vzdy je cloveka nedustojne hledat jakym zpusoben (a jestli vubec) to tentokrat pujde.

V Linuxu nastesti existuje moznost pripojit ps/2 klavesnici po seriovem portu a ta jde vyuzit i zajimavejsim zpusobem. Scankody ps/2 klavesnice muze totiz posilat druhy pocitac. Oba pocitace musi mit seriovy port (konvertor do USB funguje, takze staci USB). Seriove porty se propoji nullmodemem (to je kabel, kde je prekrizeny TX a RX). Zapojeni kabelu je na Wikipedii, nebo se da bezne koupit. A to je cely HW, vic toho neni potreba delat a obejdete se bez pajky a programatoru mikrokontroleru.

Na pocitaci, ktery ma ziskat falesnou klavesnici je potreba pustit jako root:

inputattach --baud 19200 --ps2serkbd /dev/ttyUSB0

a na pocitaci, ktery posila data lze pouzit napriklad serialkbd.py.

Puvodni klavesnice samozrejme funguje dal a dokonce ovlivnuje chovani tehle falesne, takze napriklad zmacknuti shiftu zmeni mala pismena na velka (az do prvniho pusteni shiftu tou falesnou klavesnici).

V pripade, ze bude program pusten pres ssh z terminalu na stejnem pocitaci, jako kam je vkladan text, pak doporucuji vlozit pred program nekolikasekundove cekani, aby bylo dost casu prepnout focus do zadaneho mista:

sleep 3; serialkbd.py datovy_soubor

alternativne by slo treba nakonfigurovat aby se na nejakou klavesovou zkratku spustilo ssh, ktere prekopiruje zvolena data na druhy pocitac a spusti vlozeni po seriovem portu.

Zda se, ze dnes uz jde na ebayi koupit prevodnik z ps/2 na seriovy port – staci hledat ‘ps2 serial arduino’. Temer s jistotou bude mit TTL vystupy, takze bude nutne zkonvertovat napetove urovne MAX232 na +-12V, ale pak by sla pripojit bezna klavesnice na seriovy port pocitace, ktery by zpracovaval psany text a posilal ho dal. To by umoznilo implementovat makra, pridat klavesy (treba vyuzitim normalni klavesnice pripojene k tomu ridicimu pocitaci, jeho paralelniho portu, USB, apod.), nebo treba nahravat psany text a umoznit ho cast znovu prehrat. To se obcas hodi kdyz se povede neco napsat do spatneho okna a nebo kdyz nekdo implementoval na webove strance komentarovy formular tak blbe, ze pri jakekoliv chybe text zmizi a neda se k nemu vratit ani pres tlacitko zpet v browseru.

Jeste zodpovim par predpokladanych dotazu:

Otazka: Musi tam byt druhy pocitac, neslo by spojit tim nullmodemem dva seriove porty na tom samem pocitaci?

Odpoved: Slo.

Otazka: A musi tam vubec byt ten HW, neslo by to nejak udelat pres virtualni porty?

Odpoved: Urcite by to nejak slo, ale z hlavy nevim jak. Treba se k tomu nekdy dostanu, prijdu na to a pridam to sem.

Otazka: To jsi delal jenom kvuli par blbym programum, ktere znemoznuji vkladani mysi?

Odpoved: Chtel bych klavesnici s makry, ktera si budu moci sam programovat. Zkonvertovat ps/2 na seriovy port a zpracovavat nezavislym pocitacem stream dat na seriovem portu mi prijde nejjednodussi. Umozni to nahravat provoz na klavesnici a cast ho znovu prehrat (treba kdyz clovek neco napise do spatneho okna) a navic to muze nahradit i KVM pro praci na vice pocitacich.

Otazka: Ma to smysl? Makra umi nektere herni klavesnice.

Odpoved: Vsechny herni klavesnice, ktere jsem zatim videl (kamarad jich mel plnou skrin) vyzadovaly k programovani maker nejaky program pro Windows, coz je system, ktery nemam, neumim s nim a navic by byl pekny opruz kvuli kazdemu programovani makra prehazovat klavesnici mezi pocitaci. Krome toho je otazka co vsechno tam jde naprogramovat. Moje reseni umoznuje naprogramovat v zasade cokoliv, co jde napsat v C, pythonu, nebo jinem jazyce, ktery lze pustit na pocitaci se dvema seriovymi porty. Tim pocitacem muze byt klidne treba arduino, nebo Atmega8 zabudovana ve fyzicke klavesnici.

Otazka: Ma to smysl? KVM nahradi treba synergy a neni nutne tahat seriove kabely.

Odpoved: Je rozdil precist si manual k synergy, zkusit ho na pet minut a pouzivat ho. Ten program (informace stara asi 4 roky, od te doby jsem ho nezkousel) asi tak jednou za hodinu udela nejakou pitomost. To je dost malo na to, aby se to dobre debuggovalo a prilis casto na to, aby to clovek nechtel rozslapat a prohodit oknem. Problemy pretrvavaly i kdyz synergy dostalo vlastni sitove karty a vlastni prekrizeny ethernetovy kabel.

Otazka: Kdyz to pouziju, jako KVM, budu s tim moci nastavovat i BIOS a bootloader?

Odpoved: Ne. Tohle zacne fungovat, az se pod uzivatelem root pusti inputattach. Ten se muze pustit i automaticky, ale aby to fungovalo drive, nez nabehne jadro, bylo by nutne zkonstruovat HW, ktery by ze serioveho portu delal zpet ps/2. S nejakym mikrokontrolerem by to nemelo byt tezke.

Otazka: Muj Linux nema inputattach, kde he sezenu?

Odpoved: Na Debianu je v balicku inputattach, na Fedore to je v balicku linuxconsoletools, na dalsich distribucich doporucuji hledat googlem jmeno distribuce a inputattach, nebo vyuzit nejaky distribucni tool pro hledani balicku.

Otazka: Chci tam doplnit klavesu, nasel jsem nejake scankody ps/2 klavesnice a dela to uplne nesmysly.

Odpoved: Existuji dve mnoziny ps/2 scancodu. inputattach zjevne pouziva set2. V poli keyboard jsou jednotlive polozky serazene podle jejich ascii kodu. Co se stane s unicode znaky netusim, ale python ma podporu unicode, takze predpokladam, ze v nem bude jednoduchy zpusob, jak projit cele unicode znaky v retezci i kdyby to nebyl ten, ktery jsem pouzil. Pak je otazka, jestli prodlouzit pole, nebo to napsat jinak.

Otazka: Bude mi to fungovat na Windows? Treba v cygwinu?

Odpoved: Na prijimaci strane temer jiste ne. Ale treba nekdo portoval inputattach i pro Windows. Na vysilaci strane (serialkbd.py) bude patrne nutne upravit nejake systemove veci (jmena seriovych portu, apod.), pripadne se postarat o konce radku a asi by to fungovat melo. Python je multiplatformni, takze clovek, ktery ma zkusenosti s programovanim v pythonu pro Windows by to podle meho nazoru mel bez problemu rozchodit. Nicmene moje zkusenosti s Microsoftimi operacnimi systemy konci u turbopascalu a qbasicu nekdy v minulem mileniu.

Posted by zelenohlav in Linux