「XIAO」タグアーカイブ

M5Stack UnitCatM 位置情報送信システム実証実験

以前製作したM5Stack UnitCatMを用いた 位置情報送信システムの実証実験を実施しましたので報告いたします。

 

 

構成おさらい

製作した位置情報送信システムの構成をおさらいいたしましょう。

制御はマイコンXIAOで実施し、30分おきにスリープから起床し5V DCDCをONしてUnitCatMユニットを起動します。
ユニットで基地局の位置情報を取得してサーバにHTTP通信で送信して5V DCDCをOFFしてXIAOをスリープしています。

部品

HTTP通信

サーバへの位置情報送信にはHTTPを採用いたしました。

M5Stack UnitCatM を味見

 

位置情報取得

位置情報は基地局の座標を取得するATコマンド (AT+CLBS=?) をUnitCatMユニットに送って取得します。

基地局の座標を得るまでに5回までリトライ実行します。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

SIMカード

ここではIIJmioのデータSIMを使用しています。

M5Stack UnitCatM の 消費電力とデータSIM契約

 

乾電池駆動検証

実証実験の準備としましてシステムの乾電池駆動を検証しました。

 

アルカリ単三電池 3本で動かしました。
7/17~7/31までの17日経過しても動作しつづけ、乾電池による長期動作は問題ないことを確認できたので中断終了いたしました。

低消費設計がうまくいっていると言えるでしょう。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

実証実験

東京旅行ついでに実証実験を決行いたしました。

乾電池駆動の位置情報送信システムを箱詰めして、羽田空港の郵便局から自宅に送ってみました。
乾電池が入っていることを伝え、特定記録による陸路での郵送をお願いいたしました。

 

位置情報データ

以下が位置情報送信システムからサーバに送られてきたデータです。

30分おきにデータが来るはずですが電波状況の影響のためかデータが届いていなかったり、基地局座標を得られていなかったりしております。
しかし断続的には座標を得ることができました。

2日かからずに札幌に到着しています。
しかし土日のために実際に投函されたのは月曜日の8/8でした。
その間は最寄りの郵便局の座標が断続的に送られておりました。保管されていたのでしょう。
 

座標プロット

 

 

 

恐らくフェリーも使ってこんなルートでやってきたのだと思う

 

おわりに

無事に位置情報送信システムによる座標取得動作が確認できました!
おもしろいな。

いよいよをもってコレを川に投げ流したくなってきた。。。

Seeed XIAO BLE nRF52840 Sense で1軸 姿勢制御モジュール 製作

先日はSeeed XIAO BLE nRF52840 Sense の味見をいたしました。

Seeed XIAO BLE nRF52840 Sense を使ってみた

ここではSeeed XIAO BLE nRF52840 Sense を用いて1軸 姿勢制御モジュールを製作いたしました。

 

 

姿勢制御モジュール製作

Seeed XIAO BLE nRF52840 Sense には6軸 IMUセンサが搭載されていますので1軸 姿勢制御モジュール SHISEIGYO-1  Jr.のコントローラにしてみました。

従来のATOM Matrix用基板に一部空中配線で調整しつつ実装し組み上げました。

動作

せっかくマイクも搭載されているので音声で起き上がるようにしました。

前回の傾斜計で確認したように姿勢検知には全く問題なさそうです。
モータ回転時にちょっと音がなっているのでブラシレスモータ駆動用のPWM信号の周波数の影響でしょうか?

Seeed XIAO BLE nRF52840 Senseのアナログ出力の周波数は何Hzなんでしょうね?まぁ測ればいいか。今度観ます。

 

音声検出

動画では「UP!」と発話して起動していますが、音声認識はしておらず大きい音が鳴ったら起き上がるだけですww

マイクの使用方法はPMD用サンプルコードを参考にしました。

以下のように大きい音を検出したらgetup()で起き上がています。

 

学習モデルで音声認識もできるようなので今度試してみたいです。

 

IMU調整

6軸 IMUセンサ LSM6DS3TR-C の検知フルスケールレンジとサンプリングレートを以下のように変更しています。

 加速度:±4g、104Hz → ±2g、416Hz
 ジャイロ:±2000dps、104Hz → ±245dps、416Hz

変更はLSM6DS3TR-C ライブラリのLSM6DS3TR_C.cppを修正

 

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にやっと到着いたしました。

プレオーダー版は技適マークないので技適未取得機器を用いた実験等の特例制度を申請いたしました
(ネット申請でマジで秒で承認されました)。

