Sběrnice počítače


OctopusLAB 79
Sběrnice počítače

Konečně se dostáváme k prvním konkrétním částem našeho univerzálního počítače. Jen si připomeňme, že navazujeme na předchozí díly a rozšiřujeme Univerzální digitální rozhraní (Universal digital interface – UDI), které patří mezi jeden z našich dlouhodobých nekomerčních projektů. Cílem by pak mohl být jednoduchý funkční počítač, respektive jeho části v různých variantách od funkčních napodobenin (replik), přes emulaci (převážně na ESP32) až po čistě softwarovou simulaci na stolním počítači. Tento stroj nese pracovní název RUR_23 (Retro Ultra Replica, ale samozřejmě je zde i inspirace čapkovými RUR, což jsou Rossumovi univerzální roboti).
Pracovní verze dostupných podkladů postupně vzniká na Githubu:
https://github.com/octopuslab-cz/octopus_23_rur

Osmibitová sběrnice

Počítačová sběrnice (anglicky bus) tvoří hlavní „datovou páteř“ celého zařízení. První jednoduchou částí, kterou si vytvoříme, bude zobrazovací jednotka. Ta plní jedinou funkci – má ukázat aktuální stav, co se na dané sběrnici děje. Většina historických počítačů nedávala programátorům/operátorům ani jinou možnost, než pomocí žároviček ukazovat hodnoty jedna nebo nula (svítí, nesvítí) na sběrnici nebo v jednotlivých registrech.
Pro náš projekt to bude datová sběrnice osmibitová. Jeden z projektů je čtyřbitový procesor 4004, na který nám to stačí. Ostatní jsou v převážné většině osmibitové (až na výjimky, kde si poradíme jinak).
Zkusíme to v první fázi bez ohledu na další požadavky a navrhneme si triviální signalizaci pomocí osmi LED (svítivých diod) s připojenými odpory (na omezení proudu). Na obrázku vidíte část (první pětici).

Pro některé projekty (převážně open source) se nám na kreslení schémat a návrhy plošných spojů osvědčil program KiCad, který je s každou svou novou verzí o něco lepší. Minulý týden byla uvolněna nejnovější pracovní verze 0.7 a tak upravenou variantu 0.2 našeho zobrazovače už vytvářím v ní. Jednoduchý plošný spoj navrhuji s variantní možností osazení buď pro osm samostatných rezistorů R1-R8 nebo pro jedno odporové pole RN1 – osmice rezistorů v jenom pouzdře, hodnota 1k je pro soudobé vysocesvítivé diody s malým proudem asi rozumným kompromisem. Ale zkuste si podle toho, jaké barvy konkrétně zvolíte. Návrh opět počítá s možností osadit LED i „na ležato“ nebo použití větší SMD verze.

Základní návrh se opírá o jednoduchou logiku: při logické nule („žádné“ napětí) LED nesvítí a při logické jedničce (5 V) LED svítí.
Mezní hodnoty pro logickou nulu (Low) jsou obvykle v rozmezí 0 V až 0,8 V. Pro logickou jedničku (High) je to nejčastějí od 2 V až do „Ucc“ (Kde Ucc může být 5 V nebo i 3.3 V). Tyto hodnoty závisí na typu hradla a mohou se lišit mezi jednotlivými výrobci.

Z obrázku je patrno, že původní návrh (varianta A) se dá osadit i na univerzální destičce. Další verze (na obrázku B) už je na plošném spoji a je určena k připojení na sběrnici (spodní větší deska PCB), v našem případě ještě přes speciální oddělovač/budič „registr“. V horní části C je 3D tištěná čelní část, ve které jsou svítivky uchycené.)
Proč nejsou diody připojeny přímo na sběrnici? K naší sběrnici totiž budeme chtít připojit také vstupní část (tlačítka nebo přepínače), dále ji budeme chtít propojit s procesorem a pamětí (podle von Neumanova diagramu) a možná i k některým dalším periferiím. Rozhodně nemůžeme mít na sběrnici všechna data najednou, to je asi zřejmé. Proto nás zajímá řízení sběrnice s využitím oddělovačů/řadičů a budičů. Ale o tom až příště.


OctopusLAB 80
Modul vstupu osmibitové sběrnice

V minulém díle jsme si ke sběrnici „natvrdo připojili“ signalizační LEDky. Také jsme ale naznačili, že na připojení více portů se musí použít speciální obvody.

Pro emulátory (nebo repliky) postačí dění na sběrnici pouze simulovat. K tomu se dá použít třeba I2C expandér (osmi nebo šestnáctibitový). V tomto případě je celá vícebitová sběrnice zúžena na dva stavové bity (data a hodinové pulsy) a oddělení jednotlivých „portů“ nám vyřeší samostatně adresovatelná I2C zařízení (například zmíněný expandér). Využívá se toho i v případě malých mikrokontrolérů, kde nemáme dost datových pinů, ale umíme pracovat s I2C. Na obrázku je náš oblíbený Attiny85 s expandérem PCF. Osminohý „brouk“ může tak obsloužit celých osm bitů digitálních vstupů či výstupů.

My však stavíme zařízení, kde potřebujeme na sběrnici přímý přístup na různých úrovních jednotlivých modulů (vstupy, výstupy, paměti, procesor). V dalším kroku si proto připravíme koncept jednoduchého modulu 8bitových vstupů. Chceme mít přepínače, na kterých se nastaví hodnota (jedna nebo nula) a signalizaci, ze které snadněji vyčteme celkový aktuální stav. Bude to trochu připomínat minulou verzi, kde byly pouze výstupní signalizační LEDky, ale připojením spínačů nám vznikla jakási „vnitřní sběrnice“ (MAIN internal BUS). Pokud bychom chtěli použít přímo stavy spínačů, máme ji vyvedenu na samostatném portu (J1 na obrázku). No a k této sběrnici pak připojíme (úplně napravo) speciální obvod, který nám ji oddělí od hlavní osmibitové sběrnice – to je ta, se kterou celé zařízení bude komunikovat navenek (s procesorem, pamětí apod.).

Deska je navržena tak, že se dá použít i s více typy spínačů. Používáme miniaturní přepínače ON/OFF a obě základní možnosti vidíte na obrázku. Také si můžete prohlédnout, jak vypadá modifikovaná knihovna footprintu (Používám KiCad verze 7).

Poupravili jsme si „footprint“, což je fyzická reprezentace součástky (v našem případě spínače) na desce plošného spoje, zahrnující rozměry, tvary a umístění kontaktních plošek. Nikde není psáno, že nemůžeme vytvořit základ pro více variant a až podle potřeby si zvolit, kterou verzi součástky osadíme. Proto si v OctopusLABu velmi často vytváříme vlastní knihovny, které nám umožní zvýšit flexibilitu projektů. Na 3D tiskárně jsme si také vytiskli jednoduchý držák, který usnadní rovnoměrnost rozložení při montáži a činí modul kompaktnějším. Na desce PCB máme vyvedeny obě sběrnice (vnitřní i vnější oddělenou, která bude připojena k hlavní).


Pro oddělení vnitřní sběrnice od hlavní jsme použili integrovaný obvod 74244 (přesněni SN74LS244N – s anglickým popisem octal tri-state buffer/line driver). Tento obvod má dvě čtveřice nezávislých vstupů a výstupů, které dokáží řídit signály s napětím 5V. Umožňuje tak výstupní signál z každého vstupu buď „povolit nebo zakázat“. Když je řízený vstup zakázán, výstupní signál se nachází v takzvaném režimu vysoké impedance (velký vnitřní odpor) a nevytváří tak znatelný odběr proudu z připojeného zařízení. Tento princip se používá k řízení sběrnic a k zabránění konfliktů při přenosu dat.




OctopusLAB 81
Budiče a oddělovače sběrnice

Přestože nám běžné pracovní povinnosti umožní věnovat se našemu projektu jen omezeně, jisté hrubé obrysy a první verze některých modulů RUR_23 už pomalu vznikají. Na obrázku jsou přepínačové vstupy z minulého čísla i LED výstupy z čísla předminulého. Úplně nahoře je sestava ESP32 s osmibitovým expandérem, která slouží pro první testování. Vlevo uprostřed je pak modul osmibitového počítače s procesorem 8085 (Minimal 8085 Single Board Computer), ke kterému bychom rádi celou sestavu jednou také připojili.
Aktuálně zvažujeme, kterým směrem se v projektu přednostně vydat. Rádi bychom oživili některé repliky historických počítačů či jejich periferií. Pak bychom také rádi vytvořili vlastní verze s osmibitovými procesory 8085 a Z80 (možná i dalšími). A k tomu ještě chceme pokročit i v emulátoru na ESP32, který mnohé procesorové desky i moduly periferií relativně snadno zvládne.
Napište nám, zda by vás víc zajímaly stoje běžící „na“ historických součástkách a principech nebo moderní repliky a emulátory, které pro nezasvěceného pozorovatele mohou vypadat stejně, ale o principech počítače mohou vypovědět mírně odlišný příběh.

Některé vhodné integrované obvody (nejen pro sběrnice)

Při návrhu jednoduchého počítače vlastní konstrukce se můžeme potýkat s mnoha situacemi. Jednou ze základních je chování dat na sběrnicích. A jak jsme již v minulém díle naznačili, můžeme využít některé již hotové (a stále dostupné) integrované obvody. Modely s označením 74XX patří do skupiny TTL (Transistor-Transistor Logic), což znamená, že pracují s logickými úrovněmi v rozsahu 0 až 5 V. Pro základní popis obvodů jsme čerpali z více zdrojů, například u tradičního výrobce Texas isntruments: www.ti.com/. Většina z nich je stále k dostání například i u TME (www.tme.eu/cz/). Bývají dostupné v různých typech pouzder, jako jsou DIP (Dual in-line package) či SOP (Small Outline Package). Používají se totiž stále v široké škále elektronických zařízení, jako jsou počítače, tiskárny a průmyslové přístroje.

74244 (SN74LS244)

(8-ch, 4.75-V to 5.25-V bipolar buffers with 3-state outputs)
Tento neinvertující budič sběrnice má dva samostatně řízené čtyřbitové porty. Je tedy celkem osmibitový a je „jednocestný“, což znamená, že signál může proudit pouze jedním směrem – od vstupů k výstupům. Tento obvod se obvykle používá pro zesílení signálu nebo pro oddělení zařízení od citlivých výstupů.
V katalogovém listu se mimo jiné dozvíme:
Input type: Bipolar | Output type: 3-State (takže výstup je s třístavový).
IOL (Max) 28 mA | IOH (Max) -15 mA, takže při výstupní logické nule obvodem může téct až dvojnásobný proud (údaje různých výrobců a šarží se mohou lišit).


74245 (SN74LS245)

(Octal bus transceivers)
Podobný obvod pro osmibitové sběrnice. Je ale obousměrný, což znamená, že umožňuje proudění signálu v obou směrech. Tento obvod má osm vstupů a osm výstupů, které mohou být použity jako vstupy nebo výstupy podle toho, jak je obvod konfigurován. Je používán v systémech, které vyžadují komunikaci mezi více čipy nebo periferiemi, jako jsou právě sběrnice.


74373 (SN74LS373)

(Octal D-type Transparent Latches with 3-state Outputs)
Jedná se o obvod typu Latch s osmi vstupy a osmi výstupy. Používá se k ukládání a udržování dat v digitálních systémech. Každý z osmi vstupů lze nastavit na logickou hodnotu „1“ nebo „0“ pomocí signálů přivedených na příslušný vstup. Tato hodnota zůstane na výstupu uložena, dokud se nezmění stav na příslušném vstupu. Obvod reaguje na tzv. „náběžnou hranu“ (positive-edge triggered), což znamená, že data se uloží na výstupy v okamžiku náběžné hrany na řídícím (hodinovém) signálu.





