Magic Window

software, code, art, computervision, opencv, python

About

A simple optical illusion: A webcam tracks your head in space (OpenCV haarcascade) and estimates your position in space. Then, a virtual scene is rendered using your head position. Some additional magic de-skews the virtual frustum back to the RL monitor.

All in all: It looks as if you are looking through a window into a virtual world. Neat!

News

  • 2018-12-23_00-00: Ready!
  • 2018-12-22_00-00: Got all the individual parts working (head tracking, rendering, de-skewing)
  • 2018-12-21_00-00: Idea

Images


Python Pretty FFT (Audio Analysis Tool)

software, audio, opengl, fft

About

pypFFT: The latest iteration of my FFTs. This time, it is done in Python using NumPy and proper Shaders.
pFFT: A little spectrum analyzer based on a Turbo Pascal source I snitched at the JugendForscht conference somewhere in the 1990s. With the help of zebster and several beers it evolved into a high-speed integer-based FFT.
Combine that with some nifty features (bass-zoom, phon-correction, stereo panorama, phase graphs, OpenGL display) and you have a mesmerizing little audio companion!

News

  • 2018-12-22: R026
  • 2018-12-01: R021
  • 2018-11-11:

Files

Images


1D Video Games

hardware, surabiko, horizon, videogames, gfx, led, rgb

About

It's all too much these days: Too much news, too many photos, too many opinions... Too many ... errr... dimensions?

Don't worry! Surabiko Corp. has got you covered!

Introducting the "Surabiko HORIZON" - the very best in retina singing 1D computer graphics! With its resolution of 32x1 (or "1p") it offers all the pixels you would ever want!

Enjoy titles like "Wolfenstein 1D" , "w1peout", "Pong" or "Column" :-)

News

  • 2018-10-20_12-00: Pretty much final
  • 2018-10-15_12-00: Re-programmed a MIDI synth engine and TI text-to-speech; added networking support; Home Menu;
  • 2018-10-03_23-00: ESP32 version of "Wolfenstein 1D" with anti-aliasing and "textures". Looks awesome!
  • 2018-10-02_20-00: Working Python version of "Racing 1D"
  • 2018-09-30_17-00: Working Arduino version of "Wolfenstein 1D"
  • 2018-09-28_23-00: Working python version of "Wolfenstein 1D"
  • 2018-09-22_18-00: Initial ideas

Images


Chairmobil

hardware, slawikbros, robopocalypse, livingroom, fahrstuhl, permobil

About

Turning an electric wheel chair (eBay) into a mobile living room :-)
As shown on the "Kurze Nacht der Kunst" on 22nd of September 2018 in Poing, Germany.

News

  • 2018-10-12_18-00: Chairmobil live at "Kunstlabor" (MUCA), Munich
  • 2018-09-22_18-00: Chairmobil live at "Kurze Nacht der Kunst", Poing
  • 2018-03-14_12-00: Bought a "Permobil C300" off eBay for ~200 Euros

Images


Subjektiv Sicher.

cctv, bigBrother, art, paper, lasercut

About

Our commentary on pervasive video surveillance and "subjective safety"...

News

  • 2018-09-22_18-00: Subjektiv Sicher." at "Kurze Nacht der Kunst

Images


V-Tech Genius Leader (Learning Computer) Hacking

hardware, hacking, toy, upgrade, notebook, vintage, midi, z80

About

Oh, I love vintage notebooks from the 1990s so much...

Once upon a late night, I stumbled upon a "children's learning notebook" by german board game company Ravensburger. For only a few Euros I gave in to my curiosity and just bought it. Maybe as a fancy Raspberry Pi notebook caseusing its original components (screen, keyboard)?
It arrived, I switched it on and was happily greeted by a friendly female voice, inviting me to a commence a round of math quizzes. Cute! I played some rounds, tried out one program after the other, but then stumbled upon something more geeky: Some productivity programs! There seems to be more to that device than just leisure learning games!
The fact that it has a word processor with a "PC-Link" function made me curious - Could I connect it to another computer? An Arduino? Raspberry Pi? ESP8266? Well, I did not find any information about the "PC-Link feature" on the internet, not even by asking the company's support directly (although they scanned the original manual for me and sent it to me as a PDF! Kudos, Ravensburger support!). There is no cable or software available these days.
But since the computer has a standard 6-pin DIN jack, I searched and found the original ink jet printer (eBay ~10 Euros) which also connects to that port. So I just shoved some wires into the DIN-port and connected an Arduino between the notebook and the printer and watched the bits flow by... I quickly saw that it was some kind of SPI protocol. That was fun.
So this showed me that serial data transmission is possible, and there is some level of hackability to that device. But what about running my own code? I could not find other cartridges (it has a cartridge slot) so there is no way of finding some data to play with. So first I stopped there.
But wait! There are so many other "learning notebooks" out there! All hands on the eBays...!

