7 releases (breaking)

Uses new Rust 2021

0.7.0 Jan 11, 2022
0.5.0 Sep 27, 2021
0.4.0 Dec 31, 2020
0.3.0 Nov 28, 2020
0.1.0 Jul 7, 2020

#358 in Embedded development

Download history 23/week @ 2022-08-05 16/week @ 2022-08-12 21/week @ 2022-08-19 12/week @ 2022-08-26 16/week @ 2022-09-02 39/week @ 2022-09-09 8/week @ 2022-09-16 9/week @ 2022-09-23 24/week @ 2022-09-30 24/week @ 2022-10-07 5/week @ 2022-10-14 10/week @ 2022-10-21 19/week @ 2022-10-28 33/week @ 2022-11-04 17/week @ 2022-11-11 16/week @ 2022-11-18

85 downloads per month

MIT/Apache

1MB
19K 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
~150K SLoC