OctopusLAB 82
Budiče a oddělovače sběrnice 2

V minulém díle jsme uvedli první část přehledu vybraných integrovaných obvodů. Mají jedno společné, jsou to speciální součástky především pro osmibitové sběrnice, které se používají už desítky let až do dneška. Určitě by stály za zmínku i další, ale zaměřili jsme se na ty, které v naší konstrukci použijeme. Takže ve výčtu ještě zmíníme jeden, který se dnes pokusíme i oživit:

74374 (SN74LS374)

Obvod reaguje na „sestupnou hranu“ (negative-edge triggered), což znamená, že data se uloží na výstupy v okamžiku sestupné hrany na řídícím signálu.
Tento obvod lze použít pro ukládání adres, řídících signálů nebo datových hodnot v počítačových a jiných digitálních systémech.
My ho použijeme jako „buffer“, který si zapamatuje jeden okamžik, ve kterém byl připojen na hlavní sběrnici a na výstupech zachová tento stav až do doby, kdy načteme jiný.

Při jednoduchém experimentování pouze s jedním modulem LEDek a jedním modulem vstupů na sběrnici si vystačíme s připojením řídícího pinu OE na zem. Pinem CP (clock) pak ukládáme stav ze vstupů do bufferu (slouží jako střadač / paměťový registr).

Toto je už verze č. 2, protože v té první jsem se dopustil jedné chyby, o které se chci více rozepsat, jelikož to není poprvé (ani naposled). Pokud chceme zobrazit na svítivé diodě logickou jedničku nebo nulu, bylo by žádoucí, aby v jedničce dioda svítila a v nule ne. Takže diodu připojíme přes odpor katodou k zemi a máme splněno. Když je na výstupu hradla (a tudíž na vstupu diody) logická „1“ (napětí), proud teče diodou do země a dioda svítí.
TTL hradla jsou ale logické obvody, které pracují s relativně malým proudem. Proto hradlo občas není schopno dodat dostatečný proud ani pro rozsvícení LED. Mezní hodnoty proudu používané v TTL hradlech se liší v závislosti na konkrétním typu hradla. Již minule jste si této zásadní charakteristiky mohli povšimnout:
IOL (Max) 28 mA | IOH (Max) -15 mA, takže při výstupní logické nule obvodem může téct až dvojnásobný proud (údaje různých součástek, výrobců a šarží se mohou lišit).
Takže na zobrazení „1“ s diodou spínanou k nule jsme omezeni proudem IOH a navíc, pokud zatížíme více výstupů, obvod se začne chovat nestandardně. Proto musíme logiku otočit a diodu rozsvítíme při logické nule (pak nám teče proud „od plusu“, ale ten je už dostatečný). Pro lepší zobrazování se používal ještě dodatečný spínací tranzistor, který by mohl jednak zvýšit možný proud diodou, ale především nám pak korektně signalizuje „0“ / „1“. V našem návrhu na to musíme myslet a nebude problém signalizovat stav invertovaně. Procesor načte, co je na sběrnici, pak odpojí vstupní signál od sběrnice a znegované to pošle po stejné sběrnici do bufferu, který udrží stav, který nás zajímá „na LEDkách“.



Blokové schéma modulu vstupů (přepínače) a výstupů (LED signalizace) na jedné společné datové sběrnici, ke které můžou být připojeny i další periferie (například paměti nebo procesor).



OctopusLAB 83
Základní oživení universální sběrnice

V tomto díle konečně propojíme vstup (osm přepínačů se signalizací) a výstup (střadač s osmi LEDkami) na společné osmibitové sběrnici. K té si připojíme i signalizaci, abychom mohli otestovat a zkontrolovat, že jsou tam pouze námi požadované stavy a zda se obvody chovají podle předpokladu.
Otestujeme jednoduché zadání, ve kterém na vstupu nastavíme jeden konkrétní BYTE, ten pošleme na sběrnici a ve třetím kroku ho uložíme do výstupního bufferu. Řídící vstupy jednotlivých obvodů jsme v první fázi zkoušeli řídit pomocí jednoduchých skriptů z ESP, ale vzhledem k jednoduchosti zapojení jsme se v tomto okamžiku vrátili k ovládání pomocí několika přepínačů. Je to názornější, intuitivnější a v tuto chvíli paradoxně i rychlejší.

  1. U modulu vstupních přepínačů ovládáme obvod 74LS244 tak, že k negovaným vstupům 1G/2G připojíme +Ucc (obvod sběrnici odpojí a výstup je ve stavu vysoké impedance) nebo GND – pak jsou stavy přepínačů připojeny ke sběrnici.
  2. Jednoduchý modul pro zobrazení stavu má osm LEDek, které spínáme k plusu (v logické nule svítí). Sjednotili jsme tak nastavení i s ostatními moduly a celou sběrnici pak vidíme invertovaně (negovanou: 1=0 / 0=1).
  3. Modul registru (buffer) obsahuje obvod 74LS374, který má dva řídící vstupy. První z nich aktivuje obvod a používá se v případě více obvodů pro výběr jednoho z nich. V našem případě nám stačí negovaný QE (E=enable) připojit k zemi a tím je obvod aktivován trvale. Dalším vstupem je CLK (clock), hodinový puls, který sestupnou hranou (z 1 do 0) uloží stav, který je připojen ke vstupům. Při správném použití spínače nám postačí „zapnout/vypnout“ a stav je uložen.

Celé reálné zapojení pak vidíte na obrázku. Vlevo jsou tři ovládací tlačítka, ze kterých se používají zatím jen dvě – pro CLK a G. Ve spodní části, která na obrázku není, máme samotnou sběrnici, kterou tvoří zatím jen několik propojených osmipinových hřebenů, ke kterým se napojují dílčí osmibitové rozhraní z každého modulu.

Ještě pro lepší pochopení, jak jsme testovali, si znázorníme i graficky. Na vstupech (INP.) jsme nastavili hodnotu (podobně jako je na fotce máme „10101101“). Hodnotu stavů vidíme na signalizačních LEDkách u přepínačů, jelikož jsou připojeny napřímo. Pokud je G (invertované G1/G2) v log. „1“ (připojeno na +Ucc) – pak je hlavní společná sběrnice odpojena, což by měl být výchozí stav.
Připojíme-li invertované G k zemi, data se dostanou i na sběrnici (BUS) – na obrázku vlevo.
Hodinovým pulsem (CLK) sestupnou hranou (1 do 0) se data „posunou“ do registru a zůstávají tam uchována až do dalšího přepsání. V tuto chvíli můžeme od sběrnice vstupy odpojit a LEDky na výstupu (REG) stále drží poslední (předchozí) uloženou hodnotu.
Pravá část obrázku ukazuje, jak se data se sběrnice uloží do registru (REG). Zatím nám slouží jen jako výstupní zobrazovací jednotka, ale v dalším kroku jí už budeme moci připojit k dalším periferiím (expander, paměť, procesor nebo mikrokontrolér).

Modulů máme více a starší verze (jsou to ty, co jsme použili v ukázce), můžeme případným zájemcům poskytnout. Pokud si „hrajete“ s číslicovou technikou nebo mikroprocesory, určitě se vám hodí. Ideálně, když se po domluvě zastavíte u nás v LABu (Praha Vršovice).




http://upgrade.kongju.ac.kr/data/ttl/74374e.html
https://www.ti.com/product/SN74LS244


OctopusLAB 84
Co všechno připojíme ke sběrnici?

V minulých dílech jsem popsal základ univerzální sběrnice, která funguje na principu výběru vstupů nebo výstupů pomocí oddělovačů sběrnice a jednoduchého registru. Ověřil jsem si správné fungování obvodů 74LS244 i 74LS374 na jedné společné osmibitové sběrnici.
V dalším kroku už můžeme naše rozhraní připojit k dalším obvodům. První z adeptů je paměť. Mám v plánu otestovat RAM (statickou) i ROM (respektive EEPROM). Takže je potřeba přidat i adresovací sběrnici, která pro první pokusy může být pouze „několikabitová“ a bude připojena k dalšímu modulu přepínačů. Takže například pouhými třemi přepínači bychom mohli adresovat osm osmibitových slov, což na první ověření postačí. V dalším kroku přejdu na adresování pěti nebo šesti bity (pro paměť 32 nebo 64 slov).

Jako kontrolér bude v první fázi určitě sloužit ESP32 s I2C šestnáctibitovým expandérem. Tato sestava zvládne i emulaci mnoha osmibitových procesorů. Směřuji ale ke komplexnějšímu projektu. Chtěli bychom i vytvořit základ osmibitového počítače ve stylu Altair nebo IMSAI. Zatím však postačí zaměřit se na jednoduchou sestavu jen z logických obvodů pro zapisování krátkých programových sekvencí do RAM paměti s možností spustit z ní případný program.

IMSAI 8080 byl osmibitový počítač, který byl představen v roce 1975. Stal se tak jedním z prvních osobních počítačů na trhu.
Tento počítač se stal populárním díky tomu, že byl použit ve filmu WarGames (1983), kde hrál důležitou roli v příběhu. Hlavní postava David Lightman (hraná Matthewem Broderickem) se pokouší prolomit zabezpečení do vládního počítačového systému, což ale vedlo k nechtěné aktivaci systému, který hrozil vyvolat jadernou válku.

Pokud si budete IMSAI 8080 prohlížet detailněji, určitě si povšimnete možnosti zadávání adres nebo dat pomocí barevných přepínačů. V té době se běžně používal hexadecimální i osmičkový zápis, což je zobrazeno i graficky (naznačeny čtveřice a alternativně i trojice bitů). Dále se zadávala data i část adresy ze společných přepínačů. To vše už máme vlastně připravené, takže můžeme vesele experimentovat.



Chtěl bych také pokračovat v započaté cestě bádání nad obecnými principy, jak fungují počítače. V plánu jsou především tyto tři dílčí projekty:

  • Operační paměť na principu zpožďovací linky
  • Paměť složená z feromagnetických jader
  • Čtečka děrné pásky modifikovaná i na čtení a zápis na magnetický pásek (nebo drát)

Zpožďovací linka je speciální zařízení, které slouží ke zpomalení signálu. Jedním z prvních využití zpožďovacích linek byla „rtuťová“ operační paměť (Mercury tube Delay Line Memory) a byla používána v prvních elektronických počítačích v 50. a 60. letech minulého století.

Základem této paměti byla trubička naplněná rtutí. Signál se posílal „do“ jednoho konce trubičky, odkud se šířil jako akustická vlna. Rychlost šíření akustické vlny ve rtuti je mnohem pomalejší než rychlost šíření signálu v kovech a vodičích, a proto se signál v trubičce zpomalil a na určité délce i dočasně uchoval. Poté, když zvuk dosáhl druhé strany trubičky, byl převeden na elektrický signál a poslán znovu na začátek, případně mohl být podle potřeby použit dál (k přečtení stavu). V praxi se tato „rtuťová“ paměť používala jako krátkodobá paměť pro ukládání dat nebo instrukcí, které měly být zpracovány později. Problémem však byla malá kapacita a pomalá odezva paměti, což znamenalo, že byla vhodná pouze pro určité aplikace a nemohla být použita jako hlavní paměť.

OctopusLAB 85
Sběrnice (retro) počítače

Dokončení z minulého dílu.

