Open-Source Vibe – Planning

See here, here and here for previous work on this project.

So, now that I have a general idea of how the Beyond 2000 Plus works, I have to make a decision on how I’m going to replicate its functionality.  What I’ve done in the past with radio controlled cars is just tap into the outputs of the microcontroller and control the stock h-bridge directly with the Arduino.  The problem here though is that space is a concern.  I have a feeling that no one will want to use a sex-toy with a huge controller.  I suspect from looking at the design that some of the problems I had with the original was noise and stray voltage coming from the motors resetting the micro.  If I build my own controller and h-bridge from scratch, or at least used a better designed one, I’ll hopefully be able to avoid these problems.

I have a suspicion that vibrator use is somewhat similar from use to use (ie: vibration starts off low and increases in intensity over time).  If I was able to log (to an EEPROM perhaps) changes made to the levels and modes of the vibe over usage time, I may be able to more or less accurately reproduce those changes on successive uses.  Of course, these changes would be merely suggestions that could be changed at the will of the user, and those “overrides” would be logged and incorporated into the system’s “knowledge”.  I suspect that an averaged reproduction of common usage would have a very subtle but pleasing effect.  Imagine a vibrator that predicted your whims based on previous usage.  Seems the next logical step in adult themed technology!

So, 5 buttons, some sort of L.E.D. display to indicate motor speed/mode, a dual h-bridge, and an Arduino to control it all should be a good start.  I’ll add in other components later, when I’m sure the basics are working.

Posted in Open-Source Vibe, Projects, Unfinished | Leave a comment

Beyond 2000 Plus – The Teardown – Part 2 – PCB and Components

Take a look here for the motivation behind this project, and here for the first part of the teardown.

Possible H-Bridge?I could see clearly, even before I opened it up, what looked like 4 transistors on the outer two sides of the control section of the Beyond 2000+ and instantly suspected a dual H-bridge design.  I figured with the complexity of the ‘modes’ the whole thing would be powered by some kind of microcontroller.  Exploring how the microcontroller in the Beyond 2000 Plus controlled the h-bridge to drive the motors and also how it drove the LED display seemed a worthwhile endevour.  A group of people, smarter than I am, most likely spent a great deal of time designing how this thing was going to work and if I’m going to try to replicate it, I will probably gain some useful info from their finished product.

Beyond 2000+ TransistorsTrue enough, the circuit design powering the motors was a dual H-Bridge with the 2 sets of 4 transistors lining the edge of the board.   Transistors are PNP and NPN silicon power transistors: B772 and D882 respectively.  Datasheets: NEC B772 , NEC B882

little diodesLooks like they have 4 catch-diodes to deal with voltage spikes from the motors.  These are very common small signal diodes, possibly 1N4148.  These can handle current up to 200mA, which seems kinda small for the motors we’re using and the spikes that could be expected.   This may be why it would shut off periodically.Beyond 2000+ Board Layout

Notice the 16V 470μF electrolytic capacitor?  Assuming this is to help smooth out voltage drops when the motors run.

microcontrolloerThe microcontroller is labeled “Pilot Boat” and “PB35 0301”.  I couldn’t find any information on it online, I’m assuming it’s not custom, but I haven’t sniffed out what it is exactly.  It’s a 28pin SMD design.

The motors run at different speeds, so there is obviously some kind of PWM at play here.

LED ArrayThe LED array seems to be arranged in a matrix display requiring what I think is only 8 pins to control the 16 LEDs.  Some kind of ‘plexing going on here.

Motors are the simple brushed DC type and have been measured to run peak at 1A for the vibration motor and a little less for the shaft motor.  Neither motor has a filter capacitor attached.

Batteries are 4 AA cells in series producing 5-6v of power depending on type and charge.

There seems to be no voltage regulation whatsoever, so everything runs straight off the batteries.Buttons and LED Matrix

Buttons are that rubber type material found on many remote controls and have conductive circle backings that bridge exposed PCB traces.

The next installment will take what I’ve learned here to help design an home-brew solution.  Stay tuned…

Posted in Open-Source Vibe, Projects, Unfinished | Leave a comment

Beyond 2000 Plus – The Teardown – Part 1

Please see the previous post for the motivation behind this one…

