Seeed XIAO BLE nRF52840 Sense を使ってみた
Seeed XIAO BLE nRF52840 Sense を購入し味見してみましたので報告いたします。
目次
Seeed XIAO BLE nRF52840 Sense
Seeed XIAOと同じ形状で CPUにNordic nRF52840が採用された製品です。
nRF52840搭載ですのでBLE通信が可能です。
さらにSense版には 6軸IMUセンサ(LSM6DS3TR-C)と マイク(MSM261D3526H1CPM)が搭載されています。
12月にプレオーダーが開始されたのですぐに購入し、1/18にやっと到着いたしました。
プレオーダー版は技適マークないので技適未取得機器を用いた実験等の特例制度を申請いたしました
(ネット申請でマジで秒で承認されました)。
技適取得して国内販売が予定されているようです。
開発版は存在します。(製品版は、、、まだ販売開始していないと思う。)
なお、販売開始時点は技適無い模様。取得予定。— matsujirushi (@matsujirushi12) January 11, 2022
Lチカ
Seeed Wikiを頼りにArduino IDE用環境を整えてLチカしてみました。
ブートモードにする際にXIAOと同様にリセットを2回GNDに落とす必要がありますがSeeed XIAO BLE nRF52840 Senseにはリセットボタンがついており便利です。
しかしボタンが小さすぎて少し押しにくいです。。
Seeed XIAO BLEにはRGB三色LEDが搭載されています。
Arduino IDEのスケッチ例→Basics→Blinkのピン名LED_BUILTINでは赤が点滅しました。
Lチカ
スケッチ例→Basics→Blinkで赤点滅した pic.twitter.com/20NJEyuDFd— HomeMadeGarbage (@H0meMadeGarbage) January 18, 2022
ピン名LEDR、LEDG、LEDBで赤、緑、青の点灯を確認できました。
BLEでLチカ
せっかくなのでBLE通信もしたいと思い、BLEでLチカしました。
Seeed Wikiの例にならってLightBlueというスマホアプリでBLEでLED遠隔操作しました。
LightBlueというスマホアプリでBLEでLED遠隔操作
はやくBlynkに対応してほしいな#seeed pic.twitter.com/kDMOeDzTcg
— HomeMadeGarbage (@H0meMadeGarbage) January 18, 2022
いつも利用してるアプリBlynkにはまだ対応してないようなので、対応が待ち遠しい限りです。
IMUを堪能
6軸IMUセンサ LSM6DS3TR-C を楽しみます。
IMUの設定はSeeed Wiki の通りに実施しました。
軸は以下のようになっておりました。
加速度センサとジャイロセンサの値からカルマンフィルタを用いて傾斜計をこしらえました。
カルマンフィルタは以下のライブラリを使用しました。
https://github.com/TKJElectronics/KalmanFilter
Arduino IDE コード
X軸の周りの傾きを出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
#include <Arduino_LSM6DS3TR_C.h> #include <Kalman.h> unsigned long oldTime = 0, loopTime, nowTime; float dt; float accX = 0, accY = 0, accZ = 0; float gyroX = 0, gyroY = 0, gyroZ = 0; float theta_acc = 0.0; float theta_dot = 0.0; Kalman kalmanX; float kalAngleX, kalAngleDotX; //加速度センサから傾きデータ取得 [deg] float get_theta_acc() { IMU.readAcceleration(accX, accY, accZ); //傾斜角導出 単位はdeg theta_acc = atan2(accY, accZ) * 57.29578f; return theta_acc; } //X軸 角速度取得 float get_gyro_data() { IMU.readGyroscope(gyroX, gyroY, gyroZ); theta_dot = gyroX; return theta_dot; } void setup() { Serial.begin(115200); if (!IMU.begin()) { Serial.println("Failed to initialize IMU!"); while (1) yield(); } kalmanX.setAngle(get_theta_acc()); pinMode(LEDR, OUTPUT); pinMode(LEDG, OUTPUT); pinMode(LEDB, OUTPUT); digitalWrite(LEDR, HIGH); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); } void loop() { nowTime = micros(); loopTime = nowTime - oldTime; oldTime = nowTime; dt = (float)loopTime / 1000000.0; //sec //カルマンフィルタ 姿勢 傾き kalAngleX = kalmanX.getAngle(get_theta_acc(), get_gyro_data(), dt); //カルマンフィルタ 姿勢 角速度 kalAngleDotX = kalmanX.getRate(); Serial.println(kalAngleX); //LEDインジケータ if(fabs(kalAngleX) > 20.0){ digitalWrite(LEDR, LOW); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); }else if(fabs(kalAngleX) < 1.0){ digitalWrite(LEDR, HIGH); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, LOW); }else{ digitalWrite(LEDR, HIGH); digitalWrite(LEDG, LOW); digitalWrite(LEDB, HIGH); } } |
動作
Seeed XIAO BLE nRF52840 Sense で傾斜計
IMUセンサを堪能LEDインジケータ
±20°以上で赤
±1°以下で青
その他で緑#seeed #カルマンフィルタ pic.twitter.com/RpnpSrAo74— HomeMadeGarbage (@H0meMadeGarbage) January 18, 2022
LEDを角度のインジケータとして使用しています。
おわりに
Seeed XIAO BLE nRF52840 Sense をArduino IDEで楽しみました。
Lチカに加えてSeeed XIAO BLE nRF52840 Senseの醍醐味であるBLE通信やIMUセンサも堪能いたしました。
マイクも搭載されており、まだまだ色々楽しめそうなのでいじり倒したいと思います。
掲載ありがとうございます.とても助かります.
また,下記の件,教えて頂ければ幸いです.
Seeed Studio XIAO nRF52840 Senseを購入し,サンプルソフトの,HighLevelExample.inoを実行したところ,いくらやっても”Device error” となります.2個購入し,2個とも同じ現象です.
アドバイス頂ければ幸いです.
MacOSでしょうか。
2個購入したら、一つはMacだけで認識、2週間後認識しなくなったのでWindowsにつなぐと認識し始めた。
もう一つはWindowsで最初から認識しました。