• Designing a touch wheel input in KiCad

    Ben Brown03/07/2017 at 11:21 0 comments

    For the user input, I am designing in a touch wheel similar to that of the older iPods.

    In the iPod the wheel is sensed by 16 sensing segments, and this number makes be happy being a power of two. Thus for this design 16 segments will also be used for sensing finger position, plus a center pad for the selection button (touch enabled as well).

    To design our touch wheel, we want 16 evenly spaced segments around the wheel with a small distance between them. I used the polar grid feature in illustrator as I have access to it, however most graphics design software should be able to make a grid. I made the grid yellow, so that in the later stages it can be easily filtered out in the KiCad bitmap2component program. This is because we actually want where the grid is to become the spaces between the pads. I made the original circle 40mm wide in illustrator, however this can be scaled in the kicad software as well.

    This is the picture that I exported (bitmap file so no compression).

    I then opened this file in paint (or any other image editor would work), and filled in the white spaces where we want the copper to end up black. Black so that it is very easy to use in the kicad importer. This resulted in this file :

    Next, importing this circle into the KiCad bitmap2component converter, make sure the DPI setting matches the exported image, and check the last tab shows what you expect to see. Except, note that because you are 'drawing silkscreen' you want the inverse (Tick the box), so that everywhere you see white on the image is where the copper will end up. The bitmap2component software does not let us directly export to the copper layer in our component, so i exported to the Eco1 layer and saved the file to my desktop.

    Next open the file in a text editor of your choice and use find and replace to change all occurrences of "Eco1.User" with "F.Cu" and save the file.

    This has now created a footprint with large copper pours, but with no pads we can connect to. To add connections to each copper section i opened the footprint in the editor and placed a pad in each copper section, remember to turn of the resist & paste layer on each pad to make sure you have a nice continuous solder resist over your pads.

    Then I quickly made up a symbol for the part in KiCad and wired it up to the PSoC..

  • User Input

    Ben Brown03/07/2017 at 10:53 0 comments

    This project is inspired by the iPod Classic, so we want a nice round capacitive sense wheel for user input. (Plus it looks wanky).

    Looking into the original iPod Classic (I own a 6th generation one that's sort of broken to play with), It uses a dedicated IC to decode the touch wheel input and transmit this to the host processor.

    For the design of Silence, a separate MCU is required to drive the GUI for the user as the raspberry pi does not have any SPI peripherals left over to talk to the screen. We can utilize this processor to also read the capacitive sensor inputs and allow feeding this data back to the raspberry pi.

    The common IC around appears to be the MPR121 (as used in the Tricorder project). This looks like a nice IC, however it requires an extra I2C connection and it's in a non-hobby friendly package (Still quite doable though).

    Most Microcontrollers seem to have some form of touch sensing built into them now, and I have been meaning to learn the PSoC 4 series from Cypress as my next target to learn (And the reconfigurability looks awesome on paper).

    So for this initial version of the unit I will attempt to use the PSoC 4245 as the graphical processor as well as the touch input wheel for the unit.

  • The Beginning

    Ben Brown03/07/2017 at 10:25 0 comments

    This project started in an attempt to build a MP3 player that would support multiple sd cards. Locally uSD cards in smaller capacities (64GB) are cheaper per GB than larger cards.

    This project initially started using a stm32F4 to perform the MP3 decoding and driving the DAC, however, finding nice open source libraries for AAC and MP3 at higher bit rates proved to be annoying to work with and integrate. Thus the Raspberry Pi Zero, it's a nice cheap linux computer that can perform all the decoding for us easily (using FOSS).

    The core idea is based around using the Raspberry Pi to decode the MP3 files from the SD cards, and play these using a nice TI DAC (PCM5141). I have used this DAC before in projects, and it's also used in the HiFiBerry products so a nice driver for the linux kernel exists.

    The 3 uSD cards are connected to the raspberry pi zero by using the secondary mmc controller, and two cards via SPI. This means the cards are slow (400KB/sec), but that is fast enough for MP3 playback.