技適取得して国内販売が予定されているようです。

 

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では赤が点滅しました。

ピン名LEDR、LEDG、LEDBで赤、緑、青の点灯を確認できました。

BLEでLチカ

せっかくなのでBLE通信もしたいと思い、BLEでLチカしました。

Seeed Wikiの例にならってLightBlueというスマホアプリでBLEでLED遠隔操作しました。

 

いつも利用してるアプリBlynkにはまだ対応してないようなので、対応が待ち遠しい限りです。

 

IMUを堪能

6軸IMUセンサ LSM6DS3TR-C を楽しみます。
IMUの設定はSeeed Wiki の通りに実施しました。

軸は以下のようになっておりました。

 

加速度センサとジャイロセンサの値からカルマンフィルタを用いて傾斜計をこしらえました。
カルマンフィルタは以下のライブラリを使用しました。
 https://github.com/TKJElectronics/KalmanFilter

Arduino IDE コード

X軸の周りの傾きを出力します。

 

動作

LEDを角度のインジケータとして使用しています。

 

おわりに

Seeed XIAO BLE nRF52840 Sense をArduino IDEで楽しみました。

Lチカに加えてSeeed XIAO BLE nRF52840 Senseの醍醐味であるBLE通信やIMUセンサも堪能いたしました。

マイクも搭載されており、まだまだ色々楽しめそうなのでいじり倒したいと思います。

M5Stack UnitCatM 位置情報送信システムの省電力化

前回はUnitCatM で通信基地局位置情報を取得して長期運用を試してみました。

M5Stack UnitCatM を Seeeduino XIAO で制御

30分おきに位置情報をサーバに送る仕様で、400mAhのLiPoバッテリで121時間動作しました。

ここでは消費電力を低減して更に長期の動作を目指しました。

 

 

構成おさらい

本システムの構成を記します。

制御はマイコンXIAOで実施し、30分おきにスリープから起床し5V DCDCをONしてUnitCatMユニットを起動します。
ユニットで基地局の位置情報を取得してサーバに送信して5V DCDCをOFFしてXIAOをスリープしています。

部品

 

省電力化

スリープ時の待機電流がほぼXIAOのパワーオン表示LEDで消費されていますので、LEDを除去してみました。

スリープ時の待機電流 (5V DCDCの待機電流も含む)は以下のとおり
 LEDあり:1.55mA
 LEDなし:122.4uA

1/10以下になりました!

これでスリープ時の消費電力は大きく低減されました。

参考

 

エイジング

スリープ時の省電力化に成功しましたので再度 運用モードでエイジング実施いたしました。

400mAhのLiPoバッテリで
 前回が121時間のところ
 今回は348時間動作しました。

容量の大きなバッテリを用いれば更に長期の動作が期待できます。

おわりに

ここではUnitCatMによる位置情報送信システムの低消費電力化とエイジング動作の確認を実施しました。

長期動作が見込めそうなのでビンに詰めて川にぶん投げたいところですが
これから冬なのでそれは春先に実行するとして、
しばらくは本システムをお出かけ時に持ち歩いて位置情報の精度の検証に当てたいと思います。

M5Stack UnitCatM 番外編 SIM7080G EVAボードを楽しむ

これまではM5Stack製の SIM7080G  CAT-M/NB-IOT Unitをつこて色々検証してきました。

ここでは別のSIM7080Gが載ったモジュールを入手しましたので報告いたします。

 

 

SIM7080G EVAボード

SIM7080G  CAT-M/NB-IOT Unitと同じLTEモジュール SIM7080G が載った評価ボードをAliExpressで見つけました。

こちらはGPSのアンテナ端子もあり、しかも安いので試しに購入してみました。

LTE用とGPS用のアンテナ付きを購入

技適マークもあり一安心♪

セットアップ

この評価ボードにはマイクロUSB端子がありパソコンとシリアル通信可能です。
ドライバは以下で入手しました。
 https://www.waveshare.com/wiki/SIM7080G_Cat-M/NB-IoT_HAT

ボードは給電後にPWRピンを一瞬 GNDに落とすと起動します。

USBから給電、コマンド送信ができ非常に便利です。

GPS

早速GPSを試してみました。
GPSはSIMを入れなくても楽しめます。

窓辺にボードを置いてGPSによる位置情報取得ATコマンドを送ってみました。

