「UnitV」タグアーカイブ

Wio Terminalと私

すき 0
0

HomeMadeGarbage Advent Calendar 2020 |15日目
Wio Terminal Advent Calendar 2020|15日目

大変良い機会を与えていただきましたので、ここで Wio Terminalで実施したことをまとめてみたいと思います。


 
 

搭載機能確認

Wio Terminalには各種センサやインターフェースが搭載されておりますので
そちらの基本動作を楽しみました。

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

照度センサ

照度センサの値でディスプレイの色の輝度をコントロールしてみました。

ブザー

上部の3つのボタンと前面の5Wayスイッチでブザーをコントロールしてメロディーを奏でる楽器を作ってみました。

赤外線LED

赤外線LEDでTVリモコン操作を試してみました。
5Wayスイッチの上下で音量を、プッシュで電源操作します。

 

応用

様々な機能を有するWio Terminalを活用して、色々応用してみました。

パルスオキシメータ制作

心拍数センサ MAX30105をWio Terminalに接続してパルスオキシメータにしてみました。

Wio Terminal でパルスオキシメータを制作

 
酸素飽和度(SpO2)、脈拍数と心電図を表示しています。
心拍に合わせてブザーで音も出しています。

USB Host機能

Wio Terminal はUSB Host機能を有し、USB-C OTG ケーブルを介してキーボードを繋いでみました。

Wio Terminal でUSB Host機能を堪能

 

Wio Terminalにキーボードを繋いで、キーにブザーの音階を割り振って演奏してみました。
LCDディスプレイに音階も表示しています。

カメラ画像表示

Wio TerminalにAIカメラのUnitVを繋いでカメラ画像をLCDディスプレイに表示してみました。

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

 
Wio TerminalとUnitVはシリアル線でつないでUART通信します。
LCD表示には@lovyan03さんによって開発された高機能・高速動作グラフィックライブラリLovyanGFXを用いました。

 

カメラからのJPEG画像をシリアルで受信してWio TerminalのLCDディスプレイに表示することができました。

M5Stackと私

0
0

HomeMadeGarbage Advent Calendar 2020 |13日目
M5Stack Advent Calendar 2020|13日目

今年は多くのM5Stack社製品を入手し堪能させていただきました。

入手した製品とその活用を振り返り、今後のM5Stack製品の活用への自身の触媒にできればと考えております。
私はこの振り返りをスイングバイと呼んでいます。

皆様の参考にもなれれば幸いと存じます。

 

 

UnitV

K210とカメラのみというシンプルなユニットで一目ぼれして購入しました。

画像有線シリアル転送

UnitV で撮影した画像をシリアルでM5StickC に転送して表示してみました。

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

 

UnitVとM5StackC 間はUnitVに付属された4ピンコネクタケーブルでつないだだけです。
UnitVにはバッテリは搭載されていませんがM5StackCから電源供給され駆動できます。

画像無線ストリーミング

UnitVと接続したM5StickCをサーバにしてUnitV撮影映像をストリーミングいたしました。

UnitV と M5StickC で動画ストリーミングを堪能 ーエッジAI活用への道 13ー

 
UnitVの撮影画像をストリーミングしてスマホのブラウザで表示しています。

画像認識

以前に作成したオリジナルの金魚認識モデルを用いてUnitVで金魚を認識してその座標から金魚のステータスを判別できるか検証しました。

オリジナル金魚認識モデルの生成 ーエッジAI活用への道 3ー

 
水槽の横にUnitVを配置して金魚の座標データを取得します。

 
取得した座標のグラフより1時~5時の間で明らかに移動量が減っており、就寝していることが見て取れました。

 

 

ATOM Echo

コンパクトな筐体にマイクやスピーカが搭載された高機能な製品です。

 
ATOM Echoを用いてコンシェルジュロボットを製作しました。

定期的に発話させるmp3のURLをラズパイサーバからATOMにUDPで送信します。
URLを受けてストリーミング再生し、その後にATOM Ech0に接続した気圧センサの測定値をサーバにUDPで返します。

気圧測定値を受けてサーバで気圧報告用の発話mp3 URLをATOMに送ってストリーミング再生します。

ATOMでのストリーミング再生中にサーボをランダムで動かしてティラノくんの口を動かします。

 

ATOM Matrix

25セルのLEDマトリクスが搭載されたコンパクトな製品です。

バーサライタ

LEDマトリクスがついていますのでバーサライタを作ってみました。

回転計を自作

 
筐体は3Dプリンタで出力して作製しました。

 

上のバーサライタではLEDを5個しか使用せずもったいなかったので、LEDマトリクスを分断して25個全て使用するバーサライタも製作しました。

