The Challenger RP2040 NFC is a small embedded computer, equipped with an advanced on-board NFC controller (NXP PN7150), in the popular Adafruit Feather form factor. It is based on an RP2040 micro controller chip from the Raspberry Pi foundation which is a dual core Cortex M0 that can run on a clock up to 133MHz.
RP2040 is the debut micro controller from Raspberry Pi. It brings their signature values of high performance, low cost, and ease of use to the micro controller space. With a large on-chip memory, symmetric dual-core processor complex, deterministic bus fabric, and rich peripheral set augmented with our unique Programmable I/O (PIO) subsystem, RP2040 provides professional users with unrivaled power and flexibility. With detailed documentation, a polished Circuitpython port, and a UF2 boot loader in ROM, it has the lowest possible barrier to entry for beginner and hobbyist users
For more detailed information about the RP2040 you can visit here.
NFC
The PN7150 is a full featured NFC controller solution with integrated firmware and NCI interface designed for contactless communication at 13.56 MHz. It is fully compatible with NFC forum requirements and is greatly designed based on learnings from previous NXP NFC device generation. It is the ideal solution for rapidly integrating NFC technology in any application, especially small embedded systems reducing Bill of Material (BOM).
The integrated design with full NFC forum compliancy gives the user all the following features:
Embedded NFC firmware providing all NFC protocols as pre-integrated feature.
Direct connection to the main host or microcontroller, by I2C-bus physical and NCI protocol.
Ultra-low power consumption in polling loop mode.
Highly efficient integrated power management unit (PMU) allowing direct supply from a battery.
Other cool stuff on the board
It comes with a sturdy USB-C connector, a battery connector that allows you to plug in standard 1 cell LiPo batteries. It also has an on board charger chip that charges the battery whenever a USB cable is connected or 5V is applied to the USB power header pin.
Pinout
NFC Antenna(Coil)
To support the board, we have designed an NFC antenna that is easily connected to the rear FPC connector.
We’ve teamed up with Earle F. Philhower over at his Github page to provide Arduino support for our RP2040 based boards. You can follow the instructions on Earle’s github page or you can check out our instructions here on how to install the package.
Circuitpython/Micropython
Currently there is no explicit support for either python package. For those daring there is always the possibility to use the generic Raspberry Pi Pico package and use the GPIO pin names directly when accessing pins and/or interfaces.
We are working on including a specific Circuitpython package but as of today it has not been finished yet.
Short initialization example
Using the NFC controller in the Arduino environment is very simple and here’s a short introduction on how to go about it.
First you need to install the driver library required for the NFC chip. This driver library is called “Electronic Cats PN7150” and you can search for it in the Arduino IDE library manager by simply typing “PN7150” in the search field. It will be the only library that comes up.
After you have installed this library you can take a look at the examples below to get started.
First we need to create an instance of the driver that your program can use to talk to the NFC controller.
#include "Electroniccats_PN7150.h"
// creates a global NFC device interface object Electroniccats_PN7150 nfc(PIN_PN7150_IRQ_B, PIN_PN7150_RST_B, PN7150_I2C_ADDR, &Wire1);
Then, in the setup function we need to perform a series of different setup steps:
Serial.println("Detect NFC tags with PN7150");
Serial.println("Initializing..."); if (nfc.connectNCI()) { //Wake up the board Serial.println("Error while setting up the mode, check connections!"); while (1); }
if (nfc.ConfigureSettings()) { Serial.println("The Configure Settings is failed!"); while (1); }
if(nfc.ConfigMode(mode)){ //Set up the configuration mode Serial.println("The Configure Mode is failed!!"); while (1); }
Serial.println("Initialization succeeded !"); if (nfc.StartDiscovery(mode) == SUCCESS) { Serial.println("Successfully started discovery mode !"); } else { Serial.println("Failed to start discovery mode !"); while(1); }
After these steps we are ready to start looking for NFC tags coming in close:
if(!nfc.WaitForDiscoveryNotification(&RfInterface)) { switch(RfInterface.Protocol) { case PROT_T1T: case PROT_T2T: case PROT_T3T: case PROT_ISODEP: nfc.ProcessReaderMode(RfInterface, READ_NDEF); break;
case PROT_ISO15693: break;
case PROT_MIFARE: nfc.ProcessReaderMode(RfInterface, READ_NDEF); break;
default: break; }
//* It can detect multiple cards at the same time if they use the same protocol if(RfInterface.MoreTags) { nfc.ReaderActivateNext(&RfInterface); }
//* Wait for card removal nfc.ProcessReaderMode(RfInterface, PRESENCE_CHECK);
Reviews
There are no reviews yet.