Feritová paměť byla jedním z druhů pamětí používaných v počítačích v 50. a 60. letech 20. století. Využívala malých feromagnetických jader k ukládání informací. Každé jádro může být magnetizováno buď v jednom směru (reprezentujícím binární hodnotu 0) nebo v opačném směru (reprezentujícím binární hodnotu 1). K ukládání dat se používala feromagnetická jádra vysoké čistoty, která mohla být magnetizována relativně slabým elektromagnetickým polem. Udržovala svůj stav po dobu řádově milisekund. Oproti paměti s rtuťovými zpožďovacími linkami, byla feritová paměť rychlejší a mohla ukládat více informací na menším prostoru. Její nevýhodou byla ale vysoká cena a složitost výroby.

Feromagnetické paměti byly používány v řadě počítačů a dalších zařízeních, včetně prvních řídicích jednotek pro letové simulátory a řídicích jednotek pro satelity. Nejznámější použití bylo v modulu Apollo.
(Mise Apollo byla první v dějinách, kde lidský život závisel na počítači. Byla první, v níž stroj ovládal jak řízení letu, tak i systémy na podporu života – a tedy i životy astronautů na palubě).

Pokud někdo máte feritovou nebo dokonce rtuťovou paměť (nebo její část), dejte nám prosím vědět. Zájem máme i o libovolné fragmenty retropočítačů – čím starší, tím lepší. Skvělé by byli osmibitové (i mikroprocesory) nebo moduly s integrovanými obvody (ideálně i tranzistory nebo dokonce elektronky). Pokud byste se chtěli do našeho experimentování zapojit, napište mi prosím na mail: honza.copak@gmail.com.


Anabáze s Minimal 8085

Až minulý týden jsem se dostal k tomu, abych otestoval finální sestavu sběrnice, kde máme připraveno pět osmibitových výstupů (1×8 pro data, 16 pro adresu, a 2×8 pro volitelné stavové registry). A k tomu jeden osmibitový vstup přepínačů a dva osmibitové přes I2C expandér.

Jedno ze zvolených „jader“ centrální jednotky byl projekt Minimal 8085 (www.malinov.com/Home/sergeys-projects/minimax8085). Vypadal na první pohled jednoduše, ale stejně nás nakonec trochu potrápilo pár drobností. Autor projektu sice elegantně zjednodušil a zmenšil desku, kde například tři integrované obvody (hradla) snížil na jediný obvod hradlového pole GAL. Ale kdo to dnes „v amatérských podmínkách“ programuje GALy?

Tak jsem si například chvíli musel „hrát“ se „stařičkým“ ELIOT-104 (programátor hradlových polí) a opatřil si potřebné GAL obvody, dokumentaci, nějaké redukce, ladil správný zdroj. Sháněl jsem optimální krystal – 6.144 MHz (pro 3 MHz CPU) nebo 9.8304 MHz (pro 5 MHz CPU) ale zatím nakonec zkoušíme 8 MHz (pro přijatelných 4 MHz CPU). V testovacím režimu připojíme externí RS232 (s MAXem), jak je vidět na obrázku. A do třetice – kapitola EEPROM, kde by byla ideální elektricky mazatelná 28xxx, ale my máme 27xxx (kde různé typy se chovají velmi rozdílně a tak si teorii mazání UV světlem necháme na jindy). Naštěstí se našla i nějaká prázdná a na testy jich máme několik v posledním bloku volných (snadno přeprogramovatelných)a tudíž na experimenty použitelných. 

Takto to zatím vypadá. Krystal nám už kmitá a za GALem máme poloviční frekvenci (což je ověření, že je GAL naprogramován správně). RAMku jsme otestovali a do EEPROM nahráli „monitor“ MON85 (v 1.2 od Romana Bórika). Ale čekáme na odporová pole (pro pull-upy a pár drobných součástek). Držte nám palce. Nebo je někdo ochoten a schopen (kdyby se nám to nedařilo) nám pomoci s rozběhem?


Koukal jsem do poznámek a vychází mi, že o retropočítačích s „výukovým přesahem do dneška“ by se dalo napsat i několik knih. Jen ještě nemám ani zdaleka všechno nastudováno a hlavně otestováno. A jelikož se občas setkávám s lidmi co to zajímá, tak mám možnost vidět ty obrovské rozdíly ve znalostech, zkušenostech či ve specifickém zájmu a zaměření. Každého zajímá něco jiného a k tomu všichni jsme ochotni či schopni se dostat jen na nějakou úroveň. Mám pocit že, že Hamík čtou především „dědečkové radioamatéři a jejich vnuci“ a další směřování do větších technických podrobností speciální číslicové techniky už své čtenáře ztrácelo zcela.
Proto by mi další pokračování spíš bralo energii, protože už nyní jsem se vždy ve stresu snažil něco dopsat a někdy jsem popisoval právě to, co jsem s ne úplně uspokojivými výsledky testoval. Odezva z Hamíka je prakticky nulová a ani to autora moc nemotivuje. Proto jsem se rozhodl v tuto chvíli seriál na neurčito přerušit a současně i snížit frekvenci dalších příspěvků.
Pokud něco sepíšu, bude to nejspíše tu a tam jen jeden menší konkrétní projekt nebo návod, což by bylo ideální už od úplného začátku. Ale kdo má v šuplíku stovku zajímavých nápadů, které převedl do praxe, sestavil, oživil otestoval a sepsal k nim poutavou dokumentaci?





uvidíme, jak se vejde
když tak by se poslední obrázek s první větou za ním mohl vyhodit.


Jak funguje elektronický počítač

OctopusLAB 76
Von Neumannova architektura počítačů

Konečně se na své cestě historií výpočetní techniky dostáváme k elektronickým počítačům. V tomto díle zmíníme základní koncept, se kterým pak budeme dále pracovat.

Nebylo vždy zjevné, že i nejjednodušší počítací stroj (například kalkulačka) by měl mít nějaké vstupní rozhraní (třeba klávesnice čísel a matematických operací). Pak je tu část, která vstupní data zpracuje (v případě jednoduchého výpočtu nám stačí aritmetická jednotka) a výsledek chceme nějak zobrazit na výstupu (třeba displeji). Úplně první počítače (například Z1 nebo ENIAC) byly velmi komplexní zařízení, kde ještě nebylo zcela jasné, jak elegantně takový stroj „programovat“. Jak rozlišit a především jak ukládat uživatelská data (a že proměnné lze snadno oddělit od programu a přitom je mít uloženy podobně). Využívaly se dostupné prvky z telegrafie, telefonie. To je hezky vidět na prvních programovacích panelech, které měly podobný vzhled jako telefonní ústředny a postupně se začaly jako „přepínače“ více používat i elektromagnetická relé. A jedny z prvních vstupních a výstupních zařízení byly dálnopisy (ze kterých jsme si až do dneška zachovali některé specifické řídící znaky).
Některé z prvních počítacích strojů byly dokonce navrženy pro počítání v desítkové soustavě. Vidět tak můžeme sady tlačítek a žárovek (0,1 ,2, 3, … až 9), podobně jako na starých mechanických pokladnách. Výhody dvojkové soustavy se však prosadily poměrně rychle.

Nejstarší výpočetní stroje měly programy pevně zabudované v hardwaru a jejich změna často znamenala úplnou změnu hardwaru stroje. Název von Neumannova architektura se vžil na základě přednášky matematika Johna von Neumanna. Přednášku „First Draft of a Report on the EDVAC“ věnovanou právě návrhu počítacího stroje s uloženým programem přednesl v červnu roku 1945. Nicméně stejná koncepce se objevila v některých amerických patentech již od roku 1936. (Wikipedia)

Dnes už každý tuší, k čemu bylo nutno se na občas strastiplné pouti dopracovat a když vidíte následující nákres, neměl by vás už moc překvapit. Podobnou strukturu mají i dnešní počítače, dokonce i chytré mobilní telefony. Také náš oblíbený mikrokontrolér ESP32 sdílí stejnou architekturu.

Dovolím si ještě připomenout další dva významné průkopníky, kteří byli pro vývoj prvních počítačů zásadním přínosem.
Alan Turing (kterého jsem v Hamíkovi už párkrát zmínil) už v roce 1936 představil koncept teoretického modelu obecného výpočetního stroje (Turingův stroj), který se stal jedním ze základů informatiky.
V následujícím roce 1937 německý inženýr Konrad Zuse předložil dva patenty předvídající von Neumannovu architekturu. Počítač se stručným názvem Z1 podle jeho návrhu byl dokončen v roce 1938. Obsahoval 30 tisíc kovových částí a nepracoval správně kvůli nedostatečné mechanické přesnosti. Po roce 1939 však dostal finanční prostředky od vlády nacistického Německa a jeho další stroje měly být využívány „pro válečné účely“.

V dalších dílech mám v plánu popisovat různé části počítačů, z nichž některé si i sestrojíme, oživíme a pokusíme se je propojovat do větších celků. Projekt Octopus_23_RUR (retro ultra replika) bude výuková experimentální sestava, která by mohla umět emulovat celou řadu opravdu historických počítačů (EDSAC, PDP) nebo prvních dostupných osmibitů (IMSAI8080, Altair8800, …). Některé části budeme pouze emulovat, ale základní principy se pokusíme zachovat.
Spojte se s námi na Twitteru, Facebooku nebo Instagramu, kam se snažíme pravidelně vkládat aktuální novinky.


OctopusLAB 77
Zobrazování čísel a číselné soustavy

Jelikož už i základ výrazu počítač tvoří slovo počítat, chvíli se ještě zdržíme u jednoduchých „počtů“.
Proč počítače používají takzvanou dvojkovou soustavu a co to znamená? Právě i to se vám pokusíme opět co nejstručněji přiblížit.

Pokusy sestrojit elektronické počítače tak, aby mohli pracovat s lidem srozumitelnou desítkovou soustavou totiž navazovaly na první mechanické počítací stroje (soustava ozubených koleček s přenosem desítky). Brzy se ukázalo, že není snadné spolehlivě rozlišit deset různých elektrických hodnot a především je dále zpracovat a uchovat. Takže se zvolila pro konstruktéry jednodušší možnost. Ta je založena na principu rozlišení pouze dvou hodnot: žárovka svítí / nesvítí, spínač je sepnut / rozepnut, signál má jednu nebo druhou (nulovou) hodnotu napětí. Ukázalo se, že to funguje dobře a proto se binární (dvojková) soustava bez větších problémů velmi rychle prosadila.

Ale vraťme se opět ještě trochu do vzdálené minulosti, kdy lidé ještě objevovali možnosti jak pracovat s teprve se rodícími čísly. Historie matematiky je velmi zajímavá, ale tentokrát to budou opravdu jen jednoduché počty. Jistě známe a používáme desítkovou soustavu, která vychází z toho, že lidé nejspíš začali počítat na prstech a prstů (na rukou) mají lidé deset.

Na obrázku vidíme deset očíslovaných prstů (od jedničky do desítky). Jen namátkou jsme vybrali i dvě archaická a trochu exotická zobrazení čísel. Mayská čísla – v trochu zvláštní dvacítkové soustavě, kde škeble znázorňovala násobek dvaceti a v jistých případech i jakousi nulu. Pro další větší čísla pak byly používány složité piktografické symboly.
Nám více známé římské číslice zase ukazují, že počítat s čísly takto napsanými bylo velmi obtížné (a některé operace s nimi takřka nemožné). Teoreticky by se mohlo jednat o nepoziční soustavu „sedmičkovou“, jelikož využívají sedm různých symbolů (I=1, V=5, X=10, L=50, C=100, D=500, M=1000), ale specifická pravidla pro zobrazování větších čísel jí přisuzuje kombinaci soustavy pětkové a desítkové.

