Skip to main content
Version: FILS English

Order Management and Printing System for Flower Shop

A Wi-Fi connected thermal receipt printer that automatically prints order details when a customer places an order on an external server.

info

Author: Mangu Adrian Constantin
GitHub Project Link: https://github.com/UPB-PMRust-Students/fils-project-2026-LikeWho54


Description

This project implements an Order Management and Printing System built using Rust on a Raspberry Pi Pico 2W microcontroller.

Six months ago, I built a website for a local flower shop. The website allows customers to visit the site, place an order, pay, and the flower shop automatically receives a WhatsApp message with the order details. I wanted to replace this with something more efficient and physical, a small thermal printer that automatically prints a receipt with the order details instead.

The system works as a "ticketing machine" style terminal. When a customer places an order on the external server, the Pico 2W receives the order data via Wi-Fi, parses it, and prints a physical receipt containing the customer name, list of flowers, and total price.


Motivation

I chose this project because it solves a real problem for a real business I have already worked with. The current WhatsApp-based solution works, but it is not ideal because messages can be missed, and the workflow is manual.

A dedicated hardware terminal that automatically prints receipts is more reliable, faster, and more professional.


Architecture

Main Components

Connectivity Layer

  • Raspberry Pi Pico 2W (RP2350 + CYW43439)
    Connects to Wi-Fi, receives order data from the external server via HTTP, and drives the thermal printer over UART.

Output Layer

  • Thermal Printer (CSN-A2)
    Receives print commands from the Pico 2W over UART and prints physical receipts with order details (customer name, flowers, total price).

Power Layer

  • 5V 2A Power Adapter
    Powers both the Pico 2W and the thermal printer, which requires a stable 5V supply for reliable printing.

Component Connection

Architecture Diagram

The CYW43439 chip is built into the Pico 2W and communicates internally with the RP2350. It handles connecting to the Wi-Fi network and receiving order data from the external server.

The Pico 2W sends ESC/POS print commands to the thermal printer over UART (TX/RX pins). The printer outputs the formatted receipt.

The 5V 2A adapter powers the thermal printer directly. The Pico 2W is powered via its VSYS pin from the same supply.


Log

Week 23 – 29 March

Got the project idea based on the existing flower shop website I had already built.

Week 30 March – 5 April

Discussed the idea with the flower shop owner and gathered requirements for what the receipt should contain and how the system should work.

Week 6 – 12 April

Got the project approved. Planned the architecture, chose the components and researched thermal printer communication protocols (ESC/POS) and Rust crates.

Week 13 – 19 April

Ordered all the required components.

Week 20 – 26 April

(Work in progress)

Week 27 April – 3 May

(Work in progress)

Week 4 – 10 May

(Work in progress)

Week 11 – 17 May

(Work in progress)

Week 18 – 24 May

(Work in progress)


Hardware

Schematic to be added (KiCad).

Photos to be added when components arrive.


Bill of Materials

DeviceUsagePrice
Raspberry Pi Pico 2WMain MCU + Wi-Fi connectivity40 lei
Thermal Printer CSN-A2Prints order receipts via UART170 lei
5V 2A Power AdapterPowers Pico 2W and printer10 lei
Jumper Wires + miscConnections5 lei

Software

LibraryDescriptionUsage
embassy-rpAsync embedded framework for RP2350GPIO, UART, task management
embassy-executorAsync task executorManaging concurrent tasks
cyw43-pioCYW43439 Wi-Fi driverWi-Fi connectivity
embassy-netNetwork stackTCP/IP, HTTP requests
serde-json-coreJSON parsing (no_std)Parsing incoming order data
thermal-printThermal printer ESC/POS commandsControlling the printer
  1. Embassy-rs Framework
  2. ESC/POS Command Reference
  3. Raspberry Pi Pico 2W Datasheet
  4. Flowershop