「Seeed」タグアーカイブ

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でした。
その間は最寄りの郵便局の座標が断続的に送られておりました。保管されていたのでしょう。
 

座標プロット

 

 

 

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

 

おわりに

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

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

ロボット犬『Mini Pupperミニぷぱ』で 書道

これまでミニぷパに色々な動作や機能を実装し楽しんでまいりましたが、
ついに字を書けるようになりました!

 

 

動作

早速 凛々しい書道スタイルをご覧ください。

 

足に筆ペンを固定していますw

 

機構

基本的には以前ロボットアームで実施した機構と同じです。

Processing で制御 ーロボットアーム自作への道3ー

 

Processingのウィンドウ上の座標をミニぷパに送信して足の平面座標(x, y)として制御します。

マウスをクリックすると足の高さを下げて筆ペンを地面に接地します。
ドラッグで線や絵を描けます。マウスがクリックされていない時は足を20mm上げてペン先を浮かせています。

 

ProcessingからのUSBシリアルはATOM Liteで直接うまく受信できなかったので
前回のAIカメラ HuskyLensの時と同様に一旦Seeeduino XIAOで受信してATOMに座標情報を送りました。

ロボット犬『Mini Pupperミニぷぱ』を AIカメラ HuskyLens で堪能

前回は9軸 IMUセンサ BNO055を用いてミニぷぱ制御を楽しみました。

ダイソー版 プラレール を改造したよ♪

 

ここでは更に AIカメラ HuskyLensを追加して ミニぷぱを賢くしちゃいます。

 

 

AIカメラ HuskyLens

HuskyLensは顔認識、物体追跡、物体認識、ライン追跡、色認識、タグ認識などの機能を有するAIカメラです。

 

 

ここではHuskyLensの設定で色認識データをI2C出力にして使用しました。

 

認識した色の座標位置でミニぷぱを制御します。

 

 

HuskyLensをミニぷぱに接続

前回製作したATOM Liteをコントローラに採用したミニぷぱにHuskyLensを接続します。

注意点

HuskyLensのI2C出力をATOM Liteに接続して素直に行きたかったのですが。。
毎度恒例の問題発生。

以下のHuskyLens Arduinoライブラリを使用してI2C通信したいのですが、ESP32には使用できませんでした。
 https://github.com/HuskyLens/HUSKYLENSArduino/tree/master/HUSKYLENS/examples/HUSKYLENS_I2C

かなりライブラリを修正しないといけない感じだったので直結は潔くあきらめて、Seeeduino XIAOで中継することにいたしました。

 

構成

 

HuskyLensとATOM Lite間にSeeeduino XIAOを挿入してI2C-Uart変換を実施しています。

 

 

部品

 

動作

赤色の横方向座標で旋回移動させてみました。

XIAOからのHuskyLensデータをATOM Liteを2コアにしてCore0で常時シリアル受信するようにして、サーボ制御との並行動作を実現しています。

 

これまで仕込んだ歩行動作なども問題なく実行できます。

 

おわりに

AIカメラ HuskyLensの追加によって ミニぷぱ がとても賢くなりました!

今回は色認識で制御していますが顔認識やライントレースなどもできそうです。

どんどん賢く 高機能になる 我が家のミニぷぱ

 

そのうちしゃべりだして立ち上がって二足歩行するかもしれませんね。

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除去による消費電力低減の確認と
通信基地局の位置情報について調査結果をまとめたいと思います。

バッテリ内蔵 姿勢制御モジュール SHISEIGYO-3 Unplugged  ーリアクションホイールへの道42ー

以前から実現したいと思っていた3軸姿勢制御モジュール SHISEIGYO-3のバッテリ内蔵化を実施しましたので報告いたします。

 

 

昇圧 DCDCコンバータ検討

3軸姿勢制御モジュール SHISEIGYO-3 は 24V入力のブラシレスモータを3つ使用しています。
これまでは24V ACアダプタで電源供給をしておりました。

