MethodMade Studio logo mark

MethodMade

Studio

← Back to experience

Technical depth

Turning hardware documentation into production controller software

I built a first-of-its-kind Node-based controller for a JCM iPro bill recycler used in BTM workflows, turning hardware documentation, protocol timing, and external API requirements into production software.

This was one of my favorite projects and one of the most challenging technical builds I have worked on. The goal was to build controller software for a JCM iPro bill recycler, a hardware device that could both accept and dispense bills.

The device needed to be used inside a BTM workflow, which meant the software had to communicate reliably with physical hardware, follow the JCM ID003 protocol, manage RS232 SerialPort communication, and integrate with existing external APIs.

I built the controller personally from scratch in Node. At the time, this was the first controller of its kind that I knew of built in Node for this use case, which meant there was not a clean example to follow. I worked from JCM documentation, the ID003 protocol, hardware behavior, and external API specifications to figure out how the system needed to behave.

The hardest part was not simply sending commands to the device. The hard part was timing.

Hardware communication depends on sequence. Heartbeats, status checks, responses, acceptance states, escrow states, dispensing states, error states, and completion states all have to happen in the right order. If the controller asks the wrong question at the wrong time, waits too long, moves too fast, or misses the device’s current state, the workflow can fail.

To manage that, I built a custom finite state machine governed by a handbuilt controller. The controller tracked where the device was in the acceptance or redemption flow, what the next valid action should be, how to respond to device messages, and how to coordinate the physical bill recycler with the external system APIs.

The result was production controller software that connected a JCM iPro bill recycler, ID003 protocol communication, RS232 SerialPort messaging, Node-based controller logic, and external APIs into a working BTM bill acceptance and dispensing workflow.

This project is a strong example of the kind of technical work that lives at the edge of software and the physical world. The code does not just update a screen. It talks to hardware, waits for real-world events, follows strict protocol timing, and manages failure states carefully enough for the workflow to function reliably.

Visual recap

From hardware protocol to production controller logic.

Three-panel MethodMade comic showing hardware documentation and protocol timing becoming a Node-based BTM bill recycler controller for acceptance and dispensing workflows.

How this applies

The same pattern shows up in smaller business systems too.

The scale may change, but the work still starts the same way: understand what is really happening, organize the moving parts, then build the next useful thing.

MethodMade translation

For a small business, that might mean clearer service pages, cleaner intake, better follow-up, usable documentation, or one practical automation.

1

Understand the real situation

Start by separating the visible problem from the actual workflow, people, tools, constraints, and risks underneath it.

2

Organize the moving parts

Turn the scattered pieces into a clearer map: what exists, what matters, what is missing, and what should happen next.

3

Build the next useful system

Create the practical next layer: a page, process, automation, document, or tool that can be understood and maintained.

Use this thinking for

  • Hardware/software integration
  • Controller software

Helpful when you need

  • BTM workflows
  • Bill recycler integration

Often connected to

  • JCM iPro
  • ID003 protocol

Proof notes

Built controller software for a JCM iPro bill recyclerDevice accepted and dispensed billsUsed in BTM workflowsPersonally built from scratch in NodeFirst-of-its-kind Node controller for this use case, to the best of my knowledgeWorked from JCM documentation and ID003 protocolManaged RS232 SerialPort communicationIntegrated with existing external APIsBuilt a handbuilt controllerCreated custom finite state machinesManaged heartbeat timing and sequence-sensitive protocol behaviorSupported acceptance and redemption/dispensing flowsProduction hardware/software integration

Next step

Want this kind of practical systems thinking on your project?

Start with a free Discovery Call or a paid Tech Checkup if you want help choosing the right next move.