"... 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.

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.

Software

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)

Kimono Leaf Img Kimono
 
A monitoring system for Outback Power PV solar power equipment.
 
 · Displays state of the Outback system at configurable intervals.
 · The state is updated in realtme.
 · The data can be recorded for later plotting and display.
 · The incoming data can be manipulated and calculations displayed.
 
The Kimono software is open source and is available for download under the terms of the MIT License. A YouTube video is available as a tutorial.
- A Windows PC based monitoring system for Outback Power PV solar power equipment.

Tanta Leaf Img Tanta
 
Provides documentation and code samples which can assist people in developing applications for Windows Media Foundation in the C# language.
 
 · Offers a comprehensive Windows Media Foundation: Getting Started in C# book
    as a free pdf download.
 · Provides many C# Sample Projects illustrating various WMF techniques.
 
The Tanta Sample Applications are open source and are available for download under the terms of the MIT License and a comprehensive (300 page) Windows Media Foundation: Getting Started in C# book is available as a free pdf download.
- Provides documentation and code samples which can assist people in developing applications for Windows Media Foundation in the C# language.

Prism Leaf Img Prism
 
A suite of code samples and simple image recognition test solutions using the EmguCV (a C# OpenCV Interface) library.
 
 · Offers six standalone example Visual Studio Solutions
 · Included is a full Windows Media Foundation application
    with EmguCV calls integrated into the pipeline.
 
The Prism Sample Applications are open source and are available for download under the terms of the MIT License. A short YouTube video is available which discusses the project.
- A suite of code samples and simple image recognition test solutions using the EmguCV (a C# OpenCV Interface) library.

Tanta Leaf Img Tanta
 
Provides documentation and code samples which can assist people in developing applications for Windows Media Foundation in the C# language.
 
 · Offers a comprehensive Windows Media Foundation: Getting Started in C# book
    as a free pdf download.
 · Provides many C# Sample Projects illustrating various WMF techniques.
 
The Tanta Sample Applications are open source and are available for download under the terms of the MIT License and a comprehensive (300 page) Windows Media Foundation: Getting Started in C# book is available as a free pdf download.
- Provides documentation and code samples which can assist people in developing applications for Windows Media Foundation in the C# language.

RemCon Leaf Img RemCon
 
A demonstrator project which illustrates the process of sending a typed object via TCP/IP in C# and provides a simple to use data transfer library.
 
 · Demonstrates the process of sending a typed object via TCP/IP.
 · Provides a simple easy to use data transfer library.
 · The example client code works on Windows or on Linux (under Mono).
 
The RemCon Sample Applications are open source and are available for download under the terms of the MIT License.
- Demonstrates the process of sending a typed object via TCP/IP in C# and provides a simple to use data transfer library.

ThumbNailGenerator Leaf Img ThumbNailGenerator
 
A project to enable the fast, semi-automated, generation of cropped, scaled and thumbnail images from sections of multiple images.
 
 · Simple cropping and scaling on user selected portions of images.
 · Automatic open of the next image in a directory for sequential processing.
 · Automatic creation of thumbnail images from the cropped and scaled sub-images.
 · Multiple cropped and scaled sub-images can be taken from any original image.
 
The ThumbNailGenerator application is open source and the source code is available for download under the terms of the MIT License.
- A project to enable the fast, semi-automated, generation of cropped, scaled and thumbnail images from sections of multiple images.

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.

NamePlateGenerator Leaf Img NamePlateGenerator
 
A project to enable the fast, automated generation of GCode files for text engraving.
 
 · Can engrave up to five text items per nameplate panel.
 · Numerous adjusable CNC parameters.
 · Any TTF font can be used - automatic conversion of Font to GCode.
 · Can consume a CSV file and auto-generate multiple GCode files.
 
The NamePlateGenerator application is open source and the source code is available for download under the terms of the MIT License.
- A project to enable the fast, automated generation of GCode files for text engraving.

Microcontrollers

RPICSIO Leaf Img RPICSIO - A C# I/O Library for the Raspberry Pi 2.
 
RPICSIO is a free and open source .NET v4 library which provides a comprehensive C# input/output solution for the Raspberry Pi 2 Mono environment. Using RPICSIO, you can easily read and write to the GPIO pins (and trigger interrupt events from state changes) and control I2C, PWM and Serial Port devices. RPICSIO is intended to be a complete solution for I/O on the Raspberry Pi 2. 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 Raspberry Pi 2. A maximum output frequency of about     2.4MHz is possible when using a memory mapped port class and about 1.1Khz when     using the SYSFS class.
 · The SPI port is fully supported. It is possible to use GPIO ports to provide a large     number of SPI device select lines.
 · The I2C port is fully supported.
 · The Serial/UART port is fully supported.
 · The Pulse Width Modulation (PWM) device is fully supported. The PWM duty cycle     can be specified in nano-seconds or as a percentage of the base frequency.
 · 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.
- RPICSIO - A C# I/O Library for the Raspberry Pi 2 - GPIOs, I2C, SPI, PWM's and Serial Port support are all included.

RBerrySharp Leaf Img Installing Mono and C# on the Raspberry Pi 2
 
A project to get Mono/C# installed and operational on the Raspberry Pi 2 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 and software on the Raspberry Pi.
 · How to install Mono and C# on the Raspberry Pi 2.
 · How to install MonoDevelop on a remote Ubuntu Linux Box to provide a remote
    development environment for the Raspberry Pi 2.
 · Using NFS to map a C# project directory on a remote Development PC into the
    Raspberry Pi 2.
 · How to implement Mono and C# remote debugging on the Raspberry Pi 2
 
This project consists of five detailed web pages and all source code is available under the terms of the MIT License.
- Installing Mono/C# on the Raspberry Pi 2 and implementing a remote compilation and debugging toolchain.

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.

Tilo Leaf Img Tilo
 
A Client-Server application for Windows and the Beaglebone Black to control the pulse and direction signals for up to six stepper motors.
 
 · Provides continuous, consistent stepper motor pulses.
 · Is not affected by the operating system swapping processes.
 · Uses a PASM Assembly Language executable in PRU1.
 · The Server code works on Windows and the Client on the
   Beaglebone Black (under Mono).
 · Up to six stepper motors are supported.
 
The Tilo Applications are open source and are available for download under the terms of the MIT License.
- A Client-Server application for Windows and the Beaglebone Black to control the pulse and direction signals for up to six stepper motors.

CS_LCD Leaf Img CS_LCD
 
A C# Library for LCD Displays (HD44780 Compatible) via I2C.
 
 · Controls the screen of HD44780 LCD displays.
 · Written entirely in C#.
 · Uses I2C as the communication protocol.
 · Readily adaptable to other communication types.
 · Compatible with the Arduino Liquid Crystal Library.
 · Sample code for the Beaglebone Black and Meadow F7 board.
 
The CS_LCD Library is open source and is available for download under the terms of the MIT License.
- A C# Library for HD44780 Compatible LCD Displays via I2C.

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.

FPath Leaf Img FPath
 
An umbrella project for experiments on the Feynman Path.
 
 · Uses Windows Media Foundation to display a webcam and save it to a mp4 file
 · Is in its intial stages at present.
 
- A container project for current and future experiments on the Feynman Path.

Walnut Leaf Img Walnut
 
The software that does path planning and control for the micro robots in the FPath Project.
 
 · Displays webcam images on the screen via Windows Media Foundation and,     optionally, saves the stream to an mp4 file
 · Uses EmguCV library image recognition code imbedded in a WMF Transform
 · Contains multiple versions for different purposes.
 
- The software that does path planning and control for the micro robots in the FPath Project.

Misc. Notes

Miscellaneous Notes Leaf Img Miscellaneous Notes
 
A collection of miscellaneous notes not associated with any particular project:
 
- A collection of miscellaneous notes not associated with any particular project.