M5StackとAIカメラでインターフォンの画像から人の自動判別に挑戦!
こんにちは、ヨシケンです!
日頃より、人気のマイコンであるArduino互換モジュールのM5Stackシリーズを使って、さまざまな電子工作をしてきました。今回はM5Stickとカメラをつなげて、AI機械学習からそこに映っている人を自動で判別できる機能を搭載したカメラの製作を行っていきます。そして、そのカメラを家のインターフォン前にセットし、家族が帰って来たのか、配達の人なのかを自動で顔認識をした後、それをLINEに送って、人を待たせず対応できるようにするところまで紹介していきたいと思います。
今連載は全4回を予定しており、以下のような流れでご紹介していく予定です。
第1回: M5Stackとカメラを使ってできること、必要なもの(今回)
第2回: M5StickVカメラとM5StickCをセットアップする
第3回: M5StickVカメラでAI機械学習
第4回: カメラとM5StickCを連動させて、インターネットにも接続して完成!
今回の記事の流れ
1. M5Stackとカメラについて
M5Stackは中国・深センのM5Stack社が提供する、ESP32を使ったArduino互換開発モジュールです。Wi-FiとBLEが内蔵されたEspressif社のESP32基盤を使っているので、Arduinoと同様に開発が手軽にできるようになっています。M5Stackシリーズのほとんどのものは始めからWi-Fiなどがついているので、インターネットに接続するデバイスの開発を簡単に始められるのが特徴です。
今回は、M5Stackシリーズのうちメインの開発環境として小さなオレンジのM5StickC(写真中央)、カメラとしてはAIも使えるM5StickV(写真右側)を使います。なお、今回の連載では「M5StickC」を使用していますが、2022年10月現在は売り止めとなっているようで、後継機の「M5StickC Plus」がありますので概要欄にはそちらを紹介させて頂きます。
■スペック表
シリーズ | M5Stack Basic | M5StickC Plus | M5StickV |
外観 | |||
チップ | ESP32-D0WDQ6 | ESP32-D0WDQ6 | Dual 64 bit RISC-V CPU |
メモリ | 520KB RAM 16MB Flash | 520KB RAM 4MB Flash | 520KB RAM 16MB Flash |
無線接続 | Wi-Fi/Bluetooth | Wi-Fi/Bluetooth | 無し |
大きさ | 5.4 x 5.4 x 1.7 cm | 4.8 x 2.5 x 1.3 cm | 4.8 x 2.4 x 2.2 cm |
ディスプレイ | 320 x 240 カラーTFT (2 inch) | 135 x 240 カラーTFT (1.14 inch) | 135 x 240 カラーTFT (1.14 inch) |
センサ類 | MPU6886 (加速度センサ)
BMM150(地磁気センサ) マイク無 スピーカー有 microSD slot |
MPU6886 (加速度センサ))
マイク有 スピーカー無
|
OSV7740 Camera
MPU6886 (加速度センサ)) マイク有 スピーカー無 microSD slot |
バッテリ | 150mAh @3.7V | 120mAh @3.7V | 200mAh @3.7V |
参考価格 | 5,800円程度 | 3,500円程度 | 7,600円程度 |
それでは早速M5StickCとM5StickVカメラを接続して、インターネットに接続されたAIカメラモジュールを作っていきましょう。
2. このデバイスをつくるのに必要なもの
M5Stackとカメラを接続したカメラモジュールを作るために必要な機器は以下になります。
AI自動判別カメラ・デバイス部品群:
名前、説明 | デバイス |
---|---|
M5StickC Plus ESP32を搭載したArduino互換機。ディスプレイ、BLE、Wi-Fiおよびモーションセンサなどが始めから入っている。 |
|
M5StickV カメラとAI機械学習が可能なチップをセットにしたデバイス(ESP32は内蔵しない) |
|
カメラとAI機械学習が可能なチップをセットにしたデバイス(ESP32は内蔵しない) | 適宜必要に応じて |
これらの部品をそろえて、機械学習によるAI自動判別カメラを作っていきます。
3. デバイスの機能と学べること
今回のAI自動判別カメラでできることは以下のようなものがあります。またこれを作ることで学べる事項も列挙してみます。
AI自動判別カメラの機能:
# | 機能 |
---|---|
1 | カメラでの顔検知、AIでの人物判別 |
2 | 人が写ると自動的に写真撮影 |
3 | 撮影した写真をLINEに送付 |
4 | タグ付けされた顔情報から家内の機器を自動実行 |
作る事により学べること:
# | 学べる事 |
---|---|
1 | M5Stack/M5StickCのArduino IDEでの開発の仕方 |
2 | M5StickVカメラの使い方、開発方法 |
3 | M5StickCとカメラの連動方法 |
4 | M5StickCでのインターネット接続 |
5 | カメラ画像とAIの構築 |
4. M5StickCとM5StickVカメラの開発環境
今回はインターネットなどに接続する部分に、M5StickCを使用します。またカメラにはM5StickVを使用。この二つの機器の開発環境をセットアップしていきます。
M5StickCのセットアップ
通常、Arduino互換機で開発をおこなうときは、Arduino IDE統合開発環境を使います。M5StickCの開発でも同じものを使用しますので、ダウンロードページに行ってArduino IDEソフトウェアをダウンロード、インストールしてください。また、Device Plusのこちらの記事(Arduino利用編)も参考になります。
Arduino IDEのインストールが終わったら、ESP32ボードの設定をおこないます。こちらの記事の4. M5Stackの開発環境のセットアップを参照してみてください。セットアップが完了したら、パソコンとM5StickCをUSB-Cケーブルでつなぎます。
ダウンロードしたM5StickCライブラリにサンプルが幾つか付いているので、それを使ってみます。ファイル > スケッチ例 > M5StickCからサンプル・スケッチを選び、流し込んでサンプル・プログラムが動くか確認しておきましょう。
M5StickVのセットアップ
まず、M5StickVに電源を入れて動くかどうか確かめてみましょう。M5StickVとUSB Type-Cケーブルをつなぐと自動で電源が入るか、またはSDカード下のボタンを2回連続で押します。ケーブルは5V電源以上のものの方がいいようです。M5StickVに電源が入ると、デフォルトのプログラムが動き、写真のようにカメラの映像がLCD画面上見えるようになります。
次に、M5StickVで開発をおこなうための環境をセットアップします。M5StickVにはESP32のArduino互換環境が入っているわけではなく、Python系の開発環境を使用します。そのためにMicroPython環境をインストールしてください。
まずM5StickVのファームウェアを最新のものに更新しておき、こちらのM5SticVのホームページを確認します。 https://docs.m5stack.com/en/core/m5stickv
ここの中にあるファームウェアのページに遷移し、最新のファームウェアをダウンロードします。 https://docs.m5stack.com/en/quick_start/m5stickv/maixpy
次に、M5StickVにファームウェアを適用するために、Kflash_guiというツールをダウンロードし、パソコンにインストールしてください。
このKflash_GUIをインストールした後に、パソコンから立ち上げます。先ほどダウンロードしたファームウェアを、「Open File」のところで選び、「Brand」を”M5StickV”、「Port」を今つないでいるパソコンから認識されているポートを選択。そして「ダウンロード」を押して、ファームウェアを追加します。
これが完了すると、「Download Success」と出ればOKです。
次に、M5StickVのMicroPython開発環境である、MaixPy IDEのインストールをおこないます。以下のアドレスから、MaixPyのIDEをダウンロード、インストールしてください。
http://dl.sipeed.com/MAIX/MaixPy/ide/
このMaixPy IDEをインストールします。
インストール後、MaixPyを立ち上げると、以下画面のようなアプリケーションが立ち上がります。このアプリでM5StickVを使うために、メニューの「ツール」からM5StickVを選びます。
そして、M5StickVとパソコンをUSB Type-Cケーブルで接続します。アプリ左下の緑の接続ボタンを押すと、接続するためのポートを選ぶポップアップが上がります。ここでパソコンにつないだポートを選んで、OKを押してM5StickVの画面が見えたら、接続は完了です。
このように、画面と共に右側に色のヒストグラムが出てきます。これはhelloworld.pyプログラムが動いていて、見えている画像がM5StickVにも映っていると思います。
カメラに映った画像が、リアルタイムでM5StickV上に表示されるのが分かります。
次に、自分でも簡単なプログラムを作ってみます。以下のようなHelloM5StickVプログラムを、MaixPy上に書いて保存します。
# Hello M5StickV.py
import lcd
lcd.init()
lcd.draw_string(100, 100, "Hello M5StickV!", lcd.RED, lcd.BLACK)
これで左下の再生ボタンを押し、プログラムを実行して、M5StickVの画面上にこのような文字が出てくれば、最初のプログラミングがちゃんと動いていることになります。
5. まとめ
M5Stackシリーズは通常Wi-Fiも付いていて、インターネットに接続が簡単にできます。それにカメラをつけて、写真を撮影しインターネット上で共有できるようにします。カメラはM5StickVを使って撮影し、それをM5StickCに転送して、インターネット上に共有する仕組みです。
その中で今回は、M5StickCのセットアップと、M5Stick Vカメラの初期設定をおこないました。今後は、M5StickV側のカメラ、撮影、AI機能などの開発と、M5StickC側のインターネット接続の機能を作っていきます。
お楽しみに!
今回の連載の流れ
第1回: M5Stackとカメラを使ってできること、必要なもの(今回)
第2回: M5StickVカメラとM5StickCをセットアップする
第3回: M5StickVカメラでAI機械学習
第4回: カメラとM5StickCを連動させて、インターネットにも接続して完成!