NeoPixel でバーサライタ検討

 
ATOM MatrixのLEDマトリクス基板をぶった切って、バー状にしました。
4mmピッチ 25セルのLEDバーが仕上がりました。
(こっちのほうがよっぽどもったいない)

 
1線式のNeopixcelですので高速で高分解能表示は難しいですが、狭ピッチなLEDバーができましたので、それなりのアニメーション表示が実現できました。

SHISEIGYO-1

ATOM Matrixを用いて1軸 姿勢制御モジュールを製作しました。

1軸 姿勢制御モジュール SHISEIGYO-1 完成 ーリアクションホイールへの道14ー

 
ATOM Matrixに搭載された慣性センサMPU6886で姿勢角を計測してモータを回して倒立動作を維持するモジュールです。

 
製作レシピも以下で販売しておりますので宜しくお願い致します(税込み 500円)。

https://shop.homemadegarbage.com/product/shiseigyo-1_recipe/

 

M5Stack Core2

オリジナルのM5Stackの最新版です。

有難いことにM5Stack社様より提供いただき、2020/8/20には手元にあったので
日本一早くM5Stack Core2に触れていたかもしれません。

 
SHISEIGYO-1を3軸に拡張させたSHISEIGYO-3にM5Stack CORE2を使用してみました。

SHISEIGYO-1 作例と代替部品の紹介

 

 

こちらは安定した起き上がり点倒立を目指して目下開発中です。

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

0
0

前回は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 でカメラ画像を表示

0
0

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表示もできるようになりたいですね。

UnitV で金魚ステータス判別テスト ーエッジAI活用への道 15ー

0
0

金魚水槽監視システムがだいぶ形になってきまして、いよいよ本題のエッジAIの活用です。

ここではUnitVで金魚を認識してその座標から金魚のステータスを判別できるかの検証です。
金魚は寝るとプカ~っと水中で浮いているので、就寝中は座標が変化しないはずです。

それでは実験スターティン
 

 

構成

UnitVとM5StickCを4ピンケーブルで接続して、UnitVで金魚を認識して 座標をUARTでM5StickCに送ります。

M5StickCは受け取った金魚座標をWiFiでUDPブロードキャストします。

 

オリジナル金魚モデルで画像認識

金魚の認識モデルは以前に作ったお手製のものを使用します。

オリジナル金魚認識モデルの生成 ーエッジAI活用への道 3ー

ファームウェアは M5StickV_Firmware_1022_beta.kfpkg を使用し、 Kflash_GUIで書き込みました。

金魚モデル(kmodelファイル)はアドレス0x600000に書き込みました。

UnitVコード(MaixPy IDE)

コードはYolo-digit-detector/micropython_code/racoon_detector.py を参考にして作成し、MaixPy IDEで書き込みました。

金魚を認識して その中心座標(x, y)をUART送信します。
画角は224×224。

 

M5StickCコード(Arduino IDE)

UnitVからの金魚座標をM5StickCで受けてUDPで送信しました。

 

実験の様子

UnitVで水槽を監視して金魚ちゃんの位置を認識します。

 
水槽の横にUnitVを配置してデータをとってみました。

座標プロット

M5StickCからUDP送信される座標(x:横、y:縦)をPCで受けてプロットいたしました。

以下、縦軸が$\sqrt{x^2+y^2}$ 横軸が時刻のグラフです。

  • 2/11 14:50~2/12 7:40

     
  • 2/12 22:48~2/13 9:36

グラフより1時~5時の間で明らかに移動量が減っており就寝していることが見て取れます。

意外とガッツリ休んでるんですねww
なんだか可愛い 😀 

おわりに

AIカメラで金魚を認識し、その座標から移動量の推移を監視して金魚の就寝が判別できそうだという結論に至りました。

次はこの移動量から就寝を検知して自動動画撮影を目指したいと思います。

ではまた!
 

参考

次の記事

金魚水槽のフィルターをブクブクから外掛けフィルターへグレードアップ

金魚水槽監視システム製作開始 ーエッジAI活用への道 14ー

0
0

さてこれまではAIカメラ UnitVを吟味してまいりましたが、
いよいよ金魚水槽監視システムの製作に取り掛かりたい思います。
 

現行のシステム

これまで はMaixduinoを用いて金魚水槽のLED照明の制御、水温/pHの測定を実施しておりました。


 

LCDに水温/pHを表示し、UDP送信してログ管理したりしておりましたが、
UDP受信やカメラ撮影映像のストリーミングができないままでおりました。

またセンサの接続にマイコンを挿入したり冗長な構成でもございました。

 

新規システム

