Instructables
loading
loading
Picture of CatGenie:  Resetting a SaniSolution Cartridge
Some Background:
I have two CatGenies, both of which take a proprietary cartridge that are good for sixty cycles. The CatGenie will not run without a non-empty cartridge installed. In my home, each unit runs four times a day (I have six cats), so a cartridge lasts only fifteen days. Each cartridge is about fifteen bucks. For those of you following along without benefit of a calculator, that totals sixty bucks a month in cartridges.

Environmentally, four cartridges per month equals a lot of foil, plastic and little circuit boards in the landfill - and I really don't see how CatGenie could sell refills without totally redesigning the cartridge.

Proposed Solution:
Adding new solution to an empty cartridge is not that complicated (see my other instructable), but it isn't really helpful because the cartridge has a microchip on it that acts as a counter. When the counter reaches zero, the cartridge is trash. This instructable will demonstrate how to reset the counter on the cartridge to "full" - allowing you to drop it back into the unit and rock on.

NOTE:
This instructable does cover resetting but does not cover refilling the solution in the cartridge; it assumes you have done so already. If you need help with the refilling process, please see my other instructable.
 
Remove these adsRemove these ads by Signing Up
1-40 of 136Next »
samcrut3 days ago

Just a note to say that the sketch code above and the updated sketch in the comments doesn't work with the current Arduino v1.6.5, but you can download older versions that do work. I used v1.0.5 and it verified fine with no errors.

PaulF110 months ago

Hi mamalang. I know your post was 4 years ago, but I wanted to share with you the code I dressed up to current Arduino standard.

#include <Wire.h>

#define CG (B1010000)

boolean resetSuccess = false;int isReset = 13;int byteArray []= {01, 01, 01, 60, 60, 60, 60, 60, 60, 8, 8, 8, 33, 33, 33, 255};void setup(){ pinMode(isReset, OUTPUT); digitalWrite(isReset, LOW); Wire.begin();}

// join i2c bus (address optional for master)

void loop(){ if (resetSuccess) { delay (2000);resetSuccess = false; }

// our work is done - pause for a while

else { resetCartridge(); resetSuccess = verifyCartridge(); digitalWrite(isReset, resetSuccess); }}void resetCartridge(){ for (int i=3; i < sizeof(byteArray)/2; i++) { Wire.beginTransmission(CG); Wire.write(i); Wire.write(byteArray[i]); Wire.endTransmission(); delay(4); }}void movePointerTo(int deviceAddr, int memoryAddr){ Wire.beginTransmission(deviceAddr); Wire.write(memoryAddr); Wire.endTransmission();}boolean verifyCartridge(){ boolean success = true; movePointerTo(CG, 3); Wire.requestFrom(CG, 3); while (Wire.available()) { if (Wire.read() == 60 && success == true) {

// looking good so far

} else { success = false; } } return success;}

LotusH PaulF18 days ago

PaulF1- Would you mind telling me if your code or the original arduino code posted works on the 120 cartridge. Id like to try and build my own but i have the 120 model.

Help please! Really need one of these for my 120 sani solution cartridges but am not able to do this.Will someone make one for me? I have a Macbook pro and an old PC running windows 98. Glad to pay through Paypal. Thanks

maeyer@earthlink.net

There are new units for the catgenie 120 at www.cartridgegenius.com

Updated code for Arduino 1.0.1 and above. Power up and LED will light, attach contacts (insert cartridge) and when it is complete LED will flash several times.

#include <Wire.h>
#define CG (B1010000)
boolean resetSuccess = false;
int isReset = 13;
int byteArray []= {01, 01, 01, 60, 60, 60, 60, 60, 60, 8, 8, 8, 33, 33, 33, 255};
void setup()
{
pinMode(isReset, OUTPUT);
digitalWrite(isReset, LOW);
if (isReset == HIGH)
isReset = LOW;
Wire.begin(); // join i2c bus (address optional for master)
}
void loop()
{
if (resetSuccess)
{
delay (2000); // our work is done - pause for a while
resetSuccess = false;
} else {
resetCartridge();
resetSuccess = verifyCartridge();
digitalWrite(isReset, resetSuccess);
}
}
void resetCartridge()
{
for (int i=3; i < sizeof(byteArray)/2; i++)
{
Wire.beginTransmission(CG);
Wire.write(i);
Wire.write(byteArray[i]);
Wire.endTransmission();
delay(4);
}
}
void movePointerTo(int deviceAddr, int memoryAddr)
{
Wire.beginTransmission(deviceAddr);
Wire.write(memoryAddr);
Wire.endTransmission();
}
boolean verifyCartridge()
{
boolean success = true;
movePointerTo(CG, 3);
Wire.requestFrom(CG, 3);
while (Wire.available())
{
if (Wire.read() == 60 && success == true)
{
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second

// looking good so far
} else {
success = false;
}
}
return success;
}
And no need to tear your cat genie apart. Here is the resetter I made from wire, electrical tape and a little piece of cardboard. I just hold it on the cartridge when I want to reset.
IMG_0884.JPGIMG_0883.JPG