Sumerové a Babyloňané (již zhruba před 4000 lety) používali poziční soustavu, ve které hodnotu zapsaného čísla určují pozice jednotlivých znaků. Základem jejich soustavy bylo číslo 60. Šedesátkovou soustavu používáme dodnes pro počítání času a při měření úhlů (60 se dobře dělí na polovinu, třetinu i čtvrtinu).

Pro dobré pochopení soustav využívaných při práci s počítači se zaměříme na poziční soustavy ve kterých počet použitelných symbolů odpovídá „číslu“ soustavy.

Na rozdíl od soustavy desítkové, kde máme k dispozici deset různých symbolů 0 1 2 až 9 a desítka už je s přenosem na další místo 10. V soustavě dvojkové máme tedy k mání pouze dva symboly: například nula a jedna, 0 / 1. U turingova stroje jsme používali dvě barvy: oranžovou a zelenou.
V soustavě trojkové bychom měli k dispozici symboly tři: 0 1 2 nebo na obrázku máme i variantu vločka, prst a letadlo (trinární nebo ternární soustava tří wingdings symbolů).
Aby nemuseli programátoři pracovat ve dvojkové soustavě, začala se používat i soustava osmičková (0 1 2 3 4 5 6 7) a šestnáctková. V šestnástkové (hexadecimální) soustavě a k symbolům 0 až 9 ještě přidalo ještě prvních šest písmen abecedy A B C D E F.


Všem čtenářům Hamíka si dovolím jménem Octopus LABu popřát vše nejlepší v novém roce 2023, hlavně zdraví a radost z tvoření.
Rok 2023 desítkově znamená dvě tisícovky, nula stovek, dvě desítky a tři jedničky.
Pozičně jednoduchý součet 2×1000 + 2×10 + 0x100 + 3×1 = 2023
Římskými číslicemi obdobně: MMXXIII.

Dvojkově (binárně) je to pak: 1111100111
1×1024 + 1×512 + 1×256 + 1×128 +1×64 + 0x32 + 0x16 + 0x8 + 1×4 +1×2 + 1×1 = 2023

V šestnáctkové soustavě (hexdecimálně) je to krásný palindrom 7E7.
(E = 14) pak 7×256 + 14×16 + 7×1 = 2023




OctopusLAB 78
Číselné soustavy využívané počítačem

Navážeme na minulý díl, kde jsme popřáli do nového roku v různých číselných soustavách. Povšimněte si, že když máme k dispozici pouze dva znaky, je číslo 2023 mnohem delší než když máme k dispozici znaků šestnáct (1111100111 oproti 7E7).

„Operátoři“ historických počítačů museli znát systém až na detailní technické úrovni a úplně první kódování se provádělo v binární (dvojkové) soustavě. Zadávat dlouhé řetězce nul a jedniček by vedlo k častým chybám a tak právě první zjednodušení bylo sdružování delších řetězců jedniček a nul do skupin.

V tabulce je ukázáno, jak zpřehledníme dvojkovou soustavu řazením do skupin. Červeně je značená oktalová (osmičková) soustava, která končí znakem ‚7‘, sdružuje binární číslice do trojic, zatímco dnes běžnější hexadecimální soustava (označená zeleně) zobrazuje nuly a jedničky ve skupinách po čtyřech.

Počítač PDP8 byl uveden na trh někdy kolem roku 1965. Na obrázku je jedna z verzí lab8/e, kde je vidět sdružování po třech (světlejší a tmavší skupiny přepínačů). V horní části MEMORY ADDRESS pak je řada žároviček (to se ještě LEDky nepoužívaly), která zobrazuje dvojkové číslo 101 111 001 101 000.
Další verze už přešly na sdružování po čtyřech (s hexadecimální soustavou) a také na „logičtější řazení“ nižších bitů. Zde je ještě verze s nejnišším bitem vlevo „0123456789…“ (to bychom psali PF 3202 a ne 2023) ale pro nás je dnes už srozumitelnější a běžné mít nejnižší bit vpravo – „…9876543210“.
Pro zajímavost – podobný princip „zjednodušení“ je zaveden i v privátním klíči bitcoinu. Při délce 256 bitů se používá několik skupin po jedenácti bitech (s kontrolním součtem na konci), které určují 2048 možných kombinací pro každou skupinu. Jako „symbol“ je pak navrženo 2048 unikátních anglický slov, což nám tvoří specifickou „dvoutisícčtyřicetiosmičkovou“ soustavu.


——————————Pokud bude volné místo——————————
Možná je vhodné si připomenout jeden fakt z obecných mocnin a to že „libovolné číslo na nultou je jedna“. V číselných soustavách pak řešíme jednotky, desítky, stovky, tisíce… pro soustavu desítkovou.
Obdobně jedničky, dvojky, čtyřky, osmičky, šestnáctky… pro dvojkovou soustavu.








stručná historie počítačů


OctopusLAB 72
Digitální technika – ohlédnutí do historie


Když v dnešní době chceme zjistit nějakou informaci, co automaticky uděláme? Otevřeme internetový prohlížeč a do vyhledávače zkoušíme zadat různé varianty hledaného. Zkoukneme pár odkazů (různě relevantních) a můžeme dohledávat i obrázky nebo videa. Máme možnost položit dotaz i na velkém počtu sociálních sítí a v nepřeberném množství rozmanitých diskusních skupin v nich. Značná část obecných technických informací je opravdu rychle a poměrně dobře dostupná.

Dovolím si připomenout, že ne vždy tomu tak bylo. V dobách „nedávných“ (kolem roku 1990) byl internet na našem území na úplném začátku. A k tomu byly stále patrny dozvuky studené války a s ním spojeného embarga na moderní technologie, kam výpočetní technika patřila především. Studiu historických počítačů se věnuji déle než deset let a některé detailnější dokumenty jsou dostupné (snadněji dohledatelné) až posledních pár let. Mám na mysli některé fotografie či krátká videa veškerých počítačů první až třetí generace (z období po druhé světové válce).

První opravdový počítač jsem viděl u táty v práci v již zmíněných osmdesátých letech. Byl to sálový počítač, měli i nějaké IBM System/360, pak zřejmě sovětský EC-1027/EC-1033 nebo EC-1021 vyráběný v ČSSR. Možná tam byly i nějaké terminálové stanice pro IBM-3090. To už nevím.
Internet byl výsadou západních univerzit, velkých korporací a armádních složek. Představa „mít počítač doma“ byla pro většinu lidí nejen velmi odvážná, ale reálně jsme se smířili s tím, že to asi ještě mnoho let nebude vůbec možné. A přitom na západ od nás už první modely hobby počítačů pomalu ale jistě vznikaly.


Historia magistra vitae


Posuňme se však na chvíli v čase ještě více do minulosti. Nemusíte se obávat, dlouho se nezdržíme. Rád bych vás především motivoval k vlastnímu hledání a samostatnému bádání. Pokud vás něco zaujme více, určitě zkuste zapátrat po již zmíněném internetu nebo ve vlastní knihovně.
(Můžete to zkusit hned s vyhledáním překladu a významu nadpisu, pokud ho zatím neznáte.)

Už od nepaměti si lidé snaží usnadnit si práci. „Již staří Římané…“ – i tak by se dalo začít. Protože snaha zjednodušit a urychlit si počítání se u člověka zřejmě objevila krátce po tom, co něco začal počítat. Počet kusů ve stádu lovené zvěře, počet nepřátel, počet nádob s vodou, počet kamenů na stavbu, počet zajatců… První písemné záznamy to dokládají, protože se velmi často jedná podobné evidence a přehledy. Zde také záhy narazíme na desítkovou soustavu, jejíž vznik je přisuzován tomu, že lidé mají deset prstů na rukou a první počty se prováděly jednoduše na prstech. U prvních záznamů byl občas důraz i na číslo pět (samostatný symbol pro pětku a podobně) protože to je počet prstů na jedné ruce. Z pokročilejších „prehistorických“ soustav zmiňme ještě šedesátkovou, jelikož 60 se dá lépe (celočíselně beze zbytku) rozdělit na polovinu, třetinu, čtvrtinu. Tato soustava se udržela pro počítání času (vteřiny, minuty…) a také v archaický slovech: kopa (60) je pět tuctů (12).


Abakus – první početní pomůcka

Řecké slovo abax označovalo destičku pokrytou pískem (nebo prachem) do něhož se kreslily výpočty. V další verzi to byl systém rovnoběžných rýh, v nichž se posunovaly kamínky nebo korálky na osičce. Zde opět zajímavost – tyto kamínky / oblázky (řecky calculli) daly základ slovu calculator, ze kterého vychází i naše kalkulačka.
Abakus je pravděpodobně babylonského původu (odhadem před 5000 lety) a historicky se oddělily dvě základní verze. Východní abakus (neboli čínský) se používá v Číně (suan pan), v Indonésii a v Japonsku soroban. Západní abakus se užívá v Rusku od 16. století dodnes. Nazývá se sčot. Setkáváme se i s dalšími modifikacemi kuličkových počitadel.


Pokud chceme sečíst dvě čísla (a nestačí nám k tomu počet prstů), můžeme „naházet“ tyto určené dva počty kamínků do jedné misky a pak je spočítat. Pro „pravěkého“ člověka to byla téměř jediná možnost, neměl k dispozici ani symboly (pro počet objektů), ani nástroje pro práci s nimi.
Ale jak rychle sečíst 262+123? K tomu právě skvěle poslouží číselná soustava. V případě desítkové pak sčítáme stovky (deset desítek), desítky a jednotky zvlášť. Abakus to ještě zjednodušil „pětkou“ pro více než 4. Na obrázku třetího abaku si povšimněme takzvaného přenosu, kdy 3+2=5 a máme jen 4 kamínky, takže čtveřici posuneme dolů a kamínek 5 nahoru (5 = 4+1). Podobně máme přenos vymyšlen v dnes užívané desítkové soustavě, kdy 9 + 1 = 10 (jedna desítka plus nula jednotek).

Takže pro zvídavé: zjistěte si více o strastiplné cestě symbolu NULA, její velkou důležitost a proč staří Římané se svými římskými číslicemi (I, V, X, L, D, M) v matematice trochu zaostávali. A jak je to možné, že nakonec používáme číslice arabské (1,2,3,4,5,6,7,8,9) – souvisí to i se slovy algebra, algoritmus (jež jsou arabského původu).


OctopusLAB 73
Digitální technika – předchůdci počítačů

Dříve než se dostaneme k elektronickým počítačům, měli bychom se ještě zdržet u jejich mechanických předchůdců. Jelikož to byly právě „pohyblivé strojky“, které byly po tisíce let jedinou možností, o které soudobí „badatelé“ věděli. A v práci s ozubenými koly dosahovali v jistých obdobích neuvěřitelného mistrovství.
Vznikaly hodinové strojky (první mechanické hodiny udajně sestavil kolem roku 850 kněz z italské Verony Pacificus), vytvářely se měřící pomůcky, hrací skříňky (s pohyblivými figurami), celá řada přístrojů pro využití v astronomii (či astrologii).

