<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Design on falkp.no/blog</title>
    <link>/blog/tags/design/</link>
    <description>falkp.no/blog (Design)</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
      

      
    

    
    <lastBuildDate>Tue, 19 Dec 2017 00:00:00 +0000</lastBuildDate>
    
    <atom:link href="/blog/tags/design/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Volumio based radio with NFC</title>
      <link>/blog/posts/volumio_nfc_build/</link>
      <pubDate>Tue, 19 Dec 2017 00:00:00 +0000</pubDate>
      
      <guid>/blog/posts/volumio_nfc_build/</guid>
      <description>&lt;h2 id=&#34;overview&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#overview&#34;&gt;
        #
    &lt;/a&gt;
    Overview
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://volumio.org&#34;&gt;Volumio&lt;/a&gt; based internet radio, controlled by &lt;a href=&#34;https://en.wikipedia.org/wiki/Near-field_communication&#34;&gt;NFC&lt;/a&gt;, built in an old speaker.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;speaker1.jpg&#34; alt=&#34;Complete speaker&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;background&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#background&#34;&gt;
        #
    &lt;/a&gt;
    Background
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Inspired by the extreemly good looking &lt;a href=&#34;http://blog.zenona.com/&#34;&gt;Spotify Box&lt;/a&gt; and QR based systems like &lt;a href=&#34;http://tilman.de/projekte/audiosphere/&#34;&gt;Audiosphere&lt;/a&gt;, I wanted to make something similar for my kids. I&amp;rsquo;ve earlier built a few radios based on small, cheap bluetooth speakers like music angel, but wanted something with better sound this time.&lt;/p&gt;
&lt;h2 id=&#34;prototype&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#prototype&#34;&gt;
        #
    &lt;/a&gt;
    Prototype
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;QR are fast and cheap, so I made a quick prototype. It turned out they are unreliable when there&amp;rsquo;s no display to give feedback on how the camera sees them. Both lighting and focus was a problem.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;qr1.jpg&#34; alt=&#34;QR reader&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;qr2.jpg&#34; alt=&#34;QR view&#34;&gt;&lt;/p&gt;
&lt;p&gt;Next up, NFC. I decided on a PN532 NFC reader, simply because I had one around. They&amp;rsquo;re about $8 / 70 NOK on ebay. It communicates via i2c, and there&amp;rsquo;s a python library for it. I decided to make it easy for myself and allow for any kind of NFC tag I could get hold of, so the plan was to read and use what ever data or ID the tags contain, and make a list to match IDs and URLs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;nfcreader1.jpg&#34; alt=&#34;NFC reader&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;volumio&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#volumio&#34;&gt;
        #
    &lt;/a&gt;
    Volumio
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://volumio.org&#34;&gt;Volumio&lt;/a&gt; is a general music player for small devices like the &lt;a href=&#34;http://raspberrypi.org/&#34;&gt;Pi&lt;/a&gt;. Due to &lt;a href=&#34;https://www.mopidy.com/&#34;&gt;Mopidy&lt;/a&gt; it supports playing music from lots of sources. The two I&amp;rsquo;m interessted in are internet radios and Spotify, but this will work for anything Mopidy can play.&lt;/p&gt;
&lt;p&gt;Volumio also has &lt;a href=&#34;https://volumio.org/forum/volumio-plugins-collection-t6251.html&#34;&gt;plugins&lt;/a&gt; for other stuff, like mono output, being a Spotify Connect speaker and button controls connected via GPIO like I will use here.&lt;/p&gt;
&lt;h2 id=&#34;setup&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#setup&#34;&gt;
        #
    &lt;/a&gt;
    Setup
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;As mentioned in the &lt;a href=&#34;https://github.com/ways/volumio-nfc&#34;&gt;readme&lt;/a&gt;, there are a few steps to install NFC support. You have to &lt;a href=&#34;https://volumio.github.io/docs/User_Manual/SSH.html&#34;&gt;enable SSH&lt;/a&gt; first. Then install packages, check that the i2c connection to the reader is working, enable services.&lt;/p&gt;
&lt;p&gt;Reading a tag looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ./readnfc.py
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Reading tag list readnfc.list
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff9f43&#34;&gt;6&lt;/span&gt; tags in store. Ready to read.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Card data: bytearray&lt;span style=&#34;color:#ff6ac1&#34;&gt;(&lt;/span&gt;b&lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#39;K\x01\x01\x00D\x00\x07\x04!T\xcao?\x81&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;)&lt;/span&gt; / 4b010100440007042154ca6f3f81
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Stoping any music currently playing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Play audio feedback.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;webradio http://nrk-mms-live.telenorcdn.net:80/nrk_radio_alltid_nyheter_aac_h
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Play selected &lt;span style=&#34;color:#ff5c57&#34;&gt;source&lt;/span&gt; webradio http://nrk-mms-live.telenorcdn.net:80/nrk_radio_alltid_nyheter_aac_h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then you add that tag to your list, readnfc.list, in the same directory. There are lots of examples for radios and spotify playlists in it already. Restart the service and you should be done.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://falkp.no/blog/_static/demo.m4v&#34;&gt;See demo video&lt;/a&gt; (~4MB).&lt;/p&gt;
&lt;h2 id=&#34;hardware&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#hardware&#34;&gt;
        #
    &lt;/a&gt;
    Hardware
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;For sound I connected a &lt;a href=&#34;https://www.ebay.com/itm/Mini-USB-2-0-3D-Virtual-480Mbps-External-7-1-Channel-Audio-Sound-Card-Adapter/162432421351?epid=11004887919&amp;amp;hash=item25d1ba0de7:g:~JQAAOSwWxNYyV1A&#34;&gt;cheap USB soundcard&lt;/a&gt; (first hit on ebay), via a &lt;a href=&#34;https://www.ebay.com/itm/Ground-Loop-Noise-Filter-Isolator-3-5mm-Cable-For-Home-Stereo-Car-Audio-GW/282776792501?hash=item41d6cf6db5:g:9fQAAOSwhsBaN1Pj&#34;&gt;ground loop filter&lt;/a&gt; to a &lt;a href=&#34;https://www.adafruit.com/product/1752&#34;&gt;Class D amplifier&lt;/a&gt;, to the terminals of the speaker.&lt;/p&gt;
&lt;p&gt;A 1k potmeter for volume, and two push-buttons for play/pause and next.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;hardware1.jpg&#34; alt=&#34;Hardware&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;hardware2.jpg&#34; alt=&#34;Hardware&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;tags&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#tags&#34;&gt;
        #
    &lt;/a&gt;
    Tags
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Any tags works, but they need to look attractive, so I created some business card sized pictures to hold them.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;tags1.jpg&#34; alt=&#34;Assorted tags&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;tags2.jpg&#34; alt=&#34;Tags&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;tags3.jpg&#34; alt=&#34;A sheet of tags&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;tags4.jpg&#34; alt=&#34;Scanning tag&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>RadiOS part 2</title>
      <link>/blog/posts/radios_part_2/</link>
      <pubDate>Wed, 17 Aug 2016 00:00:00 +0000</pubDate>
      
      <guid>/blog/posts/radios_part_2/</guid>
      <description>&lt;h2 id=&#34;overview&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#overview&#34;&gt;
        #
    &lt;/a&gt;
    Overview
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;See &lt;a href=&#34;http://0p.no/2014/05/09/radios_part_1.html&#34;&gt;RadiOS part 1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I started making a prototype to figure out if I could &amp;ldquo;sense&amp;rdquo; both selections with GPIO pins, while the designer started modeling and rendering suggestions for the physical design. The solution chosen was to first set all volume control pins to high, and check which channel control points registered as on, then reverse (control points high, check volumes).&lt;/p&gt;
&lt;h2 id=&#34;sound&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#sound&#34;&gt;
        #
    &lt;/a&gt;
    Sound
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;For sound we tore down a &lt;a href=&#34;http://musicangel.no/speakers/&#34;&gt;Music Angel&lt;/a&gt; portable speaker. It gave us two speakers, an amplifier running on 5V and a battery which we threw away. The built in soundcard gave horrible sound under certain conditions, so a cheap USB soundcard was used instead.&lt;/p&gt;
&lt;h2 id=&#34;case&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#case&#34;&gt;
        #
    &lt;/a&gt;
    Case
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;We wanted to try both a 3D-printed version and a &lt;a href=&#34;https://en.wikipedia.org/wiki/CNC_wood_router&#34;&gt;CNC&amp;rsquo;ed&lt;/a&gt; one. A print at &lt;a href=&#34;http://shapeways.com&#34;&gt;Shapeways&lt;/a&gt; would cost us ~$200, plus shiping and tax. We got one printed localy for ~$80. It&amp;rsquo;s has yet to be used. A local CNC person wanted ~$270. The case we&amp;rsquo;ve used in the final build is hand made of wood.&lt;/p&gt;
&lt;h3 id=&#34;plastic-case&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#plastic-case&#34;&gt;
        ##
    &lt;/a&gt;
    Plastic case
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;11.JPG&#34; alt=&#34;rendering back&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;12.JPG&#34; alt=&#34;rendering inside&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;13.JPG&#34; alt=&#34;rendering empty&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;14.JPG&#34; alt=&#34;rendering outside&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;plastic.png&#34; alt=&#34;actual case&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;renderings-of-other-variations&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#renderings-of-other-variations&#34;&gt;
        ##
    &lt;/a&gt;
    Renderings of other variations
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;17.JPG&#34; alt=&#34;rendering ceramic&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;15.JPG&#34; alt=&#34;rendering standing&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;prototype&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#prototype&#34;&gt;
        #
    &lt;/a&gt;
    Prototype
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;rpi_gpio.jpg&#34; alt=&#34;GPIO connected.&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;testing.png&#34; alt=&#34;testing&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;build-1&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#build-1&#34;&gt;
        #
    &lt;/a&gt;
    Build 1
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;We chose to paint the front in black board paint, to allow easy change of channel labels and a personal touch.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;blank.png&#34; alt=&#34;blank front&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;shelf.png&#34; alt=&#34;finished model on shelf&#34;&gt;&lt;/p&gt;
&lt;p&gt;Other builds may have a white board front, or be something very different.&lt;/p&gt;
&lt;h2 id=&#34;conclution-so-far&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#conclution-so-far&#34;&gt;
        #
    &lt;/a&gt;
    Conclution so far
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s an interessting UI, and people want to touch it. However programming the channels and first time setup is hard. Also the Pi or musicbox is very slow to start streaming. This kind of breaks the fun of it.&lt;/p&gt;
&lt;p&gt;To be continued&amp;hellip;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>RadiOS part 1</title>
      <link>/blog/posts/radios_part_1/</link>
      <pubDate>Fri, 09 May 2014 00:00:00 +0000</pubDate>
      
      <guid>/blog/posts/radios_part_1/</guid>
      <description>&lt;h2 id=&#34;overview&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#overview&#34;&gt;
        #
    &lt;/a&gt;
    Overview
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;In my opinion most radios, especially internet radios, have horrible interfaces. Small buttons, small displays, often touch, often several functions for each button.&lt;/p&gt;
&lt;p&gt;So &lt;a href=&#34;http://no.linkedin.com/pub/erik-falk-petersen/b/286/a07&#34;&gt;Erik&lt;/a&gt; and I set out to design a new, better radio for ourselves. Our main requirements were ease of use and a very physical UI. Something you&amp;rsquo;d want to touch and play with.&lt;/p&gt;
&lt;h2 id=&#34;platform&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#platform&#34;&gt;
        #
    &lt;/a&gt;
    Platform
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;The Raspberry Pi is our platform of choice at the moment, so we have some physical restrictions and long boot time.&lt;/p&gt;
&lt;h2 id=&#34;physical-designs&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#physical-designs&#34;&gt;
        #
    &lt;/a&gt;
    Physical designs