Hi.

You have them marked 1-4, and don't show what they connect to.

Im assuming one is a 9volt battery..Ground and Power.. and maybe the other 2 are ground and input leads? Question is... what do each of these numbers go to?

Thanks!

jemtec@roadrunner.com

what size of wires did you use and what kind

Can you make one for me? I will pay you! I have the CG60, please reply! I need this bad!
catbox1204 years ago
The 120 Cartridge (clear) do not work within the original CatGenie, which only uses the 60 Cartridge (green) The 60 Cartridge do not work within the CatGenie 120.
I was wondering if this instructable worked on the cat-genie 120 cartridges, NOT if the cartridges are interchangeable!!! Still waiting on a answer...
Hi
I am British (don't hold that against me). I have the Cat Genie 120. Only had it since April 2013, yes I have a love hate relationship with it already. We have 8 cats so it is proving to be expensive. Has anyone managed to refil and re use a 120 cartridge. And if so could you walk me through the steps. Would be grateful. In desperate need of some help
Graham
I am also wondering if this will work with the 120, have you gotten a response yet Graham?

TIA!
~G~
silentfett2 years ago
geezus. i am so tech impaired and I managed to do this on the first try. I had a broken cat genie I bought from CL for 10 bucks for the spare parts so I used the cartridge part and now have a separate cartridge holder yay! I cannot believe how amazing this is i'm still shocked how easy it was. The only thing that was weird was that I had to turn the LED around so the flat side had to be the opposite of the directions. But, in the end, I found the LED wasn't necessary at all with the Duemilanove because the board has another blinking light that blinks the same cadence(?) as the LED once it works. GREAT DARN INSTRUCTABLE!
tirano2 years ago
Hi,
Does this works with the new 120 sani solution cartridges?
Thanks
katerlyn2 years ago
does anyone know what i have to do with my cat genie, on first cartridge only...it is full of water and wont finish the cycle. i cannot TOLERATE calling them, having serial number found, and waiting for a call back, help!
http://www.litterbox-central.com/litter-box/catgenie/topic3138.html
i have switched to wood pellets, and 20 cent aluminum trays from warehouse club....they are wonderful and i make many ahead of time like they do at shelters! but thank you for when i tackle emptying my genie that has been brown for many weeks now........full of water!!
The Snake5 years ago
Great work!

I've made a few mods to the code which :
- Flash the LED on for 5 seconds at startup, to show the program is working
- Correctly lights and blanks the LED on a successful cartridge reset. Previously it was always on.

You should remove the cartridge during the time that the "reset OK" light is on (2 seconds).

This worked well on my Duemilanove.

For some reason they don't allow code to be pasted into comments - new code is available at http://www.poptart.org/catgenie.pde
is there any way to make this unit set for 255 cycles? if so what do i need to change on the program
thanks
It is byteArray[3] that holds the number of uses to be written to the cartridge, so that's the 4th number in the array.

You can try changing that to a higher number, though beware that the CatGenie might not like it (haven't tried myself as I like to be reminded when the carts are getting empty).

If it doesn't work, just change it back to 60 and re-flash.


J>

omg that sounds like way to much info for im not that smart is theire any way ican get one all ready made please me im laid off and icat keep buying them they cost way to much and ihave 5 cats the needy cat lady heidi
sorry forgot email see heide1963@aol.com
Every time I do this, the light continually blinks after I put the cartridge in the holder.
Maybe I'm doing this wrong- When I use your program on my Duemilanove, it loads fine and when I reset the board it turns the light on for 5 seconds, then shuts it off. That's it until I reset it again. If I connect the cartridge after the light goes out, still nothing. I don't get the "reset OK" light, at all. And none of this seems to reset the cartridges, regardless of the LED lighting or not. Is the proper sequence turn on board, wait for light to go out, connect cartridge, wait for "reset OK" light, remove cartridge while light is on? How important is it that this all be done exactly right? I have successfully reset all 5 of my cartridges twice before, with the older version of the resetting program. However, I have had some weird issues lately with my cartridges not wanting to work after resetting, or working sporadically. The CG was complaining that the cartridge was empty (it was full), so I reset it and the CG ran a cycle, then started complaining again... Is it possible that I have damaged the chips on the cartridges? I'm just having a really hard time knowing what is going wrong, and I'd like to be sure I'm doing as many things right as possible. Thanks!
UPDATE- I bought new cartridges, and they fixed it. I think I definitely managed to "pop" my chips somehow... I'm still interested in the proper sequence, etc, though. Please, help me not pop my cartridges again!
That link to the program appears to be broken (for me at least). Can you re-post a new one please?
Hi... think there was a network problem at the time. Can you try again now? Seems OK for me.
Yes, it must have been a network problem because it is working fine now. Thanks a lot for the work on the updated code!
WORKS FINE...! thanks!
polemos4 years ago
Does it work with CatGenie 120 cartridges?
Its called the "Cartridge Genius"
There is a device on the market that works with the 120 now. Here is a link to the forum that its posted on. http://www.litterbox-central.com/litter-box/catgenie/topic3601.html#p20848
CartridgeGenius-1.jpg
cd113 years ago
In one of the previous strings someone mentioned that you could get the cartridge 're-setter' already made but the people selling them had to go underground due to law suit threats by Cat Genie. How does a person find someone selling these? I read the string about how to do it yourself and it is waaaaaaay beyond me. If someone has information I can provide my email. thank you.
Jayefuu4 years ago
Nice ible! Your humour in your writing kept me reading all the way to the end :D A cute picture of cats prowling around the CatGenie (after cleaning not before!) would probably make this front page worthy! It's very well written and probably something a lot of people would thank you for!
Idid it! I did it! I am not a computer geek at all but I can follow instructions. Bought the board, hooked up as described and it worked. Thank you all!! Especially the author of this thread.
The Snake4 years ago
Hi I've just uploaded a new Instructable that builds on this one. Take a look at http://www.instructables.com/id/CatGenie-A-smart-resettable-SaniSolution-cartrid/. There's a new version of the code and some other enhancements.
ExpressZero4 years ago
Use the below code when programming your Arduino. Upon powering up, the LED will remain lit. When you apply your board to the contacts on the cartridge, it will flash on and off several times, and you know it will have worked.

#include
#define CG (B1010000)
boolean resetSuccess = false;
int isReset = 13;
int byteArray []= {01, 01, 01, 60, 60, 60, 60, 60, 60, 8, 8, 8, 33, 33, 33, 255};
void setup()
{
pinMode(isReset, OUTPUT);
digitalWrite(isReset, LOW);
if (isReset == HIGH)
isReset = LOW;
Wire.begin(); // join i2c bus (address optional for master)
}
void loop()
{
if (resetSuccess)
{
delay (2000); // our work is done - pause for a while
resetSuccess = false;
} else {
resetCartridge();
resetSuccess = verifyCartridge();
digitalWrite(isReset, resetSuccess);
}
}
void resetCartridge()
{
for (int i=3; i < sizeof(byteArray)/2; i++)
{
Wire.beginTransmission(CG);
Wire.send(i);
Wire.send(byteArray[i]);
Wire.endTransmission();
delay(4);
}
}
void movePointerTo(int deviceAddr, int memoryAddr)
{
Wire.beginTransmission(deviceAddr);
Wire.send(memoryAddr);
Wire.endTransmission();
}
boolean verifyCartridge()
{
boolean success = true;
movePointerTo(CG, 3);
Wire.requestFrom(CG, 3);
while (Wire.available())
{
if (Wire.receive() == 60 && success == true)
{
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second

// looking good so far
} else {
success = false;
}
}
return success;
}
sonar19714 years ago
I keep getting this when i try uploading the sketch:
undefined reference to setup.

Anyone have any ideas??
1-40 of 136Next »