Na obrázku můžete vidět zatím nejdokonalejší známý stroj starověku, takzvaný mechanismus z Antikythéry (dokonce se o něm mluví i jako o počítači z Antikythéry). Objevili ho potápěči už v roce 1902 ve vraku římské lodi, ale až v posledním desetiletí se jeho záhadu podařilo z velké části vyluštit. Vyrobili ho Řekové někdy mezi lety 150 a 100 před naším letopočtem.
Zařízení velikosti krabice od bot sestávalo z navzájem propojených 82 komponentů – 37 ozubených koleček a 45 pohyblivých destiček zasazených do částečně dřevěné a částečně bronzové bedýnky, která měla z jedné strany jeden a z druhé strany dva ciferníky. Součástky byly ručně vyrobeny z tenkých (dvoumilimetrových) bronzových desek. Následné průzkumy pomocí rentgenu a vysokoenergetického záření gama odhalily celou jeho původní vnitřní strukturu. Zařízení otáčením kliky ukazovalo na jedné straně pohyby Slunce a Měsíce v průběhu roku, umělo předpovídat jejich zatmění.“ (Wikipedia) 

Konstruktér Andrew Carol sestavil z Lega funkční repliku, která stejně jako předloha sleduje polohu Slunce a Měsíce a předpovídá zatmění těchto kosmických těles. Vyhledejte si krátké video na Youtube.


Hodinové strojky, ale především pak složité pohybující se hračky, probouzely fantazie o možnosti budoucnosti s počítacími, učícími se nebo dokonce myslícími stroji. A lidé v této oblasti několik tisíc let neznali (alespoň se o tom nedochovala žádná svědectví) nic jiného. Proto je dobré si připomínat, jak důležitých a zajímavých je posledních sto let, kdy se prolnulo století páry a benzínu se stoletím elektroniky.
Vždyť samotné slovo ROBOT známe teprve až od roku 1920, kdy bylo uvedeno divadelní vědeckofantastické drama Karla Čapka R.U.R. – Rossumovi univerzální roboti. Čapek byl ovlivněn zájmem o techniku, ale také obavami o budoucnost lidstva (destrukce za první světové války). A slovo ROBOT (robota je archaický obrat pro práce) se začalo používat po celém světě.

První mechanické „kalkulátory“

Stručně na časové ose:

1614 – John Napier popsal logaritmy, s jejichž využitím lze realizovat násobení a dělení pomocí sčítání a odčítání. Následně byly sestaveny první logaritmické tabulky a vzniklo i logaritmické pravítko, které se běžně používalo ještě před pár desetiletími. Z počátečních snah početní úkony alespoň částečně automatizovat se i tento princip aplikoval v některých prvních kalkulátorech.

1623 – Wilhelm Schickard sestavil jednoduchý počítací stroj z ozubených koleček z hodinových strojků. Tyto počítací hodiny uměly sčítat a odčítat šesticiferná čísla. Ale k opravdovému počítači vedla ještě dlouhá cesta, jelikož mnoho principů (v oblasti matematiky, fyziky i chemie) ještě stále čekalo na své objevení.

1642 – Blaise Pascal představil svůj osmimístný počítací stroj Pascalínu, který uměl sčítat a odčítat. Přestože knihtisk v Evropě byl znám už od druhé poloviny patnáctého století, tisklo se velmi málo knih (především Bible) a ostatní tisky se šířily velmi pomalu. Nebyl internet ani počítače ;-), takže mohlo trvat 10-20 let než se Pascal o Shickardově stroji vůbec dozvěděl.

První počítací byly vytvořeny na principu ozubených koleček. Na obrázku Pascalina (kolem roku 1642). Dnes už existují i počítačové emulátory, například https://www.edumedia-sciences.com/en/media/333-pascaline (přednostně pro školy, je nutná registrace)

1671 – Gottfried Wilhelm Leibniz – vznikla další propracovanější verze, která se využívala a rozvíjela dále.

1820 – Charles Xavier Thomas – první úspěšný sériově vyráběný kalkulátor Arithmometr. Uměl sčítat, odčítat, násobit a dělit a byl převážně založen na Leibnizově přístroji, ale celá cesta od prvních výraznějších předchůdců trvala zhruba 200 let!


OctopusLAB 74
Od tkaných vzorů k pevným diskům

Při studiu historie techniky mě velmi překvapilo, že to byl právě textilní průmysl, jehož rozvoj za posledních více než 200 let zásadně přispěl k některým technologiím pro periférie prvních počítacích strojů.

Tkalcovské stroje – první programovatelné automaty

Jen ve stručnosti si připomeňme pár zásadních vynálezů v kontextu let, ve kterých byly objeveny:

1725 – Basile Bouchon – jeho otec vyráběl varhany a tak měl k jistým mechanickým principům asi blízko. Zřejmě jako první použil děrované destičky (nejdříve dřevěné, později i papírové) pro řízení tkalcovského stavu. Částečně tak automatizoval zdlouhavý proces nastavování stavu pro vytváření vzorů.

1726 – Jean-Baptiste Falcon – jako asistent výše zmíněného Bouchona vylepšil funkci spojením jednotlivých papírových karet za sebe, čímž zrychlil načítání složitějších vstupů a zjednodušil změny programu vzorů.



1801 – Joseph Marie Jacquard –  zdokonalil a přizpůsobil některé důležité části tak, že se ústrojí dalo použít na téměř každém tkalcovském stavu. Použil děrné štítky, které bylo možné vyměnit beze změny v mechanice samotného stavu. Tento okamžik je považován za milník v programovatelnosti strojů.

Označení Jaquard (nebo žakár) se používá i v 21. století pro všechna zařízení, kterými se dá programovat a řídit pohyb jednotlivých osnovních nití na tkacích a pletacích strojích a také pro textilie vyrobené na těchto strojích.

1835 – Charles Babbage – vylepšil děrný štítek tak, že obsahoval znaky ve formě kombinace dírek a umožňoval obsah opakovaně použít.

Údajně jako první přišel s nápadem sestrojit programovatelný stroj – počítač.
V roce 1991 byl podle Babbageových originálních plánů a prostředků dostupných v 19. století sestaven plně funkční diferenční stroj. Tím se ukázalo, že by skutečně fungoval už tehdy. O devět let později dokončili ve vědeckém muzeu i tiskárnu, kterou Babbage pro svůj počítací stroj navrhl. (Wikipedia)

1890 – Herman Hollerith – vyhrál s metodou použití děrných štítků konkurz na sčítání lidu v USA.
To předchozí totiž trvalo plných 7 let a takhle se to velmi znatelně zkrátilo.
Jeho firma se později stala základem počítačové společnosti IBM. Pro analýzu a další zpracování dat na děrných štítcích byly vyvíjeny specializované stroje: děrovače, tabelátory a třídiče, které se využívaly i v prvních dobách počítačů. Ale to už se konečně dostáváme k éře opravdových počítačů.


Nejčastější kódování (vycházelo z dálnopisu / psacího stroje QWERTY)


Původní děrované destičky (18. století) byly čteny čistě mechanicky. Pomocí kolíčkových stavítek byl detekován otvor a mechanicky se provedlo dílčí nastavení ve stroji. S přechodem na elektronická zařízení se začal využívat elektromechanický princip, kdy napružené kontakty při přechodu přes dírku spínaly elektrický obvod. Pro zvýšení spolehlivosti, rychlosti a životnosti se pak ve století dvacátém využívalo optického prvku. Fotočidlo (miniaturní fotodioda nebo fototranzistor) detekovalo při přechodu otvoru světelný záblesk, který přicházel od zdroje světla na druhé straně pásky.



V OctopusLABu připravujeme další „přístrojové“ bloky pro naše univerzální digitální rozhraní, které pak bude hlavní součástí většího projektu Octopus_23_RUR (retro ultra replika). Tato výuková experimentální soustava bude umět emulovat celou řadu opravdu historických počítačů (máme v plánu i EDSAC, jedno z prvních PDP, až po IMSAI8080 či Altair8800). Repozitář projektu je již založen – sledujte, zkoušejte, přispějte:
https://github.com/octopuslab-cz/octopus_23_rur

Naše čtečka Octopus_RR_01 (retro_reader version 1) vznikla z nutnosti otestovat, předvést a „ověřit“ princip pohodlnějšího vkládání opakovaného programu. Základ tvoří KPX80 (sestava deseti fototranzistorů Tesla, původně určená pro čtečky děrné pásky). Využili jsme jen pětici z nich pro paralelní čtení pěti bitů. Vyzkoušeli jsem citlivost a zjednodušili tvorbu datové pásky pouhým tiskem černých plošek, které propustí světlo jinak, než bílá nepotištěná část a tak není nutno děrovat. Máme rozpracovaný i jednoduchý program v Pythonu, který nám datové pásky vytváří.
Jádro čtečky pak obsahuje kultovní ESP32 a firmware zatím vzniká v Micropythonu (rychlé, pohodlné, dostačující). Další verze (02) by mohla mít i automatický posun (realizovaný malým krokovým motorem, na obrázku nahoře).


Pokud se chystáte na tradiční předvánoční setkání radioamatérů v Národním technickém muzeu (v Praze), zastavte se na našem „stanovišti“. Můžete si pár modulů prohlédnout a vyzkoušet.


OctopusLAB 75
Digitální technika – generace počítačů


Historie počítačů je obsáhlá a velmi zajímavá. Zaměřím se však jen některé vybrané události s důrazem na zajímavosti, které si zaslouží více pozornosti.

Na časové ose jsem zobrazil jednu z variant, jak se popisují počítačové generace. Možná se zmíním o jiné verzi, která uvádí i nultou generaci, do které se řadí počítač Z1. Někdy je nazýván elektomechanický, jelikož využíval kromě relátek i mechanické prvky. Často se pak uvádí rozdílně období po roce 2000, kdy se konec čtvrté a pátá generace časuje rozdílně.

Co podstatného uvést k součástkám jednotlivých generací?


Elektronky se pro číslicovou techniku moc nehodí, ale zdůrazněme, že nebylo nic jiného. A oproti relátkům zaznamenaly na svou dobu znatelné zrychlení (z desítek Hz ke stovkám Hz). Elektronky měly velkou energetickou spotřebu a malou spolehlivost (poruchovost daná krátkou životností prvních verzí). Operační paměť byla realizována například jako zpožďovací linka, kde „obíhal“/pulsoval ultrazvuk v dlouhé tubičce se rtutí (pouze pro uchování desítek až stovek bitů).

Tranzistory – se osazovaly na stále složité komplexně propojované desky s velkými nároky na zprovoznění a případné opravy. Teoretické rychlosti už nebránila samotná součástka, ale spíše propojovací kabely a konektory, které neumožnily zrychlení nad na stovky kHz. Princip děrných štítků (jako médium pro trvalé uchování dat nebo programu) byl zlepšen využitím děrné pásky (rychlejší a spolehlivější čtení). Také se jako operační paměť prosadila v rastrové matici navlečená feritová jadérka (jednotky kB). Pro operativní vstup a výstup se využívá množství tlačítek, přepínačů a žároviček. Klávesnici a tiskárnu zastal dálnopis, už se občas využije i obrazovka (nejdříve kulatá osciloskopická, později ta televizní).

Integrované obvody – obrovský technologický skok, který vyřešil většinu problémů předchozích generací počítačů, ale až Mikroporcesory umožnily i zvýšení rychlosti nad 1MHz. Samozřejmě i polovodičové paměti, harddisky a následně flash paměti umožnily počítačům vše, co známe dnes.





asi konec?






Turing, hacknutí ENIGMy
ENIAC 10 bit, tvoření tabulek pro trajektorie balistických střel, složité výpočty v projektu jádro / atomové bomy
EDVAC binární – von neuman – rtuťové zpoždující linky RAM
dlouhá cesta bit (1947) – a byte a pak ASCII
počítací stoje elektomechanické – relé, děrná páska (telegraf – dálnopis)
následně elektronky a pak i tranzistory
první náznak větší integrace pro počíač pro Apolo – paměti – feritová jádra

