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!)