Curiosity PIC32MZEF

The Curiosity PIC32MZEF is a development board from Microchip based on the high performance 32-bit PIC32MZ EF Series (PIC32MZ2048EFM) microcontroller. The board features 2MB flash, 512KB RAM, integrated FPU, a crypto accelerator, and an integrated programmer/debugger.

Project Specifics

There are no imported sensors or specialized elements or tools native to Curiosity PIC32MZEF projects.

Hardware Specifics

Some devices may have limitations or design restrictions that cause unexpected behavior when used with Atmosphere. Specific information and details pertaining to the Curiosity PIC32MZEF and its performance on Atmosphere is noted below.

Hardware Version Compatibility

The project type for the Curiosity PIC32MZEF is specifically for the original Curiosity PIC32MZEF development board (Microchip part number: DM320104). The second generation version of this kit – Curiosity PIC32MZEF 2.0 (Microchip part number: DM320209) – is currently not supported in Atmosphere, and won’t work with this project type.

Deprecated Onboard Wi-Fi Module

The Wi-Fi module onboard the Curiosity PIC32MZEF (Microchip MRF24WN0MA module) is not supported in Atmosphere. This module is deprecated for use and not recommended in new designs.

To enable compatible Wi-Fi connectivity for the Curiosity PIC32MZEF in Atmosphere, it’s recommended to use to use the board alongside a Microchip WINC1500 Wi-Fi module. This module is available on boards such as the Adafruit WINC1500 Wi-Fi Shield and MikroElektronika Wi-Fi 7 Click board, and is supported through the Microchip WINC1500 element available in the Atmosphere Studio Element Library.

No macOS Support

The Curiosity PIC32MZEF is not supported on macOS with Atmosphere. Microchip’s MPLAB X IDE does have a macOS download, however there are known issues with MPLAB X IDE and macOS with programming the board. For more information, visit the Microchip MPLAB X IDE Forums.

Connecting to Atmosphere

While attempting to register the Curiosity PIC32MZEF to Atmosphere from the Devices area’s Add Device window, the board must be connected via both its debug USB connector (J3) and its target USB connector (J12). Once registered, it can remain connected using only the debug USB connector.

Debug Output

In order to view debug output from the Curiosity PIC32MZEF, the board must be connected via both its debug USB connector (J3) and its target USB connector (J12). If simply powering the board on, connect it using the debug USB connector only.

Default Pin Mapping

Atmosphere configures each peripheral to a default pin for every supported device, based on ideal pairing of pins and their usage. The default pin configuration is set for convenience and enables each peripheral to work naturally without needing to be modified.

Curiosity PIC32MZEF projects start with the following pin configuration:

Pin Description Notes
P_MB1_AN Click Connector 1 AN Pin Maps to PB4
P_MB1_RST Click Connector 1 RST Pin Maps to PA9
P_MB1_SS Click Connector 1 SPI SS Pin Maps to PD4
P_MB1_SCK Click Connector 1 SPI CLK Pin Maps to PD1
P_MB1_SDI Click Connector 1 SPI SDI Pin Maps to PD14
P_MB1_SDO Click Connector 1 SPI SDO Pin Maps to PD3
P_MB1_PWM Click Connector 1 PWM Pin Maps to PE8
P_MB1_INT Click Connector 1 INT Pin Maps to PF13
P_MB1_RX Click Connector 1 UART RX Pin Maps to PD10
P_MB1_TX Click Connector 1 UART TX Pin Maps to PD15
P_MB1_SCL Click Connector 1 I2C SCL Pin Maps to PA14
P_MB1_SDA Click Connector 1 I2C SDA Pin Maps to PA15
P_MB2_AN Click Connector 2 AN Pin Maps to PA1
P_MB2_RST Click Connector 2 RST Pin Maps to PA5
P_MB2_SS Click Connector 2 SPI SS Pin Maps to PD5
P_MB2_SCK Click Connector 2 SPI CLK Pin Maps to PG6
P_MB2_SDI Click Connector 2 SPI SDI Pin Maps to PG0
P_MB2_SDO Click Connector 2 SPI SDO Pin Maps to PG7
P_MB2_PWM Click Connector 2 PWM Pin Maps to PF2
P_MB2_INT Click Connector 2 INT Pin Maps to PF12
P_MB2_RX Click Connector 2 UART RX Pin Maps to PC3
P_MB2_TX Click Connector 2 UART TX Pin Maps to PC2
P_MB2_SCL Click Connector 2 I2C SCL Pin Maps to PA2
P_MB2_SDA Click Connector 2 I2C SDA Pin Maps to PA3
P_LED1 LED1 (Red) Maps to PE3
P_LED_R LED1 (Red) Maps to PE3
P_LED2 LED2 (Green) Maps to PE4
P_LED_G LED2 (Green) Maps to PE4
P_LED3 LED3 (Yellow) Maps to PE6
P_LED_Y LED3 (Yellow) Maps to PE6