von neuman pC:


Dvojková soustava

Binární čísla jsou číselná soustava, která používá pouze dvě číslice: Používají se v počítačích a dalších elektronických zařízeních k reprezentaci a zpracování dat, protože jsou pro stroje snadno pochopitelné a snadno se s nimi manipuluje. V mnoha ohledech jsou binární čísla základem moderní výpočetní techniky.

Koncept binárních čísel lze vysledovat až do starověké Indie, kde matematik Pingala vyvinul systém pro reprezentaci čísel pomocí binárních číslic 0 a 1. Tento systém později převzali a zdokonalili staří Řekové, kteří používali binární čísla k reprezentaci písmen abecedy.

V 19. století matematik George Boole vyvinul systém logiky využívající binární čísla, který vedl k vývoji moderního počítače. Dnes se binární čísla hojně používají v digitální elektronice a informatice a jsou nezbytnou součástí moderního světa.

a počítače?

Historie počítačů je dlouhá a pestrá, první známý počítač byl vynalezen před více než 2000 lety. Prvními počítači byli lidští úředníci, kteří prováděli výpočty ručně, ale postupem času technologie pokročila do té míry, že počítače mohou rychle a efektivně provádět složité úlohy.

Prvním rozpoznatelným počítačem byl abakus, který vynalezli staří Sumerové kolem roku 2400 př. n. l.. Abakus byl dřevěný rám s korálky na drátcích a používal se k jednoduchým aritmetickým výpočtům.

Během několika následujících století bylo vynalezeno mnoho různých výpočetních zařízení, včetně astrolábu, posuvného pravidla a mechanické kalkulačky. Tato zařízení se používala k různým matematickým a vědeckým výpočtům, ale jejich možnosti byly omezené.

Teprve v 19. století byly vyvinuty první skutečné počítače. V roce 1822 navrhl Charles Babbage „Difference Engine“, což byl mechanický kalkulátor, který dokázal provádět složité matematické výpočty. Difference Engine však nebyl nikdy dokončen a první funkční počítače byly sestrojeny až ve 20. století.

První elektronické počítače byly vyvinuty během druhé světové války, aby pomohly s výpočtem tabulek dělostřelecké palby. Tyto první počítače, jako například ENIAC a UNIVAC, byly velké, drahé a měly omezené možnosti.

V následujících desetiletích se počítače zmenšovaly, zlevňovaly a stávaly se výkonnějšími. Vývoj mikroprocesoru v 70. letech 20. století vedl k vytvoření osobního počítače, který znamenal revoluci ve způsobu práce, komunikace a přístupu k informacím.

Dnes jsou počítače nedílnou součástí našeho každodenního života a stále se rychle vyvíjejí a zdokonalují. Používají se v nejrůznějších oblastech, od vědy a techniky až po obchod a zábavu.

A budoucnost počítačů?

Přesnou budoucnost počítačů je obtížné předpovědět, protože technologie se neustále vyvíjí a mění. Je však pravděpodobné, že počítače budou v nadcházejících letech stále menší, rychlejší a výkonnější.

Jedním z možných vývojových trendů je větší využití umělé inteligence (AI) v počítačích. Umělá inteligence označuje schopnost počítače provádět úkoly, které obvykle vyžadují lidskou inteligenci, jako je rozpoznávání vzorců, učení a řešení problémů. Se zdokonalováním technologie umělé inteligence je pravděpodobné, že počítače budou schopny provádět širší škálu úkolů a činit složitější rozhodnutí.

Dalším možným vývojem je větší využití kvantových počítačů. Kvantové počítače využívají k provádění výpočtů principy kvantové mechaniky, což jim umožňuje pracovat mnohem vyšší rychlostí než tradiční počítače. To by mohlo vést k významnému pokroku v oblastech, jako je medicína, finance a věda o materiálech.

Kromě toho může dojít k další integraci počítačů do předmětů denní potřeby, jako jsou automobily, spotřebiče a oblečení. To by mohlo vést k vytvoření „chytrého“ prostředí, kde by předměty mohly vzájemně komunikovat a reagovat na lidské potřeby.

Celkově lze říci, že budoucnost počítačů bude pravděpodobně vzrušující a plná nového vývoje a inovací.

https://chat.openai.com/chat
Translated with www.DeepL.com/Translator (free version)

Univerzální digitální rozhraní

OctopusLAB 71
Univerzální digitální rozhraní – úvod

Univerzální digitální rozhraní (Universal digital interface – UDI) patří mezi jeden z našich dlouhodobých nekomerčních projektů. Další fázi základní sestavy jsme představili i na letošním pražském festivalu Maker Faire a jelikož vzbudila jistý zájem, rozhodl jsem se právě tomuto tématu věnovat více prostoru.


Jádro UDI tvoří náš oblíbený mikrokontrolér ESP32, ke kterému jsme přidali dva šesnáctibitové expandery, posilovače sběrnice a zobrazovací prvky. Dále zkoušíme připojování pamětí (RAM, ROM, EEPROM i I2C malých EEPROM) a rodí se části emulátoru strojových kódů některých „retro“ mikroprocesorů, které však tvoří základ 99% všech soudobých procesorů.
To vše je na obrázku ohraničeno oranžovým obdélníkem, vlevo je modré rozhraní vstupů a výstupů pro emulátor i4004, nad kterým je zdrojová část. V pozadí je pak deska emulátoru PC286 pro AMIGU.


O čem miniseriál bude?

Už ve chvíli, kdy jsem začal článek připravovat, jsem věděl, že téma je natolik obsáhlé, že zabere několik dílů. Jelikož jsem to chtěl vzít poctivě „zeširoka“ a někdy i hlouběji, některé podkapitoly ještě v průběhu sestavování stále doplňuji a rozšiřuji.

Rád bych se zaměřil na věci podstatné a občas se i zdržel u těch zajímavých, ale úvahy vycházely z následující osnovy:

  • přiblížení, jak funguje klasický (von Neuman) počítač
  • odhlédnutí do minulosti: „Již staří Římané…“, meziválečná éra
  • bity, bajty, jak a co si má stroj pamatovat?
  • první osmibitové počítače – pro každého zájemce
  • k čemu všemu se hodí UDI-22?
  • práce s obsahem starších ROM/EPROM
  • emulátory některých strojových kódů osmibitů
  • opravdové pochopení principu algoritmizace a hledání nového přístupu

  • (osnova se průběžně modifikuje, ale základ zůstává)

Vzpomínám si, jak jsem byl fascinován první kalkulačkou (Model TI-1450 z roku 1976), kterou přivezl „ze Západu“ náš příbuzný. Na obrázku vlevo.
Bylo to něco nového a v té době (kolem roku 1980) nebylo tak snadné rychle nasytit mou dětskou zvídavost. Jak to funguje? A že je to tak maličké. Od ABC jsem přešel k VTM, kde sice pár odpovědí bylo, ale jen ve velmi v hrubých obrysech. Byly to právě „tajemné“ první počítače, které mě přivedly k elektronice a následně jsem se snažil něco pochytit i z Amatérského rádia. Někdy v roce 1979 mi kamarád, který studoval matematické gymnázium, ukázal programovatelnou kalkulačku TI-58 a to bylo teprve „zjevení“ – úplná magie, psát si vlastní programy, třeba Přistání na měsíci. Její emulátor si dnes každý (kdo chce) může stáhnout i do svého mobilního telefonu, ale v té době jich v republice byly jednotky kusů.

Proto možná vznikl i „papírový počítač„, jakýsi simulátor opravdového stroje, který umí zpracovat program. Bylo v roce 1980, kdy ve VTM vyšla papírová skládačka CGS (Computer Game system), která pracovala na principu manuálního provádění posloupnosti příkazů (z postupně sem a tam posouvaného proužku papíru) a průběžné zapisování mezivýsledků do registrů (také proužky papíru nebo „tužka-guma“).


Pro testování moderních řídících, diagnostických, měřících či monitorovacích systémů se hodí jistá komplexnější znalost problematiky digitálních (číslicových) systémů i s pohledem do hlubší minulosti. Protože mnoho pojmů, postupů a komponent má své velmi logické důvody a nyní i jasně dohledatelné kořeny.






1. přiblížení, jak funguje klasický (von Neuman) počítač

foto koláž retro ENIAC…
Ilustrační foro počítač ENIAC – MANIAC a EDVAC

foto koláž retro osmibity

trochu historie – (historia magistra vitae) – pro pochoení velmi dobře pomáhá nastudovat cesty hledání a následné důvody proč je něco tak, jak to známe dnes

Stručná historie počítačů

Von Neuman:




2. první osmibitové počítače

opuštění armádního, kosmického prostoru (modelovámí a simulace, zpracování dat a řízení) – a velké státní zakázky typu sčítání obyatelstva a statistky nad získanými daty

1970 – i4004 – první komerčně dostupný (čtyřbitový) mikroprocesor (sdružující základ dle von neumana)
4 bity? do jednoduché kalkulačky satčí a také pro řídící obvod v tiskárně

následuje éra 8mi bitů:
8008
8060
8080
8085
Z80
6205

3. práce s obsahem starších ROM/EEPROM

čtení – výpis obsahu (hex_dump)
kopírování do souboru
náhrada moderními sériovými I2C EEPROM (DIL8 oproti DIL 24+)

Maker Faire 2022

OctopusLAB 70
Ohlédnutím za pražským Maker Faire.


Letošní ročník již tradičního veletrhu Maker Faire Prague se konal o víkendu 17.-18. 9. v Holešovické tržnici.
Maker Faire je festival plný workshopů, interaktivních aktivit a především nadšených a zvídavých lidí. Téměř vše si na něm lze ozkoušet na vlastní kůži a mnohé se dá také vyrobit. Své projekty a prototypy zde prezentují tzv. makeři.

Petr (hlavní vývojář Octopus LABu) a Michal (ten má i velkou zásluhu na korekturách článků). Díky za pomoc. Ještě nám pomohl i Vláďa, ten ale na obrázku není.

Návštěvníci většinou ocení, když si mohou něco sami vyzkoušet. Jelikož máme hotovou jednoduchou hru pro dva hráče, byla by škoda ji nevzít s sebou. Jednalo se PONG-1D, o němž jsme v už v Hamíkovi psali. Na obrázku můžete vidět i hlavního pořadatele celého veletrhu Josefa Průšu, jak si u nás chvilku také zahrál.

Na stánku jsme měli opět i celou řadu dalších ukázek z našich již starších projektů. V levé části fotky se nachází sekce mechatroniky (serva, převody, posuny, jednoduché robotické rameno s inverzní kinematikou). Uprostřed vidíte bitcoinové zátiší s ČUDEM a s Ligning automatem (LN ATM). A vpravo nahoře jsou rozhraní k historickému mikropočítači Atari portfolio (modem, připojení tiskárny a podobné).

Největší naší letošní novinkou bylo naše univerzální digitální rozhraní (Universal digital interface – UDI).
Skládá se z ESP32, ke kterému jsme přidali dva šesnáctibitové expandery, posilovače sběrnice a zobrazovací prvky (základ napsán v MicroPythonu).

Pár dnů před zahájením výstavy nás poprosili naši kamarádi z DT-Labu, zda by také nemohli předvést svou čerstvou novinku: DT-Box. Malá krabička speciálně určená pro výuku, jejíž jádro tvoří modul OctopusLAB DoIt adapter (s ESP32). Mám v plánu vám v některém z příštích čísel Hamíka celý projekt více přiblížit. Zatím jen stručná citace ze stránek:
DT-Box je tu pro vaše první projekty! Osvojte si Python, a objevte všechna jeho využití. DT-Box je pomůcka pro výuku programování.



