Nano 33 BLE Senseチートシート

Nano 33 BLE Senseの設定方法、構成要素の概要、ピンに関する情報、異なるシリアル通信(SPI、I2C、UART)と無線(Wi-Fi、Bluetooth®)プロトコルの使い方を学習します。


AUTHOR: Benjamin Dannegård、LAST REVISION: 2023/02/20 18:07


The Arduino® Nano 33 BLE Sense

The Arduino® Nano 33 BLE Sense

この記事は、ガイドとAPI呼び出し、ライブラリ、チュートリアルのまとめです。Nano 33 BLE Senseボードを使い始めるのに役に立ちます。

Nano 33 BLE Sense用ドキュメントも参照してください。

コア

Nano 33 BLE Senseは、Arduino Mbed OS Nano Boards coreを使用しています。

データシート

完全なデータシートは、以下のリンクからダウンロードできるPDFとして提供されています。

Download the Arduino Nano 33 BLE Sense datasheet

インストール

Arduino IDE 1.8.X

Nano 33 BLE Seseは、伝統的なArduino IDE 1.8.Xでプログラムすることができます。ボードをインストールにするには、以下のガイドを参照してください。

Arduino IDE 2.0.X

Nano 33 BLE Seseは、Arduino IDE 2.0.Xでプログラムすることができます。ボードをインストールにするには、以下のガイドを参照してください。

Webエディタ

Nano 33 BLE Seseは、Webエディタでプログラムすることができます。ボードを使い始めるのに必要なのは、以下のガイドで説明しているプラグインをインストールすることだけです。

OpenMV IDEを使う

ボードで、MicroPythonとOpenMVを使うのであれば、以下のチュートリアルに従ってください。

MicroPythonの機能や特徴の概要を知りたいのであれば、以下のチュートリアルを参照してください。

強制ブートローダー起動

アップロード中にアップロードプロセスが止まってしまう可能性があります。このときは、リセットボタンを2回押し、強制的にブートローダーを起動することができます。

ピン

Nano 33 BLE Senseのピン配置

Nano 33 BLE Senseのピン配置

アナログピン

Nano 33 BLE Senseには、8本のアナログピンがあります。これらは、analogRead()関数を利用します。

1
value = analogRead(pin, value);
i
注意: A4ピンとA5ピンはI2C専用として利用するべきです。

PWMピン

D2-D12とA0-A7では、PWM(Pulse Width Modulation: パルス幅変調)を利用できます。

i
A4とA5、D11、D12の各ピンは、I2CとSPIバスが接続されているので、PWMでの利用を推奨していません。
1
analogWrite(pin, value);

デジタルピン

合計14本のデジタルピンがあります。

これらを使うには、まず、スケッチのvoid setup()関数内で定義する必要があります。

1
2
3
pinMode(pin, INPUT); //configured as an input
pinMode(pin, OUTPUT); //configured as an output
pinMode(pin, INPUT_PULLUP); //uses the internal 10k ohm resistor

デジタルピンの状態を読むには、

1
state = digitalRead(pin);

デジタルピンに状態を書くには、

1
digitalWrite(pin, HIGH);

5Vピン

Arduino Nano 33 BLE Senseのマイクロコントローラーは3.3Vで動作します。このため、デジタルピンやアナログピンに3.3Vを超える電圧をかけてはいけません。センサーやアクチュエーターを接続するときは、この3.3Vの制限を超えないことを保証するよう注意が必要です。他のArduinoボードでよく利用される5Vのような高電圧の信号を接続すると、Arduino Nano 33 BLE Senseが壊れるかもしれません。

Nanoを抜き取り、新しいNano 33 BLE Senseに置き換えるような既存のプロジェクトでこのようなリスクを避けるために、ヘッダのRSTとA7の間にある5Vピンは工場出荷時のデフォルトでは接続していません。ピンから5Vを取得するような設計をしているときは、すぐには動作しません。デジタル入力とアナログ入力が3.3Vに適合していることに注意を払ってもらうための予防措置です。

