At this stage many projects involve model railways. Note Thomas the Tank Engine with DCC decoder attached to his tender.
These pages describe some of my projects. These pages will be enhanced as I am able. If there are any errors, I will attempt to correct them. However, I do not have the time or enthusiasm to go back and make everything perfect.
These pages have been upgraded from the previous "classic" format so there will be some limitations in the presentation.
1. Readers who wish to duplicate my projects. However, you will need a basic knowledge of microcomputer hardware and programming and be prepared to do some soldering/wire-wrapping and programming.
2. Enthusiasts who wish to both implement my projects and also learn a bit more background and perhaps enhance the projects to meet their needs.
3. Students wishing to know more of the C++ language in an embedded processor rather than desktop environment.
For my projects the Preferences in the Arduino was set to ........sites/Programs. All programs/sketches are then by default saved in that directory/folder under a sub-folder that was the name of the project. I have created that same structure on this site. In the sub-folder Programs I have placed copies of the source code of all the projects.
The naming convention may seem a little strange, but I wished to give a little more detail in the name. For example, LDR_Sensors_Class develops a class using an LDR as opposed to IR_Sensor_Class that uses an IR sensor.
3D Projects: Added to describe generating 3D models with Fusion 360
Arduino: Pages about some features of the Arduino in general not specific to any projects. There are projects using an LCD. Also a project developing a PCB.
Sensors_Signals: LDR and IR sensors driving model railway signals.
Model Trains: Projects involving multi-sensor and multi signal applications. Projects that use WiFi to communicate.
WiFi: Projects that are basically WiFi as opposed to WiFi monitoring model trains.
Programs: Collection of all the source code used in the projects.
2nd August 2025 NCE_Bus_Probe3 will illustrate the start up and handshake responses from the slave controller.
30th July 2025: NCE_Bus_Probe2 will illustrate how to extract the messages. These will be displayed on the monitor.
20th July 2025: NCE_Bus_Probe1 will capture the bus activity as a string of bytes. Any messages will be decoded but not used at this point.
15th July 2025: Wye Control LEDs. A class that will control the LEDs that indicate the selected point settings in a model railway layout. Part of the Wye_Point_Control Project
15th July 2025: Wye Point Control. Page started. A cover page for project that controls points in a WYE layout.
8th July 2025: A control panel that demonstrates developing a sketch from a PCB image (Canvas), the point operation and adding text to the model.
5th July 2025: Servo Motor Mount. Illustrates Fusion features such as joining, placing holes, setting angles and offsetting extrusions
1st July 2025: Getting started in Fusion 360. Example generates a cylinder or a round hay bale.
1st July 2025: 3D Printing projects. I was side tracked into producing 3D models for the Model Railway Club. These pages highlight what I learnt along the way.
14th October 2024: Coal Basin Project: The physical aspects of a previous project on a railway layout known as the Coal Basin were enhanced. While this not significantly change the program firmware the opportunity was taken to tidy up some aspects. In addition, the page structure of this document was changed. The old and new projects are listed under the umbrella Coal Basin Project. This will include two sub-folders Coal_Basin1 and Coal_Basin2 Under each will be sub-files for the original components. For example, Coal_Basin_Buttons and Coal_Basin_Buttons2. Similarly for the LED display the Servos and the control logic.
7th September 2024: NCE_Bus_Probe: Class/Library to interface with the NCE RS485 Bus. This page is being replace with a series of smaller pages NCE_Bus_Probe1 etc
10th August 2024 XFunction_Control_Points: Enhances the Function_Control_Points to include (i) an LCD display and (ii) rail track-side signals.
3rd August 2024 Function_Control_Points Controls points using the function switches on a NCE Twin Controller rather than accessory commands. Uses DCC_Loco_Fn and Servos_for_points
28th July 2024 Servos_for Points. Project that develops code to control multiple servos attached to a PCA9685. One feature is that the code will turn the servos off after they have been switched.
25th July 2024: DCC_Loco_Fn: Project enhances DCC_Probe to extract value of specified loco function from messages.
30th December 2023: DCC_NCE_Bus. Project to monitor data on the NCE Bus. Includes Cpp handler that will call user/client functions.
22 November 2023 Servo Tester. Implementing a stand-alone Arduino based tester for servos. Used to determine the point servo settings for the Coal Basin Project.
The following Coal_Basin projects were moved to a different location under Coal_Basin1 in September 2024
08 November 2023: Coal Basin_Servo_Issues. Implementing the servos in the Coal Basin there were a number of practical issues including the current surge when servos switched. A separate page was developed to discuss these issues.
25 February 2023: Coal Basin Control. Inherits the following projects to control the railway yard shown in diagram below.
24 February 2023: Coal Basin Signals: Develops a class to set the signals at points 1 through 11.
13 February 2023: Coal Basin Servo: Develops a class to control a servo for use on the Coal Basin layout shown below.
11 February 2023: Coal Basin _Buttons. Reading the route select buttons on the train layout below. (.A' to 'M' on diagram.)
10 February 2023: Coal Basin LEDs Controlling many LEDs that will be used to indicate available routes on a model train layout. (.A' to 'M' on diagram.)
31 January 2023: Signals to Control Delta_Layout. Monitors 4 sets of points (60,61,63 & BG) and controls 8 sets of signals (A..H) on a model railway.
30 January 2023: Multiple WiFi ESP_NOW to WiFi AP: A LCD was added to the output to supplement Smartphone.
30 January 2023: LCD_1602_Class; A simple Cpp program that inherits a professional library. Possibly of educational value with Cpp
1 June 2022: Multiple WiFi ESP_NOW to WiFi AP: Multiple ESP_NOW stations that send train status to central ESP_NOW that acts as a WiFi AP. Expands LDR_ESP_WiFi_SSE: for multiple stations.
21 February 2022: LDR_ESP_WiFi_SSE: Project uses LDRs to monitor a train. The ESP8266 controls signals and uses SSE to update any change in status to a smart device.
11 February 2022: LDR_Ser_Sig3_Ser_Class: Project uses serial input and output interfaces between LDR sensors and 3 aspect signals.
3 September 2021. Track_Train_ESP_WiFi. This page uses an ESP8266 to send messages via WiFi to a Smartphone. Due to number of pins on the ESP8266 the under lying hardware uses serial communication.
19 August 2021. Touch_Pad_Class. This page takes working C code (Keypad Test) and converts to C++ Class/Library for Touch Pad Keyboard.
15 August 2021. Keypad Test. This page works through a number of iterations in getting a Touch Pad to work.
27 July 2021. Watch Dog Timers. This page briefly describes watchdog timers and explains how they might cause unexpected resets in Arduino based systems.
25 July 2021. OLED Introduces the OLED used in the TTGO ESP8266/OLED component.
15 June 2021: DCC Points Control Uses a DCC_Function Library from a NCE Twin to set points on a model railway layout.
4 June 2021: Nano Power. Powering the Arduino NANO
4 May 2021: LDR_Analog_Class - effectively replaces LDR_Sensor_Class and LDR_Overload_Class but also takes analog readings when attached to analog pins.
3 May 2021: Developing a PCB using commercial product easyEDA- basically a list of mistakes I made or lessons I learnt and what I'd do better/different next time. Board 1. Board 2. Board 3 (July 2021). Creating a new component (July 21)
7 April 2021: IR_Single_track_Class: Project uses IR sensors to monitor and control one or two sections of single track. Program replaces previous projects IR_Single_track and IR_Single_Track_dual
18 March 2021: DCC_Function: Project enhances DCC_Probe to extract value of specified loco function from messages. Replaced with DCC_Loco_Fn July 2024
13 March 2021: DCC_Debug: Project enhances DCC_Probe to display the data as DCC messages/commands/instructions. Updated June 2024
10 March 2021: DCC Probe: Project to extract the commands from the signals on a model train track and display to a serial monitor.
2 March 2021: EasyEDA_PCB - Using EasyEDA to develop a PCB
23 February 2021: DCC_Track_Protocol: Protocol of DCC signals on a model railway track.
10 January 2021: IR_Single_Track_Dual: April 2021 replaced with IR_Single_track_Class: .
29 December 2020: IR_Single_Track April 2021 replaced with IR_Single_track_Class: .
1 December 2020: WiFi_Train_SSE Server Send Events where server sends train location as an HTML update without request from client.
27 November 2020: WiFi_SSE Server Send Events where server sends HTML update without request from client.
4 November 2020: WiFi_123: Review of different WiFi Code
27 October 2020: Track_Trains_ESP_Class. Converts Track_Trains_ESP into a class to hide implementation details.
25 October 2020: Track_Trains_ESP. ESP8266 used to read sensors, control signals and display status.
13 October 2020: LCD_Init_Class Project initialises an LCD. Example of classes - developing and inheriting
07October 2020: LCD_ROM_Class. Project generates patterns for LCD from ROM
01 October 2020: Signals3_Serial_Class Project uses a serial to parallel interface from micro-controller to the signals.
19 September 2020: Track Trains. Uses a set of LDRs to track the position of train and control signals.
19 September 2020: LDR_Signals_RAG_Class. Class reads LDR and controls Red-Amber-Green signals
16 September 2020: New LDR_Serial_Sensor_Class. Class reads output for parallel to serial converter to read LDR of interest.