受信できるようになるまでしばらく時間がかかりましたが、非常に精度の良い位置情報を得ることができました。

参考

LTE通信

SIMを挿入すればLTE通信が可能です。
SIMスロットはマイクロSIMサイズでした。挿入方向に注意は必要です。

あとはSIM7080G  CAT-M/NB-IOT Unitと同じようにATコマンドでもろもろ通信制御が可能です。

参考

 

おわりに

今回試したSIM7080G EVAボードはGPSアンテナ端子もあり、USBシリアル通信も可能で非常に便利です。

しかし今 私がやろうとしている #私のボトルメッセージ 計画に用いるには
ちょっと高級すぎる印象でした。

例えば省電力のために逐一電源を切ってからGPSをつかむのに時間かかるという懸念がございます。

十分に電源が確保されていて高精度の位置座標がほしいような用途でいつか使おうかと思います。

しかしやはり携帯通信網の利用は非常に便利で夢が拡がります。

M5Stack UnitCatM で運用とエイジング

前回は通信基地局の位置情報取得について記載いたしました。

M5Stack UnitCatM で位置情報取得

 

 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約:IIJmioに決定
  2. 座標情報取得:基地局の位置情報を取得
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定:Seeduino XIAOに決定
  5. パワーセーブ:XAIOのSleepとDCDCコントロール併用
  6. ビンに詰める
  7. 川に投げる

今回は運用シーケンスの検討とエイジング動作の確認を行いました。

運用シーケンス

本システムのシーケンスは以前確立した通りです。

M5Stack UnitCatM を Seeeduino XIAO で制御

動作は以下を繰り返します。

  • Sleepから起床
  • AT導通確認
  • ネットワーク通信開始
  • 基地局位置情報取得
  • 基地局位置情報を付与して 自宅サーバへHTTP getリクエスト
  • 30分 Sleep

 

位置情報取得

上記 運用シーケンスでモジュールをもってお出かけして観たのですが、位置情報を得ることはできませんでした。。。

 

サーバのログは以下。位置座標はLocation Failで得ることができず。

シーケンス修正

検証したところ、起動後1発では位置情報取得できないことがほとんどであることがわかり、基地局位置情報取得コマンドを複数回リトライするようにしました。

ここでは位置情報を得るまで10回までリトライするようにしました。

相変わらず自宅では位置情報を得ることはできませんが、ちょろっと外に出て位置情報がサーバに送られることを確認できました。リトライ追加のご利益ですね。

 

エイジング

自宅で長期運用してみました。

 

400mAhのLiPoで運用シーケンスでエイジング実検しましたところ
121時間動作しました。

30分間隔通信での消費電力は8.1mWhでしたので理論値は
400mAh × 3.7V ÷ 8.1mWh = 182.7h

まぁもろもろリトライとかフルチャージできてないとかあるのでこんなもんでしょうか。

消費電力のほとんどがマイコンXIAOのパワーON LEDで消費されていますので、今度LEDを取り除いて再実験したいです。

 

おわりに

当初の目標に向かって徐々に進んできております。

次回は更なる低消費電力化とバッテリ選定を実したいと思います。

M5Stack UnitCatM で位置情報取得

前回はシステムの消費電力測定とデータSIMの契約について記載いたしました。

M5Stack UnitCatM の 消費電力とデータSIM契約

 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約:IIJmioに決定
  2. 座標情報取得:基地局の位置情報で検討中
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定:Seeduino XIAOに決定
  5. パワーセーブ:XAIOのSleepとDCDCコントロール併用
  6. ビンに詰める
  7. 川に投げる

今回は②の位置情報取得を再検討しましたので報告いたします。

 

位置情報取得の再検証

前回の検証では通信基地局の座標を取得するATコマンドを自宅で試しましたが情報を得ることはできませんでした。
基地局位置情報のコマンドはATコマンドの資料p. 337に記載があります。

この度、ちょっと街にお出かけの機会がありましたので再度試してみました。

USBシリアルモジュールでスマホにつないで Serial USB Terminal アプリでATコマンドを送信して実験しました。

実験結果

札幌の狸小路から国道に抜ける道を歩きながら位置情報を取得してみました。

①: +CLBS: 0,141.352896,43.057192,550,2021/09/27,11:13:19
②: +CLBS: 0,141.355294,43.055670,550,2021/09/27,11:23:58
③: +CLBS: 0,141.357550,43.056538,550,2021/09/27,11:25:16

