From chipKIT
Jump to: navigation, search
Majenko Technologies UltraNano
Controller PIC32MX250F128B-50
Flash 128KB
Speed 48MHz
Designer Majenko Technologies
Product Page Github
User Guide TBD
Schematic Github
Board Files Github
Bootloader HEX Github
Purchase From TBD

The Majenko Technologies UltraNano is probably the smallest, and yet one of the most handy, PIC32 development boards available, especially if you are doing anything that requires a USB interface to a PC. Flexible IO options, and built-in USB connector and incredibly small size make this ideal for developing small USB dongles and interfaces.

The Board Design

  • PIC32MX250F128B-50I/ML microcontroller, which includes 128KB Flash and 32K RAM
  • Supported as development target from within MPIDE and UECIDE
  • 13 I/O pins (plus 2 on-board functions)
  • CPU runs at 48MHz
  • Built-in USB A "Tongue" connector
  • Two buttons: RESET for resetting the board, and PROG for getting into bootloader mode and user application use
  • USB bootloader pre-programmed at the factory – no other hardware needed to program board

Useful Board Pins


PIN_LED1 is on its own distinct IO pin so it doesn't conflict with any of the normal IO pins.

Pin Layout

The pins are numbered throughout the main header starting from 0 and arranged in a zig-zag pattern. VIN is a separate pin by itself. Functions in bold are the recommended primary use for the pin (excepting GPIO and analog).

Extra Functions Ana Pin Ana Functions
VIN GND[1] 0 1 +3.3V[1]
RB0, PWM, UART2 TX A0 2 3 A1 SPI SS, I2C2 SCL, RB3
RB1, SPI SDI (MISO) A3 6 7 INT 0, RB7
RB15, SPI2 SCK A4 8 9 UART TX, RB4
RESET[1] 10 11 UART RX, PWM, SDI2, RA4
RB8, I2C SCL, SPI2 SDO 12 13 I2C SDA, RB9
RA1, UART2 RX, PWM A5 14 15 A6 PWM, RA0
RB13, LED, PWM[2] 16 17 PROG, RA3[2]
  1. 1.0 1.1 1.2 This pin is not a controllable IO pin but is still included in the pin numbering
  2. 2.0 2.1 This pin has no external connection on the board

Analog Inputs

Analog Input Digital Pin
A0 2
A1 3
A2 5
A3 6
A4 8
A5 14
A6 15

Serial Objects

Serial Object UART TX Pin RX Pin
Serial USB USB Tongue
Serial0 UART1 9 11
Serial1 UART2 2 14


Channel SCL (Clock) SDA (Data)
DTWI0 / Wire 12 13
DTWI1 3 5


Channel SCK (Clock) SDO (MOSI) SDI (MISO)
DSPI0 / SPI 4 5 6
DSPI1 8 12 11

Bootloader Button

Bootloader Button (PROG) is on its own separate IO pin, and you can use the constant PIN_BTN1 in your sketch to read this button. Note that there is no pullup or pulldown resistor on this button, so the use of pinMode(PIN_BTN1, INPUT_PULLUP); is required.


When you want to upload a new sketch to the UltraNano board, you need to put it into bootloader mode. This is done by holding down the PROG button while pressing and releasing the RESET button, then releasing the PROG button. This will reset the UltraNano, and engage the bootloader, which will create a virtual serial port over USB, and wait for MPIDE/UECIDE/Arduino to upload a new sketch. You can also trigger the bootloader from within your sketch.