Software

Once upon a time you used electronics for everything and designed the circuit for the task in hand. Then, slowly, software started to creep in to the design, first it was a PLD that handled a bunch of logic functions in a single device and then more and more until we are where we are today when many circuits consist of of some I/O interfaces and a single micro controller to handle all the logic functions. 

At the same time, as PCs became more and more powerful, their use became more widespread in industry and replaced much of the existing bespoke systems.

From my electronics background I ‘grew into’ this new software based world as it developed, both in the embedded side of things and then into the ‘desktop’ applications. I now have a wide range of knowledge and experience in these areas.

See here for a list of the development languages I use.

Embedded firmare
  • Develop firmware for embedded micro controllers.
  • C/C++, Arduino, some assembler where required and more recently micro-python.
  • Microchip MPLAB and XC series C compilers.
  • Atmel AVR, using the Arduino or similar environment (very rapid development).
  • Interfaces SPI/I2C/UART/RTC/Memory/etc.
  • Highly optimised code.
  • Low power.
  • Embedded system PCB design, see the electronics page here.
Applications
  • Desktop and Industrial systems applications.
  • Simple test applications to large applications.
  • Stand alone applications.
  • Integrated applications, web servers, background task, real time web sockets.
  • Windows/MacOS/Linux.
  • Languages, C / C++ / C# / Python / Micro-python / .net / assembler (as needed) / .netcore / Xojo oh, and VisualBasic.
  • Databases, MySQL, SQLite, Postgres and others.
  • Interfaces, Sockets, Serial etc.
Apps
  • Basic iOS/Android applications.
  • Generally part of a larger project.
Websites
  • Simple websites generally as part of larger projects.
  • HTML/CSS/JS etc
  • Websockets.

Examples

Low power outdoor footfall counter

  • Atmel ATMega328p based.
  • Low power consumption, expect over 5 years batter life.
  • Sigfox connectivity.
  • Written in C/C++.
  • Optimised for low power.
  • Uses Sigfox backend along with our own PHP server for data collection.

Code reader monitoring system

  • Customer has multi-camera based system to read package codes and needed an updated monitoring system.
  • Initially windows based but now built on industrial Linux system
  • Connects to vision hardware via talent and ftp. Results and images are sent to the monitoring system.
  • Monitoring system monitors result accuracy, alarms and issues real time alerts.
  • Time based and manual flexible PDF and CSV reports generator.
  • Plugin architecture to allow for end-user plugin modules to communicate with the end user’s systems.
  • Micro service architecture with modules written in C/C++, C# (.NET Core). and python.
  • Web based GUI using signalR for realtime updates. 

Summary

  • Embedded systems:
    • Microchip / Atmel / Pycom / Espressif (ESP32 – 8366) / Arduino / 68k (real old school)/others
    • C/C++/Assembler/Micro Python
    • Low power
  • Applications:
    • Desktop/Industrial 
    • Linux/Windows/MacOS
    • C/C++/C#/.net/.NET Core/Python/VB
  • Web:
    • HTML/CSS/JS
    • Websockets
    • ASP.NET Core
  • Interfaces:
    • SPI/I2C/UART/RTC/Memory/Sockets/TCP-IP/UDP/etc.
  • Databases:
    • MySQL/SQLite/Postgres/MS-SQL