24Vのバッテリを搭載するのは難しいと考え、DCDCで24Vに昇圧しようと考えました。

以下のDCDCコンバータの使用を検討します。安かったので購入。

 

電子負荷で電流を引っ張って負荷特性を観てみました。
DCDCのポテンショメータを調整して出力電圧を24Vに設定しました。
入力電圧は3セルのLiPoバッテリの使用を想定して11Vとしました。

1次側の電源の電流能力の限界で1.1A以上引けませんでしたが、
1A以上の負荷でも24V出力できておりました。

波形を見てないため正確な安定度は分かりませんが電圧値をみている感じでは特に問題なく使えそうな印象を受けました。

 
電子負荷は以下を使用

 

バッテリ内蔵化

以前製作した3軸姿勢制御モジュール SHISEIGYO-3 eternal をバッテリ内蔵にしてみました。

SHISEIGYO-3-eternal 爆誕 ーリアクションホイールへの道35ー

 

ブラシレスモータ1つにつきDCDC1つで24V電源供給します。

 

バッテリには以下の3セルのLiPoバッテリを使用しました。

 

システム概要図

 

SHISEIGYO-3 Unplugged

動作もバッチリで SHISEIGYO-3 Unplugged の爆誕となりました。

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を契約して長期の動作確認を実施したいと考えております。

Grove Beginner Kit for Arduino を用いたデバイス間通信

前回はGrove Beginner Kit for Arduinoの基本動作を楽しみました。

Grove Beginner Kit for Arduino

ここではキットの各種モジュールを用いてデバイス間通信を楽しみました。

 

 

Seeeduino Lotus

Grove Beginner Kit for ArduinoにはコントローラとしてSeeeduino Lotus が含まれます。

 

Seeeduino Lotus のArduino IDE用の設定は以下を参考に実施しました。
 https://wiki.seeedstudio.com/Seeed_Arduino_Boards/

 

ちなみにキットをバラバラにした際に基板のあまりの部分が定規になっており、少し嬉しかったです。

 

デバイス間通信

 
  • ボタンでbuzzer鳴らして
  • マイクで音を検出してLEDを光らせ
  • 光センサで点灯を検出してディスプレイ表示

 

Arduino IDE コード

 

OLEDディスプレイの表示方法は以下を参考にしました。
 https://wiki.seeedstudio.com/Grove-OLED-Display-0.96-SSD1315/

OLEDディスプレイのArduino IDE用ライブラリはいあkを使用
 https://github.com/olikraus/u8g2

 

おわりに

Grove Beginner Kit for Arduinoの各種モジュールを用いてセンシング動作などを楽しんでみました。

デバイス間通信と言いつつマイコン1個でやってたら意味ないじゃんとかどうか言わないでください。

Grove Beginner Kit for Arduino

Seeedより Grove Beginner Kit for Arduino を提供いただきました。
ありがとうございます!!

 

 

 

Grove Beginner Kit for Arduino

キットには以下のモジュールが含まれています。

  • LED
  • ブザー
  • OLED ディスプレイ
  • ボタン
  • ロータリーポテンショメータ
  • 光センサ
  • 音センサ
  • 温湿度センサ
  • 気圧センサ
  • 3軸加速度センサ
  • メインボード Seeeduino Lotus (ATMEGA328P-MU)

 

基板の上部は定規になっておりモジュールを切り離しても無駄なく楽しむことができそうです。

 

動作

キットに含まれるモジュールは基板上で結線されておりUSBケーブルからメインボードに給電するだけで、
パッケージを開いてすぐに使用することができました。

 

SHISEIGYO-3 eternal 改良 ーリアクションホイールへの道38ー

以前、電源を入れると点倒立するまで自律的に パラメータ調整しつつ動き続けるシステム”SHISEIGYO-3 eternal”を構築しました。

SHISEIGYO-3-eternal 爆誕 ーリアクションホイールへの道35ー

