XIAO ESP32S3 Senseを使ってみる その1(カメラ)

はじめに

 今回はXIAO ESP32S3 Senseを使ってみました。XIAOシリーズの小型マイコンで、拡張コネクタを差すとカメラやSDカード、マイクを取り付けることができます。よくそこまで収まりますね...

 カメラモジュールは熱くなるという印象があります。ArduCAMのストリーミングを試したときはチップが熱くなって、動作が鈍くなっていました。S3 senseはそのときよりも安定しているように感じています。

▼こちらの記事で詳しく検証されていました。

https://tamanegi.digick.jp/computer-embedded/mcuboa/xiaos3/

▼最近設計していたRumiCar-C3にカメラを搭載しようかなと思っています。XIAO系はピンの互換性があるのも便利ですよね。

https://protopedia.net/prototype/5030

▼以前MQTT通信、HID機能を試したときも使いました。

ESP32でMQTT通信(XIAO ESP32S3、Node-RED、HIDキーボード)

はじめに  今回はXIAO ESP32S3でMQTT通信を使ってみました。Node-RED MCUでMQTT通信を使ったことはあるのですが、今回はArduino IDEでプログラムを書き込んでいます。  …

概要

▼SWITCH SCIENCEの販売ページはこちら。

▼カメラはケーブルを延長したものがありました。DigiKeyで注文中です。

https://www.digikey.jp/ja/products/detail/seeed-technology-co.,-ltd/114993115/21277047

▼公式のGetting Startedはこちら

https://wiki.seeedstudio.com/xiao_esp32s3_getting_started/

 円形ディスプレイも買ってみたのですが、また後日使ってみようと思います。

▼円形ディスプレイもGetting Startedがあります。ボタン電池が取り付けられるなと思っていたら、RTC用みたいですね。

https://wiki.seeedstudio.com/get_start_round_display/

 Getting Startedの下のほうに、3Dモデルも用意されていました。これはありがたいです。

▼Prusa MK4の記事でも紹介していました。スナップフィットが使われていて、パチッと止まります。

Prusa MK 4を使ってみる(3Dプリンター)

はじめに  ついに念願のマイ3Dプリンターを購入しました!Prusa MK4!  知り合いの方からPrusaの話を聞いていたのですが、Maker Faire Kyoto 2023のときに実物を見るこ…

 microSDカードが深く差さらないので、力が加わると折れる可能性はありそうです。

▼Getting StartedのApplicationsに面白そうなサンプルがいくつかあります。こちらはGoogle CloudのサービスとChat GPTも使っているみたいですね。

https://wiki.seeedstudio.com/xiao_esp32s3_speech2chatgpt/

プログラムを書き込むときの注意点

 ポートが認識しない場合があるのですが、BOOTボタンを押しながら電源を入れてみてください。ESP系だとよくやる方法です。

 リセットボタンとBOOTボタンの両方を押した状態で、リセットボタン→BOOTボタンの順に離すのが楽かなと思います。

▼こちらでも言及されています。

 この手順を踏まなくても、ポートを認識する場合もあります。拡張コネクタを取り付けた状態だとボタンが押せないので、取り外すことになるのは不便ですね。しかし、小型化には替えられない...

サンプルプログラムを試してみる

▼GitHubのリポジトリはこちら

https://github.com/limengdu/SeeedStudio-XIAO-ESP32S3-Sense-camera/tree/main

 Code ->Download ZIPでプログラムをダウンロードできます。inoファイル以外に、camera_pins.hなどのヘッダファイルが必要です。

 inoファイルのプログラムをコピー&ペーストしただけではコンパイルできないのでご注意ください。

写真を撮ってSDカードに保存する

▼take_photosを試してみます

https://github.com/limengdu/SeeedStudio-XIAO-ESP32S3-Sense-camera/tree/main/take_photos

 デフォルトでは撮影周期が1分になっています。撮影された写真は、SDカードに保存されます。

 今回は1秒周期で撮影してみました。それほど熱くなっていないように感じました。

▼撮影してみた写真。周囲の明るさや焦点距離の調整が必要かも?

▼動かしていると画像がぶれます。静止させておいた方が安定します。

 プログラムの画質を変更して、UXGA(1600×1200)にしてみました。おそらく一番高い画質なのですが、撮影しようとすると以下のエラーが出ました。

 PSRAMが有効かどうかでプログラムが分岐していたので、PSRAMを有効にすると実行できました。

▼ToolsのPSRAMで変更できます。

▼あんまり変わっていないような気もします。

▼ちなみに、私のiPhone8で撮影した写真はこちら。

Webサーバーを起動してパソコンで映像を見る

▼CameraWebServerを試してみます

https://github.com/limengdu/SeeedStudio-XIAO-ESP32S3-Sense-camera/tree/main/CameraWebServer

 WiFiのSSIDとパスワードを設定してください。シリアルモニタにアドレスが表示されるので、パソコンのブラウザからアクセスします。

▼ブラウザで表示した様子。左下のボタンで写真の撮影と、ストリーミングの開始を選択できます。

 設定項目が細かいですね。Gray Scaleにしたり、画質を変更したりできます。それ以外の設定項目はよく分からない...

 画質が高すぎるとやはり処理が重くなるのか、飛び飛びになっていることがありました。

 ちなみにFace Detection、Face Recognitionは画質が高すぎると実行できません。エラーが出ました。処理が重くなりすぎるのかもしれません。

▼画質の選択肢もいろいろあります。

▼Saveボタンを押すと、パソコンに画像が保存されました。

最後に

 カメラの動作がどんな感じなのか分かったので、ロボットに搭載してみようと思います。Webサーバーで取得したカメラの映像をもとに、さらにパソコン側で画像処理を行いたいところです。

 マイクもあるので、音声ファイルもWiFi経由で取得したいですね。LiPoバッテリーからの給電でも安定して動作するのでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です