The default pin for any peripheral can be changed within an element's properties, from an element that references that particular peripheral.


Below is information regarding the Curiosity PIC32MZEF’s exposed peripherals.


I2C can be accessed using the I2C pins on both click headers.


SPI can be accessed using the SPI pins on both click headers.

Programming Method

Programming the Curiosity PIC32MZEF involves using the programmer interface in Atmosphere Studio to install embedded firmware. The Curiosity PIC32MZEF doesn’t contain a built-in programmer, so it’s used alongside an installation of the Microchip MPLAB X IDE to program it. The MPLAB X IDE doesn’t need to be used itself, however it also installs software – specifically IPECMD – that is needed for programming the firmware binary file into the board.

Setup Configuration

Prior to programming a Curiosity PIC32MZEF, ensure you have the following setup configuration:

  • Microchip MPLAB X IDE must be installed. Once installed, note the location of the IPECMD’s ipecmd.jar Java package file within this folder. This will be referenced during programming.
  • The Curiosity PIC32MZEF is powered on and connected via both its debug USB connector (J3) and its target USB connector (J12).
  • The Atmosphere IoT Agent is installed on the computer and running. The Atmosphere IoT Agent is a local application that runs in the system tray and acts as an intermediary between the computer’s connectivity protocol drivers and the browser running Atmosphere.
  • (Windows users) A PATH system variable is set that references the MPLAB X IDE version of Java for the Atmosphere IoT Agent.
  • An Internet connection is maintained.
  • The project to be programmed has been compiled.

Setting a PATH System Variable (Windows Only)

The Atmosphere IoT Agent uses Java to locate the necessary tools for programming from the MPLAB X IDE. However, the agent by default uses the version of Java naturally running on the operating system, and MPLAB X IDE comes installed with a separate version. In order for the agent to properly locate and program the Curiosity PIC32MZEF, it must instead reference the MPLAB X IDE version of Java. This is done through setting a PATH system variable.

If you’re unfamiliar with setting a PATH in Windows, see Java: Set or Change PATH System Variable. The instructions to do so may vary based on your version of Windows, and as such the steps below may reflect this.

To set the PATH to reference the MPLAB X IDE Java version:

  1. From the MPLAB X IDE system folder, search for the location of java.exe, and copy its path. This path should resemble C:\Program Files (x86)\Microchip\MPLABX\v5.25\sys\java\jre1.8.0_181\bin.
  2. In the Start menu Search, search for system environment variables to access the System Properties in the Control Panel.
  3. Go to the Advanced tab from your System Properties window and click Environment Variables.
  4. In the System variables area, click New… to add a new variable. In the new variable, enter the following variables:
    • Variable Name: JAVA_HOME
    • Variable Value: paste the path of the MPLAB X IDE java.exe location Then click OK. A new JAVA_HOME variable is created.
  5. Next, locate the Path system varible, and click Edit…. From the Edit environment variable window, click New.
  6. In the new line, add the following path variable: %JAVA_HOME%\bin, then click OK. This adds the new JAVA_HOME variable to the PATH.

With the new JAVA_HOME variable created (pointing to the MPLAB X IDE Java executable) and the PATH system variable referencing JAVA_HOME, the Atmosphere IoT Agent can locate the necessary version of Java to program the Curiosity PIC32MZEF.

Programming Instructions

With setup complete, you can program the Curiosity PIC32MZEF:

  1. From Atmosphere Studio’s Embedded tab, click the Program Firmware button from the tab’s toolbar. This displays the Program Firmware window.
  2. In the IPECMD Path field, enter the complete path where the copy of the ipecmd.jar file is located (e.g. C:\Program Files (x86)\Microchip\MPLABX\v5.25\mplab_platform\mplab_ipe\ipecmd.jar) within the MPLAB X IDE installation directory.
    • If working on Linux, note this path would be different based on where the folder is located on your system.
  3. Click Program to start programming. When complete, you’ll receive a notification stating the Curiosity PIC32MZEF is programmed with the project’s embedded firmware.

Programming the Curiosity PIC32MZEF can be inconsistent and may require multiple attempts before successfully installing firmware. If a programming attempt fails, close the Program Firmware window and then try again.

Guides and Tutorials

Get started using the Curiosity PIC32MZEF with Atmosphere by walking through the following guides:

Curiosity PIC32MZEF Guides
Getting Started with Curiosity PIC32MZEF

Demo Projects

Atmosphere includes a variety of Curiosity PIC32MZEF demo projects for users of all levels. Check them out by clicking the demo’s name to open the project in Atmosphere.

Name Description
Wi-Fi 7 Click Demo Demonstrates using the Curiosity PIC32MZEF alongside the the Wi-Fi 7 Click board by sending an integer value to the cloud every second.


The Atmosphere video library contains the following videos on the Curiosity PIC32MZEF:

Videos for the Curiosity PIC32MZEF coming soon!


The following additional resources and downloadable files are available for the Curiosity PIC32MZEF: