<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.base48.cz/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thebys</id>
	<title>base48 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.base48.cz/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thebys"/>
	<link rel="alternate" type="text/html" href="https://wiki.base48.cz/wiki/Special:Contributions/Thebys"/>
	<updated>2026-04-17T14:30:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5554</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5554"/>
		<updated>2026-04-06T01:54:21Z</updated>

		<summary type="html">&lt;p&gt;Thebys: progress update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown front.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|homepage=&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw, vintage, gambling, AI embodyment,&lt;br /&gt;
|stale=false&lt;br /&gt;
|Photogallery=https://photos.iver.cz/s/crown}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Thomas Bergmann Automatenbau Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel fortune disks&#039;&#039;&#039; - older design then &amp;quot;One Hand Bandit&amp;quot; - spins horizontal and clockwise rather then vertical!&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, unlock to allow disk spin. Heats up a lot at 24V from PSU.&lt;br /&gt;
* &#039;&#039;&#039;24V LEDs&#039;&#039;&#039; - Plenty of LEDs (30), originally it was bulbs, replaced with orange LEDs for extra vintage feel and lower heat, power consumption is the same.&lt;br /&gt;
* &#039;&#039;&#039;5 OG Buttons&#039;&#039;&#039; - Bottom part, to control the game.&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Links and resources ==&lt;br /&gt;
&lt;br /&gt;
* Fotodokumentace - [https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
* Projektová dokumentace - https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
* Github repo - https://github.com/Thebys/CrownPyBot&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
|2026/03/03&lt;br /&gt;
|4&lt;br /&gt;
|Revize napájecího systému&lt;br /&gt;
|-&lt;br /&gt;
|2026/04/05&lt;br /&gt;
|4&lt;br /&gt;
|Příprava řízení EM brzd (PWM drivery + kabeláž)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Buse_RGB_LED_Panel&amp;diff=5524</id>
		<title>Buse RGB LED Panel</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Buse_RGB_LED_Panel&amp;diff=5524"/>
		<updated>2026-03-22T21:51:27Z</updated>

		<summary type="html">&lt;p&gt;Thebys: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=BTC004.1 25x42_10 RGB&lt;br /&gt;
 |image=Btc004-1.jpeg&lt;br /&gt;
 |founder=[[User:Lubko]]&lt;br /&gt;
 |coops=&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=Driving a panel from a bus&lt;br /&gt;
 |created=2026&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What it is ==&lt;br /&gt;
A segment of a panel with 768 RGB LEDs on one side driven by chains shift registers on the other side.&lt;br /&gt;
&lt;br /&gt;
The PCB is marked:&lt;br /&gt;
&lt;br /&gt;
 BTC004.1&lt;br /&gt;
 24x32_10&lt;br /&gt;
 RGB&lt;br /&gt;
&lt;br /&gt;
Not sure which city is it operated in. Brno has green only panels and Bratislava got RGB but of different size.&lt;br /&gt;
&lt;br /&gt;
== Theory of operation ==&lt;br /&gt;
[[File:Segment-render.png|thumb|Pixmap split into segments, like on the panel]]&lt;br /&gt;
LEDs are organized into 24 x 32 pattern on one side, drivers are organized into a grid of 18 x 16 drivers. Three lines of LEDs snake around and are driven by a line of drivers on the other side.&lt;br /&gt;
&lt;br /&gt;
Rows do have common CLK and LE signals. This means both halves of the row must be fed in parallel, but rows are entirely independent of each other.&lt;br /&gt;
[[File:Layout.png|center|frameless|600x600px|LED &amp;amp; driver layout]]&lt;br /&gt;
&lt;br /&gt;
== Mounting ==&lt;br /&gt;
[[File:Buse-arduino-holder.png|thumb|Legs and mount that was used to hold Arduino Uno]]&lt;br /&gt;
Needs figuring out.&lt;br /&gt;
&lt;br /&gt;
Panel got a plenty of mounting holes.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a diffuser (from an old LCD?).&lt;br /&gt;
&lt;br /&gt;
TODO: Pics&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
Repository with sources to schematic, Arduino driver and ESPHome component: https://codeberg.org/lubko/buse004-1&lt;br /&gt;
&lt;br /&gt;
Partial schematic of the panel: https://codeberg.org/lubko/buse004-1/src/branch/main/buse-btc004.pdf&lt;br /&gt;
&lt;br /&gt;
Schematic of the 8-bit Arduino-based driver: https://codeberg.org/lubko/buse004-1/src/branch/main/arduino-adapter-buse-btc004.pdf&lt;br /&gt;
&lt;br /&gt;
Schematic of the 4-bit (9 pins) ESP8266-based driver: https://codeberg.org/lubko/buse004-1/src/branch/main/esp8266-adapter-buse-btc004.pdf&lt;br /&gt;
&lt;br /&gt;
Mounts: https://codeberg.org/lubko/buse004-1/src/branch/main/mounts-buse-btc004.FCStd&lt;br /&gt;
&lt;br /&gt;
== ESPHome integration ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml+jinja&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
external_components:&lt;br /&gt;
    - source:&lt;br /&gt;
        type: git&lt;br /&gt;
        url: https://codeberg.org/lubko/buse004-1&lt;br /&gt;
        path: ./&lt;br /&gt;
      components: [ btc004 ]&lt;br /&gt;
  &lt;br /&gt;
  image:&lt;br /&gt;
    - file: https://codeberg.org/lubko/buse004-1/raw/branch/main/tux.xpm&lt;br /&gt;
      type: rgb565&lt;br /&gt;
      id: tux&lt;br /&gt;
    - file: https://codeberg.org/lubko/buse004-1/raw/branch/main/48.gif&lt;br /&gt;
      type: rgb565&lt;br /&gt;
      id: base48&lt;br /&gt;
  &lt;br /&gt;
  display:&lt;br /&gt;
    platform: btc004&lt;br /&gt;
    le_pins: [ GPIO05 ]&lt;br /&gt;
    clk_pins: [ GPIO04, GPIO15, GPIO02, GPIO00 ]&lt;br /&gt;
    data_pins: [ GPIO16, GPIO14, GPIO12, GPIO13 ]&lt;br /&gt;
    update_interval: 10666ms&lt;br /&gt;
    lambda: |-&lt;br /&gt;
      static bool state;&lt;br /&gt;
      it.image(0, 0, (state = !state) ? id(tux) : id(base48));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Btc004-4.jpeg|Whole LED array&lt;br /&gt;
File:Btc004-2.jpeg|Arduino driver mounted on the back&lt;br /&gt;
File:Btc004-5.jpeg|In operation&lt;br /&gt;
File:Btc004-1.jpeg|LED side closeup with markings&lt;br /&gt;
File:Btc004-3.jpeg|Back closeup&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Buse_RGB_LED_Panel&amp;diff=5523</id>
		<title>Buse RGB LED Panel</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Buse_RGB_LED_Panel&amp;diff=5523"/>
		<updated>2026-03-22T21:50:04Z</updated>

		<summary type="html">&lt;p&gt;Thebys: /* ESPHome integration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=BTC004.1 25x42_10 RGB&lt;br /&gt;
 |image=Btc004-1.jpeg&lt;br /&gt;
 |founder=[[User:Lubko]]&lt;br /&gt;
 |coops=&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=Driving a panel from a bus&lt;br /&gt;
 |created=2026&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What it is ==&lt;br /&gt;
A segment of a panel with 768 RGB LEDs on one side driven by chains shift registers on the other side.&lt;br /&gt;
&lt;br /&gt;
The PCB is marked:&lt;br /&gt;
&lt;br /&gt;
 BTC004.1&lt;br /&gt;
 24x32_10&lt;br /&gt;
 RGB&lt;br /&gt;
&lt;br /&gt;
Not sure which city is it operated in. Brno has green only panels and Bratislava got RGB but of different size.&lt;br /&gt;
&lt;br /&gt;
== Theory of operation ==&lt;br /&gt;
[[File:Segment-render.png|thumb|Pixmap split into segments, like on the panel]]&lt;br /&gt;
LEDs are organized into 24 x 32 pattern on one side, drivers are organized into a grid of 18 x 16 drivers. Three lines of LEDs snake around and are driven by a line of drivers on the other side.&lt;br /&gt;
&lt;br /&gt;
Rows do have common CLK and LE signals. This means both halves of the row must be fed in parallel, but rows are entirely independent of each other.&lt;br /&gt;
[[File:Layout.png|center|frameless|600x600px|LED &amp;amp; driver layout]]&lt;br /&gt;
&lt;br /&gt;
== Mounting ==&lt;br /&gt;
[[File:Buse-arduino-holder.png|thumb|Legs and mount that was used to hold Arduino Uno]]&lt;br /&gt;
Needs figuring out.&lt;br /&gt;
&lt;br /&gt;
Panel got a plenty of mounting holes.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a diffuser (from an old LCD?).&lt;br /&gt;
&lt;br /&gt;
TODO: Pics&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
Repository with sources to schematic, Arduino driver and ESPHome component: https://codeberg.org/lubko/buse004-1&lt;br /&gt;
&lt;br /&gt;
Partial schematic of the panel: https://codeberg.org/lubko/buse004-1/src/branch/main/buse-btc004.pdf&lt;br /&gt;
&lt;br /&gt;
Schematic of the 8-bit Arduino-based driver: https://codeberg.org/lubko/buse004-1/src/branch/main/arduino-adapter-buse-btc004.pdf&lt;br /&gt;
&lt;br /&gt;
Schematic of the 4-bit (9 pins) ESP8266-based driver: https://codeberg.org/lubko/buse004-1/src/branch/main/esp8266-adapter-buse-btc004.pdf&lt;br /&gt;
&lt;br /&gt;
Mounts: https://codeberg.org/lubko/buse004-1/src/branch/main/mounts-buse-btc004.FCStd&lt;br /&gt;
&lt;br /&gt;
== ESPHome integration ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml+jinja&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
external_components:&lt;br /&gt;
    - source:&lt;br /&gt;
        type: git&lt;br /&gt;
        url: https://codeberg.org/lubko/buse004-1&lt;br /&gt;
        path: ./&lt;br /&gt;
      components: [ btc004 ]&lt;br /&gt;
  &lt;br /&gt;
  image:&lt;br /&gt;
    - file: https://codeberg.org/lubko/buse004-1/raw/branch/main/tux.xpm&lt;br /&gt;
      type: rgb565&lt;br /&gt;
      id: tux&lt;br /&gt;
    - file: https://codeberg.org/lubko/buse004-1/raw/branch/main/48.gif&lt;br /&gt;
      type: rgb565&lt;br /&gt;
      id: base48&lt;br /&gt;
  &lt;br /&gt;
  display:&lt;br /&gt;
    platform: btc004&lt;br /&gt;
    le_pins: [ GPIO05 ]&lt;br /&gt;
    clk_pins: [ GPIO04, GPIO15, GPIO02, GPIO00 ]&lt;br /&gt;
    data_pins: [ GPIO16, GPIO14, GPIO12, GPIO13 ]&lt;br /&gt;
    update_interval: 10666ms&lt;br /&gt;
    lambda: |-&lt;br /&gt;
      static bool state;&lt;br /&gt;
      it.image(0, 0, (state = !state) ? id(tux) : id(base48));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Btc004-4.jpeg|Whole LED array&lt;br /&gt;
File:Btc004-2.jpeg|Arduino driver mounted on the back&lt;br /&gt;
File:Btc004-5.jpeg|In operation&lt;br /&gt;
File:Btc004-1.jpeg|LED side closeup with markings&lt;br /&gt;
File:Btc004-3.jpeg|Back closeup&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;Port to ESP*&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Hook to Home Assistant&amp;lt;/s&amp;gt;&lt;br /&gt;
* Figure out physical mounting&lt;br /&gt;
* hailsatan&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Buse_RGB_LED_Panel&amp;diff=5522</id>
		<title>Buse RGB LED Panel</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Buse_RGB_LED_Panel&amp;diff=5522"/>
		<updated>2026-03-22T21:46:52Z</updated>

		<summary type="html">&lt;p&gt;Thebys: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
 |name=BTC004.1 25x42_10 RGB&lt;br /&gt;
 |image=Btc004-1.jpeg&lt;br /&gt;
 |founder=[[User:Lubko]]&lt;br /&gt;
 |coops=&lt;br /&gt;
 |status=active&lt;br /&gt;
 |tags=hw&lt;br /&gt;
 |shortdesc=Driving a panel from a bus&lt;br /&gt;
 |created=2026&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== What it is ==&lt;br /&gt;
A segment of a panel with 768 RGB LEDs on one side driven by chains shift registers on the other side.&lt;br /&gt;
&lt;br /&gt;
The PCB is marked:&lt;br /&gt;
&lt;br /&gt;
 BTC004.1&lt;br /&gt;
 24x32_10&lt;br /&gt;
 RGB&lt;br /&gt;
&lt;br /&gt;
Not sure which city is it operated in. Brno has green only panels and Bratislava got RGB but of different size.&lt;br /&gt;
&lt;br /&gt;
== Theory of operation ==&lt;br /&gt;
[[File:Segment-render.png|thumb|Pixmap split into segments, like on the panel]]&lt;br /&gt;
LEDs are organized into 24 x 32 pattern on one side, drivers are organized into a grid of 18 x 16 drivers. Three lines of LEDs snake around and are driven by a line of drivers on the other side.&lt;br /&gt;
&lt;br /&gt;
Rows do have common CLK and LE signals. This means both halves of the row must be fed in parallel, but rows are entirely independent of each other.&lt;br /&gt;
[[File:Layout.png|center|frameless|600x600px|LED &amp;amp; driver layout]]&lt;br /&gt;
&lt;br /&gt;
== Mounting ==&lt;br /&gt;
[[File:Buse-arduino-holder.png|thumb|Legs and mount that was used to hold Arduino Uno]]&lt;br /&gt;
Needs figuring out.&lt;br /&gt;
&lt;br /&gt;
Panel got a plenty of mounting holes.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a diffuser (from an old LCD?).&lt;br /&gt;
&lt;br /&gt;
TODO: Pics&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
Repository with sources to schematic, Arduino driver and ESPHome component: https://codeberg.org/lubko/buse004-1&lt;br /&gt;
&lt;br /&gt;
Partial schematic of the panel: https://codeberg.org/lubko/buse004-1/src/branch/main/buse-btc004.pdf&lt;br /&gt;
&lt;br /&gt;
Schematic of the 8-bit Arduino-based driver: https://codeberg.org/lubko/buse004-1/src/branch/main/arduino-adapter-buse-btc004.pdf&lt;br /&gt;
&lt;br /&gt;
Schematic of the 4-bit (9 pins) ESP8266-based driver: https://codeberg.org/lubko/buse004-1/src/branch/main/esp8266-adapter-buse-btc004.pdf&lt;br /&gt;
&lt;br /&gt;
Mounts: https://codeberg.org/lubko/buse004-1/src/branch/main/mounts-buse-btc004.FCStd&lt;br /&gt;
&lt;br /&gt;
== ESPHome integration ==&lt;br /&gt;
   external_components:&lt;br /&gt;
     - source:&lt;br /&gt;
         type: git&lt;br /&gt;
         url: &amp;lt;nowiki&amp;gt;https://codeberg.org/lubko/buse004-1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
         path: ./&lt;br /&gt;
       components: [ btc004 ]&lt;br /&gt;
   &lt;br /&gt;
   image:&lt;br /&gt;
     - file: &amp;lt;nowiki&amp;gt;https://codeberg.org/lubko/buse004-1/raw/branch/main/tux.xpm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
       type: rgb565&lt;br /&gt;
       id: tux&lt;br /&gt;
     - file: &amp;lt;nowiki&amp;gt;https://codeberg.org/lubko/buse004-1/raw/branch/main/48.gif&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
       type: rgb565&lt;br /&gt;
       id: base48&lt;br /&gt;
   &lt;br /&gt;
   display:&lt;br /&gt;
     platform: btc004&lt;br /&gt;
     le_pins: [ GPIO05 ]&lt;br /&gt;
     clk_pins: [ GPIO04, GPIO15, GPIO02, GPIO00 ]&lt;br /&gt;
     data_pins: [ GPIO16, GPIO14, GPIO12, GPIO13 ]&lt;br /&gt;
     update_interval: 10666ms&lt;br /&gt;
     lambda: |-&lt;br /&gt;
       static bool state;&lt;br /&gt;
       it.image(0, 0, (state = !state) ? id(tux) : id(base48));&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Btc004-4.jpeg|Whole LED array&lt;br /&gt;
File:Btc004-2.jpeg|Arduino driver mounted on the back&lt;br /&gt;
File:Btc004-5.jpeg|In operation&lt;br /&gt;
File:Btc004-1.jpeg|LED side closeup with markings&lt;br /&gt;
File:Btc004-3.jpeg|Back closeup&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;Port to ESP*&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Hook to Home Assistant&amp;lt;/s&amp;gt;&lt;br /&gt;
* Figure out physical mounting&lt;br /&gt;
* hailsatan&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Printers_and_printing&amp;diff=5521</id>
		<title>Printers and printing</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Printers_and_printing&amp;diff=5521"/>
		<updated>2026-03-22T21:33:49Z</updated>

		<summary type="html">&lt;p&gt;Thebys: Equipment category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Printers for printing on paper ==&lt;br /&gt;
&lt;br /&gt;
=== HP LaserJet P4015x ===&lt;br /&gt;
&lt;br /&gt;
* Common BW office laser printer &lt;br /&gt;
* Cheap prints&lt;br /&gt;
&lt;br /&gt;
=== HP DesignJet T520 (Richard) ===&lt;br /&gt;
&lt;br /&gt;
* Color printing plotter &lt;br /&gt;
* Prints on paper rolls, maximum print width is 914 mm&lt;br /&gt;
* Expensive prints&lt;br /&gt;
&lt;br /&gt;
=== Samsung CLX-3185FW ===&lt;br /&gt;
&lt;br /&gt;
* Can scan onto USB flash drive&lt;br /&gt;
* Rarely prints&lt;br /&gt;
&lt;br /&gt;
== Label maker(s) ==&lt;br /&gt;
See [[Labels]].&lt;br /&gt;
&lt;br /&gt;
== 3D Printers ==&lt;br /&gt;
See [[3D printing lab|3D Printing lab]].&lt;br /&gt;
[[Category:Equipment]]&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5520</id>
		<title>Labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5520"/>
		<updated>2026-03-22T20:50:41Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== QR codes ==&lt;br /&gt;
[[File:Label Richard.jpg|thumb|Example of a real label used in Base48.]]&lt;br /&gt;
Thebys&#039; Brother printer can print monochrome PNG files of height 128px.&lt;br /&gt;
&lt;br /&gt;
=== Creating the PNG files ===&lt;br /&gt;
One way to do it is with this simple Perl script:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;use GD::Barcode::QRcode;&lt;br /&gt;
use GD;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
&lt;br /&gt;
my ($img, $w, $h);&lt;br /&gt;
&lt;br /&gt;
sub text&lt;br /&gt;
{&lt;br /&gt;
	my $font = shift;&lt;br /&gt;
	if ($img) {&lt;br /&gt;
		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
		my $nw = $bounds[2] + 16;&lt;br /&gt;
		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub render&lt;br /&gt;
{&lt;br /&gt;
	my $t = shift;&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $text = shift;&lt;br /&gt;
	my $url = shift // $text;&lt;br /&gt;
	my $m = 3;&lt;br /&gt;
&lt;br /&gt;
	$img = undef;&lt;br /&gt;
	$h = $t;&lt;br /&gt;
	$w = $h;&lt;br /&gt;
&lt;br /&gt;
	# Sizing first&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Actual rendering&lt;br /&gt;
	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $img;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub do_one&lt;br /&gt;
{&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $str = shift // $title;&lt;br /&gt;
&lt;br /&gt;
	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $big render (128, $title, &amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;)-&amp;gt;png;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	open my $small, &amp;quot;&amp;gt;small-$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $small render (76, $title, &amp;quot;/wiki/$str&amp;quot;, &amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;)-&amp;gt;png;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_one(&#039;Electro Lab&#039;, &#039;Electro_lab&#039;);&lt;br /&gt;
do_one(&#039;RGB LED Panel&#039;, &#039;Buse_RGB_LED_Panel&#039;);&lt;br /&gt;
do_one(&#039;3D Printers&#039;, &#039;3D_printing_lab&#039;);&lt;br /&gt;
do_one(&#039;C64&#039;, &#039;C64&#039;);&lt;br /&gt;
do_one(&#039;Color Jet Printer&#039;, &#039;Color_Jet_Printer&#039;);&lt;br /&gt;
do_one(&#039;CNC&#039;, &#039;CNC&#039;);&lt;br /&gt;
do_one(&#039;Metal Workshop&#039;, &#039;Metal_workshop&#039;);&lt;br /&gt;
do_one(&#039;Woodworking&#039;, &#039;Woodworking&#039;);&lt;br /&gt;
do_one(&#039;Turtle Drawing Plotter&#039;, &#039;PlotBot&#039;);&lt;br /&gt;
do_one(&#039;Bike Repair Corner&#039;, &#039;Bike_corner&#039;);&lt;br /&gt;
do_one(&#039;Library&#039;, &#039;Library&#039;);&lt;br /&gt;
do_one(&#039;Output Buffer&#039;, &#039;OutputBuffer&#039;);&lt;br /&gt;
do_one(&#039;Making QR labels&#039;, &#039;Labels#QR_codes&#039;);&lt;br /&gt;
do_one(&#039;Bongs&#039;, &#039;Bongs#Bongo&#039;);&lt;br /&gt;
do_one(&#039;Bong Cleaning Tools&#039;, &#039;Bongs#Maintenance&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Printing them out: ===&lt;br /&gt;
Use this tool: https://git.familie-radermacher.ch/linux/ptouch-print.git&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# perl makeqr.pl&lt;br /&gt;
# ./ptouch-print --image=Library.png&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Minimize waste by chaining multiple labels:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# ./ptouch-print --image=CNC.png --chain &lt;br /&gt;
# ./ptouch-print --image=Library.png --precut --chain &lt;br /&gt;
# ./ptouch-print --image=OutputBuffer.png --precut&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5519</id>
		<title>Labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5519"/>
		<updated>2026-03-22T20:43:59Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== QR codes ==&lt;br /&gt;
[[File:Label Richard.jpg|thumb|Example of a real label used in Base48.]]&lt;br /&gt;
Thebys&#039; Brother printer can print monochrome PNG files of height 128px.&lt;br /&gt;
&lt;br /&gt;
=== Creating the PNG files ===&lt;br /&gt;
One way to do it is with this simple Perl script:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;use GD::Barcode::QRcode;&lt;br /&gt;
use GD;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
&lt;br /&gt;
my ($img, $w, $h);&lt;br /&gt;
&lt;br /&gt;
sub text&lt;br /&gt;
{&lt;br /&gt;
	my $font = shift;&lt;br /&gt;
	if ($img) {&lt;br /&gt;
		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
		my $nw = $bounds[2] + 16;&lt;br /&gt;
		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub render&lt;br /&gt;
{&lt;br /&gt;
	my $t = shift;&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $text = shift;&lt;br /&gt;
	my $url = shift // $text;&lt;br /&gt;
	my $m = 3;&lt;br /&gt;
&lt;br /&gt;
	$img = undef;&lt;br /&gt;
	$h = $t;&lt;br /&gt;
	$w = $h;&lt;br /&gt;
&lt;br /&gt;
	# Sizing first&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Actual rendering&lt;br /&gt;
	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $img;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub do_one&lt;br /&gt;
{&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $str = shift // $title;&lt;br /&gt;
&lt;br /&gt;
	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $big render (128, $title, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
&lt;br /&gt;
	open my $small, &amp;quot;&amp;gt;small-$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $small render (76, $title, &amp;quot;/wiki/$str&amp;quot;, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_one(&#039;Electro Lab&#039;, &#039;Electro_lab&#039;);&lt;br /&gt;
do_one(&#039;RGB LED Panel&#039;, &#039;Buse_RGB_LED_Panel&#039;);&lt;br /&gt;
do_one(&#039;3D Printers&#039;, &#039;3D_printing_lab&#039;);&lt;br /&gt;
do_one(&#039;C64&#039;, &#039;C64&#039;);&lt;br /&gt;
do_one(&#039;Color Jet Printer&#039;, &#039;Color_Jet_Printer&#039;);&lt;br /&gt;
do_one(&#039;CNC&#039;, &#039;CNC&#039;);&lt;br /&gt;
do_one(&#039;Metal Workshop&#039;, &#039;Metal_workshop&#039;);&lt;br /&gt;
do_one(&#039;Woodworking&#039;, &#039;Woodworking&#039;);&lt;br /&gt;
do_one(&#039;Turtle Drawing Plotter&#039;, &#039;PlotBot&#039;);&lt;br /&gt;
do_one(&#039;Bike Repair Corner&#039;, &#039;Bike_corner&#039;);&lt;br /&gt;
do_one(&#039;Library&#039;, &#039;Library&#039;);&lt;br /&gt;
do_one(&#039;Output Buffer&#039;, &#039;OutputBuffer&#039;);&lt;br /&gt;
do_one(&#039;Making QR labels&#039;, &#039;Labels#QR_codes&#039;);&lt;br /&gt;
do_one(&#039;Bongs&#039;, &#039;Bongs#Bongo&#039;);&lt;br /&gt;
do_one(&#039;Bong Cleaning Tools&#039;, &#039;Bongs#Maintenance&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Printing them out: ===&lt;br /&gt;
Use this tool: https://git.familie-radermacher.ch/linux/ptouch-print.git&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# perl makeqr.pl&lt;br /&gt;
# ./ptouch-print --image=Library.png&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Minimize waste by chaining multiple labels:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# ./ptouch-print --image=CNC.png --chain &lt;br /&gt;
# ./ptouch-print --image=Library.png --precut --chain &lt;br /&gt;
# ./ptouch-print --image=OutputBuffer.png --precut&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5518</id>
		<title>Labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5518"/>
		<updated>2026-03-22T20:38:41Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== QR codes ==&lt;br /&gt;
[[File:Label Richard.jpg|thumb|Example of a real label used in Base48.]]&lt;br /&gt;
Thebys&#039; Brother printer can print monochrome PNG files of height 128px.&lt;br /&gt;
&lt;br /&gt;
=== Creating the PNG files ===&lt;br /&gt;
One way to do it is with this simple Perl script:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;use GD::Barcode::QRcode;&lt;br /&gt;
use GD;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
&lt;br /&gt;
my ($img, $w, $h);&lt;br /&gt;
&lt;br /&gt;
sub text&lt;br /&gt;
{&lt;br /&gt;
	my $font = shift;&lt;br /&gt;
	if ($img) {&lt;br /&gt;
		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
		my $nw = $bounds[2] + 16;&lt;br /&gt;
		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub render&lt;br /&gt;
{&lt;br /&gt;
	my $t = shift;&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $text = shift;&lt;br /&gt;
	my $url = shift // $text;&lt;br /&gt;
	my $m = 3;&lt;br /&gt;
&lt;br /&gt;
	$img = undef;&lt;br /&gt;
	$h = $t;&lt;br /&gt;
	$w = $h;&lt;br /&gt;
&lt;br /&gt;
	# Sizing first&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Actual rendering&lt;br /&gt;
	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $img;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub do_one&lt;br /&gt;
{&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $str = shift // $title;&lt;br /&gt;
&lt;br /&gt;
	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $big render (128, $title, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
&lt;br /&gt;
	open my $small, &amp;quot;&amp;gt;small-$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $small render (76, $title, &amp;quot;/wiki/$str&amp;quot;, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_one(&#039;Electro Lab&#039;, &#039;Electro_lab&#039;);&lt;br /&gt;
do_one(&#039;RGB LED Panel&#039;, &#039;Buse_RGB_LED_Panel&#039;);&lt;br /&gt;
do_one(&#039;3D Printers&#039;, &#039;3D_printing_lab&#039;);&lt;br /&gt;
do_one(&#039;C64&#039;, &#039;C64&#039;);&lt;br /&gt;
do_one(&#039;Color Jet Printer&#039;, &#039;Color_Jet_Printer&#039;);&lt;br /&gt;
do_one(&#039;CNC&#039;, &#039;CNC&#039;);&lt;br /&gt;
do_one(&#039;Metal Workshop&#039;, &#039;Metal_workshop&#039;);&lt;br /&gt;
do_one(&#039;Woodworking&#039;, &#039;Woodworking&#039;);&lt;br /&gt;
do_one(&#039;Turtle Drawing Plotter&#039;, &#039;PlotBot&#039;);&lt;br /&gt;
do_one(&#039;Bike Repair Corner&#039;, &#039;Bike_corner&#039;);&lt;br /&gt;
do_one(&#039;Library&#039;, &#039;Library&#039;);&lt;br /&gt;
do_one(&#039;Output Buffer&#039;, &#039;OutputBuffer&#039;);&lt;br /&gt;
do_one(&#039;Making QR labels&#039;, &#039;Labels#QR_codes&#039;);&lt;br /&gt;
do_one(&#039;Bongs&#039;, &#039;Bongs#Bongo&#039;);&lt;br /&gt;
do_one(&#039;Bong Cleaning Tools&#039;, &#039;Bongs#Maintenance&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Printing them out: ===&lt;br /&gt;
Use this tool: https://git.familie-radermacher.ch/linux/ptouch-print.git&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# perl makeqr.pl&lt;br /&gt;
# ./ptouch-print --image=Library.png&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Minimize waste by chaining multiple labels:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# ./ptouch-print --image=CNC.png --chain &lt;br /&gt;
# ./ptouch-print --image=Library.png --precut --chain &lt;br /&gt;
# ./ptouch-print --image=OutputBuffer.png --precut&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5517</id>
		<title>Labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5517"/>
		<updated>2026-03-22T20:37:30Z</updated>

		<summary type="html">&lt;p&gt;Thebys: syntax highlighting error fix?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== QR codes ==&lt;br /&gt;
[[File:Label Richard.jpg|thumb|Example of a real label used in Base48.]]&lt;br /&gt;
Thebys&#039; Brother printer can print monochrome PNG files of height 128px.&lt;br /&gt;
&lt;br /&gt;
=== Creating the PNG files ===&lt;br /&gt;
One way to do it is with this simple Perl script:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;use GD::Barcode::QRcode;&lt;br /&gt;
use GD;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
&lt;br /&gt;
my ($img, $w, $h);&lt;br /&gt;
&lt;br /&gt;
sub text&lt;br /&gt;
{&lt;br /&gt;
	my $font = shift;&lt;br /&gt;
	if ($img) {&lt;br /&gt;
		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
		my $nw = $bounds[2] + 16;&lt;br /&gt;
		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub render&lt;br /&gt;
{&lt;br /&gt;
	my $t = shift;&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $text = shift;&lt;br /&gt;
	my $url = shift // $text;&lt;br /&gt;
	my $m = 3;&lt;br /&gt;
&lt;br /&gt;
	$img = undef;&lt;br /&gt;
	$h = $t;&lt;br /&gt;
	$w = $h;&lt;br /&gt;
&lt;br /&gt;
	# Sizing first&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Actual rendering&lt;br /&gt;
	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $img;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub do_one&lt;br /&gt;
{&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $str = shift // $title;&lt;br /&gt;
&lt;br /&gt;
	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $big render (128, $title, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
&lt;br /&gt;
	open my $small, &amp;quot;&amp;gt;small-$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $small render (76, $title, &amp;quot;/wiki/$str&amp;quot;, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_one(&#039;Electro Lab&#039;, &#039;Electro_lab&#039;);&lt;br /&gt;
do_one(&#039;RGB LED Panel&#039;, &#039;Buse_RGB_LED_Panel&#039;);&lt;br /&gt;
do_one(&#039;3D Printers&#039;, &#039;3D_printing_lab&#039;);&lt;br /&gt;
do_one(&#039;C64&#039;, &#039;C64&#039;);&lt;br /&gt;
do_one(&#039;Color Jet Printer&#039;, &#039;Color_Jet_Printer&#039;);&lt;br /&gt;
do_one(&#039;CNC&#039;, &#039;CNC&#039;);&lt;br /&gt;
do_one(&#039;Metal Workshop&#039;, &#039;Metal_workshop&#039;);&lt;br /&gt;
do_one(&#039;Woodworking&#039;, &#039;Woodworking&#039;);&lt;br /&gt;
do_one(&#039;Turtle Drawing Plotter&#039;, &#039;PlotBot&#039;);&lt;br /&gt;
do_one(&#039;Bike Repair Corner&#039;, &#039;Bike_corner&#039;);&lt;br /&gt;
do_one(&#039;Library&#039;, &#039;Library&#039;);&lt;br /&gt;
do_one(&#039;Output Buffer&#039;, &#039;OutputBuffer&#039;);&lt;br /&gt;
do_one(&#039;Making QR labels&#039;, &#039;Labels#QR_codes&#039;);&lt;br /&gt;
do_one(&#039;Bongs&#039;, &#039;Bongs#Bongo&#039;);&lt;br /&gt;
do_one(&#039;Bong Cleaning Tools&#039;, &#039;Bongs#Maintenance&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Printing them out: ===&lt;br /&gt;
Use this tool: https://git.familie-radermacher.ch/linux/ptouch-print.git&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# perl makeqr.pl&lt;br /&gt;
# ./ptouch-print --image=Library.png&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Minimize waste by chaining multiple labels:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
# ./ptouch-print --image=CNC.png --chain &lt;br /&gt;
# ./ptouch-print --image=Library.png --precut --chain &lt;br /&gt;
# ./ptouch-print --image=OutputBuffer.png --precut&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=User:Thebys&amp;diff=5516</id>
		<title>User:Thebys</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=User:Thebys&amp;diff=5516"/>
		<updated>2026-03-22T20:35:42Z</updated>

		<summary type="html">&lt;p&gt;Thebys: Created page with &amp;quot;Hello!&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello!&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5515</id>
		<title>Labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5515"/>
		<updated>2026-03-22T20:34:29Z</updated>

		<summary type="html">&lt;p&gt;Thebys: Change preformatted to code blocks.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== QR codes ==&lt;br /&gt;
[[File:Label Richard.jpg|thumb|Example of a real label used in Base48.]]&lt;br /&gt;
Thebys&#039; Brother printer can print monochrome PNG files of height 128px.&lt;br /&gt;
&lt;br /&gt;
=== Creating the PNG files ===&lt;br /&gt;
One way to do it is with this simple Perl script:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;use GD::Barcode::QRcode;&lt;br /&gt;
use GD;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
&lt;br /&gt;
my ($img, $w, $h);&lt;br /&gt;
&lt;br /&gt;
sub text&lt;br /&gt;
{&lt;br /&gt;
	my $font = shift;&lt;br /&gt;
	if ($img) {&lt;br /&gt;
		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
		my $nw = $bounds[2] + 16;&lt;br /&gt;
		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub render&lt;br /&gt;
{&lt;br /&gt;
	my $t = shift;&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $text = shift;&lt;br /&gt;
	my $url = shift // $text;&lt;br /&gt;
	my $m = 3;&lt;br /&gt;
&lt;br /&gt;
	$img = undef;&lt;br /&gt;
	$h = $t;&lt;br /&gt;
	$w = $h;&lt;br /&gt;
&lt;br /&gt;
	# Sizing first&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Actual rendering&lt;br /&gt;
	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $img;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub do_one&lt;br /&gt;
{&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $str = shift // $title;&lt;br /&gt;
&lt;br /&gt;
	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $big render (128, $title, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
&lt;br /&gt;
	open my $small, &amp;quot;&amp;gt;small-$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $small render (76, $title, &amp;quot;/wiki/$str&amp;quot;, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_one(&#039;Electro Lab&#039;, &#039;Electro_lab&#039;);&lt;br /&gt;
do_one(&#039;RGB LED Panel&#039;, &#039;Buse_RGB_LED_Panel&#039;);&lt;br /&gt;
do_one(&#039;3D Printers&#039;, &#039;3D_printing_lab&#039;);&lt;br /&gt;
do_one(&#039;C64&#039;, &#039;C64&#039;);&lt;br /&gt;
do_one(&#039;Color Jet Printer&#039;, &#039;Color_Jet_Printer&#039;);&lt;br /&gt;
do_one(&#039;CNC&#039;, &#039;CNC&#039;);&lt;br /&gt;
do_one(&#039;Metal Workshop&#039;, &#039;Metal_workshop&#039;);&lt;br /&gt;
do_one(&#039;Woodworking&#039;, &#039;Woodworking&#039;);&lt;br /&gt;
do_one(&#039;Turtle Drawing Plotter&#039;, &#039;PlotBot&#039;);&lt;br /&gt;
do_one(&#039;Bike Repair Corner&#039;, &#039;Bike_corner&#039;);&lt;br /&gt;
do_one(&#039;Library&#039;, &#039;Library&#039;);&lt;br /&gt;
do_one(&#039;Output Buffer&#039;, &#039;OutputBuffer&#039;);&lt;br /&gt;
do_one(&#039;Making QR labels&#039;, &#039;Labels#QR_codes&#039;);&lt;br /&gt;
do_one(&#039;Bongs&#039;, &#039;Bongs#Bongo&#039;);&lt;br /&gt;
do_one(&#039;Bong Cleaning Tools&#039;, &#039;Bongs#Maintenance&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Printing them out: ===&lt;br /&gt;
Use this tool: https://git.familie-radermacher.ch/linux/ptouch-print.git&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# perl makeqr.pl&lt;br /&gt;
# ./ptouch-print --image=Library.png&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Minimize waste by chaining multiple labels:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# ./ptouch-print --image=CNC.png --chain &lt;br /&gt;
# ./ptouch-print --image=Library.png --precut --chain &lt;br /&gt;
# ./ptouch-print --image=OutputBuffer.png --precut&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5514</id>
		<title>Labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5514"/>
		<updated>2026-03-22T20:32:11Z</updated>

		<summary type="html">&lt;p&gt;Thebys: Add image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== QR codes ==&lt;br /&gt;
[[File:Label Richard.jpg|thumb|Example of a real label used in Base48.]]&lt;br /&gt;
Thebys&#039; Brother printer can print monochrome PNG files of height 128px.&lt;br /&gt;
&lt;br /&gt;
=== Creating the PNG files ===&lt;br /&gt;
One way to do it is with this simple Perl script:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;use GD::Barcode::QRcode;&lt;br /&gt;
use GD;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
&lt;br /&gt;
my ($img, $w, $h);&lt;br /&gt;
&lt;br /&gt;
sub text&lt;br /&gt;
{&lt;br /&gt;
	my $font = shift;&lt;br /&gt;
	if ($img) {&lt;br /&gt;
		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
		my $nw = $bounds[2] + 16;&lt;br /&gt;
		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub render&lt;br /&gt;
{&lt;br /&gt;
	my $t = shift;&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $text = shift;&lt;br /&gt;
	my $url = shift // $text;&lt;br /&gt;
	my $m = 3;&lt;br /&gt;
&lt;br /&gt;
	$img = undef;&lt;br /&gt;
	$h = $t;&lt;br /&gt;
	$w = $h;&lt;br /&gt;
&lt;br /&gt;
	# Sizing first&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Actual rendering&lt;br /&gt;
	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $img;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub do_one&lt;br /&gt;
{&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $str = shift // $title;&lt;br /&gt;
&lt;br /&gt;
	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $big render (128, $title, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
&lt;br /&gt;
	open my $small, &amp;quot;&amp;gt;small-$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $small render (76, $title, &amp;quot;/wiki/$str&amp;quot;, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_one(&#039;Electro Lab&#039;, &#039;Electro_lab&#039;);&lt;br /&gt;
do_one(&#039;RGB LED Panel&#039;, &#039;Buse_RGB_LED_Panel&#039;);&lt;br /&gt;
do_one(&#039;3D Printers&#039;, &#039;3D_printing_lab&#039;);&lt;br /&gt;
do_one(&#039;C64&#039;, &#039;C64&#039;);&lt;br /&gt;
do_one(&#039;Color Jet Printer&#039;, &#039;Color_Jet_Printer&#039;);&lt;br /&gt;
do_one(&#039;CNC&#039;, &#039;CNC&#039;);&lt;br /&gt;
do_one(&#039;Metal Workshop&#039;, &#039;Metal_workshop&#039;);&lt;br /&gt;
do_one(&#039;Woodworking&#039;, &#039;Woodworking&#039;);&lt;br /&gt;
do_one(&#039;Turtle Drawing Plotter&#039;, &#039;PlotBot&#039;);&lt;br /&gt;
do_one(&#039;Bike Repair Corner&#039;, &#039;Bike_corner&#039;);&lt;br /&gt;
do_one(&#039;Library&#039;, &#039;Library&#039;);&lt;br /&gt;
do_one(&#039;Output Buffer&#039;, &#039;OutputBuffer&#039;);&lt;br /&gt;
do_one(&#039;Making QR labels&#039;, &#039;Labels#QR_codes&#039;);&lt;br /&gt;
do_one(&#039;Bongs&#039;, &#039;Bongs#Bongo&#039;);&lt;br /&gt;
do_one(&#039;Bong Cleaning Tools&#039;, &#039;Bongs#Maintenance&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Printing them out: ===&lt;br /&gt;
Use this tool: https://git.familie-radermacher.ch/linux/ptouch-print.git&lt;br /&gt;
&lt;br /&gt;
 # perl makeqr.pl&lt;br /&gt;
 # ./ptouch-print --image=Library.png&lt;br /&gt;
&lt;br /&gt;
Minimize waste by chaining multiple labels:&lt;br /&gt;
&lt;br /&gt;
 # ./ptouch-print --image=CNC.png --chain&lt;br /&gt;
 # ./ptouch-print --image=Library.png --precut -chain&lt;br /&gt;
 # ./ptouch-print --image=OutputBuffer.png --precut&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Label_Richard.jpg&amp;diff=5513</id>
		<title>File:Label Richard.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Label_Richard.jpg&amp;diff=5513"/>
		<updated>2026-03-22T20:31:21Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example of label used in our hackerspace.&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Hackerspace&amp;diff=5512</id>
		<title>Hackerspace</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Hackerspace&amp;diff=5512"/>
		<updated>2026-03-22T18:43:52Z</updated>

		<summary type="html">&lt;p&gt;Thebys: Scope -&amp;gt; events -&amp;gt; calendar links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
In general a concept of hackerspace (hacklab, hackspace, or makerspace) is a community-operated, not-for-profit organization and workspace where people with common interests, such as computers, electronics, technology, science, digital art, or crafts, can meet, socialize, and collaborate. &lt;br /&gt;
[https://en.wikipedia.org/wiki/Hackerspace Wikipedia Hackerspace]&lt;br /&gt;
&lt;br /&gt;
Base48 is a hackerspace in Brno, Czech Republic. We are nonprofit organization [https://maps.app.goo.gl/1uMHNWzbigzfYCyr6 located in Kralovo pole]  with some &#039;&#039;&#039;300m2&#039;&#039;&#039; of space for creating / repairing / designing your projects or connecting with community.&lt;br /&gt;
&lt;br /&gt;
You can check out [https://mapall.space/heatmap/show.php?id=base48 availability heatmap] of base48 (and other hackerspaces).&lt;br /&gt;
&lt;br /&gt;
==== Why 48? ====&lt;br /&gt;
Why the number 48/0x30/0b00110000? Because the previous space that we used was at Čápkova 48. And because with other numbers like base64 we would have problems being found by people searching for us on google :)&lt;br /&gt;
&lt;br /&gt;
= Scope of our hackerspace =&lt;br /&gt;
* [[Woodworking|Workshop for wood]]&lt;br /&gt;
* [[Metal workshop|Workshop for metal]]&lt;br /&gt;
* [[Electro lab|Electronics lab]]&lt;br /&gt;
* [[3D printing lab]]&lt;br /&gt;
* [[Services|Digital services]]&lt;br /&gt;
* Chemistry lab&lt;br /&gt;
* Garden with a few meters of soil and a grill&lt;br /&gt;
* Repair Corner - Regular event - [https://nextcloud.at.base48.cz/apps/calendar/embed/oM82tg3RJDLDyZbz/dayGridMonth/now See calendar]&lt;br /&gt;
* Bike Repair Corner - Regular event - [https://nextcloud.at.base48.cz/apps/calendar/embed/oM82tg3RJDLDyZbz/dayGridMonth/now See calendar]&lt;br /&gt;
* [https://wiki.base48.cz/wiki/Library Library]&lt;br /&gt;
* Open space workstations&lt;br /&gt;
* Chill-out zone&lt;br /&gt;
* Open kitchen&lt;br /&gt;
&lt;br /&gt;
= Equipment and Projects =&lt;br /&gt;
[https://wiki.base48.cz/wiki/Equipment Equipment list]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.base48.cz/wiki/Category:Projects Projects] | &lt;br /&gt;
[https://wiki.base48.cz/wiki/New_Project_Template New project Template] |&lt;br /&gt;
[https://old-wiki.base48.cz/Category:Projects.html Old projects - Read only]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.base48.cz/wiki/Category:NewEvents Events] |&lt;br /&gt;
[https://wiki.base48.cz/wiki/Updates Updates] | &lt;br /&gt;
[https://old-wiki.base48.cz/Category:Events.html Old events - Read only]&lt;br /&gt;
&lt;br /&gt;
= Contacts =&lt;br /&gt;
&#039;&#039;&#039;Address&#039;&#039;&#039;:&amp;lt;br /&amp;gt;Mojmírovo náměstí 17&amp;lt;br /&amp;gt;Palackého třída 742&amp;lt;br /&amp;gt;Brno - Královo pole&amp;lt;br /&amp;gt;612 00&lt;br /&gt;
&lt;br /&gt;
[https://www.google.com/maps/place/base48.cz+hackerspace/@49.2242367,16.5968322,100a,35y,271.25h,45.62t/data=!3m1!1e3!4m5!3m4!1s0x4712958db2465805:0xa957e93a893b0913!8m2!3d49.224284!4d16.5955943 &#039;&#039;&#039;Google maps&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
In case you want to contact us please use &#039;&#039;&#039;[https://lists.base48.cz/mailman3/lists/ &#039;&#039;mailing list - rada&#039;&#039;].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
!Web&lt;br /&gt;
!IRC&lt;br /&gt;
!Socials&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/base48 Github]&lt;br /&gt;
|[https://web.libera.chat/?#base48 IRC #base48]&lt;br /&gt;
|[https://signal.group/#CjQKIFfa1_drdrVA8tzfolFIZVAbCSvg4cUCn5zx-czVGvUsEhDwl_MecwpNt4xC1kIujc49 Signal group: members only]&lt;br /&gt;
|-&lt;br /&gt;
|[https://base48.cz/ Web page]&lt;br /&gt;
|server: irc.libera.chat&lt;br /&gt;
|[https://signal.group/#CjQKIHBQ1JXOJ0momxbQIsaBet-gPgFRq9hUQyvVk-BV785AEhBC8WvwTDodUmPzfBrcfbHN Signal group: public]&lt;br /&gt;
|-&lt;br /&gt;
|[https://m.base48.cz/auth/login Member Portal]&lt;br /&gt;
|port: 6667&lt;br /&gt;
|[https://www.facebook.com/Base48.cz/ Facebook]&lt;br /&gt;
|-&lt;br /&gt;
|[https://lists.base48.cz Mailing Lists]&lt;br /&gt;
|channel: #base48&lt;br /&gt;
|[https://twitter.com/base48_cz Twitter]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Members can use [[IRCBouncer|base48&#039;s irc bouncer]]     &lt;br /&gt;
|[https://www.instagram.com/base48cz/ Instagram]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|There is an [[WikiBot|IRC bot]] &lt;br /&gt;
|[https://www.youtube.com/channel/UCyBFShxrgO1QkRqs7EEM04A? YouTube]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Legal =&lt;br /&gt;
Our legal entity is Base48, z.s.&amp;lt;br/&amp;gt;&lt;br /&gt;
Registered 6. srpna 2010&amp;lt;br/&amp;gt;&lt;br /&gt;
IČ: [https://or.justice.cz/ias/ui/rejstrik-firma.vysledky?subjektId=786587&amp;amp;typ=UPLNY 22859802], [https://or.justice.cz/ias/ui/vypis-sl-firma?subjektId=786587 sbírka listin]&lt;br /&gt;
&lt;br /&gt;
=Gallery=&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;slideshow&amp;quot;&amp;gt;&lt;br /&gt;
File:Soc room.jpg&lt;br /&gt;
File:420.jpg&lt;br /&gt;
File:20240302 154439.jpg&lt;br /&gt;
File:3D_corner.jpg&lt;br /&gt;
File:3D_tea_party.jpg&lt;br /&gt;
File:Wood_workshop.jpg&lt;br /&gt;
File:20240302_155942.jpg&lt;br /&gt;
File:Elektrocorner.jpg&lt;br /&gt;
File:20240302_162217.jpg&lt;br /&gt;
File:Kitchen.jpg&lt;br /&gt;
File:20250512_133643.jpg&lt;br /&gt;
File:20250512 133025.jpg&lt;br /&gt;
File:20250512 133241.jpg&lt;br /&gt;
File:20250512 133436.jpg&lt;br /&gt;
File:20250512 133559.jpg&lt;br /&gt;
File:20250512 133708.jpg&lt;br /&gt;
File:20250512 132756.jpg&lt;br /&gt;
File:20250512 134747.jpg&lt;br /&gt;
File:20250512 134726.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://wiki.base48.cz/wiki/Gallery Gallery]  /  [https://www.facebook.com/Base48.cz/photos More Photos (FB)]  / [https://www.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion/Base48.cz/photos More Photos (Onion FB)]&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5511</id>
		<title>Labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5511"/>
		<updated>2026-03-22T18:38:08Z</updated>

		<summary type="html">&lt;p&gt;Thebys: Switch from preformatted to code block.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== QR codes ==&lt;br /&gt;
Thebys&#039; Brother printer can print monochrome PNG files of height 128px.&lt;br /&gt;
&lt;br /&gt;
=== Creating the PNG files ===&lt;br /&gt;
One way to do it is with this simple Perl script:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;use GD::Barcode::QRcode;&lt;br /&gt;
use GD;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
&lt;br /&gt;
my ($img, $w, $h);&lt;br /&gt;
&lt;br /&gt;
sub text&lt;br /&gt;
{&lt;br /&gt;
	my $font = shift;&lt;br /&gt;
	if ($img) {&lt;br /&gt;
		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
		my $nw = $bounds[2] + 16;&lt;br /&gt;
		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub render&lt;br /&gt;
{&lt;br /&gt;
	my $t = shift;&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $text = shift;&lt;br /&gt;
	my $url = shift // $text;&lt;br /&gt;
	my $m = 3;&lt;br /&gt;
&lt;br /&gt;
	$img = undef;&lt;br /&gt;
	$h = $t;&lt;br /&gt;
	$w = $h;&lt;br /&gt;
&lt;br /&gt;
	# Sizing first&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Actual rendering&lt;br /&gt;
	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $img;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub do_one&lt;br /&gt;
{&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $str = shift // $title;&lt;br /&gt;
&lt;br /&gt;
	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $big render (128, $title, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
&lt;br /&gt;
	open my $small, &amp;quot;&amp;gt;small-$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $small render (76, $title, &amp;quot;/wiki/$str&amp;quot;, &amp;quot;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; class=&amp;quot;external free&amp;quot; href=&amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;&amp;gt;https://wiki.base48.cz/wiki/$str&amp;lt;/a&amp;gt;&amp;quot;)-&amp;gt;png;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_one(&#039;Electro Lab&#039;, &#039;Electro_lab&#039;);&lt;br /&gt;
do_one(&#039;RGB LED Panel&#039;, &#039;Buse_RGB_LED_Panel&#039;);&lt;br /&gt;
do_one(&#039;3D Printers&#039;, &#039;3D_printing_lab&#039;);&lt;br /&gt;
do_one(&#039;C64&#039;, &#039;C64&#039;);&lt;br /&gt;
do_one(&#039;Color Jet Printer&#039;, &#039;Color_Jet_Printer&#039;);&lt;br /&gt;
do_one(&#039;CNC&#039;, &#039;CNC&#039;);&lt;br /&gt;
do_one(&#039;Metal Workshop&#039;, &#039;Metal_workshop&#039;);&lt;br /&gt;
do_one(&#039;Woodworking&#039;, &#039;Woodworking&#039;);&lt;br /&gt;
do_one(&#039;Turtle Drawing Plotter&#039;, &#039;PlotBot&#039;);&lt;br /&gt;
do_one(&#039;Bike Repair Corner&#039;, &#039;Bike_corner&#039;);&lt;br /&gt;
do_one(&#039;Library&#039;, &#039;Library&#039;);&lt;br /&gt;
do_one(&#039;Output Buffer&#039;, &#039;OutputBuffer&#039;);&lt;br /&gt;
do_one(&#039;Making QR labels&#039;, &#039;Labels#QR_codes&#039;);&lt;br /&gt;
do_one(&#039;Bongs&#039;, &#039;Bongs#Bongo&#039;);&lt;br /&gt;
do_one(&#039;Bong Cleaning Tools&#039;, &#039;Bongs#Maintenance&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Printing them out: ===&lt;br /&gt;
Use this tool: https://git.familie-radermacher.ch/linux/ptouch-print.git&lt;br /&gt;
&lt;br /&gt;
 # perl makeqr.pl&lt;br /&gt;
 # ./ptouch-print --image=Library.png&lt;br /&gt;
&lt;br /&gt;
Minimize waste by chaining multiple labels:&lt;br /&gt;
&lt;br /&gt;
 # ./ptouch-print --image=CNC.png --chain&lt;br /&gt;
 # ./ptouch-print --image=Library.png --precut -chain&lt;br /&gt;
 # ./ptouch-print --image=OutputBuffer.png --precut&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5510</id>
		<title>Labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5510"/>
		<updated>2026-03-22T18:32:11Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== QR codes ==&lt;br /&gt;
Thebys&#039; Brother printer can print monochrome PNG files of height 128px.&lt;br /&gt;
&lt;br /&gt;
=== Creating the PNG files ===&lt;br /&gt;
One way to do it is with this simple Perl script:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
use GD::Barcode::QRcode;&lt;br /&gt;
use GD;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
&lt;br /&gt;
my ($img, $w, $h);&lt;br /&gt;
&lt;br /&gt;
sub text&lt;br /&gt;
{&lt;br /&gt;
	my $font = shift;&lt;br /&gt;
	if ($img) {&lt;br /&gt;
		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
		my $nw = $bounds[2] + 16;&lt;br /&gt;
		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub render&lt;br /&gt;
{&lt;br /&gt;
	my $t = shift;&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $text = shift;&lt;br /&gt;
	my $url = shift // $text;&lt;br /&gt;
	my $m = 3;&lt;br /&gt;
&lt;br /&gt;
	$img = undef;&lt;br /&gt;
	$h = $t;&lt;br /&gt;
	$w = $h;&lt;br /&gt;
&lt;br /&gt;
	# Sizing first&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Actual rendering&lt;br /&gt;
	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $img;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub do_one&lt;br /&gt;
{&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $str = shift // $title;&lt;br /&gt;
&lt;br /&gt;
	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $big render (128, $title, &amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 use GD::Barcode::QRcode;&lt;br /&gt;
 use GD;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 &lt;br /&gt;
 my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
 my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
 &lt;br /&gt;
 my ($img, $w, $h);&lt;br /&gt;
 &lt;br /&gt;
 sub text&lt;br /&gt;
 {&lt;br /&gt;
 	my $font = shift;&lt;br /&gt;
 	if ($img) {&lt;br /&gt;
 		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
 	} else {&lt;br /&gt;
 		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
 		my $nw = $bounds[2] + 16;&lt;br /&gt;
 		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub render&lt;br /&gt;
 {&lt;br /&gt;
 	my $t = shift;&lt;br /&gt;
 	my $title = shift;&lt;br /&gt;
 	my $text = shift;&lt;br /&gt;
 	my $url = shift // $text;&lt;br /&gt;
 	my $m = 3;&lt;br /&gt;
 &lt;br /&gt;
 	$img = undef;&lt;br /&gt;
 	$h = $t;&lt;br /&gt;
 	$w = $h;&lt;br /&gt;
 &lt;br /&gt;
 	# Sizing first&lt;br /&gt;
 	if ($t == 76) {&lt;br /&gt;
 		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
 	} else {&lt;br /&gt;
 		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
 		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	# Actual rendering&lt;br /&gt;
 	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
 	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
 	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
 &lt;br /&gt;
 	if ($t == 76) {&lt;br /&gt;
 		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
 	} else {&lt;br /&gt;
 		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
 		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return $img;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub do_one&lt;br /&gt;
 {&lt;br /&gt;
 	my $title = shift;&lt;br /&gt;
 	my $str = shift // $title;&lt;br /&gt;
 &lt;br /&gt;
 	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
 	print $big render (128, $title, &amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;)-&amp;gt;png;&lt;br /&gt;
 &lt;br /&gt;
 	open my $small, &amp;quot;&amp;gt;small-$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
 	print $small render (76, $title, &amp;quot;/wiki/$str&amp;quot;, &amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;)-&amp;gt;png;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 do_one(&#039;Electro Lab&#039;, &#039;Electro_lab&#039;);&lt;br /&gt;
 do_one(&#039;RGB LED Panel&#039;, &#039;Buse_RGB_LED_Panel&#039;);&lt;br /&gt;
 do_one(&#039;3D Printers&#039;, &#039;3D_printing_lab&#039;);&lt;br /&gt;
 do_one(&#039;C64&#039;, &#039;C64&#039;);&lt;br /&gt;
 do_one(&#039;Color Jet Printer&#039;, &#039;Color_Jet_Printer&#039;);&lt;br /&gt;
 do_one(&#039;CNC&#039;, &#039;CNC&#039;);&lt;br /&gt;
 do_one(&#039;Metal Workshop&#039;, &#039;Metal_workshop&#039;);&lt;br /&gt;
 do_one(&#039;Woodworking&#039;, &#039;Woodworking&#039;);&lt;br /&gt;
 do_one(&#039;Turtle Drawing Plotter&#039;, &#039;PlotBot&#039;);&lt;br /&gt;
 do_one(&#039;Bike Repair Corner&#039;, &#039;Bike_corner&#039;);&lt;br /&gt;
 do_one(&#039;Library&#039;, &#039;Library&#039;);&lt;br /&gt;
 do_one(&#039;Output Buffer&#039;, &#039;OutputBuffer&#039;);&lt;br /&gt;
 do_one(&#039;Making QR labels&#039;, &#039;Labels#QR_codes&#039;);&lt;br /&gt;
 do_one(&#039;Bongs&#039;, &#039;Bongs#Bongo&#039;);&lt;br /&gt;
 do_one(&#039;Bong Cleaning Tools&#039;, &#039;Bongs#Maintenance&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Printing them out: ===&lt;br /&gt;
Use this tool: https://git.familie-radermacher.ch/linux/ptouch-print.git&lt;br /&gt;
&lt;br /&gt;
 # perl makeqr.pl&lt;br /&gt;
 # ./ptouch-print --image=Library.png&lt;br /&gt;
&lt;br /&gt;
Minimize waste by chaining multiple labels:&lt;br /&gt;
&lt;br /&gt;
 # ./ptouch-print --image=CNC.png --chain&lt;br /&gt;
 # ./ptouch-print --image=Library.png --precut -chain&lt;br /&gt;
 # ./ptouch-print --image=OutputBuffer.png --precut&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5509</id>
		<title>Labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Labels&amp;diff=5509"/>
		<updated>2026-03-22T18:31:42Z</updated>

		<summary type="html">&lt;p&gt;Thebys: test code block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== QR codes ==&lt;br /&gt;
Thebys&#039; Brother printer can print monochrome PNG files of height 128px.&lt;br /&gt;
&lt;br /&gt;
=== Creating the PNG files ===&lt;br /&gt;
One way to do it is with this simple Perl script:&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
use GD::Barcode::QRcode;&lt;br /&gt;
use GD;&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
&lt;br /&gt;
my ($img, $w, $h);&lt;br /&gt;
&lt;br /&gt;
sub text&lt;br /&gt;
{&lt;br /&gt;
	my $font = shift;&lt;br /&gt;
	if ($img) {&lt;br /&gt;
		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
	} else {&lt;br /&gt;
		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
		my $nw = $bounds[2] + 16;&lt;br /&gt;
		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub render&lt;br /&gt;
{&lt;br /&gt;
	my $t = shift;&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $text = shift;&lt;br /&gt;
	my $url = shift // $text;&lt;br /&gt;
	my $m = 3;&lt;br /&gt;
&lt;br /&gt;
	$img = undef;&lt;br /&gt;
	$h = $t;&lt;br /&gt;
	$w = $h;&lt;br /&gt;
&lt;br /&gt;
	# Sizing first&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Actual rendering&lt;br /&gt;
	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
&lt;br /&gt;
	if ($t == 76) {&lt;br /&gt;
		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
	} else {&lt;br /&gt;
		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return $img;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub do_one&lt;br /&gt;
{&lt;br /&gt;
	my $title = shift;&lt;br /&gt;
	my $str = shift // $title;&lt;br /&gt;
&lt;br /&gt;
	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
	print $big render (128, $title, &amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 use GD::Barcode::QRcode;&lt;br /&gt;
 use GD;&lt;br /&gt;
 &lt;br /&gt;
 use strict;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 &lt;br /&gt;
 my $large = &#039;/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf&#039;;&lt;br /&gt;
 my $narrow = &#039;/usr/share/fonts/truetype/liberation/LiberationSansNarrow-Regular.ttf&#039;;&lt;br /&gt;
 &lt;br /&gt;
 my ($img, $w, $h);&lt;br /&gt;
 &lt;br /&gt;
 sub text&lt;br /&gt;
 {&lt;br /&gt;
 	my $font = shift;&lt;br /&gt;
 	if ($img) {&lt;br /&gt;
 		$img-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
 	} else {&lt;br /&gt;
 		my @bounds = GD::Image-&amp;gt;stringFT(-1,$font,@_) or die &amp;quot;$font: $@: $!&amp;quot;;&lt;br /&gt;
 		my $nw = $bounds[2] + 16;&lt;br /&gt;
 		$w = $nw if $nw &amp;gt; $w;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub render&lt;br /&gt;
 {&lt;br /&gt;
 	my $t = shift;&lt;br /&gt;
 	my $title = shift;&lt;br /&gt;
 	my $text = shift;&lt;br /&gt;
 	my $url = shift // $text;&lt;br /&gt;
 	my $m = 3;&lt;br /&gt;
 &lt;br /&gt;
 	$img = undef;&lt;br /&gt;
 	$h = $t;&lt;br /&gt;
 	$w = $h;&lt;br /&gt;
 &lt;br /&gt;
 	# Sizing first&lt;br /&gt;
 	if ($t == 76) {&lt;br /&gt;
 		text($narrow,32,0,$h+8,0, $text);&lt;br /&gt;
 	} else {&lt;br /&gt;
 		text($large,48,0,$h+8,0, $title);&lt;br /&gt;
 		text($narrow,24,0,$h+8,0, $text);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	# Actual rendering&lt;br /&gt;
 	$img = GD::Image-&amp;gt;new($w,$h);&lt;br /&gt;
 	my $qr = GD::Barcode::QRcode-&amp;gt;new($url)-&amp;gt;plot(Height =&amp;gt; $h);&lt;br /&gt;
 	$img-&amp;gt;copyResized($qr, 0, 0, $m, $m, $img-&amp;gt;height, $img-&amp;gt;height, $qr-&amp;gt;width-2*$m, $qr-&amp;gt;height-2*$m);&lt;br /&gt;
 &lt;br /&gt;
 	if ($t == 76) {&lt;br /&gt;
 		text($narrow,32,0,$img-&amp;gt;height+8, $img-&amp;gt;height-24, $text);&lt;br /&gt;
 	} else {&lt;br /&gt;
 		text($large,48,0,$img-&amp;gt;height+8, 64, $title);&lt;br /&gt;
 		text($narrow,24,0,$img-&amp;gt;height+8, $img-&amp;gt;height-16, $text);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return $img;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 sub do_one&lt;br /&gt;
 {&lt;br /&gt;
 	my $title = shift;&lt;br /&gt;
 	my $str = shift // $title;&lt;br /&gt;
 &lt;br /&gt;
 	open my $big, &amp;quot;&amp;gt;$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
 	print $big render (128, $title, &amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;)-&amp;gt;png;&lt;br /&gt;
 &lt;br /&gt;
 	open my $small, &amp;quot;&amp;gt;small-$str.png&amp;quot; or die &amp;quot;$str.png: $!&amp;quot;;&lt;br /&gt;
 	print $small render (76, $title, &amp;quot;/wiki/$str&amp;quot;, &amp;quot;https://wiki.base48.cz/wiki/$str&amp;quot;)-&amp;gt;png;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 do_one(&#039;Electro Lab&#039;, &#039;Electro_lab&#039;);&lt;br /&gt;
 do_one(&#039;RGB LED Panel&#039;, &#039;Buse_RGB_LED_Panel&#039;);&lt;br /&gt;
 do_one(&#039;3D Printers&#039;, &#039;3D_printing_lab&#039;);&lt;br /&gt;
 do_one(&#039;C64&#039;, &#039;C64&#039;);&lt;br /&gt;
 do_one(&#039;Color Jet Printer&#039;, &#039;Color_Jet_Printer&#039;);&lt;br /&gt;
 do_one(&#039;CNC&#039;, &#039;CNC&#039;);&lt;br /&gt;
 do_one(&#039;Metal Workshop&#039;, &#039;Metal_workshop&#039;);&lt;br /&gt;
 do_one(&#039;Woodworking&#039;, &#039;Woodworking&#039;);&lt;br /&gt;
 do_one(&#039;Turtle Drawing Plotter&#039;, &#039;PlotBot&#039;);&lt;br /&gt;
 do_one(&#039;Bike Repair Corner&#039;, &#039;Bike_corner&#039;);&lt;br /&gt;
 do_one(&#039;Library&#039;, &#039;Library&#039;);&lt;br /&gt;
 do_one(&#039;Output Buffer&#039;, &#039;OutputBuffer&#039;);&lt;br /&gt;
 do_one(&#039;Making QR labels&#039;, &#039;Labels#QR_codes&#039;);&lt;br /&gt;
 do_one(&#039;Bongs&#039;, &#039;Bongs#Bongo&#039;);&lt;br /&gt;
 do_one(&#039;Bong Cleaning Tools&#039;, &#039;Bongs#Maintenance&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Printing them out: ===&lt;br /&gt;
Use this tool: https://git.familie-radermacher.ch/linux/ptouch-print.git&lt;br /&gt;
&lt;br /&gt;
 # perl makeqr.pl&lt;br /&gt;
 # ./ptouch-print --image=Library.png&lt;br /&gt;
&lt;br /&gt;
Minimize waste by chaining multiple labels:&lt;br /&gt;
&lt;br /&gt;
 # ./ptouch-print --image=CNC.png --chain&lt;br /&gt;
 # ./ptouch-print --image=Library.png --precut -chain&lt;br /&gt;
 # ./ptouch-print --image=OutputBuffer.png --precut&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Hackerspace&amp;diff=5508</id>
		<title>Hackerspace</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Hackerspace&amp;diff=5508"/>
		<updated>2026-03-22T16:07:29Z</updated>

		<summary type="html">&lt;p&gt;Thebys: /* Legal */ - Add link to official court registry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
In general a concept of hackerspace (hacklab, hackspace, or makerspace) is a community-operated, not-for-profit organization and workspace where people with common interests, such as computers, electronics, technology, science, digital art, or crafts, can meet, socialize, and collaborate. &lt;br /&gt;
[https://en.wikipedia.org/wiki/Hackerspace Wikipedia Hackerspace]&lt;br /&gt;
&lt;br /&gt;
Base48 is a hackerspace in Brno, Czech Republic. We are nonprofit organization [https://maps.app.goo.gl/1uMHNWzbigzfYCyr6 located in Kralovo pole]  with some &#039;&#039;&#039;300m2&#039;&#039;&#039; of space for creating / repairing / designing your projects or connecting with community.&lt;br /&gt;
&lt;br /&gt;
You can check out [https://mapall.space/heatmap/show.php?id=base48 availability heatmap] of base48 (and other hackerspaces).&lt;br /&gt;
&lt;br /&gt;
==== Why 48? ====&lt;br /&gt;
Why the number 48/0x30/0b00110000? Because the previous space that we used was at Čápkova 48. And because with other numbers like base64 we would have problems being found by people searching for us on google :)&lt;br /&gt;
&lt;br /&gt;
= Scope of our hackerspace =&lt;br /&gt;
* [[Woodworking|Workshop for wood]]&lt;br /&gt;
* [[Metal workshop|Workshop for metal]]&lt;br /&gt;
* [[Electro lab|Electronics lab]]&lt;br /&gt;
* [[3D printing lab]]&lt;br /&gt;
* [[Services|Digital services]]&lt;br /&gt;
* Chemistry lab&lt;br /&gt;
* Garden with grill -  [https://cryptpad.cz/calendar/#/2/calendar/view/WTp4sfV-5bUaDwQIyyIT7XIBZFS9Yg-rdKAtnCCmfPE/ Regular event]&lt;br /&gt;
* Repair Corner - [https://cryptpad.cz/calendar/#/2/calendar/view/WTp4sfV-5bUaDwQIyyIT7XIBZFS9Yg-rdKAtnCCmfPE/ Regular event]&lt;br /&gt;
* Bike Repair Corner - [https://cryptpad.cz/calendar/#/2/calendar/view/WTp4sfV-5bUaDwQIyyIT7XIBZFS9Yg-rdKAtnCCmfPE/ Regular event]&lt;br /&gt;
* [https://wiki.base48.cz/wiki/Library Library]&lt;br /&gt;
* Open space workstations&lt;br /&gt;
* Chill-out zone&lt;br /&gt;
* Open kitchen&lt;br /&gt;
&lt;br /&gt;
= Equipment and Projects =&lt;br /&gt;
[https://wiki.base48.cz/wiki/Equipment Equipment list]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.base48.cz/wiki/Category:Projects Projects] | &lt;br /&gt;
[https://wiki.base48.cz/wiki/New_Project_Template New project Template] |&lt;br /&gt;
[https://old-wiki.base48.cz/Category:Projects.html Old projects - Read only]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.base48.cz/wiki/Category:NewEvents Events] |&lt;br /&gt;
[https://wiki.base48.cz/wiki/Updates Updates] | &lt;br /&gt;
[https://old-wiki.base48.cz/Category:Events.html Old events - Read only]&lt;br /&gt;
&lt;br /&gt;
= Contacts =&lt;br /&gt;
&#039;&#039;&#039;Address&#039;&#039;&#039;:&amp;lt;br /&amp;gt;Mojmírovo náměstí 17&amp;lt;br /&amp;gt;Palackého třída 742&amp;lt;br /&amp;gt;Brno - Královo pole&amp;lt;br /&amp;gt;612 00&lt;br /&gt;
&lt;br /&gt;
[https://www.google.com/maps/place/base48.cz+hackerspace/@49.2242367,16.5968322,100a,35y,271.25h,45.62t/data=!3m1!1e3!4m5!3m4!1s0x4712958db2465805:0xa957e93a893b0913!8m2!3d49.224284!4d16.5955943 &#039;&#039;&#039;Google maps&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
In case you want to contact us please use &#039;&#039;&#039;[https://lists.base48.cz/mailman3/lists/ &#039;&#039;mailing list - rada&#039;&#039;].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
!Web&lt;br /&gt;
!IRC&lt;br /&gt;
!Socials&lt;br /&gt;
|-&lt;br /&gt;
|[https://github.com/base48 Github]&lt;br /&gt;
|[https://web.libera.chat/?#base48 IRC #base48]&lt;br /&gt;
|[https://signal.group/#CjQKIFfa1_drdrVA8tzfolFIZVAbCSvg4cUCn5zx-czVGvUsEhDwl_MecwpNt4xC1kIujc49 Signal group: members only]&lt;br /&gt;
|-&lt;br /&gt;
|[https://base48.cz/ Web page]&lt;br /&gt;
|server: irc.libera.chat&lt;br /&gt;
|[https://signal.group/#CjQKIHBQ1JXOJ0momxbQIsaBet-gPgFRq9hUQyvVk-BV785AEhBC8WvwTDodUmPzfBrcfbHN Signal group: public]&lt;br /&gt;
|-&lt;br /&gt;
|[https://m.base48.cz/auth/login Member Portal]&lt;br /&gt;
|port: 6667&lt;br /&gt;
|[https://www.facebook.com/Base48.cz/ Facebook]&lt;br /&gt;
|-&lt;br /&gt;
|[https://lists.base48.cz Mailing Lists]&lt;br /&gt;
|channel: #base48&lt;br /&gt;
|[https://twitter.com/base48_cz Twitter]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Members can use [[IRCBouncer|base48&#039;s irc bouncer]]     &lt;br /&gt;
|[https://www.instagram.com/base48cz/ Instagram]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|There is an [[WikiBot|IRC bot]] &lt;br /&gt;
|[https://www.youtube.com/channel/UCyBFShxrgO1QkRqs7EEM04A? YouTube]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Legal =&lt;br /&gt;
Our legal entity is Base48, z.s.&amp;lt;br/&amp;gt;&lt;br /&gt;
Registered 6. srpna 2010&amp;lt;br/&amp;gt;&lt;br /&gt;
IČ: [https://or.justice.cz/ias/ui/rejstrik-firma.vysledky?subjektId=786587&amp;amp;typ=UPLNY 22859802], [https://or.justice.cz/ias/ui/vypis-sl-firma?subjektId=786587 sbírka listin]&lt;br /&gt;
&lt;br /&gt;
=Gallery=&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;slideshow&amp;quot;&amp;gt;&lt;br /&gt;
File:Soc room.jpg&lt;br /&gt;
File:420.jpg&lt;br /&gt;
File:20240302 154439.jpg&lt;br /&gt;
File:3D_corner.jpg&lt;br /&gt;
File:3D_tea_party.jpg&lt;br /&gt;
File:Wood_workshop.jpg&lt;br /&gt;
File:20240302_155942.jpg&lt;br /&gt;
File:Elektrocorner.jpg&lt;br /&gt;
File:20240302_162217.jpg&lt;br /&gt;
File:Kitchen.jpg&lt;br /&gt;
File:20250512_133643.jpg&lt;br /&gt;
File:20250512 133025.jpg&lt;br /&gt;
File:20250512 133241.jpg&lt;br /&gt;
File:20250512 133436.jpg&lt;br /&gt;
File:20250512 133559.jpg&lt;br /&gt;
File:20250512 133708.jpg&lt;br /&gt;
File:20250512 132756.jpg&lt;br /&gt;
File:20250512 134747.jpg&lt;br /&gt;
File:20250512 134726.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://wiki.base48.cz/wiki/Gallery Gallery]  /  [https://www.facebook.com/Base48.cz/photos More Photos (FB)]  / [https://www.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion/Base48.cz/photos More Photos (Onion FB)]&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Printers_and_printing&amp;diff=5507</id>
		<title>Printers and printing</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Printers_and_printing&amp;diff=5507"/>
		<updated>2026-03-22T14:00:06Z</updated>

		<summary type="html">&lt;p&gt;Thebys: Basic info on printers available at Base48.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Printers for printing on paper ==&lt;br /&gt;
&lt;br /&gt;
=== HP LaserJet P4015x ===&lt;br /&gt;
&lt;br /&gt;
* Common BW office laser printer &lt;br /&gt;
* Cheap prints&lt;br /&gt;
&lt;br /&gt;
=== HP DesignJet T520 (Richard) ===&lt;br /&gt;
&lt;br /&gt;
* Color printing plotter &lt;br /&gt;
* Prints on paper rolls, maximum print width is 914 mm&lt;br /&gt;
* Expensive prints&lt;br /&gt;
&lt;br /&gt;
=== Samsung CLX-3185FW ===&lt;br /&gt;
&lt;br /&gt;
* Can scan onto USB flash drive&lt;br /&gt;
* Rarely prints&lt;br /&gt;
&lt;br /&gt;
== Label maker(s) ==&lt;br /&gt;
See [[Labels]].&lt;br /&gt;
&lt;br /&gt;
== 3D Printers ==&lt;br /&gt;
See [[3D printing lab|3D Printing lab]].&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Category:Services&amp;diff=5455</id>
		<title>Category:Services</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Category:Services&amp;diff=5455"/>
		<updated>2026-03-06T18:39:09Z</updated>

		<summary type="html">&lt;p&gt;Thebys: factorio server&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists all &#039;&#039;&#039;digital&#039;&#039;&#039; services provided to base48 members. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Services&lt;br /&gt;
!Name&lt;br /&gt;
!URL&lt;br /&gt;
!Authentication&lt;br /&gt;
!Maintainer&lt;br /&gt;
|-&lt;br /&gt;
|[[MemberPortal/meta|memberportal]]&lt;br /&gt;
|https://members.base48.cz/&lt;br /&gt;
|[[Keycloak]]&lt;br /&gt;
|Thebys&lt;br /&gt;
|-&lt;br /&gt;
|[[Keycloak]]&lt;br /&gt;
|https://sso.base48.cz/&lt;br /&gt;
|[[Keycloak]]&lt;br /&gt;
|Vega&lt;br /&gt;
|-&lt;br /&gt;
|[[Nextcloud]]&lt;br /&gt;
|https://nextcloud.at.base48.cz&lt;br /&gt;
|[[Keycloak]]&lt;br /&gt;
|Vega&lt;br /&gt;
|-&lt;br /&gt;
|[[HomeAssistant]]&lt;br /&gt;
|https://ha.base48.cz&lt;br /&gt;
|[[Keycloak]]&lt;br /&gt;
|Vega/Thebys&lt;br /&gt;
|-&lt;br /&gt;
|Wiki&lt;br /&gt;
|https://wiki.base48.cz&lt;br /&gt;
|[[Keycloak]]&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|[[Proxmox]]&lt;br /&gt;
|https://proxmox.at.base48.cz/&lt;br /&gt;
|[[Keycloak]]&lt;br /&gt;
|Vega&lt;br /&gt;
|-&lt;br /&gt;
|printer control&lt;br /&gt;
|http://printers.at.base48.cz/&lt;br /&gt;
|None &lt;br /&gt;
(only accessible &lt;br /&gt;
from base LAN)&lt;br /&gt;
|Vega&lt;br /&gt;
|-&lt;br /&gt;
|Factorio server&lt;br /&gt;
|&lt;br /&gt;
|players - password: base48&lt;br /&gt;
admin: ssh key&lt;br /&gt;
|Thebys/Skirit&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5451</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5451"/>
		<updated>2026-03-04T13:30:48Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown front.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|homepage=&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw, vintage, gambling, AI embodyment,&lt;br /&gt;
|stale=false&lt;br /&gt;
|Photogallery=https://photos.iver.cz/s/crown}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Thomas Bergmann Automatenbau Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level game logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel fortune disks&#039;&#039;&#039; - older design then &amp;quot;One Hand Bandit&amp;quot; - spins horizontal and clockwise rather then vertical!&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, unlock to allow disk spin. Heats up a lot at 24V from PSU.&lt;br /&gt;
* &#039;&#039;&#039;24V LEDs&#039;&#039;&#039; - Plenty of LEDs (30), originally it was bulbs, replaced with orange LEDs for extra vintage feel and lower heat, power consumption is the same.&lt;br /&gt;
* &#039;&#039;&#039;5 OG Buttons&#039;&#039;&#039; - Bottom part, to control the game.&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Links and resources ==&lt;br /&gt;
&lt;br /&gt;
* Fotodokumentace - [https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
* Projektová dokumentace - https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
* Github repo - https://github.com/Thebys/CrownPyBot&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
|2026/03/03&lt;br /&gt;
|4&lt;br /&gt;
|Revize napájecího systému&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5450</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5450"/>
		<updated>2026-03-04T12:30:33Z</updated>

		<summary type="html">&lt;p&gt;Thebys: /* Changelog */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown front.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|homepage=https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw, vintage, gambling, AI embodyment,&lt;br /&gt;
|stale=false&lt;br /&gt;
|Photogallery=https://photos.iver.cz/s/crown}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Thomas Bergmann Automatenbau Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level game logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel motors&#039;&#039;&#039; with worm gear assemblies (operating temp ~40°C)&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, 4-wire position-lock mechanism on gear wheels, driven by BD675 Darlington transistors at 24V (~545mA per coil, 44Ω, 80% duty cycle)&lt;br /&gt;
* &#039;&#039;&#039;Sonderspiele&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Photo Gallery ==&lt;br /&gt;
&lt;br /&gt;
[https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
|2026/03/03&lt;br /&gt;
|4&lt;br /&gt;
|Revize napájecího systému&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5449</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5449"/>
		<updated>2026-03-04T12:26:07Z</updated>

		<summary type="html">&lt;p&gt;Thebys: /* Changelog */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown front.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|homepage=https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw, vintage, gambling, AI embodyment,&lt;br /&gt;
|stale=false&lt;br /&gt;
|Photogallery=https://photos.iver.cz/s/crown}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Thomas Bergmann Automatenbau Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level game logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel motors&#039;&#039;&#039; with worm gear assemblies (operating temp ~40°C)&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, 4-wire position-lock mechanism on gear wheels, driven by BD675 Darlington transistors at 24V (~545mA per coil, 44Ω, 80% duty cycle)&lt;br /&gt;
* &#039;&#039;&#039;Sonderspiele&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Photo Gallery ==&lt;br /&gt;
&lt;br /&gt;
[https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
|2026/03/03&lt;br /&gt;
|4&lt;br /&gt;
|Revize napájecího systému&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | &#039;&#039;&#039;Celkem&#039;&#039;&#039; !! &#039;&#039;&#039;113&#039;&#039;&#039; !!&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5448</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5448"/>
		<updated>2026-03-04T12:23:28Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown front.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|homepage=https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw, vintage, gambling, AI embodyment,&lt;br /&gt;
|stale=false&lt;br /&gt;
|Photogallery=https://photos.iver.cz/s/crown}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Thomas Bergmann Automatenbau Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level game logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel motors&#039;&#039;&#039; with worm gear assemblies (operating temp ~40°C)&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, 4-wire position-lock mechanism on gear wheels, driven by BD675 Darlington transistors at 24V (~545mA per coil, 44Ω, 80% duty cycle)&lt;br /&gt;
* &#039;&#039;&#039;Sonderspiele&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Photo Gallery ==&lt;br /&gt;
&lt;br /&gt;
[https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | &#039;&#039;&#039;Celkem&#039;&#039;&#039; !! &#039;&#039;&#039;113&#039;&#039;&#039; !!&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5447</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5447"/>
		<updated>2026-03-02T14:13:32Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown-slot-machine.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|homepage=https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw, vintage, gambling, AI embodyment,&lt;br /&gt;
|stale=false&lt;br /&gt;
|Photogallery=https://photos.iver.cz/s/crown}}&lt;br /&gt;
&lt;br /&gt;
[[File:Crown front.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Th. Bergmann Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level game logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel motors&#039;&#039;&#039; with worm gear assemblies (operating temp ~40°C)&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, 4-wire position-lock mechanism on gear wheels, driven by BD675 Darlington transistors at 24V (~545mA per coil, 44Ω, 80% duty cycle)&lt;br /&gt;
* &#039;&#039;&#039;Sonderspiele&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Photo Gallery ==&lt;br /&gt;
&lt;br /&gt;
[https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | &#039;&#039;&#039;Celkem&#039;&#039;&#039; !! &#039;&#039;&#039;113&#039;&#039;&#039; !!&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=File:Crown_front.jpg&amp;diff=5446</id>
		<title>File:Crown front.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=File:Crown_front.jpg&amp;diff=5446"/>
		<updated>2026-03-02T14:13:07Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Front of the Crown machine as illustrative image.&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5445</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5445"/>
		<updated>2026-03-02T14:11:29Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown-slot-machine.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|homepage=https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw, vintage, gambling, AI embodyment,&lt;br /&gt;
|stale=false&lt;br /&gt;
|Photogallery=https://photos.iver.cz/s/crown}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Th. Bergmann Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level game logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel motors&#039;&#039;&#039; with worm gear assemblies (operating temp ~40°C)&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, 4-wire position-lock mechanism on gear wheels, driven by BD675 Darlington transistors at 24V (~545mA per coil, 44Ω, 80% duty cycle)&lt;br /&gt;
* &#039;&#039;&#039;Sonderspiele&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Photo Gallery ==&lt;br /&gt;
&lt;br /&gt;
[https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | &#039;&#039;&#039;Celkem&#039;&#039;&#039; !! &#039;&#039;&#039;113&#039;&#039;&#039; !!&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5444</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5444"/>
		<updated>2026-03-02T14:10:24Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown-slot-machine.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|coops=&lt;br /&gt;
|curr_version=&lt;br /&gt;
|os=Linux / ESP IDF&lt;br /&gt;
|arch=ESP32-S3 / ARM (Raspberry Pi)&lt;br /&gt;
|proglang=C / C++ / Python&lt;br /&gt;
|swlic=&lt;br /&gt;
|hwlic=&lt;br /&gt;
|github=&lt;br /&gt;
|homepage=https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw, vintage, gambling, AI embodyment,&lt;br /&gt;
|stale=false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Th. Bergmann Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level game logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel motors&#039;&#039;&#039; with worm gear assemblies (operating temp ~40°C)&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, 4-wire position-lock mechanism on gear wheels, driven by BD675 Darlington transistors at 24V (~545mA per coil, 44Ω, 80% duty cycle)&lt;br /&gt;
* &#039;&#039;&#039;Sonderspiele&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Photo Gallery ==&lt;br /&gt;
&lt;br /&gt;
[https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | &#039;&#039;&#039;Celkem&#039;&#039;&#039; !! &#039;&#039;&#039;113&#039;&#039;&#039; !!&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5443</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5443"/>
		<updated>2026-03-02T14:09:39Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown-slot-machine.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|coops=&lt;br /&gt;
|curr_version=&lt;br /&gt;
|os=Linux / ESP IDF&lt;br /&gt;
|arch=ESP32-S3 / ARM (Raspberry Pi)&lt;br /&gt;
|proglang=C#C++#Python&lt;br /&gt;
|swlic=&lt;br /&gt;
|hwlic=&lt;br /&gt;
|github=&lt;br /&gt;
|homepage=https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw&lt;br /&gt;
|stale=false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Th. Bergmann Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level game logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel motors&#039;&#039;&#039; with worm gear assemblies (operating temp ~40°C)&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, 4-wire position-lock mechanism on gear wheels, driven by BD675 Darlington transistors at 24V (~545mA per coil, 44Ω, 80% duty cycle)&lt;br /&gt;
* &#039;&#039;&#039;Sonderspiele&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Photo Gallery ==&lt;br /&gt;
&lt;br /&gt;
[https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | &#039;&#039;&#039;Celkem&#039;&#039;&#039; !! &#039;&#039;&#039;113&#039;&#039;&#039; !!&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5442</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5442"/>
		<updated>2026-03-02T14:08:39Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category:Projects}}&lt;br /&gt;
{{Project&lt;br /&gt;
|name=Crown&lt;br /&gt;
|image=Crown-slot-machine.jpg&lt;br /&gt;
|founder=Thebys&lt;br /&gt;
|coops=&lt;br /&gt;
|curr_version=&lt;br /&gt;
|os=Linux / ESP IDF&lt;br /&gt;
|arch=ESP32-S3 / ARM (Raspberry Pi)&lt;br /&gt;
|proglang=C#C++#Python&lt;br /&gt;
|swlic=&lt;br /&gt;
|hwlic=&lt;br /&gt;
|github=&lt;br /&gt;
|homepage=https://harbornote.iver.cz/s/CR/p/obecne-informace-a-odkazy-iKg7jxQgKu&lt;br /&gt;
|status=active&lt;br /&gt;
|tags=hw&lt;br /&gt;
|stale=false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Crown&#039;&#039;&#039; is a restoration and modernization project of a 1980s German Th. Bergmann Crown slot machine. The original Z80-based control system is being replaced with a modern dual-layer architecture while preserving the vintage mechanical hardware.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The system uses two controllers:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Crown32&#039;&#039;&#039; – ESP32-S3 microcontroller handling low-level hardware control (motors, brakes, sensors, lights)&lt;br /&gt;
* &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; – high-level game logic, AI agents, and user interface&lt;br /&gt;
&lt;br /&gt;
Target communication latency between the two layers is under 20ms.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The machine&#039;s mechanical subsystems include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reel motors&#039;&#039;&#039; with worm gear assemblies (operating temp ~40°C)&lt;br /&gt;
* &#039;&#039;&#039;Electromagnetic brakes&#039;&#039;&#039; – normally-engaged, 4-wire position-lock mechanism on gear wheels, driven by BD675 Darlington transistors at 24V (~545mA per coil, 44Ω, 80% duty cycle)&lt;br /&gt;
* &#039;&#039;&#039;Sonderspiele&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Stack ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CAD:&#039;&#039;&#039; FreeCAD 1.0 / OpenSCAD&lt;br /&gt;
* &#039;&#039;&#039;PCB:&#039;&#039;&#039; KiCad&lt;br /&gt;
* &#039;&#039;&#039;3D printing:&#039;&#039;&#039; PETG&lt;br /&gt;
&lt;br /&gt;
== Photo Gallery ==&lt;br /&gt;
&lt;br /&gt;
[https://photos.iver.cz/s/crown Průběžná fotodokumentace]&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Datum !! Hodiny !! Událost / změna&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/04 || 2 || Získání automatu Th. Bergmann Crown&lt;br /&gt;
|-&lt;br /&gt;
| 2023/02/18 || 16 || TFM – stroj provizorně opraven a otestován&lt;br /&gt;
|-&lt;br /&gt;
| 2023/03 || 16 || První experimenty s high level systémem: [https://github.com/Thebys/CrownPyBot CrownPyBot]&lt;br /&gt;
|-&lt;br /&gt;
| 2023/06 || 6 || Výměna 50 žárovek za oranžové LED typ T10 W5W (~420 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2024/08 || 4 || Aktualizace [https://github.com/Thebys/CrownPyBot CrownPyBot] systému&lt;br /&gt;
|-&lt;br /&gt;
| 2024/12 || 5 || Převoz automatu do Brna&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 2 || Umístění automatu v [https://base48.cz Base48]&lt;br /&gt;
|-&lt;br /&gt;
| 2025/04 || 4 || Vyčištění zadní stěny a příprava na nový power delivery systém&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05 || 16 || Reverse engineering ovládání pravých 10× LED (Risiko Platine)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/05/14 || 2 || Nákup náhradního tranzistoru, barevných vodičů (PNLY), propojovací vodiče dupont, level shifter 3↔5 ×3, … (~400 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/06 || 2 || Rozhodnutí nahradit sedmisegmentovky maticovými display 2×8×8 vlevo a 3×8×8 vpravo&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/11 || 4 || Demontáž zářivky podsvícení CROWN, testování 5V 144/m LED pásku, návrh nového podsvětlení, testování s ATX zdrojem (5V 15A). RGB LED pásek WS2812B 144/m 5V × 1m (~500 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/06/25 || 2 || Aktualizace dokumentace, sken manuálu do PDF, dump pamětí&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/09 || 8 || Výměna motoru z 220 VAC na 24 VDC, příprava převodovky, testování. Tranzistory + IDC konektory (~600 Kč), nový motor (~350 Kč), beefier motor driver (~300 Kč)&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/15 || 2 || Výměna vypálených tranzistorů světelného panelu z BD675 na STX112AP&lt;br /&gt;
|-&lt;br /&gt;
| 2025/09/25 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2025/11/08 || 4 || Příprava nového řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
| 2026/02/15 || 16 || Tisk držáku motoru, test elektromagnetických brzd, test motoru a řízení motoru&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;1&amp;quot; | &#039;&#039;&#039;Celkem&#039;&#039;&#039; !! &#039;&#039;&#039;113&#039;&#039;&#039; !!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
See changelog.&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5441</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5441"/>
		<updated>2026-03-02T12:07:58Z</updated>

		<summary type="html">&lt;p&gt;Thebys: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Category:Projects}}&lt;br /&gt;
{{Project}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{:Skeleton}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;div style=&amp;quot;clear: right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: block; float: right; margin-left: 10px; margin-bottom: 10px; margin-top: 10px; width: 300px; &amp;quot; class=&amp;quot;catlinks&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Project Header --&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;margin-top: 0.3em; margin-bottom: 0.3em; width: 290px; font-weight: bolder; font-size: 1.4em; text-align: center;  color: #333;&amp;quot;&amp;gt;{{#if:{{{name|}}}|{{{name}}}|{{PAGENAME}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Project logo --&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;width: 290px; text-align: center; margin: 5px;&amp;quot;&amp;gt;[[File:{{#if: {{{image|}}}|{{{image}}}|Base-small.png}}|frameless|290px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Project Details --&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;border: 1px solid #CCC; margin: 5px; padding: 0.5em; background-color: #FFF;&amp;quot;&amp;gt;&lt;br /&gt;
    {{ProjectInfoBoxItem|Founder|{{#replace:{{{founder}}}|#||&amp;lt;br/&amp;gt;}}|base48-wiki-users}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Coops|{{#replace:{{{coops|}}}|#|, &amp;amp;#x200b;}}|base48-wiki-users}} &amp;lt;!-- uglyhack: MW parser ignores the trailing spaces of replacement, &amp;amp;#x200b; is &#039;zero-width&#039; space&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Latest Version|{{{curr_version|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Operating&amp;lt;br/&amp;gt;System(s)|{{{os|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Architecture(s)|{{{arch|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Programming&amp;lt;br/&amp;gt;Language(s)|{{{proglang|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|SW License|{{{swlic|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|HW License|{{{hwlic|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|github|{{#if:{{{github|}}}|[https://github.com/{{{github}}} github repository]|{{{github|}}}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Homepage|{{{homepage|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Status|{{{status}}}}}&lt;br /&gt;
    &amp;lt;div style=&amp;quot;clear: right; margin-top: 4px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#ifeq: {{{status|}}} &lt;br /&gt;
       | template &lt;br /&gt;
       |&amp;lt;!--nothing--&amp;gt;|&lt;br /&gt;
      [[Category:Projects]] &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{ProjectCategoryTags|Software projects|sw|{{{tags|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{ProjectCategoryTags|Hardware projects|hw|{{{tags|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{ProjectCategoryTags|Projects looking for participants|coops|{{{tags|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{ProjectCategoryTags|Infrastructure projects|infrastructure|{{{tags|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{#ifeq:{{{stale|false}}}|true|[[Category:Stale projects]]||}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; }} &amp;lt;!-- end of #ifeq status=template&lt;br /&gt;
--&amp;gt; &amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
	<entry>
		<id>https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5440</id>
		<title>Crown</title>
		<link rel="alternate" type="text/html" href="https://wiki.base48.cz/w/index.php?title=Crown&amp;diff=5440"/>
		<updated>2026-03-02T12:07:14Z</updated>

		<summary type="html">&lt;p&gt;Thebys: template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Project}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{:Skeleton}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;div style=&amp;quot;clear: right;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: block; float: right; margin-left: 10px; margin-bottom: 10px; margin-top: 10px; width: 300px; &amp;quot; class=&amp;quot;catlinks&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Project Header --&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;margin-top: 0.3em; margin-bottom: 0.3em; width: 290px; font-weight: bolder; font-size: 1.4em; text-align: center;  color: #333;&amp;quot;&amp;gt;{{#if:{{{name|}}}|{{{name}}}|{{PAGENAME}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Project logo --&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;width: 290px; text-align: center; margin: 5px;&amp;quot;&amp;gt;[[File:{{#if: {{{image|}}}|{{{image}}}|Base-small.png}}|frameless|290px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Project Details --&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;border: 1px solid #CCC; margin: 5px; padding: 0.5em; background-color: #FFF;&amp;quot;&amp;gt;&lt;br /&gt;
    {{ProjectInfoBoxItem|Founder|{{#replace:{{{founder}}}|#||&amp;lt;br/&amp;gt;}}|base48-wiki-users}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Coops|{{#replace:{{{coops|}}}|#|, &amp;amp;#x200b;}}|base48-wiki-users}} &amp;lt;!-- uglyhack: MW parser ignores the trailing spaces of replacement, &amp;amp;#x200b; is &#039;zero-width&#039; space&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Latest Version|{{{curr_version|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Operating&amp;lt;br/&amp;gt;System(s)|{{{os|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Architecture(s)|{{{arch|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Programming&amp;lt;br/&amp;gt;Language(s)|{{{proglang|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|SW License|{{{swlic|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|HW License|{{{hwlic|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|github|{{#if:{{{github|}}}|[https://github.com/{{{github}}} github repository]|{{{github|}}}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Homepage|{{{homepage|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; {{ProjectInfoBoxItem|Status|{{{status}}}}}&lt;br /&gt;
    &amp;lt;div style=&amp;quot;clear: right; margin-top: 4px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#ifeq: {{{status|}}} &lt;br /&gt;
       | template &lt;br /&gt;
       |&amp;lt;!--nothing--&amp;gt;|&lt;br /&gt;
      [[Category:Projects]] &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{ProjectCategoryTags|Software projects|sw|{{{tags|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{ProjectCategoryTags|Hardware projects|hw|{{{tags|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{ProjectCategoryTags|Projects looking for participants|coops|{{{tags|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{ProjectCategoryTags|Infrastructure projects|infrastructure|{{{tags|}}}}} &amp;lt;!--&lt;br /&gt;
--&amp;gt;   {{#ifeq:{{{stale|false}}}|true|[[Category:Stale projects]]||}} &amp;lt;!--&lt;br /&gt;
--&amp;gt; }} &amp;lt;!-- end of #ifeq status=template&lt;br /&gt;
--&amp;gt; &amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thebys</name></author>
	</entry>
</feed>