5Vピンは、以下の2つの条件が満たされたときにだけ有効です。VUSBと記されたパッド間をはんだブリッジすることと、Nano 33 BLE SenseにUSBポート経由で給電することです。VINピンからボードに給電したときは、安定化した5Vは出力されません。このため、はんだブリッジをしても、5Vピンからは何も出力されません。一方、3.3Vは常に利用可能で、センサーを駆動するのに十分な電流を供給します。センサーとアクチュエーターが3.3Vを入力し、3.3VのデジタルIOレベルで動作するように設計してください。今や、5Vは多くのモジュールではオプションで、電子ICでは3.3Vが標準電圧になっています。

VUSBピンをはんだ付けする。

VUSBピンをはんだ付けする。

IMU

LSM9DS1センサー

LSM9DS1センサー

LSM9DS1

慣性測定ユニットLSM9DS1は、3D加速度センサーとジャイロスコープ、磁気センサーを備え、プロジェクトで、姿勢や動き、振動を検出することができます。

LSM9DS1ライブラリ

LSM9DS1モジュールからデータを取得するには、LSM9DS1ライブラリをインストールする必要があります。このライブラリには、Nano 33 BLE Senseでそのまま利用できるスケッチ例が付属しています。

このライブラリは、IDEのライブラリマネージャ―から直接インストールすることができます。このライブラリを利用するには、スケッチの先頭でインクルードする必要があります。

1
#include <Arduino_LSM9DS1.h>

ライブラリを初期化するには、void setup()で以下のコマンドを使います。

1
2
3
4
if (!IMU.begin()) {
    Serial.println("Failed to initialize IMU!");
    while (1);
  }

加速度センサー

加速度センサーのデータは、以下のコマンドで取得します。

1
2
3
4
5
float x, y, z;

  if (IMU.accelerationAvailable()) {
    IMU.readAcceleration(x, y, z);
  }

ジャイロスコープ

ジャイロスコープのデータは、以下のコマンドで取得します。

1
2
3
4
5
float x, y, z;

  if (IMU.gyroscopeAvailable()) {
    IMU.readGyroscope(x, y, z);
  }

磁気センサー

磁気センサーのデータは、以下のコマンドで取得します。

1
2
3
float x, y, z;

  IMU.readMagneticField(x, y, z);

チュートリアル

このIMUの使い方を詳細に知りたい場合は、以下のチュートリアルを参照してください。

近接・ジェスチャー検知

APDS-9960近接・ジェスチャーセンサー

APDS-9960近接・ジェスチャーセンサー

APDS9960

APDS9960チップは、色(RGB)とジェスチャーだけでなく、デジタル近接と環境光も検出することができます。

APDS9960ライブラリ

APDS9960モジュールからデータを取得するには、APDS9960ライブラリをインストールする必要があります。このライブラリには、Nano 33 BLE Senseでそのまま利用できるスケッチ例が付属しています。

このライブラリは、IDEのライブラリマネージャ―から直接インストールすることができます。このライブラリを利用するには、スケッチの先頭でインクルードする必要があります。

1
#include <Arduino_APDS9960.h>

ライブラリを初期化するには、void setup()で以下のコマンドを使います。

1
2
3
if (!APDS.begin()) {
  Serial.println("Error initializing APDS9960 sensor!");
}

その後、近接センサーのデータが利用可能か確認します。利用可能であれば、シリアルモニタに表示します。データの値は0から255で、0が近くて、255が遠いです。値が-1のときは、エラーです。

1
2
3
if (APDS.proximityAvailable()) {
  Serial.println(APDS.readProximity());
}

チュートリアル

この近接センサーの使い方を詳細に知りたい場合は、以下のチュートリアルを参照してください。

温湿度センサ―

HTS221温湿度センサ―

HTS221温湿度センサ―

HTS221