So I searched for learning notebooks and instantly got dozens of hits for notebooks by V-Tech (well known for its Disney licensed/branded learning notebooks - there are thousands of them!). So I narrowed it down to the "serious" or "boring" looking ones... and that's when I got dragged deep into the world of the vintage "V-Tech Genius Leader" series...

Those things go for 1 Euro on eBay, are available in vast quantities and seem to have big similarities among the different models - there seems to be some sort of V-Tech proprietary "platform" for those devices and most of them come with a parallel printer port and/or a mouse! I wand to know more!

I bought them all.

Some even twice so I can dissect and analyse them. (These ARE learning notebooks after all!)

Now THIS is going to be a real challenge! Such proprietary devices which -I suspect- have only a single "V-Tech chip" inside them (not to be confused with the "V-Chip" from South Park). So: No official documentation whatsoever. I would have to become "Sherlock HotKey" and work myself through a long trace of sparse clues... This could be challenging and interesting!

It was mostly interesting :-D

For days the mail man brought one "Genius Leader" after the other: 2000, 4000, 4004 Quadro L, 5000, 5005 X, 6000 SL, 8000 CX, ... I started feeling a little crazy. And so did some of my friends. My brother called it "Nerdophilia" :-)

I found out that most of the models share the exact same cartridge port. You normally put new programs in there or add additional memory for the word processor and the built-in BASIC interpreter (yes, they can run BASIC! <3 <3 <3). So the cartridge port is the place I have to put my focus on: When cartridges can transfer data (and maybe program code) to the computer, why shouldn't I be able to do the same? It's pure logic.

The most common form of cartridge port consists of an edge connector with 2 rows with 18 pins each, so 36 pins total. The cartridges have the female connector on them, the main board exposes a card edge. Physically, the cartridge side almost resemble an old 5.25" floppy drive connector, except the floppy cable misses 2 pins (1 pin per row), so it is shorter. But that didn't stop me from trying it anyway ;-) I used a hot cutter and made the slot wider on one side. Fortuately, by opening up 3 cartridges, I saw that the first 2 pins (pin 1 and 36 by the V-Tech labeling) are not used! So I can just put in my own cable and do not need to care about pins 1 and 36.

The plan was to hook up an Arduino and watch what kind of data flows through those 36 (or 34 if you want) wires. There is NO documentation available, so what should I do? Also, the cartridges I opened only contained one single V-Tech branded chip (some proprietary ROM chip), so no information on what the pins could mean. Well, some of the outer pins are usually GND and +5V, but that's all.

I eBayed some more and finally bought a "Super Speicher 32K" - a cartridge that does not contain a program, but instead is used to store data. So there is no ROM chip inside, but either an EEPROM, FLASH or SRAM+battery. Tadaa! It was the latter: A coin cell battery and an 32 kilobyte SRAM chip. Lo and behold: Finally, a non-V-Tech chip! It is marked "LGS GM76C256CLLFW55W" and that means it is a "Hynix 32K x 8Bit CMOS SRAM". Wonderful!

By looking at its data sheet of that chip and how it was connected to the cartridge port, I could easily find out what each pin meant. Or at least 24 of them (GND, 15 address bits, 8 data bits). That should do for a first test!

I used my odd cable contraption, connected it to the notebook and watched the bits on the lines... Wow!
I prepared to see activity when I pressed the button "CARTRIDGE", but in fact there was activity ALL THE TIME. That means: I just tapped into the internal bus of the computer - the "spinal cord" of the notebook! It is now possible that I can see it thinking through that port - that is something that was completely unexpected and absolutely satisfactory for me.
No I knew that it was not crazy to have so many of those notebooks - it all has purpose now! :-D