ここではSHISEIGYO-3 eternalに改良を施しましたので報告させていただきます。

 

 

筐体調整

モータの負担をさらに低減するために、角のRを大きくしました。

 

倒立調整

新筐体で倒立の調整を行いました。

角を丸めた効果でモータの負担が減り、点倒立成功確度も非常に高くなりました。

また、この動作をTweetしたところ
“マツモト”、”マツモトだ”と少し騒がれましたww

なんのことだろうと思ったのですが、アニメのキューブロボットのことだったようで思いっきり のっかってみました。
似ていますでしょうか? 😀 

 

eternal動作

前回同様に電源起動で自律的にモータ回転速度などを調整しながら点倒立動作し続けるようにしました。

 

おわりに

だいぶ点倒立の確度も向上しましたので現状でも見れいられるシステムになったかと思います。

電源線の巻き込みなどケア考えたいです。

どっかで展示してみたいなぁ 🙄 

SHISEIGYO-3-eternal 爆誕 ーリアクションホイールへの道35ー

電源を入れると点倒立するまで自律的に パラメータ調整しつつ動き続けるシステムを確立いたしました。

名付けて
“SHISEIGYO-3-eternal “
です。

動作は見ていただいた通りなのですが、ここでは開発の流れを紹介させていただきます。

 

 

筐体検討

SHISEIGYO-3は上部が解放された筐体となっていますが、SHISEIGYO-3-eternalは立方体の筐体を採用することにしました。

自律動作を実現するにあたり、モジュールはかなりの回数転倒する可能性があり筐体に強度が必要であろうと考えたためです。

とりあえずSHISEIGYO-3の外部筐体を立方体にしてみました。

点倒立は安定して実施できますが、筐体の重量が増したため起き上がり動作は出来なくなりました。

筐体軽量化

モジュールが極力軽くなるように、強度が落ちない程度に軽量化を目指しました。

 

ブレーキ改良

SHISEIGYO-3は以下のように3軸すべて一方方向への起き上がり動作しかできませんでした。

 

自律的点倒立実現のためには3軸すべてで左右どちらにも起き上がれることが望ましいです。
そこでバンドブレーキを改良し両方向への起き上がり機構を実現しました。

フライホイール検討

筐体の軽量化とブレーキの改良を実施しましたが、まだまだモジュールを自由自在に起き上がらせて動かすことはできませんでした。

慣性モーメント向上

そこでフライホイールの慣性モーメントを向上させて、起き上がり動作を実現させることにしました。

3Dプリンタでフライホイールにナットを追加できる治具を製作して慣性モーメントを増加させました。

 

これにより左右の起き上がり動作を実現することができました。

3Dプリント

フライホイールの慣性モーメント向上で左右の起き上がり動作が実現できそうでしたので3軸すべてに展開します。

しかし現状の直径120mmのホイールにバンドブレーキを実装すると、隣り合う面で干渉してしまい3軸に展開ができませんでした。

 

そこでホイールの直径を小さくすることにし、フライホイールを3Dプリンタで出力することにしました。
モータシャフト固定部のみ市販品を流用しました。

分子間力

フライホイールを3Dプリントすることでサイズやナットによる慣性モーメント調整は容易になったのですが、ここで大きな問題にぶち当たります。

3DプリントしたPLAフィラメント製のホイールがブレーキ時にバンドブレーキの革とくっつく現象が起きたのです。

 

この現象をtwitter上で問うたところ、分子間力でくっついているのではという助言をいただきました。
確かに以下の動画のように
 ・革ーPLA
 ・革ー紙(マスキングテープ)
 ・革ービニルテープ
と高分子っぽいものがくっつき、
 ・革ーAl
 ・革ーCu
はくっつかなかったのです。

そこでPLAフィラメントで出力したフライホイールはサイドに銅箔を張り付けて、この吸着を避けることにしました。

