9 releases (5 breaking)

0.7.2 Oct 18, 2024
0.7.1 Jul 15, 2023
0.7.0 Jan 11, 2022
0.5.0 Sep 27, 2021
0.2.0 Jul 30, 2020

#2258 in Embedded development

Download history 190/week @ 2024-07-27 4/week @ 2024-08-03 5/week @ 2024-08-10 2/week @ 2024-08-17 17/week @ 2024-09-21 7/week @ 2024-09-28 2/week @ 2024-10-05 77/week @ 2024-10-12 67/week @ 2024-10-19 4/week @ 2024-10-26 23/week @ 2024-11-02 5/week @ 2024-11-09

169 downloads per month

MIT/Apache

1.5MB
24K SLoC

Arduino Nano 33 IOT Board Support Crate

This crate provides a type-safe API for working with the Arduino nano 33 IOT board.

Requirements

  1. Arduino IDE or arduino CLI installed.
  2. samd package installed. You can do this by going to Tools->Board->BoardManager and then searching for samd or run arduino-cli core install arduino:samd.
  3. Now the arduino distribution contains bossac.exe in ArduinoData/packages/arduino/tools/bossac/1.7.0[-arduino3]/ add it to your path
  • linux: ArduinoData is likely something like ~/.arduino15/
  • OSX: ArduinoData is likely something like ~/Library/Arduino15
  1. Probably best to install an example sketch via the IDE just to make sure everything is working.
  2. arm-none-eabi tools installed, you need gcc and objcopy.
  • Note: Alternatively, you can use cargo-binutils, which is likely easier to install on OSX and also easier to use, as it will automatically detect the target
  1. thumbv6m-none-eabi rust target installed via rustup target add thumbv6m-none-eabi. Some features may also require nightly rust.

Steps

cargo build --release --example blinky_basic
# If using cargo-binutils, you can `rust-objcopy` with the same flags, or combine these 2 steps with `cargo objcopy`
arm-none-eabi-objcopy -O binary target/thumbv6m-none-eabi/release/examples/blinky_basic target/blinky_basic.bin

# If using bossac
bossac -i -d -U true -i -e -w -v target/blinky_basic.bin -R

# If using arduino-cli
arduino-cli upload -i target/blinky_basic.bin -b arduino:samd:nano_33_iot -p /dev/ttyACM0

(You may need to use --port with something like /dev/ttyACM0//dev/ttyACM1, or /dev/tty.usbmodemNNNNN on OSX)

Notes

  • It may help to double-press the center button to reset when re-flashing the device. This sets the device in a bootloader mode.
  • For the usb example, picocom is a good simple terminal serial emulator, installable with your os's package manager or brew
    • On OSX, after flashing the tty for serial communication may be different, for example /dev/tty.usbmodemTEST1

Dependencies

~5MB
~117K SLoC