First I used an Arduino MEGA (I needed up to 36 input pins) to catch all the data, but quickly found out that it's too slow to catch a reasonable amount of data without missing too much.
Luckily, I still had an unused Arduino DUE somewhere, which has the same amount of pins and runs at a much higher speed (84 MHz). Also, the serial port can use much higher speeds (theoretically up to 480 MBit/s). That should suffice :-D

Yes it did suffice.

I can clearly see certain memory regions lighting up according to different events (keyboard input, running BASIC, writing long texts, playing games) - that is mesmerizing! :-D

...

Some months later I have created a DIY debugging cartridge! It allows for bidirectional I/O to the outside world. I successfully hooked it up to a Raspberry Pi as a serial terminal. Also, there is a MIDI interface plug-in :-)

News

  • 2018-09-19_13-30: Uploaded all files to thingiverse.com
  • 2017-09-14_11-54: Got in touch with the Z88DK community for compiler support. It is working as a proof-of-concept!
  • 2017-02-09_14-30: Started designing a cartridge PCB in KiCAD
  • 2016-09-01_12-30: Bought a Ravensburger Champion Notebook XXL
  • 2016-10-11_18-00: Bought a "Super Speicher 32K" - a cartridge which I suspect to contain non-V-Tech branded chip(s)...!
  • 2016-10-12_18-00: Trying to understand the cartridge port pinout by comparing ROM cartridge to SRAM cartridge ("Super Speicher 32K"), which has a well known chip!
  • 2016-10-22_15-30: Built a cartridge-to-cartridge break out "harness" and hooking it up to an Arduino MEGA to stare at bits...
  • 2016-10-23_18-30: Receiving data, although slow and weird!
  • 2016-10-25_15-00: Starting a bus visualization tool to look at the bits in a fancy way
  • 2016-10-25_18-00: Switched to Arduino DUE with 84 MHz for more data to look at.
  • 2016-10-29_01-00: Yass! Can view 130 000 bus cycles per second now. Things start to make sense!
  • 2016-10-29_04-00: I need to look at the remaining 13 pins to find some "chip select" lines or something. I need to figure out the exact memory address layout! I can somewhat separate ROM from RAM, but there seems to be more...
  • 2016-11-08-00_30:

Images


Autonomous Vehicle Tracking

robopocalypse, ugv, software, hardware, aruco, fiducials

About

My own take on autonomous vehicles.

News

  • 2018-09-19: Working for everyone's amusement
  • 2018-04-04: I want to re-create the tracking of Cecile B. Evans' "Sprung a Leak"

Images


HAUL

software, code, transpiler, art, vintage

About

The goal of HAUL is to have a piece of code that can translate itself into any other language. On its journey it can -of course- translate other source code as well.

These kinds of programs are nothing new and nothing too special. Every programmer should have tried this at least once themself. (See also: Transpiler, Quine, LLVM, etc.) Well, this is just my own approach at that. And I am having fun.

This project is in no way intended for any productive use. It's food for thought. An elaborate toy. Art and fart.

Please see the github repository for more infos.

News

  • 2018-05-29_00-00: Finally moved to github.
  • 2013-01-01_00-00: Started HAUL3. Yes, it's now HAUL instead auf HAL
  • 2012-02-23_00-00: Started HAL2
  • 2011-07-17_20-00: Wrote the ShadowRunner VM
  • 2011-07-17_12-00: Heard about STUXNET and was fascinated by the idea of polymorphic software
  • 2009-01-01_00-00: Initial ideas

Images


Thermal Vision

arduino, ir, grideye

About

DIY thermal camera using a GridEye sensor, an Arduino and a TFT screen.

News

  • 2017-06-23_18-00: Subjektiv Sicher." at "Kurze Nacht der Kunst

Files

  • Arduino Sketch (for use with a Iteaduino, because it has 3.3v) – ThermalVision.zip 24.61K

Images


Super Job (pretend vintage arcade game)

art, software, hardware, vintage, arcade