まさかこんなところで分子間力を目の当たりにすることになるとは。。。驚きました 🙄 。

 

筐体再検討

フライホイールを3Dプリントし直径を小さくして3軸すべてに改良ブレーキを搭載することができました。

 

しかし、フライホイールの重量が増したこともあり依然として縦横無尽にモジュールを動かすことはできません。。。。

いよいよ詰んだかとあきらめかけたとき以前製作したSHISEIGYO-1Rを思い出しました。

丸くすればさほどトルクなくても所望の角度に移動できたなと。。。

筐体の角丸めればいいじゃん!

筐体の角をできるだけ丸めて起き上がり時に必要なトルクの低減を行い、
無事に3軸の左右起き上がりを実現できました。

見た目も可愛いです 😛 

起き上がり辺倒立と点倒立も実現できました。

 

 

おわりに

ざっと以上のような流れでSHISEIGYO-3-eternalを実現することができました。

自律動作の精度や電源線の巻き込み防止などまだまだ課題はございますので
引き続き研究を続けていきたいと思います!

どっかで展示できればいいなぁ。

3軸 姿勢制御モジュール SHISEIGYO-3 基板製作 ーリアクションホイールへの道34ー

前回は3軸 姿勢制御モジュール SHISEIGYO-3に起き上がりボタンの追加などの改良を加えました。

1軸 姿勢制御モジュール 物理ブレーキの検証 ーリアクションホイールへの道12ー

今回はSHISEIGYO-3の制御基板を製作したので報告させていただきます。

 

 

基板設計

これまでSHISEIGYO-3はユニバーサル基板に手配線で構築しておりました。

配線がかなり大変なので基板を製作しようと思い立ちました。
これが私自身生まれて初めての自費製作基板となります (業務での基板製造経験はございます)。

EAGLE

PCB設計ツールにはFusion360でもお世話になっているAUTODESKのEAGLEを採用しました。

 

ESP32やIMUセンサMPU6050、ディスプレイモジュールを接続するだけの基板なので比較的簡単にできました。
モータが電流流れるのでモータ電源ラインだけ引き回しに注意しました。

EAGLEの使用方法は以下のサイトが非常に参考になりました。

https://tool-lab.com/mac-eagle-101-1/

 

基板製造

PCB製造はseeed社を使用しました。

2021年1月31に基板設計データをアップ・発注して2021年2月12に基板が到着しました。
工程も早くサイトでリアルタイムに確認できました。春節前に上がってよかったです。

費用は60×82mm 基板10枚で製造費$4.90、送料$19.33と非常に安くできました。

 

参考

 

基板実装

基板に部品を実装していきます。

 

基板によって非常にすっきりカッコよく仕上がりました。

 

動作

無事に動作も確認できました!

 

おわりに

ついに基板もできましたので、プログラムをブラッシュアップしてSHISEIGYO-3の製作レシピの執筆にとりかかりたいと思います。

それでは次の道でお会いしましょう!

Wio Terminal でカメラ画像を表示2 ー LovyanGFX 編 ー

前回はAIカメラのUnitVの撮影画像をビットマップで Wio Terminalに送信して表示しました。

UnitV で画像シリアル転送の味見 ーエッジAI活用への道 12ー

メモリ不足のためビットアップでは160×120サイズでの表示にとどまりましたが、
今回LovyanGFXライブラリを使用させていただきJPEGでの画像取得・表示が可能となり、
全画面表示(320×240)できましたのでご報告します。

 

 

UnitV用 MaixPy IDEコード

UnitVでの撮影画像(QVGA: 320×240)をJPEGに圧縮(圧縮率 50%)してUART送信します。

転送ボーレートは1152000にしました。
35ピンから画像ビットマップデータを送信しています。

Wio Terminal接続

前回と同様に、UnitVをWio Terminalの裏面40ピンヘッダの5Vとシリアル受信ピン(Serial1)に接続しました。

 

 

