diff --git a/content/projekty/_index.md b/content/projekty/_index.md index 890f613..6e80437 100644 --- a/content/projekty/_index.md +++ b/content/projekty/_index.md @@ -2,4 +2,5 @@ title = "Projekty" template = "project_list.html" page_template = "project.html" +sort_by = "date" +++ diff --git a/content/projekty/digitalni-rozvrhy/index.md b/content/projekty/digitalni-rozvrhy/index.md new file mode 100644 index 0000000..e3af4ac --- /dev/null +++ b/content/projekty/digitalni-rozvrhy/index.md @@ -0,0 +1,25 @@ ++++ +title = "Digitální rozvrhy k učebnám" +date = 2020-07-29 + +[extra] +status = 2 +authors = ["David Zálešák", "Emil Miler", "Jiří Šebor", "Jan Vais", "Michael Šebor", "Petr Velychko"] +created = 2019-07-15 ++++ + +Cílem projektu je vytvořit zařízení, které zobrazuje informace o učebně - probíhající výuka, následující výuka, čas a podobně. Na zařízení běží Alpine Linux s nastavenám X.org serverem, aby fungoval jako kiosk, tj. aby po zavedení systému zobrazil jednu aplikaci ve fullscreen módu. + +## Schéma projektu + +Displej má být umístěn před každou učebnou katedry. Data o očebně si parsuje každé začízení samo pomocí [shell skriptu](https://git.microlab.space/microlab/sisfetch). Zařízení jsou spravována vzdáleně pomocí [Ansible](https://github.com/ansible/ansible). + +Původní verze projektu byla postavena na klasickém LCD displeji a ve vlastní konstrukci z překližky. Vývojem byl projekt předělán do stávající verze a původní návrh je využit v projektu [interní meteostanice](@/projekty/interni-meteostanice/index.md#zobrazovac) jako zobrazovač stavu prostředí na chodbě katedry. + +## Aplikace + +### Parsování SISu + +### Zobrazení + +![Návrh pro zobrazení](sample-layout.jpg) diff --git a/content/projekty/digitalni-rozvrhy/main.jpg b/content/projekty/digitalni-rozvrhy/main.jpg new file mode 100644 index 0000000..870ce2d Binary files /dev/null and b/content/projekty/digitalni-rozvrhy/main.jpg differ diff --git a/content/projekty/digitalni-rozvrhy/sample-layout.jpg b/content/projekty/digitalni-rozvrhy/sample-layout.jpg new file mode 100644 index 0000000..9849add Binary files /dev/null and b/content/projekty/digitalni-rozvrhy/sample-layout.jpg differ diff --git a/content/projekty/ds213-osciloskop/index.md b/content/projekty/ds213-osciloskop/index.md new file mode 100644 index 0000000..57852dd --- /dev/null +++ b/content/projekty/ds213-osciloskop/index.md @@ -0,0 +1,14 @@ ++++ +title = "DS213 osciloskop" +date = 2022-04-01 + +[extra] +status = 2 +authors = ["???"] +created = 2012-04-01 ++++ + + +- [Roll mode firmware](https://github.com/xjtuecho/DS213_ECHO) +- [Resources](https://www.minidso.com/forum.php?mod=forumdisplay&fid=87) + diff --git a/content/projekty/ds213-osciloskop/main.jpg b/content/projekty/ds213-osciloskop/main.jpg new file mode 100644 index 0000000..2200f0b Binary files /dev/null and b/content/projekty/ds213-osciloskop/main.jpg differ diff --git a/content/projekty/externi-meteostanice/index.md b/content/projekty/externi-meteostanice/index.md new file mode 100644 index 0000000..7b29341 --- /dev/null +++ b/content/projekty/externi-meteostanice/index.md @@ -0,0 +1,10 @@ ++++ +title = "Externí meteostanice" +date = 2021-12-13 + +[extra] +status = 2 +authors = ["Emil Miler", "Michal Douša"] +created = 2021-11-22 ++++ + diff --git a/content/projekty/interni-meteostanice/index.md b/content/projekty/interni-meteostanice/index.md new file mode 100644 index 0000000..6b7deec --- /dev/null +++ b/content/projekty/interni-meteostanice/index.md @@ -0,0 +1,90 @@ ++++ +title = "Interní meteostanice v učebnách" +date = 2021-11-22 + +[extra] +status = 2 +authors = ["David Zálešák", "Emil Miler"] +created = 2019-11-28 ++++ + +Stavy prostředí učeben lze monitorovat na adrese [meteo.microlab.space](https://meteo.microlab.space). + +--- + +Meteostanice jsou IoT zařízení postavené na hardwaru [HARDWARIO Tower](https://shop.hardwario.com/kits/) (dříve BigClown). Ten je vyráběný stejnojmennou českou firmou [HARDWARIO](https://www.hardwario.com/), která se zabývá vývojem vlastní IoT elektroniky. Rozhodli jsme se použít tuto elektroniku nejen proto, že se sama nabízí právě na naše použití, ale i proto, že naše katedra od firmy HARDWARIO získala darem spoustu jejich zařízení. + +## Měřící jednotky + +Měčící stanice jsou v podstatě postaveny jako oficiální [CO2 Monitor Kit](https://shop.bigclown.com/co2-monitor-kit/). Core modul tedy obsahuje [oficiální firmware pro CO2 Monitor Kit](https://github.com/bigclownlabs/bcf-radio-co2-monitor) a je i stejně zapojen, tj. Battery Module, CO2 module, Tagy pro měření teploty, vlhkosti a tlaku, Core Module a vpředu Cover Module. Vše je uzavřeno ve vytištěné krabičce. + +Stanice odesílají data o stavu pomocí rádia. + +## Server + +Server je zařízení, které přijíma data o stavech měřících stanic a zároveň data zpracovává. Běží na něm MQTT broker a Node-RED, na kterém je postavené i UI. + +### Instalace + +Instalace proběhla podle [dokumentace](https://www.hardwario.com/academy/how-to-install-playground-on-rpi/). + +### Firewall + +``` +apt install ufw +ufw default deny incoming +ufw allow in from +ufw enable +``` + +### Program a UI + +Node-RED flow: + +```json +[{"id":"7e6bdded.671214","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"6c54c074.21406","type":"mqtt in","z":"7e6bdded.671214","name":"","topic":"node/R013H/hygrometer/0:4/relative-humidity","qos":"2","datatype":"auto","broker":"6f3564ce.64310c","x":270,"y":120,"wires":[["550301cc.92926"]]},{"id":"550301cc.92926","type":"ui_gauge","z":"7e6bdded.671214","name":"","group":"14251a25.aba736","order":5,"width":0,"height":0,"gtype":"gage","title":"Vlhkost","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#b5b5b5","#b1cde6","#4289ca"],"seg1":"","seg2":"","x":620,"y":120,"wires":[]},{"id":"26b00bd4.85bc04","type":"ui_gauge","z":"7e6bdded.671214","name":"","group":"14251a25.aba736","order":4,"width":0,"height":0,"gtype":"gage","title":"Teplota","label":"°C","format":"{{value}}","min":"0","max":"50","colors":["#5789b5","#8fe658","#ca4244"],"seg1":"","seg2":"","x":620,"y":280,"wires":[]},{"id":"3f60372b.a3d628","type":"mqtt in","z":"7e6bdded.671214","name":"","topic":"node/R013H/co2-meter/-/concentration","qos":"2","datatype":"auto","broker":"6f3564ce.64310c","x":290,"y":200,"wires":[["9f76dbb.d4a9328","d6f199.84257e68"]]},{"id":"9f76dbb.d4a9328","type":"ui_gauge","z":"7e6bdded.671214","name":"","group":"14251a25.aba736","order":2,"width":0,"height":0,"gtype":"gage","title":"Koncentrace CO2","label":"ppm","format":"{{value}}","min":"300","max":"2000","colors":["#8fe658","#e6d260","#ca4244"],"seg1":"1000","seg2":"1500","x":650,"y":180,"wires":[]},{"id":"b76af9f2.d19eb8","type":"comment","z":"7e6bdded.671214","name":"R013H","info":"","x":390,"y":60,"wires":[]},{"id":"da1c8890.8a1bd8","type":"mqtt in","z":"7e6bdded.671214","name":"","topic":"node/R013H/thermometer/0:0/temperature","qos":"2","datatype":"auto","broker":"6f3564ce.64310c","x":280,"y":280,"wires":[["26b00bd4.85bc04"]]},{"id":"e9a764d2.7bb0c8","type":"mqtt in","z":"7e6bdded.671214","name":"","topic":"node/R013J/hygrometer/0:4/relative-humidity","qos":"2","datatype":"auto","broker":"6f3564ce.64310c","x":270,"y":460,"wires":[["270bc9ca.373656"]]},{"id":"270bc9ca.373656","type":"ui_gauge","z":"7e6bdded.671214","name":"","group":"76bb0228.e9031c","order":4,"width":0,"height":0,"gtype":"gage","title":"Vlhkost","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#b5b5b5","#b1cde6","#4289ca"],"seg1":"","seg2":"","x":620,"y":460,"wires":[]},{"id":"a920e2c8.636f3","type":"ui_gauge","z":"7e6bdded.671214","name":"","group":"76bb0228.e9031c","order":3,"width":0,"height":0,"gtype":"gage","title":"Teplota","label":"°C","format":"{{value}}","min":"0","max":"50","colors":["#5789b5","#8fe658","#ca4244"],"seg1":"","seg2":"","x":620,"y":620,"wires":[]},{"id":"c11268ab.ed1be8","type":"mqtt in","z":"7e6bdded.671214","name":"","topic":"node/R013J/co2-meter/-/concentration","qos":"2","datatype":"auto","broker":"6f3564ce.64310c","x":290,"y":540,"wires":[["774fc04c.d3757","fb1d2008.2ea4a"]]},{"id":"774fc04c.d3757","type":"ui_gauge","z":"7e6bdded.671214","name":"","group":"76bb0228.e9031c","order":1,"width":0,"height":0,"gtype":"gage","title":"Koncentrace CO2","label":"ppm","format":"{{value}}","min":"300","max":"2000","colors":["#8fe658","#e6d260","#ca4244"],"seg1":"1000","seg2":"1500","x":650,"y":520,"wires":[]},{"id":"ddfd0912.11c438","type":"comment","z":"7e6bdded.671214","name":"R013J","info":"","x":390,"y":400,"wires":[]},{"id":"c3574ac4.8ca128","type":"mqtt in","z":"7e6bdded.671214","name":"","topic":"node/R013J/thermometer/0:0/temperature","qos":"2","datatype":"auto","broker":"6f3564ce.64310c","x":280,"y":620,"wires":[["a920e2c8.636f3"]]},{"id":"24e7a4be.f1d84c","type":"mqtt in","z":"7e6bdded.671214","name":"","topic":"node/R013B/hygrometer/0:4/relative-humidity","qos":"2","datatype":"auto","broker":"6f3564ce.64310c","x":270,"y":800,"wires":[["65407316.59ff0c"]]},{"id":"65407316.59ff0c","type":"ui_gauge","z":"7e6bdded.671214","name":"","group":"50804a81.7f1004","order":5,"width":0,"height":0,"gtype":"gage","title":"Vlhkost","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#b5b5b5","#b1cde6","#4289ca"],"seg1":"","seg2":"","x":620,"y":800,"wires":[]},{"id":"ff44697d.4846c8","type":"ui_gauge","z":"7e6bdded.671214","name":"","group":"50804a81.7f1004","order":4,"width":0,"height":0,"gtype":"gage","title":"Teplota","label":"°C","format":"{{value}}","min":"0","max":"50","colors":["#5789b5","#8fe658","#ca4244"],"seg1":"","seg2":"","x":620,"y":960,"wires":[]},{"id":"2d0ddbe0.d02844","type":"mqtt in","z":"7e6bdded.671214","name":"","topic":"node/R013B/co2-meter/-/concentration","qos":"2","datatype":"auto","broker":"6f3564ce.64310c","x":290,"y":880,"wires":[["52967c8e.8c8924","f2b3ec96.197c3"]]},{"id":"52967c8e.8c8924","type":"ui_gauge","z":"7e6bdded.671214","name":"","group":"50804a81.7f1004","order":2,"width":0,"height":0,"gtype":"gage","title":"Koncentrace CO2","label":"ppm","format":"{{value}}","min":"300","max":"2000","colors":["#8fe658","#e6d260","#ca4244"],"seg1":"1000","seg2":"1500","x":650,"y":860,"wires":[]},{"id":"4a087e89.6c8f1","type":"comment","z":"7e6bdded.671214","name":"R013B","info":"","x":390,"y":740,"wires":[]},{"id":"8c67b534.520768","type":"mqtt in","z":"7e6bdded.671214","name":"","topic":"node/R013B/thermometer/0:0/temperature","qos":"2","datatype":"auto","broker":"6f3564ce.64310c","x":280,"y":960,"wires":[["ff44697d.4846c8"]]},{"id":"e1b256de.26d8c8","type":"ui_text","z":"7e6bdded.671214","group":"14251a25.aba736","order":3,"width":0,"height":0,"name":"","label":"Stav:","format":"{{msg.payload}}","layout":"row-center","x":770,"y":220,"wires":[]},{"id":"d6f199.84257e68","type":"function","z":"7e6bdded.671214","name":"set text","func":"if(msg.payload < 1000){\n msg.payload = \"Optimální\";\n}\nelse if(msg.payload < 1500){\n msg.payload = \"Vysoká koncentrace\";\n}\nelse {\n msg.payload = \"Kritická koncentrace!\"\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":620,"y":220,"wires":[["e1b256de.26d8c8"]]},{"id":"62d4223c.c471bc","type":"ui_text","z":"7e6bdded.671214","group":"50804a81.7f1004","order":3,"width":0,"height":0,"name":"","label":"Stav:","format":"{{msg.payload}}","layout":"row-center","x":770,"y":900,"wires":[]},{"id":"f2b3ec96.197c3","type":"function","z":"7e6bdded.671214","name":"set text","func":"if(msg.payload < 1000){\n msg.payload = \"Optimální\";\n}\nelse if(msg.payload < 1500){\n msg.payload = \"Vysoká koncentrace\";\n}\nelse {\n msg.payload = \"Kritická koncentrace!\"\n}\nreturn msg;","outputs":1,"noerr":0,"x":620,"y":900,"wires":[["62d4223c.c471bc"]]},{"id":"99a974f0.24fb68","type":"ui_text","z":"7e6bdded.671214","group":"76bb0228.e9031c","order":2,"width":0,"height":0,"name":"","label":"Stav:","format":"{{msg.payload}}","layout":"row-center","x":770,"y":560,"wires":[]},{"id":"fb1d2008.2ea4a","type":"function","z":"7e6bdded.671214","name":"set text","func":"if(msg.payload < 1000){\n msg.payload = \"Optimální\";\n}\nelse if(msg.payload < 1500){\n msg.payload = \"Vysoká koncentrace\";\n}\nelse {\n msg.payload = \"Kritická koncentrace!\"\n}\nreturn msg;","outputs":1,"noerr":0,"x":620,"y":560,"wires":[["99a974f0.24fb68"]]},{"id":"6f3564ce.64310c","type":"mqtt-broker","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"14251a25.aba736","type":"ui_group","name":"R013H - Hnědá","tab":"6390d0b3.d0714","order":2,"disp":true,"width":"6","collapse":false},{"id":"76bb0228.e9031c","type":"ui_group","name":"R013J - Modrá","tab":"6390d0b3.d0714","order":3,"disp":true,"width":"6","collapse":false},{"id":"50804a81.7f1004","type":"ui_group","name":"R013B - Zelená","tab":"6390d0b3.d0714","order":4,"disp":true,"width":"6","collapse":false},{"id":"6390d0b3.d0714","type":"ui_tab","name":"Statistiky prostředí v učebnách","icon":"wb_cloudy","disabled":false,"hidden":false}] +``` + +## Reverzní proxy z Internetu + +Na UI, které je v podstatě jen webová aplikace, směřuje z našeho web serveru reverzní http proxy, která aplikaci přesměruje ke klientovi. + +``` +location / { + proxy_pass http://
:/ui/; +} +``` + +## Zobrazovač + +### Konstrukce + +Tělo prototypu je vygravírováno z překližky za použití laseru. LCD je z přední části chráněno polyakrilátem také vyřezaného laserem. V původní konstrukci se LCD lepilo na plexisklo, proto byli vytištěny rohové plastové separátory, které odsazují LCD od čelní desky. Všechny výkresy a modely jsou ke stažení na našem ~~[gitu](#)~~. + +### Počítač + +Jádrem je počítač Raspberry Pi Zero W. To jsme vybrali z důvodu malých rozměrů a integrovaného IEEE 802.11. Díky tomu nemusíme ke každému displeji tahat zvláštní síťové kabely. + +#### Operační systém + +Na Raspberry PI jsme zvolili systém Alpine Linux, nikoliv běžný Raspbian. Důvodem zvolení Alpine je fakt, že Debian, ze kterého vznikl Raspbian, je podle nás špatně navržený a zbytečně obrovský. Obsahuje i software, který nemáme rádi, tj. *systemd* a podobné věci. + +Raspberry PI má otevřený přístup pouze na SSH a ostatní příchozí komunikace jsou blokovány. SSH je autentizováno pomocí asymetrických klíčů. + +#### Kiosk mód + +```sh +xinit /usr/bin/midori -e Fullscreen -a https://meteo.microlab.space +``` + +#### Automatické vypínání displeje + +Není třeba, aby displej svítil i během doby, kdy je budova uzavřena. Ovládat power management displeje lze pomocí utility *xset*. Do systému je třeba doinstalovat balíček `x11-xserver-utils`. + +Záznam v crontabu poté vypadá následovně. + +```sh +0 8 * * 1-5 /usr/bin/env DISPLAY=:0 /usr/bin/xset dpms force on +0 16 * * 1-5 /usr/bin/env DISPLAY=:0 /usr/bin/xset dpms force off +``` + diff --git a/content/projekty/interni-meteostanice/main.jpg b/content/projekty/interni-meteostanice/main.jpg new file mode 100644 index 0000000..e6cc35e Binary files /dev/null and b/content/projekty/interni-meteostanice/main.jpg differ diff --git a/content/projekty/project-0.md b/content/projekty/project-0.md deleted file mode 100644 index 6ec5d68..0000000 --- a/content/projekty/project-0.md +++ /dev/null @@ -1,4 +0,0 @@ -+++ -title = "Project 0" -description = "Lorem ipsum dolor sit amet, qui minim labore adipisicing minim sint cillum sint consectetur cupidatat." -+++ diff --git a/content/projekty/project-1.md b/content/projekty/project-1.md deleted file mode 100644 index 0b04070..0000000 --- a/content/projekty/project-1.md +++ /dev/null @@ -1,3 +0,0 @@ -+++ -title = "Project 1" -+++ diff --git a/content/projekty/rebelix/extruder-packa.jpg b/content/projekty/rebelix/extruder-packa.jpg new file mode 100644 index 0000000..69657cb Binary files /dev/null and b/content/projekty/rebelix/extruder-packa.jpg differ diff --git a/content/projekty/rebelix/index.md b/content/projekty/rebelix/index.md new file mode 100644 index 0000000..06fcabe --- /dev/null +++ b/content/projekty/rebelix/index.md @@ -0,0 +1,46 @@ ++++ +title = "3D tiskárna REBELIX" +date = 2020-05-08 + +[extra] +status = 2 +authors = ["David Zálešák", "Emil Miler"] +created = 2019-10-21 ++++ + +## Odkazy + +- [reprap4u.cz/rebelix](http://reprap4u.cz/rebelix/) +- [STL soubory a zdroje](https://github.com/RepRap4U/RebeliX) +- [Dual extruder](https://github.com/RepRap4U/RebeliX/tree/master/STL%20soubory/Extrudery/Dual_extruder_experimental_1.75) + +## Tištěné díly + +Rozhodli jsme se na výzvu doc. Rambouska postavit tiskárnu se dvěma tryskami. Rebelix má ke stažení experimentální dual extruder, který nahradil původní převodovaný extruder. Všechny díly jsou tištěny s následujícími parametry: + +- materiál PLA, +- výška vrstvy 0.3mm, +- tloušťka stěn 0.65mm (nižší pro úzké stěny, např. zuby pro řemen), +- výplň 35%. + +Většina dílů je převzata z [GitHub repozitáře](https://github.com/RepRap4U/RebeliX) RepRap4U. Pro uchycení hotendů byl použit [upravený díl](https://www.thingiverse.com/thing:1628415) s kroužkem pro uchycení indukční sondy. + +### Vlastní úpravy dílů + +Jako vlastní vylepšení David upravil některé původní díly, z nichž všechny jsou ke stažení na našem [repozitáři se všemy díly](#) pro náš model tiskárny. + +Chtěli jsme původní M5 závitovou tyč nahradit trapézovými tyčemi se stoupáním 8mm, které mají větší průměr a jsou vedeny velkou maticí. Bylo třeba upravit koncové díly osy XZ, aby tyč seděla a matice bylo možné zašroubovat. + +Po změně předchozích dílů nebylo možné použít původní díly pro dual extruder, jelikož pravý motor by se zasekával o TR matici. Vozík osy X musel být zvýšen o 3mm a díry posunuty tak, aby se zachovala správná délka šroubů. + +Posledním upraveným dílem je páčka pro přítlak filamentu na dual extruderu, která je v původním návrhu krátká a je obtížné ji otevřít pro práci s filamentem. David páčku prodloužil a zkosil, aby za ní lépe tahat bez lámání nehtů. Také byla prodloužena oválná díra na šroub s pružinkou pro přítlak, aby bylo možné páčku více vyklánět bez zasekávání o šroub. + +![Páčka extruderu](extruder-packa.jpg) + +## Hardware a spojovací materiál + +## Elektronika + +## Firmware + + diff --git a/content/projekty/rebelix/main.jpg b/content/projekty/rebelix/main.jpg new file mode 100644 index 0000000..85a01bd Binary files /dev/null and b/content/projekty/rebelix/main.jpg differ diff --git a/content/projekty/rgb-mixer/index.md b/content/projekty/rgb-mixer/index.md new file mode 100644 index 0000000..6040509 --- /dev/null +++ b/content/projekty/rgb-mixer/index.md @@ -0,0 +1,27 @@ ++++ +title = "RGB Mixér" +date = 2020-01-03 + +[extra] +status = 2 +authors = ["David Zálešák", "Emil Miler", "Lukáš Hozda"] +created = 2019-12-29 ++++ + +## Komunikační protokol + +Vysílač odesílá paket s daty, ve kterém je obsažená adresa kanálu [R, G, B] a osmibitová hodnota (0-255) stavu kanálu. Každý paket může bát odeslán několikrát pro zvýšení spolehlivosti přenosu, ovšem snižuje se tím rychlost možných změn. + +Rozložení datového paketu: + +``` ++---------+-------+ +| channel | value | ++---------+-------+ + 8b 8b +``` + +## Software + +Zdrojový kód k vysílači i přijímači je v našem [Git repozitáři](https://git.microlab.space/microlab/rgb-mixer/src/branch/master/src). + diff --git a/content/projekty/rgb-mixer/main.jpg b/content/projekty/rgb-mixer/main.jpg new file mode 100644 index 0000000..83bf721 Binary files /dev/null and b/content/projekty/rgb-mixer/main.jpg differ diff --git a/content/projekty/sdr/index.md b/content/projekty/sdr/index.md new file mode 100644 index 0000000..142caf6 --- /dev/null +++ b/content/projekty/sdr/index.md @@ -0,0 +1,65 @@ ++++ +title = "Softwarově Definované Rádio" +date = 2022-04-19 + +[extra] +status = 2 +authors = ["David Zálešák", "Emil Miler"] +created = 2019-10-21 ++++ + +SDR je modrní druh rádia, který funguje na principu, že co největší část zpracování signálu probíhá softwarově v počítači. Nevýhodou je složitá matematika a náročnost na výpočetní výkon, ovšem v dnešní době už výpoetní výkon není problém. + +Se softwarově definovaným rádiem lze přijímat obrovské množství signálů, přičemž některá zařízení umí i vysílat. To lze využít například pro testování bepečnosti v rámci radiokomunikací. + +## Seznam sub-projektů + +- [Stavba antén](@/projekty/sdr/stavba-anten/index.md) +- [Replay útok](@/projekty/sdr/replay/index.md) +- [Pager](@/projekty/sdr/pager/index.md) +- [Odchytávání dat na 433MHz](@/projekty/sdr/rtl_433/index.md) + +## Náš hardware + +### Rádia + +- [BladeRF 2.0 XA4](https://www.nuand.com/bladerf-2-0-micro/) + - RX 70 -- 6000 MHz + - TX 47 -- 6000 MHz + - ADC + - 61.44 MSPS (56 MHz bandwidth filter) + - +8 dBm output + - 3383 kb FPGA +- [HackRF One](https://greatscottgadgets.com/hackrf/one/) (2x) +- [RTL-SDR](https://osmocom.org/projects/rtl-sdr/wiki/Rtl-sdr) +- DVB-T tuner s [RTL2832U](https://www.realtek.com/en/products/communications-network-ics/item/rtl2832u) + +### Antény + +- [ANT500](https://greatscottgadgets.com/ant500/) + +## Užitečné odkazy + +- [brmlab.cz/project/sdr](http://brmlab.cz/project/sdr/start) +- [sigidwiki.com](https://www.sigidwiki.com/wiki/Signal_Identification_Guide) + +## Software + +- [Gqrx](http://gqrx.dk/) – Univerzální přijímač s demodulátorem. +- [Gqrx-scanner](https://github.com/neural75/gqrx-scanner) – Frekvenční skener pro Gqrx. +- [Kukuruku](https://brmlab.cz/user/jenda/kukuruku) – Interaktivní SDR klient od [Jendy Hracha](https://jenda.hrach.eu/). +- [Fldigi](http://www.w1hkj.com/) – Modem pro zvukovou kartu k (de)modulaci a (de)kódování mnoha signálů. +- [GNURadio](https://www.gnuradio.org/) – Švícarský nůž pro SDR. +- [GNURadioCompanion](https://wiki.gnuradio.org/index.php/GNURadioCompanion) – GUI ke GNURadiu. +- [Universal Radio Hacker](https://github.com/jopohl/urh) – Software pro snadnou analýzu protokolů. +- [qradiolink](https://github.com/qradiolink/qradiolink) – Multimode SDR pro VOIP. +- [SDRangel](http://www.sdrangel.org/) – Mocný klient pro SDR. +- [SigDigger](https://batchdrake.github.io/SigDigger/) – SDR klient podobný GQRX, ale nevyužívá GNURadio. + +## Přednášky a články + +- Jan Hrach – [Softwarově definované rádio](https://invidio.us/watch?v=i1ZB70nPF-g) +- Jan Hrach – [Efektivní implementace útoku na šifru A5/1](https://invidio.us/watch?v=IA3NaCoA_v4) +- [SDR with HackRF](https://greatscottgadgets.com/sdr/), Podrobný videonávod základů SDR s HackRF +- [Radiokompas](https://web.archive.org/web/20200816211029/petr-kubac.blog.cz/1301/radiokompas-1) + diff --git a/content/projekty/sdr/main.jpg b/content/projekty/sdr/main.jpg new file mode 100644 index 0000000..0386cc5 Binary files /dev/null and b/content/projekty/sdr/main.jpg differ diff --git a/content/projekty/sdr/pager/index.md b/content/projekty/sdr/pager/index.md new file mode 100644 index 0000000..a83fae6 --- /dev/null +++ b/content/projekty/sdr/pager/index.md @@ -0,0 +1,15 @@ ++++ +title = "Pager" +date = 2020-09-12 ++++ + +## Nokia RDS Alpha + +Funguje pravděpodobně v pásmu VKV (OIRT) 66-73 MHz. + +- +- +- + +![](rds-alpha.jpg) +![](rds-alpha-sn.jpg) diff --git a/content/projekty/sdr/pager/rds-alpha-sn.jpg b/content/projekty/sdr/pager/rds-alpha-sn.jpg new file mode 100644 index 0000000..952f3f4 Binary files /dev/null and b/content/projekty/sdr/pager/rds-alpha-sn.jpg differ diff --git a/content/projekty/sdr/pager/rds-alpha.jpg b/content/projekty/sdr/pager/rds-alpha.jpg new file mode 100644 index 0000000..06abf00 Binary files /dev/null and b/content/projekty/sdr/pager/rds-alpha.jpg differ diff --git a/content/projekty/sdr/replay/index.md b/content/projekty/sdr/replay/index.md new file mode 100644 index 0000000..60f04c4 --- /dev/null +++ b/content/projekty/sdr/replay/index.md @@ -0,0 +1,16 @@ ++++ +title = "Replay útok" +date = 2019-12-21 ++++ + +Jde o útok, jehož principem je nahrání signálu a jeho zpětném přehrání. Tento útok lze aplikovat na bezdrátové zvonky, otevírání garážnách dvěří, mikrofony a headsety, dálkové odemikání automobilů, IoT zařízení a na podobné bezdrátové implementace. + +Jdnoduché vysvětlení je na příkladu bezdrátového zvonku, kde před domem je umístěno tlačítko a v bytě je do sítě připojen přijímač. Přijímač poslouchá na dané frekvenci a pokud zachytí specifický signál, zahraje tón. Přijímač jsou s vysílačem dohodnuti na společném binárním kódu. Ten lze odchytit a později přehrát, tj. zvonit na zvonek bez přístupu k originálnímu vysílači. + +![Waveform zachyceného signálu](waveform.png) + +{# audio(src="zvonek.ogg") #} + +Na obrázku jsou vidět zakódovaná binární data `0010001100100100010100010`, tj. 26 bitů zamodulovaných v [ASK](https://cs.wikipedia.org/wiki/Kl%C3%AD%C4%8Dov%C3%A1n%C3%AD_amplitudov%C3%BDm_posuvem). Signál můžeme analyzovat v softwaru [Universal Radio Hacker](https://github.com/jopohl/urh), který vám usnadní jeho dekódování. + +{# video(src="replay.mp4") #} diff --git a/content/projekty/sdr/replay/replay.mp4 b/content/projekty/sdr/replay/replay.mp4 new file mode 100644 index 0000000..f5069b4 Binary files /dev/null and b/content/projekty/sdr/replay/replay.mp4 differ diff --git a/content/projekty/sdr/replay/waveform.png b/content/projekty/sdr/replay/waveform.png new file mode 100644 index 0000000..e4fe06b Binary files /dev/null and b/content/projekty/sdr/replay/waveform.png differ diff --git a/content/projekty/sdr/replay/zvonek.ogg b/content/projekty/sdr/replay/zvonek.ogg new file mode 100644 index 0000000..f3af76e Binary files /dev/null and b/content/projekty/sdr/replay/zvonek.ogg differ diff --git a/content/projekty/sdr/rtl_433/index.md b/content/projekty/sdr/rtl_433/index.md new file mode 100644 index 0000000..a9349cb --- /dev/null +++ b/content/projekty/sdr/rtl_433/index.md @@ -0,0 +1,30 @@ ++++ +title = "Odchytávání dat na 433MHz" +date = 2021-11-17 ++++ + +## HackRF + +``` +rtl_433 -d HackRF -g AMP=1,LNA=33,VGA=62 -f 433.92M -C si -s 2000k +``` + +Ve výchozím nastavení očekává `rtl_433` RTL-SDR. Pokud používáme jiné rádio, je nutné předat přepínač `-d ""`, který vybere defaultní rádio v seznamu soapysdr, nebo můžeme specifikovat přímo `-d HackRF`. + +Pro správný příjem signálu je nutné nastavit GAIN. HackRF má tři možná nastavení příjmu, tj. `-g AMP=0,LNA=16,VGA=20`. + +> HackRF (both Jawbreaker and One) provides three different analog gain controls on RX and two on TX. The three RX gain controls are at the RF (“amp”, 0 or 14 dB), IF (“lna”, 0 to 40 dB in 8 dB steps), and baseband (“vga”, 0 to 62 dB in 2 dB steps) stages. The two TX gain controls are at the RF (0 or 14 dB) and IF (0 to 47 dB in 1 dB steps) stages. + +V ideálním případě je předzesilovač `AMP` na hodnotě 0, pomocí `LNA` se nastaví dostatečně silný příjem bez šumu a signál se poté může softwarově zesílit pomocí `VGA`. + +Frekvence může být jedna `-f 433.92M`, nebo lze přeskakovat mezi více frekvencemi v intervalu, například: + +``` +-f 433.92M -f 434M -f 315M -H 30 +``` + +Tento modifikátor by způsobil, že program by ladil frekvence 433.92MHz, 434MHz a 315MHz v intervalu 30s. + +Přepínačem `-C si` nastavíme výstup v metrických jednotkách a přepínačem `-s 2000k` nastavíme sample rate. + +![rtl_433 output](rtl_433-output.png) diff --git a/content/projekty/sdr/rtl_433/rtl_433-output.png b/content/projekty/sdr/rtl_433/rtl_433-output.png new file mode 100644 index 0000000..87afcbf Binary files /dev/null and b/content/projekty/sdr/rtl_433/rtl_433-output.png differ diff --git a/content/projekty/sdr/stavba-anten/index.md b/content/projekty/sdr/stavba-anten/index.md new file mode 100644 index 0000000..5e377ff --- /dev/null +++ b/content/projekty/sdr/stavba-anten/index.md @@ -0,0 +1,24 @@ ++++ +title = "Stavba antén" +date = 2020-09-12 ++++ + +## Zajímavé odkazy + +- [Three Easy DIY Antennas for Beginners](https://discussions.flightaware.com/t/three-easy-diy-antennas-for-beginners/16348) +- [Spider omni](https://lucsmall.com/2017/02/06/making-antennas-for-1090mhz-ads-b-aircraft-tracking/) + +## Vzorec pro výpočet délky antény + +``` +vlnova_delka = rychlost_svetla / frekvence +``` + +Rychlost světla je `299.972458 m/s`. + +## Spider omni + +### Nákupní seznam + +- [Koaxiální konektor do panelu](https://www.gme.cz/koaxialni-konektor-uhf-zz) +- Měděný drát diff --git a/content/projekty/teplomer-do-udirny/index.md b/content/projekty/teplomer-do-udirny/index.md new file mode 100644 index 0000000..75fcec1 --- /dev/null +++ b/content/projekty/teplomer-do-udirny/index.md @@ -0,0 +1,30 @@ ++++ +title = "Teploměr do udírny" +date = 2021-10-31 + +[extra] +status = 2 +authors = ["David Zálešák", "Emil Miler"] +created = 2020-07-11 ++++ + +Cílem projektu je vytvořit zařízení, které měří teplotu libovolným počtem teplotních čidel umístěných uvnitř domácí udírny. Výstupy z čidel jsou posílány po síti formou webové stránky na lokálním serveru přímo na zařízení a na integrovaném displeji. + +## Hardware + +Základem je deska *TTGO T-Display ESP32* s integrovaným IPS LCD. + +Pro měření teploty jsou využita digitální čidla [DS18B20](https://www.gme.cz/digitalni-teplotni-cidlo-s-ds18b20) ve vodotěsném balení s kabelem. Čidlo DS18B20 funguje na systému *1-Wire* a je tedy snadné využívat libovolné množství čidel bez složitého zapojování GPIO. Teplotní rozsah měřitelný tímto čidlem je -55 až +125°C, což pro potřeby udírny stačí, nýbrž teplota v udírně nepřesáhne 120°C. + +## Příprava pro kompilaci + +Je třeba stáhnout knihovny `WiFi.h`, `ESPAsyncWebServer.h`, `DS18B20.h` a `TFT_eSPI.h`. Je ovšem třeba stáhnout modifikovanou verzi knihovny TFT_eSPI, aby správně fungoval integrovaný displej. V souboru `User_Setup_Select.h` je nutné odkomentovat řádek `#include `. + +:: todo: jak přidat ESP32 toolchain, git + +## Verze 1 + +První verze teploměru byla postavená na *DOIT ESP32 DEVKIT V1*. Na něm běžel web server a připravená webová stránka ukazovala výstupy všech nalezených čidel. Zároveň byl dostupný XML výstup pro nativní Androdi aplikaci. V praxi se ukázalo, že lepším řešením je jednoduše sledovat stav zkrze webovou stránku a XML s Android aplikací bylo ve druhé verzi smazáno. + +Zároveň se objevil nový požadavek, a to displej s hodnotami senzorů přímo na zařízení, což je hlavní věc, která vedla ke tvorbě druhé verze. + diff --git a/content/projekty/teplomer-do-udirny/main.jpg b/content/projekty/teplomer-do-udirny/main.jpg new file mode 100644 index 0000000..1c519ef Binary files /dev/null and b/content/projekty/teplomer-do-udirny/main.jpg differ diff --git a/content/projekty/timer/index.md b/content/projekty/timer/index.md new file mode 100644 index 0000000..5dfac9b --- /dev/null +++ b/content/projekty/timer/index.md @@ -0,0 +1,18 @@ ++++ +title = "Timer" +date = 2019-12-18 + +[extra] +status = 3 +authors = ["Emil Miler", "Lukáš Hozda"] +created = 2019-11-28 ++++ + +Někteří z nás využivají ve vlastní výuce projektor k promítání zbývajícího času během psaní písemných pací. Existující řešení se nám zdála zbytečně složitá, ošklivá a webové stránky, na kterých se časovače nachází, jsou plné spywaru. Proto poskytujeme vlastní aplikaci. + +[microlab.space/time](https://microlab.space/time) + +Aplikace akceptuje jako vstup čas ve formátech `hh:mm:ss`, `mm:ss`, nebo jen celé číslo s počtem vteřin. + +Zdrojový kód se nachází na našem [GIT repozitáři](https://git.microlab.space/em/timer). + diff --git a/content/projekty/timer/main.png b/content/projekty/timer/main.png new file mode 100644 index 0000000..c42742e Binary files /dev/null and b/content/projekty/timer/main.png differ diff --git a/content/projekty/video-studio/index.md b/content/projekty/video-studio/index.md new file mode 100644 index 0000000..cdf72ac --- /dev/null +++ b/content/projekty/video-studio/index.md @@ -0,0 +1,42 @@ ++++ +title = "Video studio" +date = 2020-09-22 + +[extra] +status = 2 +authors = ["Albert Pospíšil", "David Zálešák", "Emil Miler"] +created = 2019-10-27 ++++ + +V rámci spolku provozujeme, společně s pomocí naší katedry, video studio pro streamování a nahrávání různých rozhovorů, seminářů a přednášek. + +Iniciativa k vytvoření většího studia přišla ze spolku [La Vie Bohème](https://www.facebook.com/LaVieBohemePedFUK/), kdy Tomáš Vonšovský přišel s nápadem vytvořit talk show [K tabuli půjde](https://www.facebook.com/K-tabuli-p%C5%AFjde-110891907052193/) z prostředí naší fakulty. + +Studio je navržené modulárně, tj. je možné ho přenést a sestavit celkem rychle a dle aktuálních potřeb. Je často využíváno na záznamy a prezentace pořádané katedrou, našim spolkem, nebo ve spolupráci s jinými spolky. Studio je také využito pro práci se zelným plátnem ve spojení s virtuální realitou. + +## Hardware + +### Video + +K záznamu videa z externích kamer používáme nabírací kartu [Blackmagic DeckLink Quad HDMI Recorder](https://www.syntex.cz/blackmagic-design-decklink-quad-hdmi-recorder), která umožňuje nabírat čtyři různé zdroje videa rychlostí až 60 snímků za vteřinu. Jako kamery lze využít jakékoliv zařízení, které umí posílat obraz živě pomocí HDMI do nabírací karty. + +Seznam dostupných videokamer: + +- [Canon XA40](https://www.usa.canon.com/internet/portal/us/home/products/details/camcorders/professional/xa40) -- 4K UHD YCC 4:2:0 8-bit 30p, FHD YCC 4:2:2 10-bit 50/25p (HDMI), XLR Phantom, IS, ... +- Canon ??? (3x) +- [Canon 60D](https://www.usa.canon.com/internet/portal/us/home/products/details/cameras/eos-dslr-and-mirrorless-cameras/dslr/eos-60d) (microlab) -- FHD 30p ALL-I +- [Canon RP](https://www.usa.canon.com/internet/portal/us/home/products/details/cameras/eos-dslr-and-mirrorless-cameras/mirrorless/eos-rp/eos-rp) (Emil) -- FHD 60p, 4K (crop, rolling shutter, 💩) +- Nikon ??? + +### Zvuk + +## Software + +K práci se vstupy, živému střihu, nahrávání a streamování je použit program [OBS Studio](https://obsproject.com/), který pro naše potřeby bohatě stačí. Navíc je distribuovaný pod svobodnou licencí a funguje na operačním systému GNU/Linux. + +V OBS jsou vytvořeny scény, které jsou namapovány na čísla klávesnice pro snadné přepínání mezi nimi. První čtyři scény jsou vstupy ze snímací karty, tj. čtyři externí kamery. Dle potřeby jsou přidány další scény, obrázky atp. + +## Schéma standardního zapojení + +![Schéma zapojení](schema-zapojeni.png) + diff --git a/content/projekty/video-studio/main.jpg b/content/projekty/video-studio/main.jpg new file mode 100644 index 0000000..344fa1e Binary files /dev/null and b/content/projekty/video-studio/main.jpg differ diff --git a/content/projekty/video-studio/schema-zapojeni.png b/content/projekty/video-studio/schema-zapojeni.png new file mode 100644 index 0000000..c5385d7 Binary files /dev/null and b/content/projekty/video-studio/schema-zapojeni.png differ diff --git a/content/projekty/video-studio/schema-zapojeni.xml b/content/projekty/video-studio/schema-zapojeni.xml new file mode 100644 index 0000000..0828670 --- /dev/null +++ b/content/projekty/video-studio/schema-zapojeni.xml @@ -0,0 +1 @@ +7Ztbc+MmFIB/jR43I6Gb/Rjb691Omjatd2bTvmGJSIqR8GAc2/n1BQt0w3G9SVZSU3kyE3E4IOB8HI5AMuxpuv9C4Tq+JSHCBjDDvWHPDAAsBwBD/JnhIZeMgZkLIpqEUqkULJJnJIVKbZuEaFNTZIRglqzrwoBkGQpYTQYpJbu62gPB9buuYYQ0wSKAWJd+T0IWS6nljcuMryiJYnnrEfDzjCUMVhEl20zezwD2w/GXZ6dQ1SU7uolhSHYVkf3ZsKeUEJZfpfspwmJs1bDl5eYv5BbtpihjFxXwHTcv8wTxFqlGH5vGDmo4UMhHRyYzkvF/k2MfkajF5KnHbbpuKMQsxTxl8cuik0IVwyXCk2KYpgQTWpbaMEjZtbBgQzZPMJY1oCxUGgGGm00S5EKpIu74iBg7SKzglhEuIpTFJCIZxL8SslYtY5SskGoDNxaYuxN/WuQo49tc8kAyNodpggXTXxF+QiwJoMyQ97I8ma5WaTuOOxNVrmGQZBGXujylW0oab0O2NECFeSRxfAwipBR9z8mlwjCVwtLGXxBJEaMHrkARhix5qmMN5eyICr2SEH4hIXkRGK+3wJQ4VJmx6szIgiUw5v8AGN/qEBh/AOY/B4xndgjMqLfADEvSS8C4dofAjDVgfp8sNGZKQMRA7+KEoQUfAJG743HsGwipmqwmrFmLw3DKrq+14vz443KIkygT6HG7IaoKyn5bmpkhDWStPk+tEU34kCO6KJTAORaeEGVof9bCMtceSR8iHwJsU87rXSWkVn4mrkTTvvkeUCggK1AsGEUw7TkXaOR6DriUC+dHuKhz0KSkLS4sy61zYdk6F+4JLrz34WIIRyqw8Efa8ZHCV64u5/ir44b2CbtX3eHXf4mmX6mc2V4tpSJxkIkQbuJiYorEHWQcyewoAaZz+aLlgZNRToeLltvfKOdDc3gpMOZJYECHwOhRzgBM74Hp8MFbtagCzO0v9z0Pf4Rdw3exYk/DH3tUD38c375y2wyAFJJVLJIVJXxAes6G5yyXqI3QuC0WPMvsmAWgsXBnTF1jPE4ejaltXM9SaEwdYzQb0Gj76bnuJjzQNhr68/MN5uuxoMJaDTi0i4PvmB3j4Gg4/J2z8Jz1fk9lbo58020Bh74EFZbjtAmHr4cUv8FlvoBQGOQXPH/FHw5gz1mxAITLj8yKN27uv4GrcfXXKjl6AHIDU0T7TolnBZ64d6uUmC1SMjYbjynOid37n8iFHn1oRJzd7LA62Ox4/WYGuL6euG1sZjSdTgPrpYlsJM6a/m3f5kXC6psiamFovI3Q4S6ar8cxg8Ppo8OxXb/dCNd/65twg8vpscvp8I05X39jbnA5fXQ5wGs39n3rSfTgcHrscLwOHY5+tDw4nD46HGvU8i6e/9Yz5MHl9NjljDpzOetvN39m37NP6+fY2jzc/hHNd58sf6QfQC/wNojzfWO2gqKvlBjAw7wTkyXlV5G4ynKNDUZcuec+66OdNDRfz2v7TPIFlPQd5h9zXMPLL629tcfZo4f7aqJSSiTLYseUKneZ8zvvan72Vwyy6B1JeBuLOeOqb1zknHGtYs6oSvI+yHLldNCqst36QZ8LGpMq76FW0XFeFT06NdV4svywMFcvv960P/8D \ No newline at end of file diff --git a/sass/style.scss b/sass/style.scss index d555ebf..7cd369a 100644 --- a/sass/style.scss +++ b/sass/style.scss @@ -39,6 +39,10 @@ a { text-decoration: none; } +img { + max-width: 100%; +} + body>header { .img { display: block; @@ -110,6 +114,10 @@ body>main { padding: 1.5rem; background: $col-dark; + h2 { + margin: 3rem 0 2rem 0; + } + h2:before { content: ""; display: block; @@ -196,6 +204,9 @@ body>footer { display: block; height: 100%; width: 12rem; + // !important delcarations are needed here, because some browsers override the inline `background-image` (from templates/macros.html) to just `background`, which ignores these. + background-size: cover !important; + background-position: center !important; } } } diff --git a/templates/macros.html b/templates/macros.html index a0604af..25ead89 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -3,7 +3,7 @@ {% set_global image = "/static/img/project_placeholder.png" %} {% for asset in project.assets %} - {% if asset is matching("[img.](jpg|png)$") %} + {% if asset is matching("main\.(jpg|png)$") %} {% set_global image = asset %} {% break %} {% endif %} diff --git a/templates/project b/templates/project deleted file mode 100644 index e69de29..0000000 diff --git a/templates/project.html b/templates/project.html index da74400..b510331 100644 --- a/templates/project.html +++ b/templates/project.html @@ -3,9 +3,9 @@ {% block content %}

{{ page.title }}

- {{ page.content | safe }} + {{ page.description }}
- … + {{ page.content | safe }}
{% endblock content %}