Background
As a high school computer technology teacher I believe one of the best ways to motivate students to learn and build their understanding of electronics and programming is to give them ownership of their learning. UBMP4 was designed specifically to support this goal.
UBMP4 is a simple circuit that students build themselves, while learning about electronics parts, simple circuits, and soldering as they assemble it. UBMP4 can be assembled in a few different configurations, including a minimal components starter configuration. Once students have installed the basic components, they can start to use their own UBMP4 to learn microcontroller programming and interfacing techniques. At the end of the semester, students can add additional on-board or external components and demonstrate their learning by making their UBMP4 circuit into a final project of their choice.
Why not use [insert your favourite microcontroller board here]?
Why design a board when lots of other microcontroller boards exist? Some existing circuits are too simplistic, with limited I/O or block-based programming, while other, more versatile circuits are often too expensive for school take home projects. Most other microcontroller circuits also require students to interface parts onto them by building external circuits on a breadboard, leading to temporary or take-apart in-class projects rather than take -home projects that students can be proud of.
UBMP4 was designed to solve all of these problems since it includes a variety of built-in I/O devices on board, allowing new learners to make a variety of different projects without adding any external parts. And, UBMP4 is inexpensive enough that students can take their UBMP4 home at the end of the semester to continue learning their learning on their own. And UBMP4 is programmed using industry-standard C language and a powerful IDE.
I have designed a number of different circuits to address similar educational needs over the years, and UBMP4 is the smallest, least expensive, and most versatile circuit that I'm also the most proud of. It's easy for students to program using its built-in bootloader (I pre-program the microcontroller with the bootloader for the students, first), and it has enough I/O circuitry on-board for students to learn programming without adding additional components.
At the end of the semester, students can make a variety of projects using just the built-in I/O devices, including a reaction timer game, a room/locker alarm, a Simon-style memory game, a simpler music player, 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 much 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 for greater output power and range, and protection resistors for the I/O port headers making it almost goof-proof. UBMP4 is open hardware. Check out the GitHub page for more details and KiCad files: https://github.com/mirobotech/UBMP420
UBMP4 is Designed for Education
While anyone can use UBMP4 to learn microcontroller programming, it was designed to take into account challenges specific to education.
- UBMP4 can be built in stages, starting with a low cost, minimum component configuration allowing learners to quickly transition from hardware to programming activities. UBMP4’s starter configuration supports all of the introductory programming activities (see Courseware, below) and lets learners create a number of different final projects using the on-board components (and no breadboarding!)
- UBMP4 has the flexibility to support learners at different ability levels by adding additional components on-board, or externally using the expansion headers. These capabilities provide more advanced learners with additional project options and more ways to demonstrate their learning while using the same basic hardware as their beginner course-mates, keeping costs low and easing project management for the instructor.
- Learners using UBMP4 get a deeper understanding of microcontroller programming and interfacing by using the C language to get close to the hardware, and have full visibility into all of the supplied UBMP4 function code. There are no magical, hidden functions, and the learning activities demonstrate creating and debugging functions.
UBMP4 Courseware
Five introductory lessons and one starter project are freely available on the UBMP4 website, and more will be added soon: https://mirobo.tech/ubmp4
The goals of the introductory lesson activities are to give learners enough of a grasp of hardware and software knowledge to be able to control almost any simple peripheral devices, either the ones on-board, or components attached to the external 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
UBMP4 can be programmed using either Microchip's MPLAB X desktop IDE, or the MPLAB Xpress cloud-based IDE. Compiled programs are loaded into UBMP4 using either a PICkit-4 (connected to the ICSP header), or though a USB bootloader. Once the on-board PIC16F1459 is programmed with the bootloader a stand-alone PIC programmer is no longer required, making UBMP4 ideal for schools. Students are even program UBMP4 through the MPLAB Xpress cloud-based IDE on managed school Chromebooks!
UBMP4 is open
The UBMP4 circuit is open hardware and all of the learning materials, including tutorials, lesson activities, and programs posted on the mirobo.tech website, are freely available and reproducible. Educators face many challenges and reinventing a successful circuit shouldn’t be one of them. I believe strongly in education I want to share this circuit with teachers and learners in the hopes that it can help them to create a better computer technology learning experience for themselves and their students the same way it did for mine!