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 ads by
Signing UpStep 1Disclaimers, Warnings, Materials And Safety
It should be noted that I am in no way affiliated with CatGenie or PetNovations LTD. This instructable is (obviously) not approved or endorsed by PetNovations LTD. CatGenie is a registered trademark of PetNovations LTD.
Should you break or damage your CatGenie, your CatGenie SaniSolution cartridge, an Arduino, your computer, sprain your thumb get divorced or whatever - you follow these instructions at your own risk and I assume no liability for what you do or what happens to you. You're a big person. Caveat Emptor.
Warning:
By following this instructable you may in some way void your CatGenie warranty... but as long as you don't send back the cartridge with non-CatGenie cleanser in it, I don't see how they would know.
Safety:
There really aren't any safety concerns I can think of beyond common sense. If common sense is an uncommon virtue for you, maybe you should find someone to help you. :-) If not, then rock on!
Materials:
- an Arduino microprocessor (or clone thereof)**
- some breadboarding wires and an LED (any color)
- a computer with which to program said Arduino
- a "dead" SaniSolution cartridge
- a CatGenie you're willing to disassemble and put back together.***
***unless you're willing to fabricate your own cartridge holder. You're on your own there.
| « Previous Step | Download PDFView All Steps | Next Step » |







































#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;
}
undefined reference to setup.
Anyone have any ideas??
I'm using the modified code posted in the first comment, and everything LOOKS like it's going to go through fine, but when I put a catridge in... nothing. No light, nada. I know other people have mentioned the same result but the reset worked... however, when I go and plop the cartridge into my catgenie, the reset never went through. Tried it with 3 carts, all to the same result.
I'm using a Mega2560, but the code looks pretty standard, and all the pins are right where they belong. This is just baffling to me, but I will be damned if I have to shell out money for more of those damned cartridges. :) Any idea what my issue may be?
Thanks.
or better yet is there a way to make the old 60 do what the new 120 does?
thanks
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
thanks
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>
It isn't too hard. First you can order an Arduino Duemilanove from several places, already built. I got the Chineese copy and it worked great from eBay. In the folds of this instructable are different script codes that you can pick from. Then upload one to the Arduino via free software. I initially used CAT5 wire and taped it in place on the cartridge then held it down with my thumb. I believe that some folks are still providing a reset device but they had to go underground because CG threatened them with law suits. In these times we all need to find ways to make life affordable. Keep in mind this only works for the CG 60. The 120 is a different animal. Good luck.
Cheers,
M-
PS I am using Simple Green full strength in the cartridge and it is doing a great jog so far.
Could you post a picture of the "widget" for us? It helps to have a picture of how yours came out. I'm leaning toward leads electrical tape and my index finger but that's not very high tech. :-)
Thanks
On a related note ScottSEA, great work on this!! Been meaning to comment but only signed up recently. Been using this for a year, and it has been working great. I modified it slightly for my purposes (added blinking light just so know it was active). Integrating this with an automatic cat feeder and a motion sensor for the catgenie so it turns on/off automatically.
Thanks again ScottSEA. Double thumbs UP!!! :)