Gerrys PIC Based Projects

Intro
I'm using this site to publish the results of some PIC based hardware and software projects that I've built.  All the projects are free for non-commercial use and include all the schemats, firmware and supporting documentation allowing you to build them yourself.  Some can be assembled on simple perf-board, others are almost impossible to build without a PC board and others fall in the middle.  I'm also offering some items for sale.  These tend to be kits that include pre-programmed PICs for those who don't have or want a PIC programmer, PC boards that I was able to get done in quanityt cheaper than simple one and two batches and the like.  There is nothing in the store you cannot do yourself with the supplied resources -- it's just offered for those who have asked for it as a convience.

These projects are free for NON-COMMERCIAL use only (as outlined in the copyright and license documents that accompany them).  If you would like to consider using part or all of any of these projects in a commercial way (integrating into a product or reselling the project itself), you must contact me to work things out.  I'm pretty reasonable and non-scary, so don't be afraid.

NOTE: Support forums are available at http://www.rgbled.org/forums.  Details on the support policy are here
NOTE: If you are looking for the Store or Suppliers lists, please scroll down


RGBLED Controller
Lets you control the exact color of an RGBLED to be one of 16.7 million possible colors via a serial connection.  The mRGBLED controller has three channels allowing between 1 and 3 independently controlled LEDs to be attached.  The RGBLED controller has 13 channels allowing between 1 and 13 independently controlled RGBLEDs.  Each controller has a unique board identifier, so you can daisy chain multiple boards to provide more channels/LEDs

NOTE: A channel is really 3 seperate outputs (red, green and blue) that are controlled as a single entity.  Typically, you attach an RGBLED to a channel, meaning the number of channels is also the number of LEDs.  However you can use power drivers so a single channel can drive multiple LEDs (though they are all the same color) or combine channels to provide more drive power (so 3 channels might drive a single LED, though they will be "harnessed" or slaved together).

In addition to being able to be set to a specific color, you can also define color animations or "washes".  As an example, these allow you to tell the controller to start an LED at red and then gradually fade or wash to "green" over 20 seconds and then fade or wash back to red over the next 20 seconds.  You can control  which colors are used, how many colors, how long each fade/wash is and if they are smooth fades/washes or abrupt changes.  The time period is adjustable from 1/100th a second to 4 minutes in 1/100th second increments.  There is a pool of upto 32 colors in the controller that can be allocated to each channels washes or animation (so all 32 could be used for a single channel or they could be evenly split between two channels, or you might have 15 on one channel, 5 on another, 10 on another and 2 on still another, etc). 

All settings (channel on/off state, current color, washes/fades/animations, board ID, etc) are stored in EEPROM and can be configured to start immediatly on powerup (allowing a board to be pre-programmed and the disconnected from the computer/controller).  The controller uses a simple, well documented control protocol and can talk to a standard serial port at several different baud rates (1200, 2400, 9600, 19.2, 38.4, etc).  It can also be used at TTL levels to allow direct control from other logic in your project.

Sprinkler Controller

