Google Sitesがいつの間にか更新されていたので、これを機にHPを新しくしました。
2024年3月20日水曜日
2022年12月11日日曜日
コインアクセプタの中身はどうなっているのか
コインアクセプタの仕組み
コインアクセプタは投入されたコインをその直径で判断していると思われますが、実際にはどのような仕組みでコインの種類を判断するか知っていますか。解説したページがあったので紹介します。
Coin Acceptors Are Higher-Tech Than You Think
Coin-operated machines have a longer history than you might think. Ancient temples used them to dispense, for example, holy water to the faithful in return for their coins. Old payphones rang a bell when you inserted a coin so the operator knew you paid.
リンク先にある解説動画は以下です。
- スピード
- 直径
- 材料
スピード
直径
材料
まとめ
2020年12月17日木曜日
マスクをした顔を認識する(OpenCV)
Ogaki Mini Maker Faire 2020で顔認識を使用した作品を展示しました。昨今のコロナ状況下で顔認識するためには、マスクをした人の顔を認識する必要があるのですが、ここではどのようにそれを実現したのかを記載しておきます。
使用するシステムはRaspberryPi3B+で、ネットワークなしのローカルで完結する構成にしました。持ち運びや設置などの取り回しが容易になるからです。その代わりRaspberryPiではPCなどに比べ処理性能が制限されます。また、フリーで使用できるライブラリということで顔認識にはOpenCVを使用することにしました。
同様にフリーで使用できる顔認識がdlibというものに含まれており、こちらは68点のランドマークを使用した高性能な顔認識が使用できます。しかし、残念ながらマスクなしが前提となっており、今回は候補から外れます。
OpenCVには"haarcascade"というかの有名なHaar-like特徴量を使用した認識モデルが実装されています。同時に学習済みのデータも含まれているのですぐに認識機能を使用することができます。これら学習済みのデータの種類についてはこちらが参考になります。
この学習済みデータには正面の顔を認識するものがあるのですが、これはマスクをしていない顔を学習したデータなので、マスクをした顔を認識しようとすると性能が低下します。ということで今回は両目の認識をすることで顔認識の代替とすることにしました(マスクをしていても両目は見えるので)。目を認識する際に使用できる学習データは「右目」と「左目」があるのですが、正直目を個別に認識をすると統合処理が面倒なのでどうしたものかと思っていましたが、こちらに"haarcascade"に対応した「両目」の学習済みデータがありました。どうやらこれらの学習済みデータはもうすでに不要と判断されOpenCV本体からは削除されているようです(他にも口や鼻がパーツとして認識できるものもあります)。
OMMF2020(屋内)で両目の認識("haarcascade_mcs_eyepair_big.xml"を使用)を動作させてみた雑感を以下に記載しておきます。
- 認識しやすい人と認識しにくい人に分かれる
認識しやすい人は顔の向きに関係なく安定して認識するが、認識しにくい人ははっきり正面を向いた顔を映さないと認識できない傾向がある - メガネをしている人が認識しにくい
おそらく目の部分が隠れるからだと思われる - 誤認識が発生する
遠方に全身が映っている複数の人の足元に誤認識が発生した
"haarcascade"で学習済みデータを使用する場合、手軽に認識機能を実現できるのは良いのですが、精度や誤認識が問題となったときに柔軟な対応ができないということがあります。認識の尤度の閾値設定ができず、設定ができるのは結果の重複数閾値と最小サイズぐらいです。あとは認識結果サイズによる誤認識の切り捨てぐらいしかできません。今回の展示は認識できれば良い程度のものであったため、認識しにくいことや誤認識に関しては特に問題とはなりませんでしたが。
2020年10月25日日曜日
コインアクセプタの解析
この記事は2012年に別のHPで公開した内容です。今は未公開にしているのですが、たまにアクセスされているようなので、こちらで公開します。ここで解説しているコインアクセプタはAdafruitのものですが、おそらく別のコインアクセプタも仕様は同じかと思われます。参考までに。Amazonだと例えば以下のようなものが該当すると思います。
ここではAdafruitから購入したコインアクセプタの使い方を解説しています。 具体的には以下の商品です。
- Coin Acceptor - Programmable 4 Coin Type ID: 787 - $39.95 : Adafruit Industries, Unique & fun DIY electronics and kits
届いた現物が以下の写真になります。
- 4種類のコインを登録できる
コインの直径を認識しているみたいなので、登録できるのは直径の違う4種類のコインということになります。ですが、日本硬貨の5円と50円のような穴の開いたコインはうまく認識できないようです。 - 登録したコインのみを認識して選り分けることができる
投入したコインが登録されたものだったら後ろの排出口に、登録されていないものだったら前面の返却口に出力できます。 - 認識したコインの種類を外部にパルスとして出力できる
これによって何のコインが投入されたか知ることができます。