HTS221静電容量式デジタルセンサーは、温度と相対湿度を測定します。温度の精度は±0.5℃(15度から40度)で、周囲温度の測定に最適です。

HTS221ライブラリ

HTS221モジュールからデータを取得するには、HTS221ライブラリをインストールする必要があります。このライブラリには、Nano 33 BLE Senseでそのまま利用できるスケッチ例が付属しています。

このライブラリは、IDEのライブラリマネージャ―から直接インストールすることができます。このライブラリを利用するには、スケッチの先頭でインクルードする必要があります。

1
#include <Arduino_HTS221.h>

ライブラリを初期化するには、void setup()で以下のコマンドを使います。

1
2
3
if (!HTS.begin()) {
  Serial.println("Failed to initialize humidity temperature sensor!");
}

その後、温度と湿度を確認するためにシリアルモニターに値を表示することができます。

1
2
Serial.println(HTS.readTemperature());
Serial.println(HTS.readHumidity());

チュートリアル

この温湿度センサーの使い方を詳細に知りたい場合は、以下のチュートリアルを参照してください。

大気圧センサ―

LPS22HB大気圧センサ―

LPS22HB大気圧センサ―

LPS22HB

LPS22HBは大気圧を取得し、260から1260hPaの間の大気圧データを24ビットで出力します。このデータは現在値の海抜の計算に利用することができます。

LPS22HBライブラリ

LPS22HBモジュールからデータを取得するには、LPS22HBライブラリをインストールする必要があります。このライブラリには、Nano 33 BLE Senseでそのまま利用できるスケッチ例が付属しています。

このライブラリは、IDEのライブラリマネージャ―から直接インストールすることができます。このライブラリを利用するには、スケッチの先頭でインクルードする必要があります。

1
#include <Arduino_LPS22HB.h>

ライブラリを初期化するには、void setup()で以下のコマンドを使います。

1
2
3
if (!BARO.begin()) {
  Serial.println("Failed to initialize pressure sensor!");
}

その後、以下のコードを使ってセンサーから値を読み取ることができます。

1
BARO.readPressure();

チュートリアル

この大気圧センサーの使い方を詳細に知りたい場合は、以下のチュートリアルを参照してください。

マイク

MP34DT05マイク

MP34DT05マイク

MP34DT05

MP34DT05は、小型で低消費電力のICインターフェイス付き無指向性デジタルMEMSマイクです。SN比は64dBで、音波を検出することができ-40℃から85℃の温度で動作することができます。

PDMライブラリ

MP34DT05からデータを取得するには、Arduino Mbed OS Nanoボードコアに付属のPDMライブラリをインストールする必要があります。コアをインストールしたら、動作するスケッチ例は、ファイル > スケッチ例 > PDM > PDMSerialPlotterにあります。

i
注意: PDMSerialPlotterのスケッチ例では、サンプリング周波数は16000Hzに設定されています。マイクが動作していないようであれば(モニターに-128が表示されていれば)、これを20000Hzに変更してみてください。PDMSerialPlotterのスケッチ例の先頭で変更することができます。
1
static const int frequency = 20000; //frequency at 20 KHz instead of 16 KHz

チュートリアル

このマイクの使い方を詳細に知りたい場合は、以下のチュートリアルを参照してください。

RGB

ピクセルをONにするには、LEDにHIGHを書き込んでください。

1
2
3
digitalWrite(LEDR, HIGH); //RED
digitalWrite(LEDG, HIGH); //GREEN
digitalWrite(LEDB, HIGH); //BLUE

ピクセルをOFFにするには、LEDにLOWを書き込んでください。

1
2
3
digitalWrite(LEDR, LOW); //RED
digitalWrite(LEDG, LOW); //GREEN
digitalWrite(LEDB, LOW); //BLUE

LEDに255から0の値を書くこともできます。

1
2
3
analogWrite(LEDR, 72);  //GREEN 
analogWrite(LEDG, 122); //BLUE 
analogWrite(LEDB, 234); //RED

通信