新たなシステムでは以下のような構成としました。

  • UnitVで金魚を認識
  • ESP32:LED、温度/pHセンサ制御。UnitVからのシリアル受信。
        Webサーバとしてブラウザ表示。
  • ESP32-CAM:動画ストリーミング

UnitVで金魚認識と動画撮影を実施しようと思いましたが、速度でないので断念しました。

部品

  • AIカメラ UnitV
  • ESP-32S

  • ESP32-CAM

  • 防水温度センサ DS18B20
  • pHセンサ PH-4502C
  • フルカラーLED Neopixel (WS2812B ) 48セル

ESP32-CAM

以下を観て速攻Amazonで購入しました。安すぎる!

Arduino IDEでの設定は以下の通りです。書き込みにはUSBシリアルコンバータが必要です。

技適未取得機器を用いた実験等の特例の届出

私が購入(2020/1/18)したESP32-CAMには技適マークはついておりませんでした。

ですので、2019年11月20日よりスタートし、技適マークがなくても申請すれば180日間使用できると話題の
“技適未取得機器を用いた実験等の特例の届出”を提出してみました。

以下のサイトより届出書を作成し、最寄りの総合通信局へ郵送しました。
金曜日に郵送して、翌週の月曜日にメールにて承認されました。簡単ですね。
 https://www.tele.soumu.go.jp/j/sys/others/exp-sp/index.htm
 

あとはサンプルコードを書き込んで、ESP32-CAMのIPにアクセスするだけです。
画像サイズやホワイトバランスなど詳細設定がブラウザから実施できます。すごい!

 

現状の動作

まだUnitVによる金魚認識は導入しておりませんが、現状のシステム動作をご覧ください。

ブラウザ画面

ESP32-CAMのストリーミング画像を表示し、
水槽のLEDの輝度調整や水温/pHを表示します。

 

 

当然スマホからも閲覧・操作可能です。

今後課題

  • 水温/pHの値のブラウザ定期更新表示
  • UnitVによる金魚の位置座標の取得及びステータスジャッジ(就寝中とか)
  • ESP32-CAMの調整画面のマージ
  • データログ取得・管理

参考

LED スライダ制御

ESP32アナログ入力

ESP32 IP固定

Fritzingパーツ

次の記事

金魚水槽のフィルターをブクブクから外掛けフィルターへグレードアップ

UnitV と M5StickC で動画ストリーミングを堪能 ーエッジAI活用への道 13ー

0
0

前回はUnitVで撮影した画像をシリアルでM5StickC に転送してLCD表示いたしました。
今回はM5StickCをWebサーバにしてUnitV撮影映像をストリーミングいたしました。

 

構成

例のごとくUnitVとM5StickCをUnitVに付属された4ピンコネクタケーブルでつなぐだけです。

UnitVで撮影した映像をjpeg圧縮してM5StickCにUART転送して、
M5StickCでWiFi配信いたします。

 

参考

今回はnnnさん(@nnn112358)のツイートや記事をおおいに参考にさせていただきました。
有用な情報を公開していただき本当に感謝しかありません。

UnitVコード(MaixPy IDE)

UnitVで撮影jpeg画像(320×240)を10バイトの開始データと共にUART送信します。

JPEGの圧縮率は50%にしました。
転送ボーレートは1152000にしました。

M5StickCコード(Arduino IDE)

 ESP32のWebサーバのサンプルコードHelloServer.ino とnnnさんのサーバコードを参考にコーディングしました。

起動後、以下にアクセスで静止画と動画をweb表示します。
 http://[M5StickCのIP]/pic:静止画表示
 http://[M5StickCのIP]/stream:動画表示 

 

動作

念願のUnitVによる撮影映像をストリーミング配信することができました!

おわりに

さて、だいぶ回り道しましたがUnitVとの距離はかなり縮まったと思います。
次回からはやっとハイテク金魚水槽システムの実現に向けて検討を開始したいと思います。

それではまた

次の記事

金魚水槽監視システム製作開始 ーエッジAI活用への道 14ー

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

0
0

前回よりUnitV を使用したハイテク金魚水槽システムの実現に方向転換しているこの道。
今回はUnitV で撮影した画像をシリアルでM5StickC に転送して表示してみます。

 

構成

UnitVとM5StickCをUnitVに付属された4ピンコネクタケーブルでつなぐだけです。

 

動作

早速動作をご覧ください。

撮影画像(64×160)をUARTでM5StickCに送って表示しています。FPS 3ってところでしょうか。。

あとなんか色がおかしいです。おそらく転送や受信でおかしいことをしているのでしょう。。。俺のことだし

