Arduino Nano 33 IoT Board.h error

Hi Chris, we just received the arduino boards your recommended (Nano 33 IoT). I went through the steps of installing standardFirmata and came across an error "“Please edit Boards.h with a hardware abstraction for this board” and looking this up it says that firmata isn’t yet suported for this board. When this happens with other board types, I saw that some people just manually add the values to firmata’s Board.h file. Did you come across this issue when you setup your board, and do you have an easy fix?

-update: I continued searching online and came across this on github, and I saw you were one of the commenters :slight_smile: I copied the code and pasted it in Boards.h under ‘old arduinos’ section and it seemed to compile, going to test it tomorrow. Nano 33 IoT Missing in Boards.h · Issue #469 · firmata/arduino · GitHub

// Arduino Nano 33 IoT
#elif defined(ARDUINO_SAMD_NANO_33_IOT)
#define TOTAL_PINS 21 // 13 Digital + 8 Analog
#define IS_PIN_DIGITAL(p) (((p) >= 2 && (p) <= 13))
#define IS_PIN_ANALOG(p) ((p) >= 14 && (p) < 22)
#define IS_PIN_PWM(p) digitalPinHasPWM(p)
#define IS_PIN_SERVO(p) (IS_PIN_DIGITAL(p) && (p) < MAX_SERVOS) // deprecated since v2.4
#define IS_PIN_I2C(p) ((p) == SDA || (p) == SCL)
#define IS_PIN_SPI(p) ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
#define IS_PIN_SERIAL(p) ((p) == PIN_SERIAL1_RX || (p) == PIN_SERIAL1_TX) //defined in variant.h RX = 13, TX = 14
#define PIN_TO_DIGITAL(p) (p)
#define PIN_TO_ANALOG(p) ((p) - 15)
#define PIN_TO_SERVO(p) (p) // deprecated since v2.4

Hi Travis,

The problem is that the version of Firmata available via the Arduino IDE’s library manager is very out of date.

I recommend installing Firmata as described in step 2 of this article. In addition to getting you a fully up-to-date version of Firmata, it will also let you use the MWorks-specific input pulse and output pulse features.