This allows you to control from 1 to 27 valves (or zones) of a sprinkler system -- the exact number you can decide when building.  While it does not provide a time of day service (i.e. you can't tell it "water zone 1 at 10AM"), you do command it (from a PC or other controller) over a serial link to open a specific valve/zone for a specific number of minutes.  You can send multiple requests down and they'll be queued up and then executed in order (up to 40 pending requests are possible).  There are 8 queues, so you can have independent watering schedules operating at the same time (assuming your water supply can keep up).   The controller is inexpensive to build -- a 10 zone controller cost me about $70USD in parts and took about an hour to assemble.  A 27 zone controller I built for my brother cost about $170USD (the extra cost was extra relays) and took about 3 hours to build.

In addition to supporting up to 27 valves, it can also control and irrigation pump, if needed.  The pump will be turned on anytime any valve/zone is open and there is logic to prevent "short cycling" the pump (turning it off and then quickly turning it back on -- that can damage some pumps).  There are intelligent delays tha, when using multiple queues, prevent the controller from trying open more than one valve at the same time (which might overload your power supply), but instead will stagger them so the load on the power supply is spread out over a few seconds.

There are numerous safety features and checks to insure that no valve is ever left open due to problems (hardware issues, possible firmware problems, etc) -- in fact, such checks and double checks make up nearly 1/2 the firmware (can you tell I'm a little paranoid?).

The controller can be placed at the point where the sprinkler wiring enters your house/garage/etc with a single 2 or 3 conductor serial cable that is run back to the computer or controller that will send it requests.  The controller uses a simple, well documented protocol and if you want or need it, offers extension status change and event notification reports (though they can be totally ignored if your application doesn't need them).

Multi-sensor controller for use with the MaxBotix Ultrasonic sensor
This allows you to easily interface one or more of the remarkable MaxBotix EZ1 ultrasonic ranging sensors to a controller or computer via a RS232 serial. These sensor are remarkably small, accurate and easy to use, but do put a load on the computer or controller as they are continously sending a stream of distance measurments out, even if nothing has changed.   The controller can talk to upto 12 EZ1 sensors and send reports to the computer/controller only when there is a real change.  You can define how much change before a report is to be sent along with range info (for example, only send reports when things are between 10 and 20 inches -- ignore everything else).

The controller also allows for multiple EZ1 sensors to work in close proximity to each other.  If you turn on a number of EZ1 sensors at the same time in an area, they can interfere with each other, reading other units ultrasonic beams instead of their own or otherwise interefere with each other.  This controller sequences the readings so only one sensor is measuring at any given moment. 

The controller checks another sensor each 1/100th a second, so if you only have a single sensor configured, then  it reads 100 times a second.  If you have all 12, they are still checked nearly 10 times a second each -- fast enough for most movement capable of being measured with ultrasonics.  Each sensor can be independently configured to one of 6 configuration modes: Disabled, Polled (tracks sensor, but doesn't report unless queried), periodic (sends reports every X seconds), triggered (sends reports when there is a change of X or more inches), inclusive range (track when an object enters or exists a predefined range of distances) or exclusive mode (track object except in a predefined range of distances).    Sensor configurations are stored in EEPROM so once configured, they do not need to be reset after power fails/reset.

The controller is configured and commanded via a simple, well documented serial protocol.  It can speak to a computer via RS232.

NOTE: MaxBotics, MaxSonar and EZ1 are trademarks of MaxBotix Inc.


Store
The store is a convience for folks who do not need/want things like a PIC programmer to program their chips or want pre-made PC boards and such.  There is nothing at the store you cannot acuire yourself with the material available (all source code, firmware, schematics and PC board layouts ready to send to a prototyping shop are provided).  Also, since this is not my lively hood, not all products are always available in stock -- I tend to buy a batch of things and make it available until gone.  If something isn't available, I'll contact you immediatly.

Suppliers
If you are looking for parts, I've started collecting a list of business I've dealt with.  It's not exhaustive and there are plenty of other suppliers, but if you don't know where to start, this is a good jumping off point.


Support
All support for these projects is exclusively provided on the forums at this site.  Please don't sent me email -- I won't respond to it (or will just respond with a form letter directing you to the forums).  Even for things in the store, the amount of margin is almost nil -- covers the product and some of my time.  I could not hope to support folks on a one-on-one basis, but with a forum, many people can help each other out and there is a searchable history of things that can help you solve your own issues quickly.  Beyond providing the forum, I offer absolutely no guarantee you're request for help will be answered.  It probably will be by someone, but it may take a few days or go unanswered.  I'd strongly suggest searching the forums throroughly first and then asking you question in a pleasant and detailed manor.  Posting questions that have been answered before or posting demanding questions will probably get you ignored -- remember you are "borrowing a cup of sugar" -- folks are helping each other out by their own good graces.

Support forums are available at http://www.rgbled.org/forums

Last Updated March 4, 2007
Problems with the website?  send email to webmaster@rgbled.org (no project support email please!)