ではコード(間違い探し)をご覧ください。

UnitVコード(MaixPy IDE)

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

転送ボーレートは921600にしました。

参考

M5StickCコード(Arduino IDE)

 64ピクセル × 160ピクセル × 2バイトの撮影画像を受信してLCDに表示します。

参考

 

おわりに

送受信コードのどこかに問題があるために色がおかしいですが、撮影画像のビットマップUART転送は現実的ではないことを実感として得ることができました。

次回は圧縮してWiFi転送なぞを試してみたいです。

ではまた

追記

色修正 (2020/1/17)

M5StickCのLCD表示の際に色がおかしかった原因がわかりました。

M5StickCコードの23行目で2バイトの色データ生成しているのですが、
ビットシフトの時に16ビットにキャストし忘れてました。。

 

無事に色が正常に表示されるようになりました。

色修正2 (2020/1/18)

ご指摘がありました。ありがとうございます!

その通りでした。単純に()するだけで改善しました。

 

ビットシフトより足し算の方が演算の優先順位が高い!

勉強になりました。

ボーレート変更 (2020/1/18)

転送ボーレートを921600 → 1152000 (1M)にしてみました。

少し早くなったかな。

あとUnitVの撮影画像をサイズ変更して出力すると左上に偏ります。。 sensor.set_framesize や sensor.set_windowing が中央でクロップしてくれないんです。。

なんだかなぁ 🙄 
 

参考

copy() (2020/1/18)

これでカメラ中央の絵を取り扱えるようになったが、VGA取り込んでいるので当然遅い。。。

次の記事

UnitV と M5StickC で動画ストリーミングを堪能 ーエッジAI活用への道 13ー

UnitV をゲットしました! ーエッジAI活用への道 11ー

0
0

素晴らしい金魚水槽システムを目指して歩んできたこの道。
これまではSipeed Maixduino での構築を目指しておりました。

MaixduinoはK210に加えてESP32が搭載されており無敵のマイコンだと思うのですが、Pythonでのマイコン操作になれていないためどうしてもUDPでのデータ受信や映像のストリーミングができず頓挫しておりました。

そんなおりに大変良い製品の発売がM5Stack社より発表されました。

 
K210とカメラのみというシンプルなユニットのUnitVです。
画像認識はこいつに任せて、あとの機能は外部に搭載してハイテク金魚水槽システムの実現を目指すことにします。

 

UnitVの購入

初めてAliExpressでお買いモノしました。

12/6に購入して1/14に到着しました。いやー待った。お待たせし過ぎたかもしれません。
 

 

初期設定

以下を参考に各種設定しました。
 UnitV Quick Start

ファームウェアは M5StickV_Firmware_1022_beta.kfpkgKflash_GUIで書き込みました。

プログラミングは MaixPy IDE で実施するのですがバージョンはv0.2.4じゃないとうまくいかないようです。

オリジナル金魚モデルで画像認識

早速、依然作ったオリジナル金魚モデルで画像認識を試してみました。
結論から申しますと全く問題なくUnitVでも動作いたしました。

オリジナル金魚認識モデルの生成 ーエッジAI活用への道 3ー

 

Maixduinoの時と同様に、作った金魚認識モデル(kmodelファイル)を書き込みます。

 

コードはYolo-digit-detector/micropython_code/racoon_detector.py を使用します。MaixPy IDEで書き込みました。

また画面方向調整のためコードに以下の挿入・変更施しました。

動作

Maixduinoと同じように動きました。
LCDはないのでMaixPy IDEの画面で動作確認しました。

 

UnitVにはNeopixelが搭載されておりますので夜間撮影時の照明となるか試してみました。

 

照明として使えそうですが、ちょっと金魚がビックリしてますねw
 

シリアル通信

今後UnitVを外部端末と接続して色々するための準備として、まずはUARTでのデータ送信を試してみました。

UnitVに付属されてきた4ピンケーブルでM5StickCに接続して通信してみました。

動作

UnitVのボタンA, Bを押すとLEDの色が変わり、UARTでデータをM5StickCに送信します。
データを受けたM5StickCはデータに応じて画面が変わります。

UnitVコード(MaixPy IDE)

UnitVでUART送信します。demo_uart.py を参考にコーディングしました。
ボタンA, Bを押すとLEDの色を変えて それぞれ文字A, Bを送信します。

M5StickCコード(Arduino IDE)

UnitVからの文字を受けてLCDの背景色を変えて、文字を表示します。

 

参考

おわりに

エッジAI活用への道はこのたび方向転換しUnitVの導入の検討を開始しました。

さてうまくいくのでしょうか?道は続きます。

ではまた

次の記事

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