First step was to disassemble the intended target. I was excited to get into the thing so I forgot to take some “before” shots. This internet image will have to suffice. The Beyond 2000+ is made almost entirely out of plastic with the shaft and stimulator covered in a sheath of some kind of jelly or silicone. The shaft consists of a plastic tube, which contains the motor used for rotating the beads and head, and supports the bead and head structure. Within this white bead/head structure, I suspect there is a gear mechanism for increasing torque, but I haven’t taken it apart to confirm. The tube and sheath were simply glued onto the controller base and it all came apart fairly easily. The glue was weak, and a little leverage pealed away the jelly cover and the plastic tube with little damage. With a little careful stretching, the jelly simply slid off and the two mechanical structures slid right out.

Beyond 2000+ Teardown 3It’s my hope to keep the shaft/bead section as well as the jelly cover for use in the home-brew version.  The next entry will take a closer look at the Beyond 2000+’s control unit.

Posted in Open-Source Vibe, Projects, Unfinished | Leave a comment

Open-Source Vibe – Arduino Controlled Vibrator Project

I’ve been playing around with Arduinos for about a year now, and I don’t think it took me very long working with it to dream up many crazy ideas of what I could do with the thing.  One of the craziest for sure has to be an Arduino controlled Vibrator.   Now, someone close to me used to have one of these: A Beyond 2000 Plus, a device which the manufacturer claims is “The Ultimate Vibrator” and “The Very Best Vibrator Ever Made”.  I say someone close to me used to have one, that is, before I started hacking at it…    Now, I’m not up on the latest vibrator technology, but it was a pretty expensive advanced device when it was purchased. As you can see, it is a Rabbit style vibrator with features consisting of a shaft containing rotating beads and a oscillating head, as well as a “panther?” with two separate paws which vibrate.5 Buttons Its control panel has 5 buttons for input, and two 8 LED strips for displaying level information.   The 4 up and down buttons control the intensity of rotation and vibration respectively, while the 5th button cycles through modes of operation.  I don’t remember how many modes there were, because i dissembled it before I wrote this article, but it had a steady rotation/vibration mode where levels of both could be controlled by the up and down buttons.  When you pushed the mode button it would begin changing directions of the rotation and vibration, creating a pulsing action at probably 2 Hz.   I think hitting the mode button would increase frequency of pulsing, but I don’t recall to what levels.  The LED displays would indicate the speed of rotation on the left panel, and the intensity of vibration on the right.  When the vibe was in “pulsing” mode, the LEDs would display a cycling light that would travel up and down the panels.  Pushing the down buttons until no LEDs were lit was apparently OFF, but I assumed some drain on the batteries would exist nevertheless.  It apparently was doing something, as it would sometimes turn on randomly.  When not in use, the batteries were removed.

The bottom line of all this information is this:  For a product that was very expensive, it didn’t work very well.  It malfunctioned constantly!  It would cut out at inopportune times, turn on at even more inopportune times (ie: inlaws are visiting), and don’t even think about using it in a colder than average environment.   I don’t know if you’ve ever tried to return a sex toy; for some reason retailers frown upon it…  Suffice to say, a replacement didn’t fare too much better either.  I’m not sure there is anything sadder than what would be an excellent grown up toy that remains unused in a bedside drawer…

So, when something isn’t working right, and you can’t get it fixed or get a refund, then there is absolutely no loss in opening it up to check out what gets its motors running.  It is my hope to delve into the innards of this device, reverse engineer as much as I can, and determine if I can emulate it’s functioning with my own hardware running Arduino code…  I’ll post my work on this blog and I guess we’ll see how it goes!

Posted in Open-Source Vibe, Projects, Unfinished | 2 Comments

Excuses…

I know hardly anyone looks here, but I thought for courtesy’s sake I’d let you know that the site is not dead, I’m just studying for my amateur radio license and playing around with a new SmartQ V7, so I haven’t been able to work on any projects lately… I write my exam soon so will be back at it shortly. Stay tuned.

Posted in Blog Related | 2 Comments

LED License Plate Frame Reprogramming – Software success

So, using Ken Sherriff’s IR Arduino Library I was able to whip up some code to successfully reprogram an LED License Plate frame!   It works pretty well and is pretty self explanatory.  Post a comment if you have any questions.

LEDFrameReprogram.pde

//  Automatic LED License Plate Frame Reprogrammer
//  IRremote library by Ken Sherriff

#include <IRremote.h>
IRsend irsend; //setup irlibrary

