Project Overview

Thermal printers are everywhere—from retail stores and ATMs to restaurant billing systems and ticket vending machines. Their speed, simplicity, and low operating cost make them one of the most popular printing technologies for embedded systems.

While printing plain text is relatively straightforward, printing graphics and logos is often much more challenging. Every printer interprets bitmap data differently, and many low-cost thermal printers have very little documentation regarding image printing commands. As a result, developers frequently encounter distorted images, random characters, inverted colors, or completely blank printouts.

In this project, we'll learn how to print high-quality bitmap images on a QR204 58 mm TTL Thermal Printer using the Arduino UNO R4 WiFi. We'll use the Image2CPP tool to convert images into monochrome bitmap arrays and send them directly to the printer using standard ESC/POS commands.

During the development process, one particularly interesting challenge emerged. Although the printer supported ESC/POS raster graphics, the generated images appeared scrambled and unreadable. After extensive testing and debugging, it was discovered that the QR204 printer expects every bitmap byte to be transmitted with its bits reversed before printing. Implementing this simple transformation completely resolved the issue and allowed images to print perfectly.

By the end of this tutorial, you'll have a reusable boilerplate that lets you print any monochrome image simply by replacing the bitmap array generated by Image2CPP.

Features

Applications

This bitmap printing technique can be integrated into a wide range of embedded applications, including:

Software Required

Why an External Power Supply is Important

One of the most common mistakes when using thermal printers is powering them directly from the Arduino's 5V output.

Although the printer may successfully print text, bitmap images require a significantly higher current because hundreds of tiny heating elements are activated simultaneously.

During image printing, the thermal head can draw more than 1.5 A, which is far beyond what the Arduino UNO R4 can safely provide.

For reliable operation:

This simple change dramatically improves print quality and eliminates random characters or incomplete images caused by voltage drops.

Wiring Diagram

The wiring is extremely simple.

Arduino UNO R4 WiFi QR204 Printer TX RX

RX TX

GND GND

External 5v Supply VCC

Important: The Arduino and the external power supply must share a common ground.

The final setup requires only a few connections and can be assembled in just a few minutes.

How ESC/POS Bitmap Printing Works

Most thermal printers communicate using the ESC/POS command set, originally developed for point-of-sale systems. These commands allow the printer to perform various operations such as:

For this project, we use the GS v 0 raster graphics command, which allows the printer to receive raw bitmap data.

The command consists of:

GS v 0 m xL xH yL yH d1...dkGS v 0 m xL xH yL yH d1...dk

Where:

Once these parameters are transmitted, the printer reconstructs the image line by line and prints it onto the thermal paper

Understanding the Challenge

At first glance, printing a bitmap appears to be straightforward—simply convert the image into a byte array and send it to the printer.

However, different printer manufacturers interpret bitmap data differently.

During development, the QR204 printer produced:

even though the ESC/POS commands were correct.

After extensive testing, it was discovered that the QR204 expects each bitmap byte to be transmitted with its bit order reversed.

This small implementation detail is not immediately obvious, but once corrected, the printer reproduces the bitmap accurately.

In the next section, we'll prepare our image using Image2CPP and then implement the complete Arduino code required to print it successfully.

Preparing Images for Thermal Printing

Unlike regular printers that can reproduce colors and grayscale, thermal printers are monochrome devices. Every pixel is represented by a single bit, meaning it can either be black or white. Before sending an image to the printer, it must first be converted into a 1-bit bitmap format that the printer understands.

One of the easiest tools for this purpose is Image2CPP, which converts ordinary PNG, JPG, or BMP images into Arduino-compatible byte arrays.

For best results, start with a high-contrast image. Logos, icons, QR codes, and simple graphics generally produce much cleaner prints than photographs.

Giving Your Project a Professional Finish

Building a working prototype is often only the first step of any hardware project. Whether you're developing an Arduino project, an ESP32 based IoT device, a robotics system, an embedded application, or even a custom PCB, there eventually comes a point where you want the final build to look clean, organized, and professional