LovyanGFX ライブラリ

LovyanGFX は、@lovyan03さんによって開発された高機能・高速動作グラフィックライブラリです。

JPEG表示機能 も兼ね備えており、今回ありがたく使用させていただきました。
 

Arduino IDEのライブラリマネージャより簡単に導入できます。

Wio Terminal Arduinoコード

裏面のシリアルピン(Serial1)でUnitVからのJPEG画像データを受信します。

LovyanGFXのdrawJpg()でJPEG画像をWio TerminalのLCDに表示しています。

 

参考

 

動作

 

JPEG送受信&表示でカメラ画像をWio TerminalのLCDディスプレイ前面に表示することができました!!

Wio Terminal でカメラ画像を表示

Wio Terminalには320×240サイズのLCDディスプレイがついてますので
カメラ画像をリアルタイムに表示したいと思い、ここではAIカメラのUnitVを繋いでみました!

 

 

UnitV

以前 AIカメラ UnitVをM5StickCに繋いでLCD表示したことがございますので
今回はWio Terminalに表示してみました。

UnitV で画像シリアル転送の味見 ーエッジAI活用への道 12ー

MaixPy IDEコード

UnitVでの撮影画像(QQVGA: 160×120)をUART送信します。
demo_uart.py とdemo_camera.pyを参考にコーディングしました。

転送ボーレートは1152000にしました。
35ピンから画像ビットマップデータを送信しています。

 

 

Wio Terminal接続

UnitVをWio Terminalの裏面40ピンヘッダの5Vとシリアル受信ピン(Serial1)に接続しました。

Wio Terminal Arduinoコード

ディスプレイ表示については以下を参考にしました。
 https://wiki.seeedstudio.com/Wio-Terminal-LCD-Basic/

裏面のシリアルピン(Serial1)でUnitVからの画像データを受信します。

 

 

動作

カメラ画像をWio TerminalのLCDディスプレイに表示することができました。

全画面表示(320×240)もやってみたいのですが
ビットマップですとメモリが足りないので、jpeg表示もできるようになりたいですね。

Wio Terminal でUSB Host機能を堪能

Wio Terminal はUSB Host機能を有しUSBデバイスを接続することが可能です。

早速キーボードを繋いで試してみましたので、報告させてください。

 

 

USB Host

Wio Terminal でUSB Hostを使用するには USB Host Library SAMD が必要となります。
以下を参考にライブラリを導入しました。

キーボード接続

Wio Terminalにキーボードを繋いでみました。以下を参考に進めました。
 https://wiki.seeedstudio.com/Wio-Terminal-USBH-Keyboard/

USB-C OTG ケーブルを介してキーボードをWioに繋ぎます。

 

 

 

 

USB Host機能を使用時には給電とUSBシリアル通信ができないので、
Wioの裏面の40ピンヘッダを使用します。

 
USBシリアル変換ケーブルの電源は3.3Vに設定しています。

Serial1で出力してTera Termなどのシリアル通信ソフトでモニタ出来ます。

 

USB Host 動作

Wio Terminalにキーボードを繋いで、キーにブザーの音階を割り振って演奏してみました。

LCDディスプレイに音階も表示しています。

Arduinoコード

キーボード動作については以下を参考にしました。
 https://wiki.seeedstudio.com/Wio-Terminal-USBH-Keyboard/

ディスプレイ表示については以下を参考にしました。
 https://wiki.seeedstudio.com/Wio-Terminal-LCD-Basic/

ブザーについては以下を参考にしました。
 https://wiki.seeedstudio.com/Wio-Terminal-Buzzer/

 

注意

USB Hostのコードを書き込むと以降はWio TerminalのUSB-CコネクタとPCを接続しても、認識されません。

その際にはWio Terminal側面の電源ボタンをトトンと素早く2回下に下げて書き換えモードにしてください。
 

参考:Wio TerminalのUSB書き込みエラーの回復方法