const int buttonpin = 12;
const int codearraylen = 4;  //how many characters in message

const unsigned long messagecode[codearraylen] = {0xFF40BF,0xFF22DD,0xFF18E7,0xFF7887}; //Message - Codes for P W N D

const unsigned long startcode[4] = {0xFF926D,0xFF12ED,0xFFB04F,0xFF629D}; //Codes for Edit, Enter, Clear, Y
const unsigned long endcode[1] = {0xFF12ED}; // Code for Enter to finish message
const int betweendelay = 100;

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

void loop() {
 while (digitalRead(buttonpin) == HIGH){
 Serial.println("Running");
 // send initial setup codes - ie: Edit, Enter, Clear, Y
 for (int i = 0; i < 4; i++){
 irsend.sendNEC(startcode[i], 32);
 delay(betweendelay); // delay between individual codes
 }
 // send message codes
 for (int i = 0; i < codearraylen; i++) {
 irsend.sendNEC(messagecode[i], 32);
 delay(betweendelay);
 }
 // send finishing codes - ie: just Enter - might want more here later
 for (int i =0; i < 1; i++){
 irsend.sendNEC(endcode[i], 32);
 delay(betweendelay);
 }
 }
}

I sampled the remote’s buttons using the library’s receive function so I could use the values in the above code. The sampled codes are as follows:

IRLibrary_LED_Frame_Codes.txt

IRLibrary E-Plate Codes

Edit FF926D
Enter FF12ED
Shift FF50AF
CAP FF906F
Clear FFB04F
ON/OFF FF38C7
RUN FFF807

Insert FFD22D
<- FFD02F
-> FF10EF
INV FF28D7
SPD FFE817

A FFBA45
B FFFA05
C FF3AC5
D FF7887
E FF7A85
F FFB847
G FF1AE5
H FF58A7
I FFDA25
J FF9867
K FFD827
L FF9A65
M FF5AA5
N FF18E7
O FFC03F
P FF40BF
Q FFC23D
R FF807F
S FF02FD
T FF827D
U FF42BD
V FF00FF
W FF22DD
X FF609F
Y FF629D
Z FF20DF
! FFE01F
? FFA25D
# FFE21D
$ FFA05F

1 FF0AF5
2 FF8A75
3 FFCA35
4 FF8877
5 FFC837
6 FF48B7
7 FF4AB5
8 FF08F7
9 FFAA55
0 FFEA15

Hardware is consistent with my previous post. All that’s left is figure out how to amp up the IR LED output with a transistor (don’t expect more than a foot of range the way it is).

When I get that working I’ll etch it all onto a PCB.

Stay tuned.

Posted in LED License Plate Frame, Projects, Unfinished | Leave a comment

LED License Plate Frame Reprogramming – First failure…

After checking out Ken Shirriff’s IR Library for the Arduino, it seemed like an appropriate place to get started building a self-contained LED License Plate Frame reprogrammer. I started with his code found here, just to see if I could get an Arduino to play back a learned signal.  Wired up an Arduino-bootloaded Atmega168 with the necessary components and hooked up a IR sensor and LED as per Ken’s diagram.   And then I met with failure.  The code seemed to look like it was doing what it was supposed to do; it would read and report back with a code over serial, and the LED lit up.  No matter what I did though, it wouldn’t trigger the plate frame.

Out came the IR Toy again to get to the bottom of this!   First I sampled the output of the remote, then sampled the output of the Arduino IR library.  Here is the result.  The signal for the remote is overlayed under the signal from the Arduino.

The Arduino successfully copied and re-transmitted the code, but a tad too quickly.  I don’t unfortunately know enough about the tolerances of IR receivers, but clearly the difference is significant enough to make a difference to the frame.  I also don’t know enough to determine if this is a code problem or perhaps my 16Mhz crystal isn’t oscillating at a very accurate rate.  Will have to explore more to find out!

Edit:  Problem Solved!

According to Ken’s page,

IR sensors typically cause the mark to be measured as longer than expected and the space to be shorter than expected. The code extends marks by 100us to account for this (the value MARK_EXCESS). You may need to tweak the expected values or tolerances in this case.

MARK_EXCESS was increased to 200 in irremote.h and, when tested, the timing from the Arduino matched the timing from the original remote.  And the LED frame responded appropriately. Success!

More to come…

Posted in LED License Plate Frame, Projects, Unfinished | Leave a comment