&lt;/div&gt;
&lt;/h2&gt;
&lt;h3 id=&#34;the-cone&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#the-cone&#34;&gt;
        ##
    &lt;/a&gt;
    The cone
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;cone.jpg&#34; alt=&#34;The cone radio.&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;cone2.jpg&#34; alt=&#34;The cone sketch.&#34;&gt;&lt;/p&gt;
&lt;p&gt;Our first idea was a cone that would rotate for volume and press down for on, next channel, off. A very basic look, and extreamly easy to use. What killed this was the size it would need to be to accomodate an rPi and the mechanical complexity of making the twist and click switch.&lt;/p&gt;
&lt;h3 id=&#34;brainstorming&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#brainstorming&#34;&gt;
        ##
    &lt;/a&gt;
    Brainstorming
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;brainstorm.jpg&#34; alt=&#34;Brainstorming.&#34;&gt;&lt;/p&gt;
&lt;p&gt;So we hit the whiteboard. Some of the designs from our brainstorming:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A vertical rod with the radio sliding up/down for volume.&lt;/li&gt;
&lt;li&gt;A body-like shape hanging from the wall.&lt;/li&gt;
&lt;li&gt;A horizontal rod, where you pick up the radio and hang it on the position of the channel you want.&lt;/li&gt;
&lt;li&gt;Magnets! Anything with magnets!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;the-chosen-design&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#the-chosen-design&#34;&gt;
        ##
    &lt;/a&gt;
    The chosen design
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Inspired by the switch boards of early phone systems, we chose to make rows of connections where you&amp;rsquo;d short two rows to make two selections at once. One row for the channels, one for the volumes.&lt;/p&gt;
&lt;p&gt;We went with magnets instead of jacks to make it look more modern and be quick to use.&lt;/p&gt;
&lt;h3 id=&#34;software&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#software&#34;&gt;
        ##
    &lt;/a&gt;
    Software
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Netradio functionality can be solved in so many ways on the command line. From the most basic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cvlc url / aplay url / mplayer url&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The medium:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.musicpd.org/&#34;&gt;Music Player Daemon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;screen0.jpg&#34; alt=&#34;A cli frontend to MPD.&#34;&gt;&lt;/p&gt;
&lt;p&gt;The advanced:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.woutervanwijk.nl/pimusicbox/&#34;&gt;Musicbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;browse-desktop.png&#34; alt=&#34;Musicbox. Image from woutervanwijk.nl.&#34;&gt;&lt;/p&gt;
&lt;p&gt;The latter one is a brilliant use of the rPi. In short it includes out of the box support for &lt;a href=&#34;https://www.spotify.com/&#34;&gt;Spotify&lt;/a&gt;, &lt;a href=&#34;https://music.google.com/&#34;&gt;Google Music&lt;/a&gt;, &lt;a href=&#34;http://www.last.fm/&#34;&gt;Last.fm&lt;/a&gt;, internet radio, &lt;a href=&#34;https://soundcloud.com/&#34;&gt;SoundCloud&lt;/a&gt;, local files, files from network shares. Controlled by a webUI or any existing MPD app.&lt;/p&gt;
&lt;p&gt;We chose Musicbox.&lt;/p&gt;
&lt;p&gt;To be continued&amp;hellip;&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
