1st generation iPod Click Wheel repurposing

Status
Not open for further replies.

Aussie3d

New member
I was hoping someone has attempted a iPod 3rd generation scroll wheel repurposing (capacitive touch) and maybe willing to offer some help. (Not the later click wheel https://hackaday.com/2010/02/05/repurposing-a-click-wheel/ with the imbeded logic chip & dedicated protocol)
Technically the one I'm using comes from a Sonos CR100 controller but I believe they are very similar hardware

I'm building a teensy based custom keyboard with mouse scroll wheel to reside in the Sonos CR100 Case then control the unoffical-sonos-controller-for-linux on a PiZero with dedicated touch screen.

Questions:
  1. Is there a nice example of a mouse scroll wheel implementation on Teensy?
  2. Has anyone repurposed a iPod 3rd generation scroll wheel repurposing (capacitive touch) (or similar) as a mouse scroll wheel via teensy? If so could you please provide any code or links.
  3. Any ideas or thought on this project are welcome.

Software:
  • Teensyduino
  • Linux
  • unoffical-sonos-controller-for-linux

Hardware:
  • Sonos CR100 - modified
  • Custom Internals to mount buttons & Pi
  • Teensy LC
  • PiZero Touch Screen


Project Background:
This project has being build as Sonos have choose to actively brick the hardware of users via the firmware upgrade process, leaving a need for a dedicated hardware controller. This projects has no real purpose than to offer an alternative to increasing the worlds E-Waste & just for the general amusement of the exercise.
I hope it amuses you and highlights one of the pitfalls of manufacture initiated upgrades.
  • How is this different to any other company choosing to end support for ageing hardware? Well this is an almost mandatory upgrade (or downgrade) of peoples systems with functionality of the system being actively limited if the firmware falls behind the latest updates.
  • Is it possible to firewall against this? Technically yes, but whom should need to firewall their lawfully purchased hardware against malicious firmware updates from a manufacture.
  • Regrettably Sonos are unwilling to provide customers with the right to remain a given firmware (and make a valued decision when is the time to upgrade and perhaps sacrifice hardware that no longer is capable of performing the latest and greatest tricks)
  • Couldn't you just hack the original CR100 hardware? I would love to see it, I'm afraid that is beyond my skills, I hope someone has a crack at it one day!
 
Last edited:
Touch Wheel Information

Touch wheel photos for more information see images below.

I'm still hoping someone can provide a bit of guidance on interfacing with this type of capacitive sensors.:)

Looks like has 4 input terminals
  • 3 seem to go to the small arial seen running radially at 120 degree spacings
  • The forth seems to go to the top side presumably under the white plastic cover


Possible reference links https://www.pjrc.com/teensy/td_libs_CapacitiveSensor.html came up as a possibility to base this on.
The other option maybe the native touchRead() function of the Teensy



tM29kBg.jpgGmz0WmC.jpg
 
Certainly the simple way to investigate this would be to ground the top cover contact and cap read the three wheel segments. Other option may be cap reading the white cover and then rotate through grounding each segment in turn and processing the three values to identify a finger. There was a lot of smarts behind the Ipod interface was fully replicating it would be project all of it's own.

If you have not already worked with them, understanding encoders may be of use in how other more mechanical jog wheels work
https://en.wikipedia.org/wiki/Rotary_encoder#Single-track_Gray_encoding
https://www.pjrc.com/teensy/td_libs_Encoder.html
 
@GremlinWrangler,
Thanks for the reply, the ideas are appreciated:)

I have previously used Rotary encoders but I'm stuck with the cap sensor for this project as I'm using exisiting hardware components.
I'm fairly new to cap-sensing so its a learning exercise for me.

My thought was also grounding the top plate and measuring the 3 antennas but my quick test (with the code below) are some what inconclusive, the touchRead() data looks to be around the mid 2000s and all channels jump to the 3000s once a finger is added to the mix, but the position of the finger around the disk doesn't have a readily noticeable effect on the individual output channels (at least not over the noise in the data).

Questions:
  1. Could you please expand on the idea of testing each channel separately against the cover plate?
  2. Should I be using the CapacitiveSensor() over the The touchRead() - Intuitively the touchRead() input "feels" a little odd to me with only the single wire per channel, but presumably the resistors are in the chipset somewhere?
  3. Should I be putting resistors in the mix when using the touchRead()? From what I could gather this is only required with the CapacitiveSensor() method.


Thought Bubbles::confused:
  1. Grounding the hand may help - but doing this on a final setup could be impractical? (the back case of old iPods was a chromed finish and I'm wondering if this may have also been a case earth? more maybe just cosmetic)
  2. Perhaps some kind of averaging across groups TouchReads() may eliminate the noise and show a clearer pattern on the finger position? Not sure what effect this would have on reaction time for the sensor. (My idea was to get the change in states between successive reads and use this to assign a direction to the finger motion, and then use rate of change to assign speed.)



Code:
int touchRead_pin1 = 16; 
int data1;
int touchRead_pin2 = 17; 
int data2; 
int touchRead_pin3 = 18; 
int data3; 

void setup() {
  Serial.begin(57600); 
}

void loop() {
  data1 = touchRead(touchRead_pin1); 
  Serial.print(data1); 
  Serial.print("\t");
  data2 = touchRead(touchRead_pin2); 
  Serial.print(data2); 
  Serial.print("\t");
  data3 = touchRead(touchRead_pin3); 
  Serial.println(data3);
  delay(100); 
}

DATA from serial monitor
2435 2417 2375
2437 2415 2384
2439 2418 2378
2438 2419 2376
2440 2417 2376
2437 2418 2376
2436 2418 2378
2436 2415 2385
2436 2418 2374
2440 2421 2376
2438 2418 2382
2446 2427 2386
2454 2437 2391
2480 2461 2407
2524 2520 2472
2567 2553 2525
2924 2900 2815
3090 3106 3058
3129 3133 3082
3146 3143 3105
3146 3160 3083
3143 3161 3118
3154 3170 3114
3159 3170 3120
3161 3169 3124
3151 3181 3130
3151 3171 3131
3152 3175 3138
3163 3175 3130
3157 3161 3116
 
Hi Aussie3d,

I am late to the party but also working on a design to reuse the CR100 controller hardware. On the software side I'm using the SoCo library to connect to my zone players. This runs on a linux system, for now raspberry pi zero and a PiTFT display. I am also on the process of getting the scroll wheel to work. I think I know how Sonos did it and I have an IC on order that I think will do the trick.

Anyway, if you have time I would love to hear about your experience and if you succeeded or not and how far you may have gotten. I am open to collaboration if you may be interested in revisiting the idea. You can send me a private message so as not to clutter this thread. I could not send you pictures via the PM which is why I posted here. I will still send you a PM in case this does not make it to you.

I have successfully tested a new power board replacement.


PowerBoardB.jpg
PowerBoard.jpg


I am also almost done with the CPU board replacement, I am close to sending it for fabrication and hope to start testing it soon.


CPU.jpg
CPUB.jpg
 
Status
Not open for further replies.
Back
Top