About

Super Job by fake company "Surabiko Inc."

Own music: Using Buzz and GameBoy Emu synths

Own tiny OS: Has a bios, window manager, apps, mail client, bugs, endless updates, ...

Own arcade hardware case: Laser cut, designed using OpenSCAD

News

  • 2015-09-30_20-00: Initial ideas
  • 2016-07-11_20-00: First digital sketches and mock-ups
  • 2016-10-29_18-00: New graphics! Things are getting into shape!

Files

Images


Auto Mower Bluetooth Upgrade

hardware, robopocalypse, bluetooth, daemon

About

Since our mowing robot (Husqvarna Automower) has a diagnostic port and its warranty just ran out, I decided to upgrade it with Bluetooth capabilities.

News

  • 2015-04-15_18-02: Not pretty, but working like a charm.

Images


CASIO DG-10 MIDI upgrade

hardware, hacking, music, upgrade, midi, vintage

About

I had an old CASIO DG-10 MIDI guitar in my music chamber. After doing some research I found out that the "premium" DG-20 version actually had a MIDI OUT.
I want!
Digging in some forums I stumbled upon the original service manual which had all the schematics of both versions side-by-side. With some hints from Franco Casagrande I was able to re-populate the mainboard with the few parts neccessary. And voila: A working MIDI guitar!

Here is the important information from Franco:
"The mother board is the same of DG-20 and I added (through a diode) a cable from the pin 17 to a female MIDI connector (pin 5), while I used the ground for pin 2 of the connector (shied) and any +5 V with a resistor 220 Ohm to pin 4.
The scheme is a little bit different from the scheme of the MIDI out of the DG-20, since this last one uses a resistor also to connect the pin 17 of the mother board, but using this system the guitar was not able to drive my GEM keyboard."

So simple! That did the trick!

News

  • 2014-12-28_22-30: Done after one sunday evening hack!

Images


Auto M0 (Smart Remote Operated Vehicle)

hardware, drones, robopocalypse, daemon

About

Drones are coming! Especially when they cost almost nothing. I took a cheap RC car (EUR 12), one of my old Palm Pre 1 smart phones, an Arduino and a Softmodem audio connection. By doing this, the car's "brain" can be any smart device that has an audio output. Smart phones have the big advantage over other embedded platforms (e.g. Raspberry Pi) for already having GPS, UMTS, WiFi, Bluetooth, Microphone, Cameras etc. that would normally add extra weight and power requirements.
The name "Auto M0" is an homage to Daniel Suarez' novel "DAEMON" where "Auto M8" is the name for full-size autonomous swarm cars.

News

  • 2013-03-28_14-30: It's moving! See http://www.youtube.com/watch?v=SvGhnA9_e9Y
  • 2013-03-26_22-20: Added a potentiometer to level in the audio input - communication now works end-to-end! (Telnet -WiFi- webOS -audio- Arduino -GPIO- car); did not dare to power the motor drivers, yet (enjoying partial success)
  • 2013-03-25_22-00: ATmegas arrived - preparing Softmodem interconnection based on my previously coded "softgolem" for webOS
  • 2013-03-23_15-00: Softmodem on DigiSpark won't work, since the ATtiny does not offer enough timers :-( Worse, my ye olde Arduino broke (too many flash cycles) - ordered a replacement ATmega168 and some Arduino Mini's
  • 2013-03-23_18-00: Preparing car-Arduino interconnection; found specs for the receiver unit (Silan Micro. RX-2B), carefully added additional control wires ("rainbow coretex") to the car's main PCB
  • 2013-03-23_14-00: Got the RC car - Teardown! Aww... Very cheap, but it'll do (for just 12 Euros)

Images


4WORD (1-Handed Keyboard)

hardware, software, prototyping, ergonomics, wearable computing, pervasive computing, hmi, arduino

About

HUD (head up displays), like Google Glass, lack a suitable text input method. Using a physical keyboard tends to break the HUD experience.
By using a small device that only has 4 buttons (thumb can be used to hold the device) it is possible to do one-handed eyes-free in-pocket text entry with an average of about 2 characters per second - enough for casual text entry like quickly responding to a text message while holding a coffee mug.
Entering characters is done by pressing "gestures" on the 4 buttons: The order in which the buttons are pressed determines which character is sent.
A python GUI provdes an audio-visual guide through learning of the 4WORD alphabet.

