mirror of
https://github.com/skoelle/moonweb-site.git
synced 2026-09-17 17:00:25 +00:00
Compare commits
4
Commits
156595cbe4
...
a97c3d3a89
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a97c3d3a89 | ||
|
|
d213154b79 | ||
|
|
13fdffce07 | ||
|
|
b1639bbece |
@@ -17,7 +17,7 @@ parent: "/"
|
|||||||
<p>The AO486 core on MiSTer FPGA reproduces the original hardware with near-perfect accuracy. The key was not just getting the hardware emulation right, but rebuilding the exact software environment: the same MS-DOS version, the same memory managers (HIMEM.SYS, EMM386), the same Sound Blaster drivers, and the same AUTOEXEC.BAT and CONFIG.SYS tuning that made the original machine run smoothly. Even the directory structure and file names match the original setup.</p>
|
<p>The AO486 core on MiSTer FPGA reproduces the original hardware with near-perfect accuracy. The key was not just getting the hardware emulation right, but rebuilding the exact software environment: the same MS-DOS version, the same memory managers (HIMEM.SYS, EMM386), the same Sound Blaster drivers, and the same AUTOEXEC.BAT and CONFIG.SYS tuning that made the original machine run smoothly. Even the directory structure and file names match the original setup.</p>
|
||||||
|
|
||||||
<h2>Context: DOSMENU</h2>
|
<h2>Context: DOSMENU</h2>
|
||||||
<p>A key part of the preserved environment is <strong>DOSMENU</strong>, a boot configuration utility written in Turbo Pascal 6.0 in 1994 — originally developed specifically for this Colani 486 machine. DOSMENU let you choose at boot time which AUTOEXEC.BAT and CONFIG.SYS commands to load — a critical feature in the DOS era, where memory management was manual and games often required different driver configurations. Features included saveable presets, a built-in MOD player, PCX picture display, and a DoubleSpace memory unloader. The original source: ~50k of Turbo Pascal, roughly 1900 lines plus some inline assembler.</p>
|
<p>A key part of the preserved environment is <strong><a href="https://28k8.moonweb.org/bbs/pc/dosmenu/">DOSMENU</a></strong>, a boot configuration utility written in Turbo Pascal 6.0 in 1994 — originally developed specifically for this Colani 486 machine. DOSMENU let you choose at boot time which AUTOEXEC.BAT and CONFIG.SYS commands to load — a critical feature in the DOS era, where memory management was manual and games often required different driver configurations. Features included saveable presets, a built-in MOD player, PCX picture display, and a DoubleSpace memory unloader. The original source: ~50k of Turbo Pascal, roughly 1900 lines plus some inline assembler.</p>
|
||||||
|
|
||||||
<h2>Why a 1:1 recreation</h2>
|
<h2>Why a 1:1 recreation</h2>
|
||||||
<p>The point isn't just to play DOS games — it's to preserve the exact computing experience from that era. The way DOS memory management worked, the way sound drivers had to be configured manually, the way batch files chained together to create a usable environment. This level of detail is lost when you just launch a DOS game from a modern frontend. The MiSTer setup recreates the entire boot process, from BIOS POST to the C:\> prompt, just as it was in the mid-90s.</p>
|
<p>The point isn't just to play DOS games — it's to preserve the exact computing experience from that era. The way DOS memory management worked, the way sound drivers had to be configured manually, the way batch files chained together to create a usable environment. This level of detail is lost when you just launch a DOS game from a modern frontend. The MiSTer setup recreates the entire boot process, from BIOS POST to the C:\> prompt, just as it was in the mid-90s.</p>
|
||||||
@@ -27,7 +27,7 @@ parent: "/"
|
|||||||
<li><strong>DOS boot environment</strong> — the exact AUTOEXEC.BAT and CONFIG.SYS from the original machine, including memory manager configuration and Sound Blaster IRQ settings.</li>
|
<li><strong>DOS boot environment</strong> — the exact AUTOEXEC.BAT and CONFIG.SYS from the original machine, including memory manager configuration and Sound Blaster IRQ settings.</li>
|
||||||
<li><strong>Game installations</strong> — original game installations with their setup utilities, configuration files, and saved games, all in the same directory paths as the original.</li>
|
<li><strong>Game installations</strong> — original game installations with their setup utilities, configuration files, and saved games, all in the same directory paths as the original.</li>
|
||||||
<li><strong>System utilities</strong> — Norton Commander, PKZIP, the usual toolkit of the era, all configured the way they were used daily.</li>
|
<li><strong>System utilities</strong> — Norton Commander, PKZIP, the usual toolkit of the era, all configured the way they were used daily.</li>
|
||||||
<li><strong>DOSMENU</strong> — a custom boot configuration utility written specifically for this Colani 486 in 1994. Built in Turbo Pascal, it let you choose at boot time which AUTOEXEC.BAT and CONFIG.SYS commands to load — essential for managing DOS memory across different games and applications.</li>
|
<li><strong><a href="https://28k8.moonweb.org/bbs/pc/dosmenu/">DOSMENU</a></strong> — a custom boot configuration utility written specifically for this Colani 486 in 1994. Built in Turbo Pascal, it let you choose at boot time which AUTOEXEC.BAT and CONFIG.SYS commands to load — essential for managing DOS memory across different games and applications.</li>
|
||||||
<li><strong>The quirks</strong> — the specific workarounds and tweaks that were needed to get everything running together, the kind of institutional knowledge that only exists on a well-used personal machine.</li>
|
<li><strong>The quirks</strong> — the specific workarounds and tweaks that were needed to get everything running together, the kind of institutional knowledge that only exists on a well-used personal machine.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
@@ -72,6 +72,10 @@ sections:
|
|||||||
summary: "TubeArchivist and TubeSync for self-hosted YouTube downloading on the Synology."
|
summary: "TubeArchivist and TubeSync for self-hosted YouTube downloading on the Synology."
|
||||||
href: "/tubearchivist/"
|
href: "/tubearchivist/"
|
||||||
emoji: "📺"
|
emoji: "📺"
|
||||||
|
- title: "Kids RFID MP3 Player"
|
||||||
|
summary: "Arduino-based audio player for kids using RFID cards, built as a custom alternative to Hoerbert."
|
||||||
|
href: "/kids-rfid-player/"
|
||||||
|
emoji: "🎵"
|
||||||
---
|
---
|
||||||
<p class="site-intro">The heart of the homelab. Home Assistant, MQTT sensors, dashboards, and automation projects that make everyday life a little more interesting.</p>
|
<p class="site-intro">The heart of the homelab. Home Assistant, MQTT sensors, dashboards, and automation projects that make everyday life a little more interesting.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
title: "Kids RFID MP3 Player"
|
||||||
|
section: "smarthome"
|
||||||
|
parent: "/"
|
||||||
|
description: "A custom Arduino-based RFID audio player for kids, inspired by the Hoerbert and Tonuino projects."
|
||||||
|
layout: base.njk
|
||||||
|
---
|
||||||
|
<h1>Kids RFID MP3 Player</h1>
|
||||||
|
<div class="detail-content">
|
||||||
|
|
||||||
|
<p>An Arduino-based MP3 player where kids select audio content by holding RFID cards against the device. No screen, no menus, no WiFi — just tap a card and music plays. Built together with my son in 2018 as a cheaper, more flexible alternative to commercial products like the Hoerbert or Tonuino.</p>
|
||||||
|
|
||||||
|
<h2>Why this exists</h2>
|
||||||
|
<p>Commercial kids' audio players have trade-offs. The Hoerbert only offers 9 direct-select buttons with color-coded cards that aren't very intuitive for very young children. The Tonuino uses expensive RFID figures and relies on WiFi streaming, which introduces latency and dependency on network availability. This project aimed for the best of both worlds: RFID-based content selection with local-only playback, analog volume control, and minimal buttons.</p>
|
||||||
|
|
||||||
|
<h2>Hardware</h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Arduino</strong> — the microcontroller running the custom firmware.</li>
|
||||||
|
<li><strong>RFID module</strong> — reads MIFARE cards to trigger audio playback.</li>
|
||||||
|
<li><strong>DFPlayer Mini</strong> — compact MP3 player module with built-in amplifier, handling audio decoding and playback directly from an SD card.</li>
|
||||||
|
<li><strong>Pololu power switch</strong> — handles auto-shutdown to prevent battery drain, replacing a manual toggle switch that a child would forget to turn off.</li>
|
||||||
|
<li><strong>Analog volume knob</strong> — a rotary potentiometer for tactile volume control, deliberately chosen over digital buttons.</li>
|
||||||
|
<li><strong>3 LEDs</strong> — green (playing), yellow (paused), red (stopped/at end).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>How it works</h2>
|
||||||
|
<p>Each RFID card is mapped to a specific audio file on the SD card. Hold a card against the reader and the corresponding story or song starts playing. Hold the RFID keychain against the reader to pause; hold it again to resume. No other buttons exist on the device — the design intentionally minimizes interaction points so even a toddler can use it independently.</p>
|
||||||
|
|
||||||
|
<h2>Auto-shutdown behavior</h2>
|
||||||
|
<p>The power management distinguishes between two states to avoid unnecessary battery drain:</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Stopped</strong> (playback reached the end) — the device shuts down after 5 minutes.</li>
|
||||||
|
<li><strong>Paused</strong> (user paused via RFID) — the device stays on for 1 hour before shutting down, allowing easy resumption.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>The case</h2>
|
||||||
|
<p>The enclosure is a custom-built retro-style wooden box, painted by hand. The name "Rocky Box" came from my son, who painted a Paw Patrol character on the front. The design is deliberately quirky and homemade rather than polished — it has character.</p>
|
||||||
|
|
||||||
|
<h2>What's missing (by design)</h2>
|
||||||
|
<ul>
|
||||||
|
<li>No resume after power-off — turning the device off mid-playback means starting the story over from the beginning.</li>
|
||||||
|
<li>No skip forward/backward within a track — stories play start to finish.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Both omissions are intentional. Young children don't need seeking functionality, and keeping the interface to just "tap card, listen" reduces confusion.</p>
|
||||||
|
|
||||||
|
<h2>Setup</h2>
|
||||||
|
<p>All 100 RFID cards were pre-programmed once and labeled with numbers. No card learning or reprogramming is needed after initial setup — just hand a child a numbered card and they know which story it triggers.</p>
|
||||||
|
|
||||||
|
<h2>Code</h2>
|
||||||
|
<p>The Arduino firmware is not yet published on GitHub. It's a custom implementation (not Tonuino), written in C++ for the Arduino platform. The code may be uploaded in the future.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -80,7 +80,7 @@ layout: stefankoelle.njk
|
|||||||
<li>MP3 Module for playback on attached speaker.</li>
|
<li>MP3 Module for playback on attached speaker.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h3>Kids RFID MP3 Player (2018)</h3>
|
<h3><a href="https://smarthome.moonweb.org/kids-rfid-player/">Kids RFID MP3 Player</a> (2018)</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Interactive audio playback system utilizing RFID technology.</li>
|
<li>Interactive audio playback system utilizing RFID technology.</li>
|
||||||
<li>Powered by an Arduino Nano for compact and efficient operation.</li>
|
<li>Powered by an Arduino Nano for compact and efficient operation.</li>
|
||||||
@@ -243,5 +243,5 @@ layout: stefankoelle.njk
|
|||||||
<p>Stefan Kölle<br>Neumarkter Str. 86c<br>81673 München</p>
|
<p>Stefan Kölle<br>Neumarkter Str. 86c<br>81673 München</p>
|
||||||
<p>Phone/Fax: +49-(89)-20006547<br>E-Mail: <a id="email-impressum" href="#">[email protected]</a></p>
|
<p>Phone/Fax: +49-(89)-20006547<br>E-Mail: <a id="email-impressum" href="#">[email protected]</a></p>
|
||||||
<p>Responsible for content according to § 18 (2) MStV: Stefan Kölle, address as above.</p>
|
<p>Responsible for content according to § 18 (2) MStV: Stefan Kölle, address as above.</p>
|
||||||
<p>Full legal notice & privacy policy for this website and the moonweb.org network: <a href="https://hub.moonweb.org/impressum">hub.moonweb.org/impressum</a>
|
<p>Full legal notice & privacy policy for this website and the moonweb.org network: <a href="https://hub.moonweb.org/impressum/">hub.moonweb.org/impressum</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user