無事に位置情報を取得することができました!
結構 位置の精度も高かったです。

 

自宅に戻るとLocation Failedで位置情報は取得できなくなりました。
我が家は一体どこの基地局で通信してるんだ。。。

おわりに

屋外で無事に通信基地局の位置情報取得を確認することができました!

次に長期動作の確認をしたいと思います。
あわせてバッテリーの選定もしないといけません。

M5Stack UnitCatM の 消費電力とデータSIM契約

前回はコントローラにSeeduino XIAOを選定し、通信動作を確立しました。

M5Stack UnitCatM を Seeeduino XIAO で制御

 

 
 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約
  2. 座標情報取得:基地局の位置情報で検討中
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定:Seeduino XIAOに決定
  5. パワーセーブ:XAIOのSleepとDCDCコントロール併用
  6. ビンに詰める
  7. 川に投げる

今回は⑤の消費電力詳細測定を実施し、①のデータSIMの契約をいたしましたので報告します。

 

消費電力詳細測定

パワーセーブ動作は前回確立し、通信時以外はXIAOをスリープし通信ユニットCAT-MはDCDCコンバータで給電しSleep中は給電を止めて消費電力を抑えます。

消費電力測定を実施しました。
30分に1回Sleepから起床してSIMの位置情報をHTTPでサーバに通信させます。通信後にSleepします。

Vin = 3.7V で消費電力は 8.09 mWh でした。

通信しない時の待機電力は3.7V × 1.55mAh = 5.735mWh
なので通信1回当たり 1.18mWh消費することになり実にLowPowerであることがわかりました。

約7割がXIAOのPower ON LEDで消費されているので、以下に倣ってLEDを除去するのがよいと考えます。

次回LEDを除去し消費電力を再測定したいです。

 

データSIM契約

これまではスマホのSIM(Jcom KDDI網)を使用して実験してきましたが、
いちいちSIMの載せ替えが面倒なので専用のデータSIMの契約を実施しました。

ここでは”IIJmioえらべるSIMカード”のデータ2ギガ (DoCoMo網)プランにしました。 
以下のAmazonで契約用コードを購入をダウンロードしてコースを選定して契約しました。簡単にできました。

現在は秋の乗り換えキャンペーン(2021年10月31日まで)とのことで契約翌月から3か月データが1GB増量されるとのことです。ラッキー!

 

費用は以下の通りでした。

  • Amazon 契約コード【DL版】:¥350
  • SIMカード発行手数料:¥394
  • 月額使用料:¥748

数日後にSIMカードが到着しました。
SIMカードサイズはミニ、マイクロ、ナノのいずれのサイズにも対応しています(マルチサイズ)。

SIM設定

以下のATコマンドでSIMのAPN設定を実施します。設定後はモジュールに記憶されます。

AT+CGDCONT=1,”IP”,”APN名” 
AT+CNCFG=1,1,”APN”,”ユーザ名”,”パスワード”,3

IIJmioのデータSIMでも問題なく接続が確認できました。

 

おわりに

今回は消費電力測定とデータSIMの契約について記載いたしました。

次回はSeeeduino XIAOのPower ON LED除去による消費電力低減の確認と
通信基地局の位置情報について調査結果をまとめたいと思います。

M5Stack UnitCatM を Seeeduino XIAO で制御

前回はUnitCatM によるHTTP通信を確認しました。

M5Stack UnitCatM で HTTP通信

ここではUnitCatM を制御するマイコンの検討を行いました。

 

 

目標

本件の目標は以下の通りです。

  1. 格安データSIM探して契約:現在調査中
  2. 座標情報取得:基地局の位置情報で検討中
  3. 外部への通信:HTTP通信で決定
  4. コントローラ選定
  5. パワーセーブ
  6. ビンに詰める
  7. 川に投げる

ここでは目標④、⑤の検討を実施いたしました
 

コントローラ検討

これまではPCからATコマンドをおくって動作確認しておりましたが、実際にはマイコンからコマンド制御する必要があります。

ここではコントローラとしてSeeeduino XIAOを採用しました。
小さくてカワイイですし、しっかりめのパワーセーブ機能もあるためです。

XIAOのシリアル端子(D6, D7)からコマンドを送受信します。

 
しっかりシーケンスを組んで通信の開始や位置情報の取得、HTTP送信を実施します。

 

パワーセーブの検討

マイコン XIAO