他のArduino®製品と同様、Nano 33 BLE Senseは異なるプロトコル用に特定のピンが割り当てられています。

SPI

Nano 33 BLE Senseで、SPI(Serial Peripheral Interface)に使われるピンは以下の通りです。

  • (CIPO) - D12
  • (COPI) - D11
  • (SCK) - D13
  • (CS/SS) - 任意のGPIO
i
MOSIとMISO、SSという信号名称は、COPI(Controller Out, Peripheral In)とCIPO(Controller In, Peripheral Out)、CS(Chip Select)に置き換えられました。

SPIを使うには、まず、SPIライブラリをインクルードします。

1
#include <SPI.h>

void setup()内でライブラリを初期化する必要があります。

1
SPI.begin();

その後、デバイスに書き込みます。

1
2
3
4
5
6
digitalWrite(chipSelectPin, LOW); //pull down the CS pin
  
  SPI.transfer(address); // address for device, for example 0x00
  SPI.transfer(value); // value to write

  digitalWrite(chipSelectPin, HIGH); // pull up the CS pin

I2C

Nano 33 BLE Senseで、I2C(Inter-Integrated Circuit)に使われるピンは以下の通りです。

  • (SDA) - A4
  • (SCL) - A5

I2Cを使うには、Wireを使います。スケッチの先頭でインクルードする必要があります

1
#include <Wire.h>

void setup()内でライブラリを初期化する必要があります。

1
Wire.begin();

その後、I2C経由で接続されているデバイスに何かを書くときは、以下のコマンドを利用します。

1
2
3
4
Wire.beginTransmission(1); //begin transmit to device 1
  Wire.write(byte(0x00)); //send instruction byte 
  Wire.write(val); //send a value
  Wire.endTransmission(); //stop transmit

UART

UART(Universal asynchronous receiver-transmitter)に使われるピンは以下の通りです。

  • (Rx) - D0
  • (Tx) - D1

UART経由でデータを送受信するには、最初にvoid setup()内でボーレートを設定する必要があります。

1
Serial1.begin(9600);

入力データを読み取るには、whileループを使って個々の文字を読み取り、文字列に追加していきます。

1
2
3
4
5
while(Serial1.available()){
    delay(2);
    char c = Serial1.read();
    incoming += c;
  }

何かを書き込むには、以下のコマンドを使います。

1
Serial1.write("Hello world!");

接続性

Nano 33 BLE Senseは、u-blox NINA-B306モジュールにより、Bluetooth®をサポートしています。このモジュールを使うには、Arduino BLEライブラリを使います。

Bluetooth®モジュール

Bluetooth®モジュール

Bluetooth®

Nano 33 BLE SenseでBluetooth®を有効化するには、Arduino BLEライブラリを使い、スケッチの先頭でインクルードします。

1
#include <ArduinoBLE.h>

サービスとキャラクタリスティックを設定します。

1
2
BLEService ledService("180A"); // BLE LED Service
BLEByteCharacteristic switchCharacteristic("2A57", BLERead | BLEWrite);

アドバタイズ名とサービスを設定します。

1
2
BLE.setLocalName("Nano 33 BLE Sense");
  BLE.setAdvertisedService(ledService);

アドバタイジングを始めます。

1
BLE.advertise();

Bluetooth® Low Energy周辺機器が接続するのを待ちます。

1
BLEDevice central = BLE.central();

チュートリアル

USBキーボード

ボードをキーボードとして使うには、コア内にあるUSBHIDライブラリを参照します。

ライブラリをインクルードし、オブジェクトを生成します。

1
2
3
4
#include "PluggableUSBHID.h"
#include "USBKeyboard.h"

USBKeyboard Keyboard;

何かを書き込むには、以下のコマンドを使います。

1
Keyboard.printf("This is Nano 33 speaking!");

オリジナルのページ

https://docs.arduino.cc/tutorials/nano-33-ble-sense/cheat-sheet

最終更新日

November 12, 2023

inserted by FC2 system