Below are some of the tools used to build
and this website. We
derive no monetary benefit from mentioning any of them.
1 Development Boards and Environments
We have purchased many small development boards to test
the portability and viability of
many platforms, environments and processors as is practical.
- Arduino - We think that the name Arduino suggests an
IDE and APIs more than it does any particular board. Additional
Arduino-family boards that we have tested
include: Yún, MEGA 2560, Esplora,
Due, Nano and the Duemilanove,
ESP8266 and more.
The code is very portable. If you have Arduino-flavored board
that is not mentioned here, there is a very high probability
OOSMOS will compile and run on it. Let us know if it
Link to Arduino Website
- PIC32 Starter Kit - We have two of Microchip's
Starter Kits, the "regular" PIC32 Starter Kit
and the Ethernet PIC32 Starter Kit.
The good news about the PIC32 is that the MPLAB X IDE development
environment is excellent for source level debugging, the value of which cannot
be understated. It also loads the target very quickly which is quite
The not-so-good news about
this environment is that the starter kits are small boards with
no pin breakouts. To gain access to the GPIO pins, you'll
need to also purchase their Starter Kit I/O Expansion board and figure out which
processor pin is mapped to which header pin on the expansion board,
which is non-trivial.
All of our hardware level examples were initially developed using the
Kit because of the excellent free
tools. We feel that
the quality of the tools more than justify the added expense. Plus, if
you pay attention to portability (e.g the
your code can run on other boards and processors. Note all
the platforms on which the
blink example can
run. (We have no special arrangement with Microchip.)
Link to Starter Kit
Link to Starter Kit I/O Expansion Board
- ChipKit - Essentially ChipKit is a board with
an Arduino form factor that has a Microchip PIC32 processor
that can be developed using either an Arduino IDE (called MPIDE) or
Microchip's MPLAB X IDE. Other ChipKit family boards that we have tested
OOSMOS on include: Uno32, uC32,
Max32 and WF32.
Link to ChipKit Site
- MSP430 - We have tested
LaunchPad board mostly. Other processors/boards will work but
many of them have very little RAM so select your processor carefully.
Link to MSP430 Site
- Intel Galileo - We have tested
the first generation Galileo board using the
Link to Intel Galileo
- mbed -
mbed is an ARM-based development board
whose development IDE is online.
Link to mbed Website
- LightBlue Bean - This is a nifty little board that has
Bluetooth LE built in. It can be programmed using a specialized version
of the Arduino IDE.
Link to LightBlue Bean
- Trinket - A very small Arduino IDE compatible board.
Link to Trinket Pro
- Windows - Although
OOSMOS excels at supporting
memory-constrained environments, it works well under Windows as well.
Link to OOSMOS under Windows Example
- Linux -
OOSMOS runs great on Raspberry Pi Linux (Raspbian),
Red Hat Linux and Mac OS X's Darwin.
We use Fritzing, an open-source drawing tool, to draw the breadboard layouts
of all our examples. The
drawing files are included with
each example to give you a starting point so you can document your
new and clever projects.
Umlet, which is an open-source UML diagramming tool, is used to draw all
of our statecharts. We like it because it is relatively simple to learn and
use and it can export statecharts as SVG files, which makes for crisp
rendering on this website.
Git is a free, open source, distributed revision control system.
We use it to manage all source code. In fact this website is "pushed"
to the web server via Git and is published immediately
We use a PHP IDE, called PhpED from NuSphere, to edit and debug this website.
We particularly like the code expand/collapse feature so we can focus
on the work at hand.
7 Html Validator
8 MPLAB X
Although there is a learning curve, MPLAB X is an excellent tool for editing
and source level debugging on the PIC32 platform. Much of the embedded code we
write is portable
across MCU platforms, so we can pick and choose which platform to do core
development work on. We use the
and MPLAB X because it is stable, mature, and supports source level debugging and
Incidentally, if our debugging is not hardware or timing dependent, we develop and
debug on Window using Microsoft's free Visual Studio Express - compiling with the command line tools
and debugging with the IDE.
Link to MPLAB X Website
9 Mozilla Firebug
Link to Mozilla Website
jQuery is used to handle the code collapse/expand feature as
well as some minor responsive housekeeping.
11 Ubuntu under VirtualBox
If you don't have access to a Linux machine, you can create one for free
by installing Ubuntu under VirtualBox on your Windows machine. (This is
how we tested
on Ubuntu.) It's also a great way to
12 PHP 7
We use PHP version 7 for maximum speed.
Link to PHP
We use the CloudFlare content delivery network to push content closer
to your location for faster page loads.
Link to CloudFlare CDN
Visio is used to create some of the more complex graphics, mostly because
it can export SVG files which makes for a nice crisp look on a multi-sized
responsive website such as this.
Link to Visio Home Page
15 Python 2.7
We use ActiveState Python 2.7 for all scripting. The ActiveState
, which allows us to interact
with Visio to automate exporting of SVG files.
Incidentally, we tried Python 3 and were faced with only differences, not
improvements, so we deleted Python 3 and standardized on Python 2.7.
Link to ActiveState Python
16 Wiring Pi
17 Visual Studio Express 2013
We use the free, express edition of Visual Studio to compile and debug
our Windows examples.
Link to Visual Studio Express
18 Logic by Saleae
Logic, by Saleae, is a very affordable and portable logic analyzer that
is protocol aware. Excellent for debugging serial, I2C or SPI interactions.
It's hard to get embedded video to look nice
on a responsive website. We use a jQuery plugin
that seems to work quite well to perfectly resize any video on all devices that
we've tested it on.
We like this style of breadboard because it's a good size for most projects
and it has two power rails. We like to connect the power rails with
red and green jumper wires for maximum flexibility when laying out parts on
Alternatively, if you don't connect the rails you can use one rail for power and
ground and the other rail as an I2C bus — using the SDA and SCL signals
along that rail instead of power.
You can buy these inexpensively on eBay. Search for "Mini Breadboard Solderless Protoboard PCB Test
Board 400 Contacts Tie Points". Some of this style of breadboard comes in clear plastic. We
prefer the ones that have off-white plastic because they photograph better.
Double Rail Breadboard
We use DuPont jumper cables.
The description to search for on eBay is "10cm 2.54mm 1pin Male to
Male jumper wire DuPont cable". We buy a lot of them in order to have
enough to use green for ground and red for power.
We recommend that you *not* use the cheap
round ones that typically come with some breadboards. Those pins are too
thin and are often coated with manufacturing residue that, if you don't
scrape it off, will not make a good connection.
For a cleaner breadboard layout we try to use jumpers from point to point
rather than the 10cm DuPont wires. On eBay, search for "ELENCO JW-350 350 pc.
pre-formed Jumper Wire Kit".
Also, we use red and green jumpers for +V and ground, respectively. If you
want to follow this convention, you'll have to cut, bend and strip red and green
wires to your specific hole-to-hole length.
Visibility is key. We use this low cost oscilloscope to help debug
our device-level projects.
Link to review.
OWON 6062 Oscilloscope
It's nice to have an assortment of resistor values handy as
you build. We found that Amazon carries them at a reasonable price.
Search for "Joe Knows Electronics 1/4W 86
Value 860 Piece Resistor Kit".
You can find them cheaper in bulk packs but those don't have each
resistor value in a separate bag. The separate bag allows you
to re-store resistors in the correct bag if you do a lot of experimenting.