- 外部ピン(4本)
※接続するコネクタはワイヤ付きで同封されています名称 説明 DC12V +12V COIN 認識したコインの種類をパルスで出力
パルスの数はプログラム可能(任意数が出力できます)
パルスはTTL?(5Vレベル)っぽいです
パルスについては後に掲載ありGND GND COUNTER 不明
謎です - 2接点スライドスイッチ
"NO"と"NC"の記載あり(ノーマリーオープン/コネクタ?)。よくわからないのでデフォルトの"NO"から触らず。 - 3接点スライドスイッチ
- Fast
- Medium
- Slow
上記3つの設定から出力パルスの長さを選択できます(後述) - "SET"ボタン
- ”ADD"ボタン
- 7セグ
- ”MINUS"ボタン
※4から7は使用前の設定で使用します
- ”ADD”ボタンと”MINUS”ボタンを同時に1秒以上押す
ボタンを離すと7セグに”A”が表示されます。 - ”A"が表示されたら”SET"ボタンを1秒以上押す
”SET"ボタンを離すと7セグに”E"が表示されます。 - ”E"が表示されたら”ADD"ボタンと”MINUS"ボタンで認識するコインの種類を決め、”SET"ボタンを1秒以上押す
このモジュールは4種類のコインを認識できるので1から4が設定可能です。”SET"ボタンを離すと”H1"が表示されます。”H1"の”1”はコインの1種類目を意味していると思います。 - ”H1"が表示されたら”ADD"ボタンと”MINUS"ボタンでサンプル数を決め、”SET"ボタンを1秒以上押す
サンプル数とはこのパラメータ設定の後に行うコインのサンプリングを行う回数です。設定できる最大は30で、15以上を設定するとより正確性が増すとマニュアルにあります。 ”SET"ボタンを離すと”P1"が表示されます。”P1"の”1”は"H1”と同様にコインの1種類目を意味していると思います。 - ”P1"が表示されたら”ADD"ボタンと”MINUS"ボタンで出力パルス数を決め、”SET"ボタンを1秒以上押す
このモジュールは認識したコインの種類をパルスの数で出力します。ここではそのパルス数を設定します。マニュアルによると最大は50だそうです。 ”SET"ボタンを離すと”F1"が表示されます。”F1"の”1”は"H1”と同様に (略)。 - ”P1"が表示されたら”ADD"ボタンと”MINUS"ボタンで正確度を決め、”SET"ボタンを1秒以上押す
正確度とは所謂”あそび”に関連しているものだと思われます。1から30まで設定可能で、1であれば最も正確、30であれば曖昧になります。通常は5から10が最適だとマニュアルにあります。似た形状のコインを認識したい場合は小さくしたほうが良いとのこと。 ”SET"ボタンを離すと”H2"が表示されます(2種類以上の設定を行った場合)。 - "6"の手順が終わると"4"へ戻るので、"3"で設定したコインの種類の数だけ"4"から"6"の設定を繰り返す
- ”A"が表示されたら”SET"ボタンを1秒以上押す
- ”E"が表示されたら電源をOFFにする
- ”SET”ボタンを1秒以上押す
ボタンを離すと7セグに”A1”が表示されます。 - ”A1"が表示されたら1種類目のコインをパラメータ設定で設定したサンプル数の回数分投入する
コインを投入すると7セグに投入した回数がカウント表示されます。設定回数分投入すると7セグに”A1"が点滅表示されます。 - ”SET”ボタンを1秒以上押す
”SET"ボタンを離すと”A2"が表示されます。 - "3"の手順が終わると"2"へ戻るので、"2"から"3"の設定を4回繰り返す
ここではパラメータ設定で設定したコインの種類の数によらず4回行わなければならないようです。ただし、"SET"ボタンを1秒以上押すことでコインのサンプリングをスキップすることが可能です。
例:2種類のコインを使用したい場合、"A3"と”A4"はスキップします - すべて終わると自動的に再起動します
- 設定値
10円 100円 500円 1円 サンプル数 15 15 15 15 出力パルス 5 10 15 20 正確度 5 5 5 5
- 出力パルス設定"5"のコインを認識した波形
- スライドスイッチの設定と出力パルス長の関係
スライドスイッチ設定 出力パルス長 "Fast" 約30ms "Medium" 約50ms "Slow" 約100ms
2020年4月22日水曜日
Air umbrellaの話
Failed: Air Umbrella | Hackaday
https://hackaday.com/2020/01/25/failed-air-umbrella/
約5年前、kickstarter(クラウドファンディングサイト)で"Air umbrella"というプロジェクトが発足した。当初はクラウドファンディングという形態の目新しさも相まって、プロジェクトは資金を集めることに成功した。しかし、紆余曲折を経て結局はプロジェクトは失敗に終わった。
"Air umbrella"は、頭上に落ちてくる雨を圧縮空気を使って弾き飛ばすことにより、コンパクトな傘を実現しようとした。
雨滴の最終的な落下速度は約時速20マイル(32キロ)と言われる。となると、傘のような広い範囲の雨を防ごうと思うと、少なくとも時速25マイル(40キロ)で空気を噴射する必要がある。
頭のすぐ上でそんな空気の噴射をしたい人がいるのだろうか?このような空気の噴射は持ち運びできる小型バッテリーでどのくらい持つのだろうか?
現実的ではないこのプロジェクトは結局失敗した。投資をした人の中には物理学者はいなかったのだろうか?
このプロジェクトが開始された当時、クラウドファンディングが流行っていたが、思いの外お金が集まっていてびっくりしたことを覚えている。このような空気の噴射は実はものすごくエネルギーを必要とする(身近でいうとドライヤーがいい例)。所長は昔、スカートをめくるためにブロアファンを使用した作品を作ったことがあるが、電力を食う割には弱い風しか発生させられなかった記憶がある。
2019年11月21日木曜日
OpenCVのWindow更新はメインスレッドでしかできない
割と最近のQ&Aがあったので貼っておこう。
How to update cv::namedwindow in multi-threading environment? - OpenCV Q&A Forum
If 1 callback receives an image and performs some image-processing. How can the output image be shown in multi-threading environment? By multi-threading I mean, if that particular callback(depthCallback) can be invoked by more than one thread. And, one more query: Is using waitkey(1), optimal for real-time application?
ウィンドウの更新はメインスレッドで実施するというのが常識だそうな。
2019年10月10日木曜日
wiringpiが開発中止
WiringPi Library To Be Deprecated
開発者はゴードンさんという方で(wiringpiのホームページに写真あり)、無断の商用使用やスパムに耐えきれなくなったからと理由を説明している。
wiringPi - deprecated...
代替ライブラリはpigpioになる?それともforkされた有志によるwiringpiが使われるようになる?



