忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

M5stickVで画像認識 → GPIOを動かす

M5stickを購入してはや1か月、やっとまともに動かせるようになってきました。

今回は画像認識→GPIO制御をやっていきます。

まずはM5tsticVのGROVEケーブルが必要になってきます。



一応コネクタも紹介しておきます。


そしてブレッドボード、こちらはなんでもいいです。



ここで注意していただきたいのですが、直接接続できません。抜け防止の引っかけはニッパーで切って強引に入れました笑 (手配ミス??)

あとはLEDがあればハード的な準備はOK。画像判別の学習ファイルはこちらで作成していきます。

V-trainingで作成されたboot.pyを下記のようにいじっていきます。
import image
import lcd
import sensor
import sys
import time
import KPU as kpu
from fpioa_manager import *
import KPU as kpu
lcd.init()
lcd.rotation(2)
try:
    img = image.Image("/sd/startup.jpg")
    lcd.display(img)
except:
    lcd.draw_string(lcd.width()//2-100,lcd.height()//2-4, "Error: Cannot find start.jpg", lcd.WHITE, lcd.RED)
task = kpu.load("/sd/作成した学習ファイル名")
labels=["1","2","3","4","5"] #You can check the numbers here to real names.
fm.register(34, fm.fpioa.GPIOHS0, force=True)
fm.register(35, fm.fpioa.GPIOHS1, force=True)
pinout34 = GPIO(GPIO.GPIOHS0, GPIO.OUT)
pinout34.value(0)
pinout35 = GPIO(GPIO.GPIOHS1, GPIO.OUT)
pinout35.value(0)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((224, 224))
sensor.run(1)
lcd.clear()
while(True):
    img = sensor.snapshot()
    fmap = kpu.forward(task, img)
    plist=fmap[:]
    pmax=max(plist)
    max_index=plist.index(pmax)
    a = lcd.display(img)
    print(labels[max_index])
    b = int(labels[max_index])
    if pmax > 0.85 and b == 1: #このbを変更すればclassを変更できます。
        lcd.draw_string(50, 40, "Accu:%.2f Type:%s"%(pmax, labels[max_index].strip()))
        print('max!!')
        pinout34.value(1)
        time.sleep_ms(1000)
        pinout34.value(0)
a = kpu.deinit(task)

制御できるのはGPIO 34なので、判別したのがtype1であれば3.3Vを出力していきます。




これで画像を認識→GPIO出力ができるようになりました。(マウスを学習させてます)

顔認証からドアを開けるといったこともできそうですね。何mA流せるか不明ですが…


10月6日 M5stick5本体のLEDで光らせてみました。









拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30