XIAOは送信時以外はSleepさせて消費電力を抑えます。

サンプルコードWakeUpOnRTCInterrupt.ino のようにRTCによる設定時刻で起床するようにしたかったのですが
RTCInt.h がないとエラーがでるので
RTCの設定にはSeeed_Arduino_RTCライブラリを使用しました。

消費電流は Vin = 5Vで
 起床時:14.4mA
 Sleep時:1.46mA
とSleepが大きく効いておりました。

以下の参考記事によるとパワーオンLEDを切ると更に消費電力が減るとのことです。
場合によってはLED排除も検討したいです。

参考

UnitCatM

UnitCatMは電源の供給をイネーブルピン付きのDCDCから供給するようにし
通信時以外はXIAOでDCDCのENピンを制御して電源遮断でパワーセーブすることにしました。

これによって通信時以外のUnitCatMによる消費電力は0となります。

 

システム構成

バッテリは未定ですが現状のシステム構成は以下の通りです。
XIAOでATコマンドを送信し、更にDCDCのENピンを制御してUnitCatMをON/OFFします。

部品

 

 

Arduino IDEコード

 

以下のシーケンスでATコマンドをXIAOからUnitCatMに送っています。
 ・AT導通確認
 ・ネットワーク通信開始
 ・基地局位置情報取得
 ・HTTP設定
 ・HTTPステート確認
 ・HTTP 基地局位置情報を付与して getリクエスト

HTTP getリクエスト送信後はRTCアラームを設定してnrgSave.standby();でスリープに入ります。

ここではRTC時刻を2021年1月1日 00:00:00に設定し、
アラームを1分後の2021年1月1日 00:01:00として起床するようにしています。

位置情報サーバ送信→1分スリープ→起床→‥‥を繰り返します。

消費電流は Vin = 3.7Vで
 通信時:45~167mA
 Sleep時:1.55mA
でした。

通信頻度を抑えればかなり長期の運用が可能なのではないでしょうか。

 

おわりに

ついにコントローラの選定もでき、消費電力も抑えれそうなことがわかってきました。

次回はデータSIMを契約して長期の動作確認を実施したいと考えております。

Seeeduino XIAOを使ってみた

Seeeduino XIAOという実に可愛いマイコンを購入しました。
安くて小さくて高性能でしたので紹介させてください。

 

 

Seeeduino XIAO

CPU:Arm Cortex-M0+ 32ビット 48 MHz(SAMD21G18)
ストレージ:256 KB Flash、32 KB SRAM
SPI, I2C、UART(Serial1)などのI/Fも充実しております。

回路図:https://files.seeedstudio.com/wiki/Seeeduino-XIAO/res/Seeeduino-XIAO-v1.0-SCH-191112.pdf

 
Arduino IDEでコーディングする際の設定は以下が参考になります。
 https://wiki.seeedstudio.com/Seeeduino-XIAO/#getting-started

 
注)

PCとXIAOをUSB-Cケーブルで接続した際にXIAOが認識されない場合があります。
その際には以下のように基板上のリセットパッドとその隣のGNDパッドを2回ちょんちょんとショートしてください。

 

MIDI Library

CPUがArmのSAMD21ってことは。。。

 

そうだね!MIDIライブラリ使えるね!

以下のMIDIライブラリを試してみました!
 https://www.arduino.cc/en/Reference/MIDIUSB

 

サンプルコードMIDIUSB_read.ino を参考にして
DAWからのMIDI信号Note ONとNote OFFでLED(D13)をON/OFFしているだけです。

これでMIDIで動く面白いなにかしらとかオリジナルコントローラが作れますね!

 

PovRanian

ハンディバーサライタPovRanianはマイコンにAdafruit Trinket M0を使用しており、
Adafruit Trinket M0のCPUもSAMD21です。

ハンディ バーサライタ PovRanian の製法

 

この度、XIAOをPovRanianに導入してしてみました。
XIAOに変更することでコストが下がり、コネクタがUSB-Cなのでモダンになります。

XIAOで割り込み動作やSPI入力LEDも問題なく使用できました。

動作

しっかり動いています!

 

おわりに

もう無線使わない工作は全て Seeeduino XIAOでいける気がします。

小さいし、それでいてピンや機能も充実してるし何より安い!

Seeedのブログでも作例として紹介いただきました!!

追記

Seeed 公式動画(2020/5/16)

Seeed社の公式動画にXIAOの作例として紹介いただきました!