While breadboards and exposed wiring are perfect during development, a custom enclosure protects the electronics from accidental damage, improves cable management, makes transportation easier, and gives the project a polished appearance. For engineering exhibitions, hackathons, client demonstrations, YouTube videos, or commercial prototypes, a professionally manufactured enclosure can make a significant difference in both durability and presentation.

Over the past few months, I've ordered several custom 3D printed parts from JUSTWAY for different electronics projects, and the overall experience has been consistently positive. The printed parts arrived well packed with good dimensional accuracy, clean surface quality, and required very little post-processing before assembly.

From Prototype to Production

One thing I particularly like about JUSTWAY is that it isn't limited to only 3D printing. The platform is designed to support the complete product development cycle—from rapid prototyping to low-volume manufacturing and eventually mass production.

Depending on your application, the platform offers several manufacturing services, including:

According to JUSTWAY, these services support customers ranging from individual makers and engineering students to startups and industrial manufacturers working in consumer electronics, robotics, automotive, aerospace, medical, and industrial automation.

Uploading Your CAD Design

The ordering process is refreshingly simple.

Instead of exchanging multiple emails for quotations, you simply upload your CAD model directly through the online quotation system.

The platform supports several commonly used engineering formats including:

making it compatible with popular CAD software such as Fusion 360, SolidWorks, Autodesk Inventor, Creo, FreeCAD, and Onshape.

Once uploaded, the model is automatically prepared for quotation, allowing you to continue configuring the manufacturing parameters immediately.

For projects containing multiple components, several files can also be uploaded together, making it convenient to manufacture complete assemblies rather than individual parts.

Configuring the Manufacturing Parameters

After uploading the model, the platform provides a detailed configuration panel where almost every manufacturing parameter can be customized before placing the order.

Material Selection

Depending on the manufacturing process, a wide range of materials is available.

For FDM 3D printing, commonly available materials include:

For CNC machining, users can choose from materials such as:

Each material offers different characteristics depending on whether the priority is strength, heat resistance, flexibility, surface finish, or dimensional accuracy.

SLA Resin Printing Options

For projects requiring extremely fine details or presentation-quality models, JUSTWAY also offers SLA resin printing with multiple specialized materials.

Available resin options include:

These materials are designed for different applications ranging from display models and transparent covers to engineering validation, electronic fixtures, medical prototypes, and functional mechanical components.

For example:

Having access to different resin formulations makes it much easier to choose the right balance between appearance, strength, and functionality.

Color and Finish Options

The platform also allows users to customize the appearance of printed parts.

Depending on the selected material, various colors and finishes are available, including standard colors, silk finishes, matte textures, translucent options, and specialty finishes.

This is particularly useful when manufacturing demonstration models, educational kits, exhibition prototypes, or consumer-facing products where aesthetics are just as important as functionality.

Instant Online Quotation

One feature I personally appreciate is the instant quotation system.

As different materials, quantities, manufacturing technologies, or finishing options are selected, the estimated manufacturing cost updates automatically.

The quotation page also provides useful information such as:

Being able to compare multiple material options within a few minutes makes it much easier to optimize both performance and budget before placing an order.

Engineering Support Throughout the Process

Beyond manufacturing, JUSTWAY also offers several features that simplify product development.

Their platform provides instant online quotations, design review before production, order management, production tracking, and shipping updates, making it easy to monitor the entire manufacturing process from a single dashboard.

For larger production runs, additional services such as dedicated engineering support, DFM (Design for Manufacturability) review, First Article Inspection (FAI), and quality inspection reports are also available to help ensure consistent production quality.

Final Thoughts

Whether you're building a one-off hobby project, a university engineering project, an open-source hardware design, or preparing a commercial product, custom manufactured parts can significantly improve both reliability and presentation.

Having used JUSTWAY for several of my own projects, I found the platform straightforward to use—from uploading CAD files and selecting materials to receiving an instant quotation and tracking production. Its combination of rapid prototyping, precision manufacturing, and scalable production services makes it a practical solution for makers, students, startups, and professional hardware developers looking to turn their ideas into finished products.