- Notifications
You must be signed in to change notification settings - Fork0
Arduino Nano 33 IoT - Ultimate guide
License
hpssjellis/Arduino-Nano-33-IoT-Ultimate-Guide
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The purpose of this guide is to assemble the key information to use the Arduino Nano 33 IoT in your projects. At the writing of this guide, the Arduino Nano 33 IoT is quite new on the market and there was not plenty of information available on the internet.
I wrote this guide because I was a bit frustrated by the lack of information on the board and most of the insight here is coming from experiments. Some information is also coming from other websites, if it is the case, the resources are mentioned in the sections.
The topics covered in this guide are:
- Important things to remember
- Unofficial pinout diagram
- Power supply and current consumption
- Sleep mode and idle mode
- Usage of Wifi module
- Usage of Bluetooth module (BLE)
- Usage of Inertial Measurement Unit (IMU)
- Usage of Serial communication
- Usage of I2C bus
Theofficial quick start guide is available on the Arduino website.
The Arduino Nano 33 IoTonly supports 3.3V for inputs and outputs (IO pins) and it is not 5V tolerant like most of the other Arduino boards. Connecting more than 3.3V on IO pins will damage the board.
The pinouts iscompatible with the classic Arduino Nano pinouts. Notice that the classic 5V pin is not wired by default and doesn't provide any power if you don't connect the VUSB jumper.
The pins A4 and A5 have an internal pull up and are designed to be used as an I2C bus. So,usage of A4 and A5 as analog inputs is not recommended.
Useful ressources:
According to the box, the Arduino Nano 33 IoT can be powered by the USB connector (5V) or through the Vin pin (4.5V - 21V) while its operating voltage is 3.3V. However, it seems that the supply voltage depends on the usage. There is adiscussion on the Arduino forum about this topic.
See the results of the experiments below regarding the power supply and the peak current consumption per voltage.
The programs below have been used to test the power consumption of the embedded modules:
- Sleep: Using the watchdog to set the board to idle (see sectionHow to save power? below)
- BareMinimum: Just do nothing, included in Built-in Examples of Arduino IDE.
- Blink: Blink the internal LED, included in Built-in Examples of Arduino IDE.
- IMU_ShakeDetector: Use the IMU to detect acceleration and light on the internal LED (source code)
- Wifi_BasicScanNetworks: Use the Wifi to scan networks and light on the internal LED if there are networks available (source code)
- Wifi_HTTPS_GET: Use the Wifi to get thewww.google.com page with SSL enabled and light on the internal LED if everything goes fine (source code)
The Arduino Nano 33 IoT has a 5V pin which is not wired by default. If you need 5V for your project and you supply power through USB, you can connect the VUSB jumper to enable 5V power supply on the VUSB pin.
To to that, you just have to solder the VUSB jumper on the board.
Notice that you cannot supply power to the board through this pin, it is only to have a handy 5V for your external components powered by the USB. If you don't power the board through the USB jack, you will stay with 0V on this pin.
The common way to save power with microcontroller is to go to sleep and use the watchdog to wakeup. Indeed, most of the power are drain while the microcontroller is doing nothing (i.e. waiting between two sample).
The very popularLow-Power library is supporting the SAMD21G but only after making some patching. A good alternative is to use theAdafruit SleepyDog Library.
To install the library in the Arduino IDE, go in the menuTools -> Manage Libraries... In the library manager, search forSleepy
and install theAdafruit SleepyDog Library
byAdafruit
.
The usage is quite simple:
#include <Adafruit_SleepyDog.h>void setup() { pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH);}void loop() { digitalWrite(LED_BUILTIN, LOW); // Show we're sleeping // Sleep Watchdog.sleep(); digitalWrite(LED_BUILTIN, HIGH); // Show we're awake again delay(5000);}
When you're calling the functionWatchdog.sleep()
, the board will be idle for16 seconds and the consumption is going as low as6mA when powered at 3.3V (which is quite better than 18mA with the BareMinimum program).
The only trick is when you want to upload a new program on your board... When the board is idle, you cannot upload a new program on it because it is not listening to the USB serial. So, never upload a program without some activities (real activities or fake activities like thedelay(5000)
above) to have the time slot to upload successfully.
Useful resources:
The Wifi module embedded on the Arduino Nano 33 IoT is the popularNINA W102 ESP32 based module. It provides support of Wifi 802.11 b/g/n in the 2.4 GHz band and Bluetooth v4.2 (Bluetooth BR/EDR and Bluetooth Low Energy BLE). The module is fully compatible with theofficial WiFiNINA library.
To install the official library in the Arduino IDE, go in the menuTools -> Manage Libraries... In the library manager, search forWifiNINA
and install theWiFiNINA
byArduino
.
Useful ressources:
Work in Progress
The IMU embedded in the Arduino Nano 33 IoT is theLSM6DS3. It is composed by a 3-axis accelerometer and a 3-axis gyroscope. The LSM6DS3 on the Arduino Nano 33 IoT can be use easily through the I2C bus on the slave address 0x6A or through theofficial Arduino LSM6DS3 library.
To install the official library in the Arduino IDE, go in the menuTools -> Manage Libraries... In the library manager, search forLSM6DS3
and install theArduino_LSM6DS3
byArduino
.
The usage is described on theofficial Arduino website.
Simple programs are available with the library:
Useful ressources:
Work in Progress
Work in Progress
About
Arduino Nano 33 IoT - Ultimate guide
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Languages
- C++100.0%