question about I/O expansion

I am starting a project to replace an analog controller and anticipate using a BBB. I am just looking for information to get started so I can do the work/have the fun. I need a lot of I/O connections. I think that I will need to control about 6-8 relays and read about 12+ relays plus I would like some A/D inputs (temperature, humidity). Some of the relays that I will control will switch 12VDC, but some will switch 2-5 amps at 120VAC. The relays that I will ‘read’ will probably be at 12VDC, hopefully using interrupts. In the past I have used Omiron LY1F and LY2F relays (12VDC and 120VAC coils) which have worked well for over 10 years. I know that I can buy capes for I/O but can I combine them to provide more I/O channels? If so, how? Where can I find this information? Should I purchase a book? What do I need to look for in a cape to select one/some that can provide this expansion? I have read that I can use I2C for address selection. Where can I get documentation for doing this? I know software well but not hardware.

Thank you for your patience and help,
Chuck Crisler

Why do you think you’ll need any cape?

BBB has more then 15 free GPIOs and 7 analog inputs. You can simply build your prototype board to adjust the voltages (GPIO @ 3.3V, ADC @ 1.8 V) and feed the signals to the header pins.

Because it seems (from the documentation that I have read) that you can’t do much without one.

Where can I go for detailed technical information? I vaguely know what a GPIO is, but I don’t know what it can do, or what I can do with it. How do I branch out an I2C channel to control or access multiple relays? How can I arrange the I/O so that I generate an interrupt when a relay closes (like when the ridge vent completely opens and closes a limit switch so I need to turn off power to the motor). Where can I find the information to learn this myself?

Seriously, Google is your friend.

Start with “how to control a relay” You will need to learn out to control a relay with a transistor and why. The same reason applies to any micro, not just BeagleBone Black.

Google what a “GPIO” is. Then google how to use one on BBB. There will be lots of information, it’s hard to describe how to choose which information to use, pick one that feels less intimidating.

Look for videos on youtube by Professor Derek Molloy. Adafruit, Sparkfun have tutorials. Even tutorials that aren’t BBB related can have explanations of circuit operation and all the electronics hanging off of the microcontroller pins is the same or similar. Code from other microcontrollers is useless for BBB. The logic is the same, but the code to implement that logic is different for each micro.

Google using interrupts on BBB.

Google using I2C, and for accessing multiple relays, google I2C expanders. (They’re pretty cool to work with!)

Your project is a puzzle of many pieces. Many of those pieces depend on other pieces being put together first. For a newcomer, it’s a lot to learn and you just have to jump in, keep notes, keep a build journal, experiment, and expect to make mistakes, they happen.




We have a campaign running on Indiegogo :
We offer a robust and modular I/O expansion system, up to even hundreds of I/O or more.
It uses a very simple interface ( like SPI with a few bits. )
We will also offer analog in and outpus in the near future, within the same concept.
If you have any questions, just let me know.
I hope this could help you.

regards, Koen

Which are the 15 free GPIOs? After study of the schematic, I count these ten:

    GPIO0_26 => '44e10'.'828', # CAUTION: USED ON BOARD. says schematic. BS
    GPIO0_27 => '44e10'.'82c', # CAUTION: USED ON BOARD. says schematic. BS
    GPIO1_12 => '44e10'.'830', # CAUTION: USED ON BOARD. says schematic. BS
    GPIO1_13 => '44e10'.'834', # CAUTION: USED ON BOARD. says schematic. BS
    GPIO1_14 => '44e10'.'838', # CAUTION: USED ON BOARD. says schematic. BS
    GPIO1_15 => '44e10'.'83c', # CAUTION: USED ON BOARD. says schematic. BS
    GPIO1_17 => '44e10'.'844',
    GPIO1_29 => '44e10'.'87c',
    GPIO2_1 => '44e10'.'88c',
    GPIO3_19 => '44e10'.'9a4'

Every other signal labeled GPIO?_?? coming out of the processor is connected
to something besides a header. I guess you can use some of these (e.g. HDMI)
if you don't mind about slight loading and having to shut down all input
during boot to avoid boot pin problems.