データセンターのセキュリティ設備なんかで生体認証をよく見かけたりするんだけど、生体認証は個人でしか持ちえないものなので、事前に登録しておけばその人しか認識しない。 サーバールームのドアを開錠するのに指の指紋や静脈をつかったり、顔で認証したり、様々なやり方がある。今回久々にarduinoを引っ張りだして、顔認証ができないか頑張ってみた。
とりあえず顔の凹凸の距離を超音波で計って、認識したらLEDが光る様に設計した。
鼻の高さを図る為、超音波センサーをふたつつけることにした。
なぜarduinoを使ったかというと超音波センサーのVcc(電源電圧)が5Vだったから。
ラズパイは3.3Vなのでそういう使い分けをしている人も多いかもしれない。
あらかじめ鼻の高さを計算に入れておいて、超音波センサーの距離の差がその距離になったとき、LEDが点灯する様になっている。
arduinoのスケッチはこちら↓
int interval = 0;
double distance = 0;
int interval2 = 0;
double distance2 = 0;
int x = 0;
unsigned long duration;
void setup() {
pinMode( 2, OUTPUT );
pinMode( 3, INPUT );
pinMode( 4, OUTPUT );
pinMode( 5, INPUT );
pinMode( 7, OUTPUT );
Serial.begin( 9600 );
}
void loop() {
digitalWrite( 2, HIGH );
delayMicroseconds( 100 );
digitalWrite( 2, LOW );
interval = pulseIn( 3, HIGH );
distance = interval * 0.017;
Serial.println( distance, 1 );
delay(100);
digitalWrite( 4, HIGH );
delayMicroseconds( 10 );
digitalWrite( 4, LOW );
interval2 = pulseIn( 5, HIGH );
distance2 = interval2 * 0.017;
Serial.println( distance2, 1 );
Serial.println("cm");
delay(1000);
x = distance - distance2;
if (x < 2.5 && x>1.5) {digitalWrite( 7, HIGH );
}
else {digitalWrite( 7, LOW );
}
}
本来ならばパイソンか何かで画像を認識させるプログラムを駆使すればいいんだけど、そんな技術はもっていないので簡易的なサムシングでなんとかしてみた。
もっとセンサーを増やせば正確になるかもしれない。しかしながら超音波センサーのブレがすごいので閾値の幅を増やさないと動作は厳しかった。
よく考えると人間固有の情報は無数にあるから、センサー類が安くなっている今日、いろいろな方法で生体認証は可能かもしれない。こういうのはアイデアしだいでいくらでも作れそうな気がするけど精度を考えるとやはり自作するのは限界があるかなあと今回感じたアルティメットだったのであった・・・。
3月5日追記
→
raspberry piでちゃんとつくるとこんな感じです。
12月22日追記
→
M5stickVでやってみました。
8月14日
→
マスク警察作りました。
マスクなしだとパトランプが光ります