"... and no one shall work for money, and no one shall work for fame; But each for the joy of the working, and each, in his separate star, shall draw the thing as he sees it, for the god of things as they are"

-Kipling

Of Itself So - Projects

Listed below are some projects I have been working on. Many of the software ones are still undergoing active maintenance and updates. If a project seems suitable for more than one category it may well be listed more than once.

Move your mouse over the link associated with each project to see a quick pop-up which provides a slightly more lengthy summary of what each project is about. Interestingly, these pop-ups are entirely done with CSS and HTML (no Javascript or Flash). No, I did not think up this technique, the About page contains the credits.

Computer Numerical Control (CNC)

Line Grinder Leaf Img Line Grinder
 
A software program to read Gerber and Excellon files and to output GCode suitable for the isolation milling of printed circuit boards (PCB's). The basic functionality and features of this software are:
 
 · Can convert Gerber files to isolation GCode.
 · Can convert Excellon drill files to GCode suitable for a CNC mill.
 · Can generate other useful types of GCode also useful for the creation of PCB's.
     For example: Edge Milling, Reference Pin and Bed Flattening GCode.
 · Graphical user interface displays the Gerber and GCode plots.
 · Very configurable with individual settings for each GCode type.
 
This software is offered as a binary and with source code under the terms of the MIT License.
- Creates Isolation Routed PCB GCode from Gerber Plots, can also generate GCode from Excellon Drill Files.

Wellity CNC Router Leaf Img The Wellity CNC Router
 
A discussion of the repair and conversion of a 1980's vintage Gerber System 48 CNC sign cutting router to use modern CNC drive and control mechanisms and the addition of other useful accessories (such as a dust shoe, touch probe and console) to it.
 
 · Discusses how the router came to be purchased quite cheaply.
 · Discusses the physical structure of the router.
 · Discusses the repairs to the mechanical structure to get it operational.
 · Discusses an innovative and inexpensive power supply design.
 · Discusses the design and build of the new control electronics.
 · Discusses the CNC controller software chosen and the control electronics interface.
 · Discusses the CAD and CAM software tool chain used.
 
This documentation is offered under the terms of the MIT License. Complete source code is offered for any software implemented.
- A discussion of the repair and conversion of a 1980's vintage Gerber System 48 CNC sign cutting router to use modern CNC drive and control mechanisms.

Microcontrollers

BBBCSIO Leaf Img BBBCSIO - A C# I/O Library for the Beaglebone Black.
 
BBBCSIO is a free and open source .NET v4 library which provides a comprehensive C# input/output solution for the Beaglebone Black Mono environment. Using BBBCSIO, you can easily read and write to the GPIO pins (and trigger interrupt events from state changes), launch and interact with PRU programs and control SPI, I2C, PWM, Serial Port and A2D devices. BBBCSIO is intended to be a complete solution for I/O on the Beaglebone Black. The basic features of this project are:
 
 · Provides simple and transparent read/write access (including the triggering of events)     to the GPIO pins of a Beaglebone Black. A maximum output frequency of about     1.8MHz is possible when using a memory mapped port class and about 1.2Khz when     using the SYSFS class.
 · The SPI ports are fully supported. It is possible to use GPIO ports to provide a large     number of SPI device select lines.
 · The I2C ports are fully supported.
 · The Serial/UART ports are fully supported.
 · The Pulse Width Modulation (PWM) devices are fully supported. The PWM duty cycle     can be specified in nano-seconds or as a percentage of the base frequency.
 · The Analog to Digital Conversion (A2D) devices are fully supported. A sample rate of     about 1000 samples/sec has been observed.
 · Full PRU support is included. The BBBCSIO PRU_Driver class can launch PRU binary     code and interact with running PRU programs to exchange data or receive interrupt     events etc. The PRU can read from or write to I/O lines at speeds of up to 50Mhz.
 · The software is written in C# and a .NET project is included with the source code.
 
This software is offered as a binary and with source code under the terms of the MIT License.
- BBBCSIO - A C# I/O Library for the Beaglebone Black - GPIOs, I2C, SPI, PWM's, Serial Port, A2D and PRU support are all included.

Beagle Leaf Img Installing Mono and C# on the Beaglebone Black
 
A project to get Mono/C# installed and operational on the Beaglebone Black and to implement a tool chain which permits remote editing, compiling and debugging. The basic features of this project are:
 
 · A description of the hardware configuration needed and why it is different
    than the standard, as shipped, requirements.
 · Information on installing the Ubuntu armhf O/S on the Beaglebone Black.
 · Setting up a static IP address and nameservers on the Beaglebone Black.
 · How to install Mono and C# on the Beaglebone Black.
 · How to install MonoDevelop on a remote Ubuntu Linux Box to provide a remote
    development environment for the Beaglebone Black.
 · Using NFS to map a C# project directory on a remote Development PC into the
    Beaglebone Black.
 · How to implement Mono and C# remote debugging on the Beaglebone Black
 
This project consists of seven detailed web pages and all source code is available under the terms of the MIT License.
- Installing Mono/C# on the Beaglebone Black and implementing a remote compilation and debugging toolchain.

Beagle Notes Leaf Img Notes on the Beaglebone Black
 
A project consisting of a series of detailed web pages and pdf's discussing a variety of information on various useful Beaglebone Black concepts and implementation details not suitable for inclusion elsewhere. The basic features of this project are:
 
 · A technical note which provides an explanation set at the novice level of
    how the Device Tree works, why it does what it does and how to compile
    and de-compile it.
 · Information on configuring the Beaglebone Black to connect to the Internet
    via the supplied USB cable and a Windows PC.  
- Notes on the Beaglebone Black.

Prop Script Bit Inspector Leaf Img Prop Script Bit Inspector
 
A binary file viewer and Propeller Assembly Language Disassembler for the Parallax Propeller Chip written in CSharp. The basic functionality and features of this software are:
 
 · Interprets the binary header bytes and presents them on the display
 · Can display the file contents in hex format.
 · Optionally can display the file contents in binary format.
 · Optionally can undo the Little Endian byte order when presenting the file
    contents.
 · Optionally displays PASM code in a disassembled manner with forward and
    back label references.
 · Moving the edit carat over lines in the display panel will dynamically
    update a display showing the disassembled PASM opcodes for that line split
    out into the various instruction components.
 · Contains a handy converter which enables a user to enter four hex bytes
    (assumed to be a binary PASM instruction) in various formats such as hex,
    binary, little endian hex, little endian binary and to see the output in a
    variety of formats.
 
This software is offered as a binary and with source code under the terms of the MIT License.
- Displays the contents of .binary and .eeprom files which are intended to be loaded and executed on the Propeller Chip.

IRSky Leaf Img IRSky
 
A Manchester Signal Processor with an associated RC6 and RC5 decoder. The code is largely focused on interpreting the RC6 Mode 6 IR pulse codes sent by an SKY+ IR remote control but it should work with any Philips TV IR remote control. The basic functionality and features of this software are:
 
 · The IR pulses are input on a standard Beaglebone Black or Netduino Plus 2 GPIO pin.
 · A Manchester signal decoder records the edges of the pulses.
 · Software decoders detect RC6 and RC5 signals within the pulses.
 · The bits within the RC5 or RC6 signal are resolved and made publicly available.
 · The entire content of the RC5 and RC6 pulses is contained in a 4 byte Int32 value.
 · All information content in the IR signal is present in the four output bytes.
 · The code is written to be quite efficient in both memory and cpu requirements.
 · The IRSky software can handle intermixed RC5 and RC6 signals.
 · Tested on a Netduino Plus 2 and Beaglebone Black Rev C.
 · The software is written in C#. Visual Studio 2010 projects are included with both the
    Netduino source code and the Beaglebone Black source code.
 · If you are compiling for the Netduino Plus 2, the PC will require the Microsoft Micro
    Framework 4.2 to be installed.
 · If you are compiling for the Beaglebone Black, you will need to have the BBBCSIO I/O
    library, C#, Mono and possibly a remote development environment configured.
 
This software is offered as source code under the terms of the MIT License.
- Uses a Beaglebone Black or Netduino to decode RC5 and RC6 signals from an IR Remote Control.

Robotics

SRV1 CSharp Console Leaf Img SRV1 CSharp Console
 
A console for the SRV1 Robot written in CSharp. The basic functionality and features of this software are:
 
 · Connects to the SRV1 Robot via TCP/IP.
 · Buttons can be pressed to send shortcut motor control commands.
 · Arbitrary user defined text and hex commands can be transmitted.
 · Image information from the SRV1 Robots camera can be received and
    displayed.
 · Interpreted C programs can be sent to the SRV1 robot and executed.
 · Runtime errors in interpreted C programs are displayed.
 · A comprehensive log of all data transmitted and received from the SRV1 is
    kept.
 
This software is offered as a binary and with source code under the terms of the MIT License.
- A CSharp version of the Surveyor SRV1 Robot console application including some extended capabilities.

Software (Misc.)

CoDocker Leaf Img CoDocker
 
Generates HTML web pages from the solutions, projects and source code files created by the Microsoft Visual Studio CSharp software. The basic functionality and features of this software are:
 
 · Reads CSharp solutions, projects and files and converts them to HTML web
    pages.
 · The output files are all written to the same directory in a flat structure.
 · Certain elements of the Visual Studio syntax highlighting are output.
 · All output files are linked together in a tree like structure.
 · The visual appearance of the output files are highly customizable.
 
This software is offered as a binary and with source code under the terms of the MIT License.
- A CSharp solution, project and source code to HTML page converter. (sample)