I am developing a small, battery-powered Arduino device that displays the room’s status and simple pixel-style emojis on a 16×2 LCD. The device is controlled wirelessly from my computer using either an nRF24L01 radio module or a Bluetooth serial module, depending on what hardware becomes available. The device will mount on a wall and serve as a minimal, visually friendly indicator of what’s happening inside the room.
Development Stages
Stage 1 — Crude Functional Prototype
My first goal is to build the simplest version of the system:
-
Connect an Arduino board, a 16×2 LCD, and whichever wireless module I choose.
-
Load basic firmware that listens for simple incoming messages and updates the LCD with status text and a small emoji.
-
Test commands from a computer program.
-
Focus on verifying communication and display logic, without worrying about wiring neatness, battery life, or enclosure design.
The objective of this stage is to prove that the device concept works end-to-end.
Stage 2 — Improved Prototype and Physical Enclosure
Once the first prototype is working, I move to making it usable in a real space:
-
Tidy the wiring and make the device compact.
-
Design a simple case in a 3D modeling tool such as Fusion 360 or Tinkercad.
-
3D-print the enclosure so the LCD is visible from the front, the electronics fit securely inside, and the device can mount flat against a wall.
-
Refine battery placement so the device can be opened or recharged easily.
Stage 3 — Final Visual and Interaction Refinement
After the device is physically assembled:
-
Adjust the display layout so the text and emoji look balanced and readable.
-
Refine how the device reacts to incoming commands (such as smoothing updates, adding small transitions, or improving clarity).
-
Add small visual improvements such as backlight changes for attention or custom character tweaks for better emoji expression.
This stage is about making the device feel polished and pleasant.
Project Architecture
Device Side:
The device contains three main elements:
-
Microcontroller — the Arduino runs the core program that listens for wireless messages and updates the display.
-
Display System — the 16×2 LCD shows both text and custom emoji characters.
-
Wireless Module — either an nRF24L01 or a Bluetooth serial module receives commands from my computer.
Internally, the Arduino software is structured around:
-
A small message handler that receives text commands wirelessly.
-
A display manager that decides what to show based on the message.
-
A custom character bank for emoji graphics.
This architecture keeps the device simple, efficient, and easy to maintain.
Computer Side
On my computer, I run a lightweight program that:
-
Opens a wireless communication link (either through a paired Bluetooth COM port or through a USB radio dongle for the nRF24L01).
-
Sends simple text commands such as “BUSY”, “AVAILABLE”, “MEETING”, or an emoji instruction.
-
Lets me manually choose the room status using a small interface or a command-line tool.
The computer-side software remains minimal because all visual work happens on the Arduino.
Emoji Design Approach
Since the 16×2 LCD uses a 5×8 pixel character grid, I design emojis as tiny pixel icons:
-
Create simple patterns — smiling, neutral face, busy face, resting face, or symbols like checkmarks or caution icons.
-
Define each pattern using the LCD’s built-in custom character feature.