What will you make?
Coming soon! Want product updates? Please subscribe below!
What Is It?
The Pocket Bot is a fully programmable micro-robot measuring just 1.8 inches x 1.5 inches (46mm x 39mm).
Despite its small size, the Pocket Bot is a complete mobile robotics platform. It has 2 independently-controlled motors, 3 downward-facing reflectance sensors, infrared communications, 5 individually-addressable RGB LEDs, USB-C recharging, a tactile button, and an expansion port, all powered by an ATmega328P microcontroller.
It was designed to be approachable enough for someone building their first robot, while also remaining open and capable enough for educators, hobbyists, programmers, and robotics researchers to develop more sophisticated applications.
The Pocket Bot does not lock you into a single activity or environment: you can run the included example programs, modify the example code, write entirely new firmware, connect additional hardware, or use multiple Pocket Bots together as a small robot swarm.
The Pocket Bot takes about 10 minutes to assemble, and no soldering is required. Parts snap-fit together and there are only 4 screws.
Specifications + Capabilities
More Than a Line Follower
The Pocket Bot is excellent at following line courses, but line-following is only one of the applications that its hardware supports.
Here are some of our favorite applications we've developed during testing:
- Staying inside a taped-off area
- Detecting and avoiding the edge of a table (circular ones work best)
- Navigating on a printed grid
- Reading bytes encoded into a line course
- Executing a sequence of movements and lighting effects read from a course
- Receiving remote-control commands over infrared
- Transmitting commands and data between multiple Pocket Bots
- Broadcasting commands for coordinated behavior
- Using the RGB LEDs to display status, sensor readings, debugging information, and animations
- Controlling multiple Pocket Bots using an overhead camera and a global vision system
Because the Pocket Bot is completely programmable, these are only examples, not fixed operating modes. The same hardware can become a line-follower, a dancing robot, a programmable light display, a tiny remote-controlled vehicle, a classroom control-systems experiment, or part of a coordinated robot swarm.
Hardware Specifications
- Powered by the popular ATmega328P
- 32KB flash, 2KB SRAM, 1KB EEPROM
- 3.5+ hours of continuous run time
- USB-C rechargeable
- 3.7V 320 mAh rechargeable LiPo battery
- 2 x independently-controlled gear motors
- 5 x individually-addressable RGB LEDs for feedback and effects
- 3 x downwards-facing line-follower sensors
- Infrared transmitter and receiver for remote control, robot-to-robot communication, and other wireless functionality
- 1 x tactile pushbutton for user feedback or control
- 1 x optional expansion header for additional sensors, serial communication, or other capabilities
- Fully programmable firmware
- No soldering required for normal assembly
- Compact 46mm x 39mm footprint
What's Included?
This kit includes all of the parts necessary to assemble and run your Pocket Bot, plus some spare parts:
- 1 x Pocket Bot printed circuit board (PCB)
- 2 x Pocket Bot chassis (includes 1 spare)
- 6 x Pocket Bot wheels (includes 2 spares)
- 2 x pre-soldered motors + connectors
- 1 x expansion header (not soldered, optional)
- 1 x 3.7V 320mAh LiPo battery
- Complete set of fasteners
- 3 example courses printed on 8.5" x 11" paper:
- 1 x figure-8 course
- 1 x rounded rectangle course
- 1 x barcode course (2 pages)
With the exception of our custom circuit board and fasteners, all of the components are 3D-printable or available from common distributors, meaning that sourcing replacement parts is simple.
The robot comes pre-loaded with several example programs that can be used immediately after assembly.
A Midnight Make Programmer is required to modify the firmware or upload your own programs. The programmer is sold separately and can be used with other supported Midnight Make kits as well.
Detailed assembly instructions are available here. Assembly takes about 10 minutes. No soldering is required unless you choose to install the optional expansion header.
Who Is This Kit For?
The Pocket Bot was designed to support a wide range of experience levels.
First-Time Robot Builders
You do not need any programming or electronics experience to assemble the Pocket Bot and run the included example programs.
The mechanical assembly takes roughly 10 minutes and requires only a small screwdriver. After assembly, you can immediately run the pre-loaded example programs on the provided printed line courses.
This makes the Pocket Bot an approachable introduction to robotics without reducing it to a closed, single-purpose toy.
Students and Educators
The Pocket Bot can be used to teach:
- Embedded programming
- Sensor calibration
- Feedback and motor control
- Line-following algorithms and control loops
- State machines
- Autonomous navigation
- Infrared communications
- Debugging with LEDs and serial output
- Multi-robot systems
- Computer vision and external robot tracking
Students can begin by running an existing program, progress to changing individual parameters, and eventually develop complete applications of their own.
Because the Pocket Bot is small, rechargeable, and quick to assemble, a classroom can operate multiple Pocket Bots without requiring a large course or dedicated robotics area. Even courses printed on an 8.5" x 11" sheet of paper will suffice (and this kit includes some)!
Hobbyists and Programmers
For experienced makers, the Pocket Bot provides a compact platform for experimenting with embedded systems, mobile robotics, and real-time systems without having to first design and assemble an entire robot.
The motors, sensors, LEDs, button, battery system, communications hardware, and firmware libraries are already integrated. You can start working on the behavior of the robot immediately.
All major hardware functions are accessible through straightforward C functions. The complete source code remains available for anyone who wants lower-level control.
Researchers and Advanced Users
The Pocket Bot can also serve as an inexpensive, experimental platform for work involving:
- Swam robotics
- Multi-agent coordination
- Global vision control
- Distributed behaviors
- Path planning
- Robot communication
- Collective motion
- Automated testing
- Small-scale autonomous systems
Its compact size makes it practical to operate many robots within a relatively small workspace. The infrared transceiver supports local communication while the expansion header can be used to connect external equipment, custom sensors, or debugging interfaces.
You can use the Pocket Bot exactly as provided, customize our firmware, replace it entirely, or add to the hardware to create something new.
What Can I Customize?
Nearly everything! The Pocket Bot comes pre-flashed with several example programs (see below), but its firmware is not locked or restricted. Using the Midnight Make Programmer, you can modify any part of the code or replace it with an application of your own.
We provide complete source code and resuable functions for:
- Motor control
- RGB LED control
- Line-sensor calibration and reading
- Button input
- Infrared transmission and reception
- Timing and delays
- Serial communication
- Common robot behaviours
You are free to use these functions as building blocks, modify them, or work directly with the ATmega328P at the heart of the Pocket Bot.
The Pocket Bot comes pre-flashed with several demonstrations:
- Basic line-following
- Area keeping/edge avoidance
- Scan barcode course, transmit to other robots, and execute encoded commands
- Spinning with rainbow LED effects
- Line brightness sensing with LED output
Additional source code examples are available for experimenting with sensors, motors, LEDs, communications, and custom robot behaviors.
A guide to the example programs is available here.
Instructions for writing and uploading your own code are available here. Please note that if you want to write or upload your own code, you should be familiar with embedded C and comfortable with a terminal/command-line (or are willing to learn). We provide detailed guides for setup and usage, but familiarity with the basics (such as setting your PATH variable) is assumed.
What Skills Do I Need?
That depends on what you'd like to achieve!
Running the Included Programs
To assemble the Pocket Bot and run the pre-loaded demonstrations, you only need a small screwdriver, about 10 minutes for assembly, and a USB-C cable for charging. No soldering or programming experience is required.
Modifying or Writing Programs
To write your own Pocket Bot applications, some familiarity with embedded C is helpful.
The Pocket Bot uses the popular ATmega328P, which is the same microcontroller family used in many classic Arduino-compatible boards. If you have worked with an AVR microcontroller, or written Arduino code before, much of the hardware and programming model will already be familiar to you.
Unlike a typical Arduino sketch, Pocket Bot programs use straightforward embedded C and have direct access to the microcontroller. However, we provide easy-to-use functions for the most common robot operations, so you do not need to configure any peripheral from scratch.
For example, here is the code for a Pocket Bot program that spins and flashes the middle LED red every second:
// spin right; speeds range from -100 to 100
motorLeft(50);
motorRight(-50);
// do forever
while(1)
{
// set the middle LED to full red (0 - 255)
ledSet(2, 255, 0, 0); // LED (0-4), R, G, B
ledRefresh();
// wait one second
_delay_ms(1000);
// turn off all LEDs
ledClear();
ledRefresh();
// wait another second
_delay_ms(1000);
}
From there, you can begin reading sensors, changing motor speeds, responding to button presses, receiving infrared commands, and combining these capabilities into increasingly complex behaviors.
Adding Custom Hardware
The optional expansion header provides access for additional sensors, serial communication, debugging tools, or custom peripherals.
Installing the header requires basic soldering, but this is a beginner-friendly task involving only a few pins. An experienced builder can perform this task in a few minutes.
The expansion header is optional and is not required for any of the standard Pocket Bot features or included demonstrations.
The expansion header breaks out the following pins:
- 3.3V output
- GND
- Serial RX and TX
- I2C SDA and SCL
- A pin for charging the battery, to allow for alternative charging solutions
- Infrared RX
Interested in Teaching with the Pocket Bot?
We're developing classroom activities and multi-robot packages for educators, robotics clubs, makerspaces, and university programs.
Midnight Make is currently selecting a small number of early educators to evaluate the Pocket Bot with students and help shape the future classroom offering. Early evaluation sets may include several Pocket Bots, sample activites, starter code, onboarding, and direct technical support from us.
The Pocket Bot may be a good fit for courses and programs involving:
- Robotics and autonomous systems
- Embedded programming
- Sensors and feedback control
- Infrared communication
- Multi-robot coordination and swarm robotics
- Engineering design and experimentation
The Pocket Bot is designed to be affordable enough for individual student use, and compact enough for multi-robot activities on an ordinary classroom desk or table.
Intersted in an educator evaluation or future classroom set? Contact Midnight Make here to apply for an educator evaluation.
Where Are the Instructions, STLs, and Source Code, Again?
Assembly instructions are available here.
Example program instructions are available here.
Instructions for working with the provided source code are available here.
Instructions for uploading custom code are available here.
STL files and source code are available here.