News

  • 2013-03-25_10-00: Proposed it as a BA thesis at the LMU Munich
  • 2012-12-20_18-00: Initial idea and paper prototypes
  • 2012-12-20_21-00: Initial input logic GUI (python)
  • 2012-12-25_21-00: Input logic finalized, initial 3D prints
  • 2012-12-26_21-00: First tangible and usable button design
  • 2012-12-28_20-00: Working USB keyboard hardware (Arduino Duemilanove + ps2dev lib)
  • 2012-12-29_20-00: Ordering more hardware (ATTINYs etc.) :-)

Images


softgolem (Softmodem for webOS)

software, webos, audio, arduino, interface

About

Using the audio jack of a smartphone it is easy to interface external hardware, even though the phone itself has no additional external connections.
Softgolem turns a webOS phone into an universal remote control for robotics projects.

News

  • 2013-03-01_12-00: Working prototype (webOS / arduino / breadboard)

Files

Images


Pretty Fast FFT (Audio Analysis Tool)

software, audio, opengl, fft

About

A little spectrum analyzer based on a Turbo Pascal source I snitched at the JugendForscht conference somewhere in the 1990s. With the help of zebster and several beers it evolved into a high-speed integer-based FFT.
Combine that with some nifty features (bass-zoom, phon-correction, stereo panorama, phase graphs, OpenGL display) and you have a mesmerizing little audio companion!

News

  • 2012-12-31: Re-wrote the whole thing in Python yesterday!
  • 2007-01-10: Last Delphi release (R14)
  • 2006-03-06: Experimental PalmOS version
  • 2004-xx-xx: Re-written version
  • 199x-xx-xx: Original version

Files

  • pypFFT R015 source (requires Python, NumPy, SciPy, PyAudio, PyGame, PyGL) – pypFFT015.zip 13.77K
  • Last Delphi release (R14, buggy but usable) – PrettyFastFFT_14.exe 594.00K
  • Experimental PalmOS version (use at your own risk!) – pFFT.prc 7.23K

Images


ECMDc (Home Automation)

hardware, software, php, home automation, rf, netio

About

Basic RF home automation using cheap hardware (AVR NET-IO + RFM12).
The system consists of a web based app (running on a hacked wifi router), ethernet IO boxes ($20 each) and RF power outlets ($3 each). The web server can render a 3d floor plan in realtime (java script), as SVG, ASCII or bitmap.

News

  • 2012-11-04_21-57: Cosmetic changes
  • 2012-03-20_12-57: Cosmetic changes
  • 2011-09-09_21-57: Developed "php3d" library for server-side 3d rendering
  • 2011-06-06_18-00: Radio interview at "on3 DIY"
  • 2011-04-14_21-04: Beta-tests in 3 different houses, one of which is off-the-grid (solar)
  • 2011-01-30_20-45: Initial version called "ecmdMan"

Images


PrOSIT! (Cameraless Shader Lamp)

software, python, pose estimation, ar, 3d, opengl

About

