見出し画像

ArduinoとHuskyLens(AI camera)を使って顔認識機能で宝物箱をオープン!

(有料設定していますが、最後までお読みいただけます。応援の気持ちで投げ銭したい方は購入していただければ嬉しいです。)
思ったより簡単! HuskyLens(AI camera)を使って顔認識機能で宝物箱をオープン!

まず動画をご覧ください!

このような動画はお気に入りなら、チャンネル登録をお願い致します!

LikeとShareもよろしくお願い致します。

今回のプロジェクトで使った全ての3Dプリントしたパーツは私のオリジナルデザインです。

このプロジェクトで使うソースコードはGitHubに公開しました!

自由に使ってください。

HuskyLensについてもっと知りたい方は、こちらの本家の商品ページをご参照ください!

また購入したい方はこちらのアマゾンのリンクからもご購入いただけます。(下はAmazonのアフリエイトリンクです。このリンク経由して買い物をした場合、その売り上げの一部少しを私がもらいます。)

実は、私が他のAI Cameraもいくつか持っていますが。HuskyLensの使い方が圧倒的に簡単でした。

Huskylens (本家の商品販売サイトから引用)

上の写真の左側にあるコネクターで UARTかI2Cの通信ができます。
今回はI2Cを使っていました。


I2Cを使えば、Arduinoももちろん、他のマイクロコントローラーもGPIO搭載した小型コンピュータも(Arduino、ESP32、ラズベリパイなど)みんな簡単にHuskyLensと接続して、使うことができます。
たくさんのマイコンとコンピュータと接続できる(本家の商品販売サイトから引用)

Huskylensの心臓部は、AI chip Kendryte K210です。これだけでもう一つの高性能のコンピュータですね!

Kendryte K210についてこちらのサイトがよくまとめていますので、ご参考ください。

今回のプロジェクトがものが届いてから、考案、制作、YouTube動画の公開まで約1ヶ月かかりました。

とても楽しい過程で、このプロジェクトで参考しているサイトをご紹介します。

まず、上も話しましたが、本家の商品紹介ページです。HuskyLensの基本情報を知ることができます。https://www.dfrobot.com/product-1922.html

次は、HuskyLensのドキュメントサイトです。
HuskyLensの使い方、設定方法など、丁寧に解説しています。(英語)

https://wiki.dfrobot.com/HUSKYLENS_V1.0_SKU_SEN0305_SEN0336

チュートリアルとプロジェクトのページ:

また、今回は、16チャネルのサーボ拡張ボードを使っていますが、実際にサーボ一つしか動かしていないので、ちょっともったいないですね。
その拡張ボードの使い方はこちらを参考しています。

プログラムもこちらのプログラムを参考して、改造しました:

#include "HUSKYLENS.h"
#include "SoftwareSerial.h"

HUSKYLENS huskylens;
//HUSKYLENS green line >> SDA; blue line >> SCL
void printResult(HUSKYLENSResult result);

void setup() {
    Serial.begin(115200);
    Wire.begin();
    while (!huskylens.begin(Wire))
    {
        Serial.println(F("Begin failed!"));
        Serial.println(F("1.Please recheck the \"Protocol Type\" in HUSKYLENS (General Settings>>Protocol Type>>I2C)"));
        Serial.println(F("2.Please recheck the connection."));
        delay(100);
    }
}

void loop() {
    if (!huskylens.request()) Serial.println(F("Fail to request data from HUSKYLENS, recheck the connection!"));
    else if(!huskylens.isLearned()) Serial.println(F("Nothing learned, press learn button on HUSKYLENS to learn one!"));
    else if(!huskylens.available()) Serial.println(F("No block or arrow appears on the screen!"));
    else
    {
        Serial.println(F("###########"));
        while (huskylens.available())
        {
            HUSKYLENSResult result = huskylens.read();
            printResult(result);
        }    
    }
}

void printResult(HUSKYLENSResult result){
    if (result.command == COMMAND_RETURN_BLOCK){
        Serial.println(String()+F("Block:xCenter=")+result.xCenter+F(",yCenter=")+result.yCenter+F(",width=")+result.width+F(",height=")+result.height+F(",ID=")+result.ID);
    }
    else if (result.command == COMMAND_RETURN_ARROW){
        Serial.println(String()+F("Arrow:xOrigin=")+result.xOrigin+F(",yOrigin=")+result.yOrigin+F(",xTarget=")+result.xTarget+F(",yTarget=")+result.yTarget+F(",ID=")+result.ID);
    }
    else{
        Serial.println("Object unknown!");
    }
}

最後ですが、今回のプロジェクトは、GitHubに公開しましたので、自由に遊んでください。

今回のは、2022年の一番最初のプロジェクトですが、今年も楽しいものをいっぱい作っていく予定です!
よかったらフォローをお願いします。
YouTubeのチャンネル登録もよろしくお願いします!

では、また次のnoteで会いましょう!

ここから先は

0字

¥ 100

株式会社虹賢舎 CEO 著書:https://amzn.to/39KwlE4 技術ブログ:https://kokensha.xyz 機械学習 深層学習 Python /JS IoT Raspberry Pi ロボット TOEIC950 https://gosen.world