Projekt automatizované zahrady

OctopusLAB 66
Projekty automatizované zahrady

V minulém díle jsme se zabývali měřením hladiny s následným spouštěním čerpadla, kdy jsme potřebovali odčerpávat nežádoucí vodu nebo jen monitorovali vodu ve studni. Jako další krok se nabízejí komplexnější projekty automatizované zahrady nebo skleníku. Ty šetří nejen čas, ale – pokud jsou navržené dobře – i vodu. A obojí je dnes stále více žádoucí.

Spolupracovali jsme na projektu automatizace závlahy velké zeleninové zahrady. Jako senzory vlhkosti jsme zkoušeli odporové i kapacitní (podrobněji se o nich zmíníme v dalším díle). Systém běžel na 24V, byl připojen k internetu přes modul LAN (kabelem). Využívalo se kapénkové závlahy, která byla pouštěná do jednotlivých okruhů pomocí ventilů (ve spodní části obrázku).

Na dalších dvou obrázcích je open-source FarmBot – „farmařící robot“. Koncept malé plně automatizované zahrádky. Robot je vybaven pohyblivým ramenem s výměnnými nástavci, které slouží k sázení, zalévání nebo k odstraňování plevele. Dále je zde kamera, která zaznamenává postupný růst a také je v plánu, že rozezná plevel od žádané rostliny. Plevel pak speciálním „kolíčkem“ už v zárodku zastrčí hlouběji do země. V aplikaci si můžete přesně definovat, kde co poroste. A stačí pak už jen občas zkontrolovat, zda vše běží, jak má.




Přiblížíme vám však ještě jeden trochu odlišný koncept. Před několika lety jsme se totiž podíleli na vývoji malého hydroponického systému Parallel garden. Hydroponické pěstování salátu a bylinek v interiéru bylo v té době velmi populární. Podobně pak i akvaponie (hydroponie spojená s chovem ryb), ale o té snad někdy příště.

Co je to hydroponie?
Wikipedie uvádí: „Hydroponie je pěstování rostlin bez půdy v živném roztoku. Nejvhodnějším substrátem je v tomto případě keramzit – expandovaný jíl. Hydroponicky je možné pěstovat téměř všechny pokojové rostliny, ovoce i zeleninu (meloun, okurky, rajčata apod.), nebo květiny (karafiáty, gerbery apod.) pro produkci řezaných květů. Užitkové rostliny ve sklenících se také pěstují hydroponicky buď v minerální plsti, nebo v roztoku na „tenké vrstvě“. V těchto systémech voda cirkuluje, mimo záhony se zpět vrácený roztok filtruje, doplní se živiny, upraví pH a teplota. Podle systému a účelu pěstování se přidávají hnojiva.

Na obrázku (nahoře) jsou vidět závlahové trubičky vedoucí k jednotlivým rostlinkám (zde saláty).
V dolní části je pak schematicky velmi zjednodušeně naznačeno provázání celého systému. Miniaturní počítač Raspberry Pi s kamerou posílá každou hodinu fotku do datového úložiště. Ze získaného časosběru je pak vidět, jak rostliny postupně rostou a jak se jim daří.
K ESP32 (s Micropythonem) je připojen senzor teploty a vlhkosti (postačí jediná sonda). pak je zde pomocí relé spínáno oběhové čerpadlo. Do cirkulující vody jsou přimíchány i potřebné živiny (speciální přírodní či syntetické hnojivo).


OctopusLAB 67
Automatizovaná zahrada – Parallel garden


Projekt Parallel garden byl v základu koncipován jako open source, to znamená, že v této fázi jsme dávali k dispozici většinu podkladů, podle kterých si podobný box můžete sami také zhotovit. Základ – „krabice a hadičky“ původní větší verze (autorem je Jakub Hamata):
https://github.com/ParallelGarden/Hydroponics-in-a-box

Záměrem bylo projekt co nejvíce rozšířit a zapojit tak další nové vývojáře z celého světa. Úplně se to nepodařilo, nevím jak v „mechanické“ části, ale za hardware a software nám nikdo nepomohl. Sice máme v Githubu několik hvězdiček a pár „forků“, ale až pull request a commit se počítá (viz díl o gitu).


Použili jsme opět naše oblíbené ESP32 a program je napsán v Micropythonu. ESP32 monitoruje a řídí celý systém. Měří intenzitu světla, vlhkost minerální vaty, ve které rostlinka roste, a okolní teplotu. Pak podle potřeby spíná osvětlení nebo malé čerpadlo. Raspberry Pi s kamerou pouze fotí a každou hodinu posílá fotku do cloudu. Bylo použito pouze pro pár vývojových prototypů. Jinak je jen jako volitelné zařízení. 

Využili jsme prototyp naší vývojové desky pro IoT (internet věcí). Nyní sice více využíváme specializované moduly (PLCshield nebo doplňkový FETboard s více spínanými kanály), ale základ propojení by zůstal v principu shodný:

Naše IoT elektronika, hw, sw, fw, db a web frontend – dnes už trochu zastaralá verze:
https://github.com/octopusengine/octopusLAB_parallel_garden


OctopusLAB 69
Automatizovaná zahrada – zobrazování hodnot a senzory

Základní verze elektroniky nebyla složitá. Pro jednoduché experimenty do začátku byla plně postačující.

Senzor světla BH1750

Rostliny pro svůj růst potřebují kromě vody a živin i světlo. I v případě venkovního skleníku se někdy při slabém osvětlení doporučuje dodatečné přisvícení. Dříve se používaly halogeny, ale dnes už to jsou výhradně světla LED, ideálně v plném spektru denního světla (nebo se mu alespoň co nejvíce přibližujícím). Podle určitých studií se pro vybrané rostliny používá jiné spektrum na list (salát, bylinky) či květ (květiny), jiné na plody (rajčata, jahody), ale nemáme zde dost prostoru to zde podrobněji to popsat.
Pro použití v interiéru je dodatečné svícení nezbytností. Záleží, zda pěstujeme rostliny někde v tmavém koutě nebo u okna. Senzor BH1750 nám dává měřené údaje přímo v luxech a tak nám pomůže určit, zda bylo světla dostatek a pomocné svícení spínat podle potřeby. Světelný výkon se přibližně rovná dodávanému příkonu. LED totiž tolik nehřejí. Právě ztrátové teplo bylo u halogenů či klasických starých žárovek překážkou pro větší rozšíření. Šetřit se musí nejenom vodou, ale i elektrickou energií.


Senzor vlhkosti – na obrázku ilustračně
Zkoušeli jsem různé varianty – nejběžnější byl odporový nebo kapacitní. Jednodušší je odporový, který funguje na principu měření odporu mezi dvěma elektrodami. (Vlhká půda vede elektřinu podstatně lépe než suchá.) Vlhkost pak měříme každých deset minut a napětí (napájení) do senzoru spínáme pouze při měření (na 1-2 vteřiny). Jinak elektrody vlivem elektrolýzy rychle degradují. Senzor na obrázku vlevo, kdy jako elektrody sloužily pocínované plošky na plošném spoji při trvalém zapojení byl už po dvou měsících nepoužitelný (plošky byly zoxidované a z části „odleptané“). Kapacitní čidla kupovaná v Číně mají mnoho neduhů. Téměř 90 % z nich má odhalenu a zdoukumentovánu nějakou chybu (od variant, kdy to nefunguje moc dobře až po verzi, kdy to nejde vůbec).

Senzor teploty DS18B20

Především pro hydroponii v prostorech, kde může teplota výrazně kolísat – tedy v kanceláři, chodbě či garáži – je teploměr důležitý. Intenzivnější vyvětrání či průvan, kdy se rostliny octnou ve prostředí pod 5-7 stupňů, to může mít nežádoucí vliv na jejich další zdravý růst. Nižší teploty pak rostliny mohou i zahubit. Podobně pak nevětraný skleník v parném létě se na úrodě podepíše neblaze.
Použili jsme senzor DS18B20 od firmy Dallas. Opět doporučujeme koupit od ověřeného dodavatele nebo lépe, čidlo chvíli testovat (vedle důvěryhodného a zkalibrovaného). Odchylka 1-2 stupně se dá dokorigovat, ale měli jsme pár čidel, které měřily i 5 stupňů rozdíl a s časem se to měnilo na 1-10 nahoru i dolů).

Údaje ze senzorů jsem si posílali pomocí MQTT do Influxu a hodnoty pak mohli průběžně sledovat. Na grafu je vidět kolísání teploty (červená), postupné vysychání substrátu (klesající modrá), a zelená je zaznamenání sepnutého LED osvětlení. Špička na horní úrovni je ostré polední slunce, které se do okna dostalo a přesvítilo tak i LED osvětlení..



Vybrané měřené údaje jsme mohli sledovat i na malém OLED displeji. Ale máme zkušenost, že po několika dnech testování se na displej už skoro nikdo nedíval. V další verzi jsem ho chtěli mít trvale vypnutý a hodnoty zobrazit pouze po stisku tlačítka.


Raspberry Pi s kamerou nám každou hodinu vytvořilo fotku. Fotky jsme si nechali posílat pouze během dne nebo když se svítilo. Následně se z několika obrázků týdně daly vybrat záběry, ze kterých jsme pak složili animovaný gif nebo vytvořili časosběrné video. Cílem bylo porovnat, jak se daným rostlinkám daří v různých podmínkách (jiná prostředí, druh a doba svícení, typ hnojiva a podobně). Při delším období pozorování a větším vzorku dat by se dalo pěstování optimalizovat.












co se asi nevejde – a být to tam nemusí

SAMSUNG

Projekt jsme byli představit Zahradnické fakultě (MENDELU) v Lednici.
Zde je fotka z 3D kamery, protože celý koncept jsme pojímali více futuristicky. Například i jeden z prvních salátů byl na speciální akci v pražské Paralelní Polis vydražen za Bitcoin a výherci doručen dronem. Ale šlo spíše o marketingový krok a nevšední podívanou. Zatím nás čeká ještě hodně vývoje – ale nejsme sami, po celém světě je hydroponické pěstování stále více populární, tak se můžeme i inspirovat a poučit od druhých.





vodní hospodářstvíčko

OctopusLAB 66
Vodní hospodářstvíčko – tři malé projekty.


Voda je vzácná. Bez vody by na planetě Zemi neexistoval život. Voda je důležitá, a tak jistě znáte pojem vodní hospodářství. V tomto díle chce představit tři drobné projekty, které mají vodu, jako základní „problém“.

Projekt 1 – přečerpávání nežádoucí vody z dřevníku

Po renovaci opěrné zdi ve svahu se po desítkách let změnily podmínky spodních vod. Podlaha dříve suchého dřevníku se zaplavila a já musel hledat řešení. Vyhloubil jsem v rohu odčerpávací jímku – studánku.

Výšku hladiny jsem měřil jednoduchým plovákovým spínačem. Lepší by byly dva: při sepnutí horního se spustí čerpadlo a při rozepnutí spodního se zastaví. Také jsem změřil čas potřebný k odčerpání napuštěného množství vody. Vždy (zhruba každé dvě hodiny) když voda sepne plovák, zapne se na čas pumpa a vypustí přebytečnou vodu. Nakonec jsem ale chtěl znát rychlost napouštění i odčerpávání, tak jsem na měření vzdálenosti od hladiny použil ultrazvukový senzor.