A "shaderlamp" is a technique in which a real-world scene is lit by a projector instead of a normal light source. By fine-tuning the projected image it is possible to add realistic surface texturing to real-world objects!
Normally a (depth-)camera is used to analyse the real-world scene. In this camera-less approach a gizmo is projected into the real-world that can be modified by the user. A pose estimation algorithm (POSIT by Daniel DeMenthon '95) is used to turn the user input back to a transformation matrix. The scene is displayed using OpenGL (PyGame, PyGL).

News

  • 2012-11-02_16-25: Incorporated perspective projection
  • 2012-11-02_00-30: Ported "dementhon95" Delphi source code to python
  • 2007-09-06_21-33: Ported "dementhon95" MatLab source code to Delphi
  • 2007-09-03_00-34: Found a pose estimation paper (POSIT by Daniel DeMenthon) with MatLab source code

Images


Genetic Programming

software, code, meta, robopocalypse

About

After hearing about how easy it is to implement genetic programming in a CCC lecture I decided to give it a shot.
It's so fun!

News

  • 2012-02-22_03-18: Added some vis -- makes it look even geekier than it is!
  • 2012-02-04_19-08: It successfully came up with a 3-bit adder!
  • 2012-02-03_02-13: Started...

Images


hipst0r (Wearable Computing)

hardware, prototyping, wearable computing, pervasive computing, hmi, ergonomics

About

A modular belt (yes, the one you wear around your waist) consisting of inteconnected modules (battery, processor, radio, speaker, ...)
The idea is to have an always-on computer system that gains pervasiveness by being hands-free.
Since all gadgets need power, why not carry ONE battery pack that powers all smaller systems?

News

  • 2012-01-06_22-18: Initial designs
  • 2012-01-09_01-00: Buckle design

Images


Choctruder (Diploma Thesis)

hardware, software, science, 3dprinting, fun, chocolate

About

News

  • 2011-12-14_00-00: Finished!

Files

Images


Creality (Alternate Reality Game / Audio AR)

hardware, software, prototyping, ergonomics, game, ar, arduino

About

Hardware and software system for an AR rig that allows audio-AR. Imagine a mixture between an audio book and geo caching / scavenger hunt.
IMUs were expensive and rare when I started the project, in the meantime smartphones became so powerful, that the Creality hardware became pretty much obsolete...
Thinking further the software system evolved into a general story-telling tool.

News

  • 2011-04-07_16-00: Storyteller engine, 3D sound engine
  • 2010-03-03_16-00: Proposed as diploma thesis (II)
  • 2009-12-10_01-00: CrealityClient (Java Mobile)
  • 2009-11-24_22-00: CrealityClient (Desktop) acoustic AR engine
  • 2009-03-12_10-30: Initial ideas

Images


BUZZle (Modular Music Studio)

software, audio, music

About

BUZZle was started as a successor to the "Jeskola Buzz" music software, whose development stopped in 1998, when its author lost most of the source code in a hard disk crash. Since then every Buzz musician had to use an unfinished version which left a lot to be desired.
So I decided to reverse-engineer parts of the software and rebuild my own Buzz. Since Oskari "Jeskola" Tammelin, author of the original Buzz software, has now resumed official "Buzz 2" development, the BUZZle project has become obsolete.
Nonetheless, these have been amazing times of adventure, loss, creativity, courage, money, music and community.

News

  • 2008-04-18_02-15: More delays due to university and work - sourceforged the project
  • 2007-02-26_00-20: Identity crisis! No truly convincing development platform to be found...
  • 2006-01-29_14-20: Cross-compilation trials... Delays due to university
  • 2005-09-30_12-00: Beta
  • 2004-03-26_12-00: Alpha
  • 2004-02-27_12-00: Successfully funded the BuzzLib license! Thanx everyone!!!
  • 2004-02-08_12-00: Started collecting money for an official BuzzLib license
  • 2003-02-25_12-00: Initial work on the Buzz Machine Interface (Pascal)

Images


MukkeMacher (Various Synthesizers and Notation Tools)

software, audio

About

Collection of audio experiments I did during 2003/2004 using Delphi. Some of them were ported to other operating systems.

News

  • 2003-05-21_21-49: Added "Gossippo" Filthy Diphone-Synthesizer (using the audio database from good old CPS Talking Blaster)
  • 2003-04-12_13-37: Added "BeeDee" Bass Drum Synthesizer
  • 2003-03-01_13-48: Added "Fooree" Spectrum Synthesizer
  • 2003-02-25_16-16: Added "circosc" Physics-Based Drum Synthesizer (ported from Java)
  • 2003-02-24_23-55: Added "Formanti" Formant-Based Filter Fun
  • 2003-02-24_21-46: Added "Skratcha" Turntable Simulator
  • 2003-02-20_00-39: Added "eBohlen" Automatic Song Composer (quite good, actually!)
  • 2003-01-22_14-53: Added "Synthia" Software Synthesizer Engine
  • 2002-08-02_01-34: Added "LiveAkkter" Syncing Tool for PC's running Buzz (we actually performed in MUC's Ultraschall using that!)

Images


© 1981 – 2024 Bernhard Slawik