As a high school computer technology teacher I believe one of the best ways to motivate my students to learn about and understand electronics and programming is to give them ownership of their learning through their choice of a project. To support these goals, I wanted a simple circuit that students could use to learn about electronics while building it themselves, and then use that circuit to learn about programming by building it into a project of their choice. And, to make it a more meaningful learning experience, the circuit had to be inexpensive enough that they could take it home at the end of their semester.

While lots of other simple microcontroller boards exist, some are too simplistic, with limited I/O and block programming, others are too expensive for school budgets, and many require students to breadboard I/O circuitry since none is included (or they use expensive add-on hats or shields – or need too much expertise to design them). I found that most of these circuits lend themselves to temporary or take-apart in-class projects rather than student made and student owned take-home projects that they can be proud of.

I have designed a number of different circuits to address these needs over the years, and UBMP4 is the smallest, least expensive, and most versatile circuit that I'm most proud of. It's the easiest for students to program using its built-in bootloader (I pre-program the microcontroller with the bootloader for the students, first), it's programmed in industry-standard C through a fully-featured IDE, and it has enough I/O circuitry on board for the students to use while learning programming. At the end of the semester, students can make a variety of projects using just the boil-in I/O devices, including a reaction timer game, a room/locker alarm, a Simon-style memory game, and a TV remote control.

More advanced students, or students looking to develop a deeper understanding of interfacing or programming, can create their own software functions to control external devices, build animatronics or walking robots using servos and SONAR sensors, make NeoPixel lighting controllers for their rooms, create data logging devices, and more!

UBMP4 Hardware Features

  • Microchip PIC16F1459 USB-capable microcontroller with 8k words of program FLASH (6k words free when using the USB bootloader), 128B of user FLASH, 1kB of RAM, 10-bit ADC, and a built-in temperature sensor
  • 5 built-in pushbuttons
  • 5 visible light LEDs
  • 1 piezo beeper output
  • optional 8-pin header for PORTC I/O pin expansion (great for servos, a SONAR module, NeoPixels, an LCD display, etc.)
  • optional IR LED output for remote control transmitter applications (or a high-current transistor-driven output)
  • optional IR demodulator for remote control decoding
  • optional IR phototransistor or visible-light ambient light sensor for light sensing
  • USB 2.0 type-C port for power and programming
  • 6-pin ICSP (In-Circuit Serial Programming) header for PICkit-4

UBMP4 is the fourth version of this simple PICmicro development board. The differences from the previous version include a new USB-C port for power and programming, a transistor driver on the IR LED output, and protection resistors for the I/O port headers. UBMP4 is open hardware. Check out my GitHub page for more details and KiCad files:

UBMP4 Courseware

I am creating a new series of lessons, tutorials, and programming activities to get help get people started programming UBMP4 in C. The first few are lessons and tutorials are available on the UBMP4 website:

The goal of the lessons is to give learners enough hardware and software knowledge to be able to connect and control almost any simple peripheral devices on the board or attached to the I/O headers. Learners will be able to create their own software libraries for interacting with devices such as servos, ultrasonic SONAR modules, the IR demodulator, and NeoPixels.

Programming UBMP4


Read more »