Použité čerpadlo: karavanové 12V, 50W (10l/min.) Necelý den jsem zkoušel i 12V akumulátor, ale nakonec přepojeno na adaptér.

Na grafu je vidět, jak rychle se jímka vypouštěla (cca každé tři hodiny). Je také zaznamenán čas sepnutí relé. Hladinu jsem reguloval od 10ti cm (plná jímka) až po necelých 28 cm.


Projekt 2 – studna, monitoring hladiny vody

Petr Kracík řeší u sebe v Lomici nad Popelkou monitorování hladiny vody ve studni. Po pár experimentech použil nakonec ponorný senzor na přesné měření hydrostatického tlaku (s korekcí na atmosférický tlak). Tlak vodního sloupce nad čidlem je přímo úměrný s výškou hladiny. Studnu má kousek od domu, a tak použil externí baterie a zařízení provozoval v režimu deepsleep s využitím úžasného rychlého protokolu ESPnow. Díky tomu vystačí jediná baterie i na několik týdnů.

Měření hladiny: hydrostatický senzor (stříbrný váleček na obrázku vlevo nahoře). Čerpadlo: domácí vodárna Darling. ESP32 připojené na jednu LiFePo baterii. ESP s čidlem posílá data přes ESPnow protistraně, kde je také ESP32, ale s LAN (připojená k Internetu kabelem).


Projekt 3 – dočasné „řešení“ kapající vody

Vašek Chalupníček se projevil jako opravdový geek, když mi v pátek odpoledne volal, že jede na víkend pryč, ale že mu kape voda ve spodní části stoupačky. Několik dní sháněl instalatéra (byl nutný větší zásah, závada byla u vypouštěcího ventilu stoupačky) a voda kapala tak, že musel ráno a v podvečer vylít kýbl plný vody. Jak ho „vylívat“ automaticky? Vzal čerpadlo z akvária (spínaného pomocí relé) a hladinu také měřil externím ultrazvukovým senzorem, který používáme na robotech. Data o výšce hladiny si zaznamenával přes httprequest do Influxu (a také zobrazoval v Grafaně).

Měření hladiny: ultrazvukový senzor. Čerpadlo: miniaturní akvaristické.


Společným znakem všech projektů je využití ESP32 s posíláním dat pomocí WiFi a MQTT do Grafany. Realizace v Micropythonu, kde už jsou všechny knihovny připravené a odzkoušené může být opravdu rychlá. Celý systém funguje spolehlivě. Největší slabinou může být kolísavé lokání WiFi připojení. Obyčejné ultrazvukové senzory by také asi neměly dlouhou životnost, protože nejsou určeny dlouhodobě do vlhkého prostředí.

LNATM



Verze našeho LN-ATM vychází částečně z Bleskomatu, ale především z našeho ČUDA.
Na obrázku je hlavní vývojář Petr Kracík s Máriem Havlem (v pražské Paralelní Polis).



Zdrojové kdy ESP32 + Micropython: https://github.com/agama-point/lnatm

Ligtning automat – poznámky k open source verzi

#RFID
hardware_setup.conf.set("rfid_tx", 17)
hardware_setup.conf.set("rfid_rx", 16)

2022/03 – koncept – displej + RFID:
čudo – https://www.octopusengine.org/octopus-crypto-device/




2022/07:

  1. Přesunutí UARTU (pro mincovník) z levé strany na samostatný JST konektor z druhé strany

2022/09:
finální opensource verze krabičky – modely STL ke stažení:

Základní model kostry krabičky je ke stažení na https://www.thingiverse.com/thing:5536399


Inspirace a další odkazy:
https://www.bleskomat.com/

Cyber clock

OctopusLAB 65
Cyber (matrix) clock – velké digitálné hodiny.


Jelikož nás baví moderní technologie i jejich kulturní přesah, zkusili jsme se tentokrát zapojit i do poněkud netradičního projektu. Měli jsme možnost spolupracovat na několika „atrakcích“ prvního ročníku CyberTown 22. V minulém díle jsme popisovali PONG1D, který slavil na akci mimořádný úspěch. Dnes vám přiblížíme relativně jednoduché digitální hodiny, které jsme v duchu akce pojmenovali stylově cyber clock.
Na následujícím obrázku jsou snad trochu vidět (čas 22:12).

Cybertown je postcyberpunkový multižánrový festival zasazený do fiktivní dystopické budoucnosti. Odehrává se v kulisách postapokalyptického městečka na bývalé raketové základně. Uvádějí stručně pořadatelé na stánkách www.cybertown.cz/.

Základem zadání bylo navrhnout a vyrobit „retro digitání hodiny na bránu u radnice“. Pokud možno zadarmo a pokud možno včera. Požadované rozměry byly zhruba 120×50 cm. Tak velké segmenty nemáme. Ano, šlo by to složit z jednotlivých LEDek nebo žárovek, ale tolik času na to nebylo.

Už při tvorbě PONGU jsem si vzpomenul, že sériové „programovatelné“ LEDky se dají propojovat v prostoru do jednotlivých řad, které pak tvoří plochu, na které půjdou hodiny snadno naprogramovat. A protože jsem to chtěl hned rychle zkusit, LED pásek jsem jen cik-cak smotal do požadovaného tvaru, aniž bych musel něco stříhat a drátkama složitě propojovat. Použil jsem ESP32 v DoIT adapteru a již popisovaný modul reálného času ds3231 a hlavně „programovatelný“ LED pásek (s ws2812).
A hrubý základ pro hodiny byl velmi rychle hotový.

Na obrázku vidíte, jak je pásek „smotán“. Určili jsme si „mezery“ (zelené body), které se nevyužívají a slouží jen k propojení a zachování kompaktnosti. Je nutné odlišit sudé a liché řádky (1 až 5), jelikož se pro ně vykreslují body číslovek v opačném pořadí. V dolní části obrázku je vidět, kde jsou na kousku rozvinu pásku LEDky tvořící číslice „2“ a „3“. Sudý řádek je pak indexován reverzně.
Matice čísel pro jednotlivé číslovky se nachází v samostatném modulu assets/char4x7.py, kde je přesně definováno, které LEDky v daných číslech svítí. Máme náznak i pro jiné znaky a velikosti, ale pouze tato jedna knihovna je dokončená a odzkoušená.
Výsledný program včetně nových knihoven je opět na githubu:
https://github.com/octopuslab-cz/cyber-clock

import ds3231                # real time
from assets.char4x7 import * # matrix
....
ws = Rgb(27,WSMAX)           # 27 DEV3

""" ROW -----+ odd           ---o
          RX |               RXX  o
        +----+ even          ---o
"""
# --- LED strip --> 
WSMAX = 250
RX, RXX = 25, 3             # row, space
INTENSITY = 200             # intenzita

Opět jen seznámení s nejdůležitějšími konstantami používanými v programu:
WSMAX – celkový počet LEDek v pásku
RX – počet LEDek na jednom řádku (na našem obrázku by to bylo 10, 4+2+4).
RXX – počet nevyužitých LEDek (v ohybu) máme také 3 (na obrázku zelené).
INTENSITY – intenzita jasu, v šeru stačí 100, ale ve dne bylo lepší 200.

Pásek jsme přichytili k odřezku plastového parapetu a celý displej překryli vrstvou Miralonu (slouží jako difuzor pro rozplýlení světla). Finální ochranu tvoří dutinková polykarbonátová deska vsazená mezi dva odřezky z pozinkovaných profilů využívaných pro sádrokartony.

Pong-1D


OctopusLAB 64
Pong-1D – cyber ping-pong na počest výročí Atari.

Před padesáti lety (v červnu 1972) byla založena legendární společnost Atari. Mnozí na ní vzpomínají jako na firmu, která dala prvotní impulz hernímu průmyslu a tak v podstatě vytvořila fenomén videoher (dnes už se více používá termín počítačových her).


Jednou z prvních počítačových her byl PONG, který dokonce ani nevymyslela sama společnost Atari.
Automatová verze z historicky první komerčně vydané konzole/videohry se jmenovala Table Tennis a vyšla pod názvem Magnavox Odyssey v září 1972, pouhé dva měsíce předtím, než prý Atari umístilo první Pong do místního baru. Ale protlačit věc do světa je mnohdy záslužnější než ji vyvinout nebo nabídnout jako první (bohužel je to tak).

Credits: www.cdh.cz (česká databáze her)

Pong patřil dlouhou dobu mezi jednu z nejhranějších videoher vůbec. Je to jednoduchá počítačová hra s 2D grafikou pro dva hráče na principu tenisu nebo ping-pongu. Vytvořil jí Allan Alcorn jako cvičení, ve kterém použil černobílý televizor značky Hitachi, vložil ho do dřevěné skříňky a potřebné obvody připojil k deskám s elektronikou. Společnost Atari oznámila uvedení Pongu 29. listopadu 1972. První hry v poměrně velké žluté skříňce se sestavovaly velmi pomalu – v počtu několika desítek za týden. Až v roce 1975 byla představena domácí verze herní konzole Home Pong, která se dala připojit jednoduše přímo k TV. A v roce 1977 vyšla hra jako součást základního balíčku her zcela nové konzole Atari 2600.

Psát o zlaté éře Atari (tedy o 70. letech minulého století) z České republiky, je na každý pád trochu zvláštní. Jakkoliv už byla tato americká společnost ve světě proslulá, u nás jí téměř nikdo neznal. Že vymyslela novou formu zábavy, to se k nám za železnou oponu prakticky nedoneslo. Videohry samozřejmě jako pokleslý druh imperialistické zábavy nedostaly v socialistické společnosti ani ten nejmenší prostor. (Modrák – zkráceno)

PONG1D

Jelikož se pečlivě připravujeme na letošní první ročník Cyber town, přemýšleli jsme, s jakou atrakcí bychom se tam mohli blýsknout. Máme tam v ohni želízek více, ale vzpomněli jsme si i na jeden z prvních workshopů ESP + Micropython, kde nám Petr Viktorín připomenul zábavné hrátky s barevným LED páskem a inspiroval nás tak k napsání naší vlastní verze Pongu.
Zkoušeli jsme různé varianty délek, ale nejvíce se nám osvědčila velikost delšího stolu, kde hra připomíná stolní tenis (ping-pong) v rozšířené realitě se svítícím míčkem. Základem je tedy cca dva metry dlouhý LED pásek a řídící elektronika (s ESP32) ke které jsou připojena dvě tlačítka a případně i sedmisegmentový displej pro zobrazování skóre.



Hra oproti původní 2D verzi se hraje v 1D – na přímce (nebo křivce, chcete-li). Míček se hýbe ze strany na stranu a hráč musí míček odpálit (stikem tlačítka) na své straně když je dostatečně blízko začátku (tolerance). Podle toho, v kterém místě hráč míček odehraje, se zvyšuje nebo snižuje rychlost míčku.

Tlačítko je k centrále připojeno cca 150 cm dlouhým kabelem. Zkoušeli jsme opět různé druhy tlačítek a nejlepší jsou velká průmyslová nebo obyčejná domovní (tlačítko pro schodiště – ne přepínač).


Na podrobný rozbor kódu opět nemáme prostor, ale jako již tradičně je k dispozici na githubu:
https://github.com/octopuslab-cz/cyberpingpong.

Jedna z hlavních konstant je WSMAX, která udává celkový počet LEDek. Záleží na Vás, jak dlouhý pásek zvolíte, souvisí to i s hustotou ledek. Ale jistě si můžete pohrát i s ostatními parametry (rychlost nebo citlivost – tolerance, což je počet LEDek kde lze míček odehrát).