NibbleKiosk: controlling chromium through sound

**updated for verison 0.0.2**

The idea of NibbleKiosk is to turn old monitors into interactive displays using simple hardware such as a Raspberry Pi with a microphone. The sounds received by the microphone are turned into URLs and sent to Chromium browser. The software comes with 3 programs:

  • one to create the sound files based on the URLs to be used by the client
  • one to create a database of URLs
  • the main program which does the signal processing and controlling of Chromium

You first need to create a database of URLs:

nibbledb -u http://www.raspberrypi.org -d test.db

which outputs:

test.db: key 1B95FB47 set to http://www.raspberrypi.org

You can then create a sound file to use to trigger the URL:

nibblewav 1B95FB47

This will output a wav file with the same hex code in lowercase to your /tmp directory

aplay /tmp/1b95fb47.wav

and you should hear what it sounds like.

You can now start the main program on the receiver. You should first start Chromium listening on port 9222

chromium-browser --remote-debugging-port=9222&

You are now ready to start the main program with the database you created earlier:

nibblekiosk -d test.db

This should now listen continually for the right sounds to trigger URLs on Chromium. You can build your own clients with the wav files you generate.

There are number of variables to get a functioning system. A key variable is getting the right signal magnitude to trigger the system. You can use the -m flag to experiement with this. On a Raspberry Pi I have set this as low as -m 2, e.g.

nibblekiosk -d test.db -m 2

I have had good performance from the microphone on an old USB webcam or if you want something small for the Pi, Konobo makes a very small USB microphone.

If you are feeling brave and want to try I have made some packages for Ubuntu (14.04) and Raspbian:

http://nibble.io/testing/deb/

The only dependencies are OpenAL and Berkeley DB.

Leave a Reply