RaspberryPi 3 Model B+と長距離透過形フォト・マイクロセンサで通過数をカウントする | そう備忘録

RaspberryPi 3 Model B+と長距離透過形フォト・マイクロセンサで通過数をカウントする

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

12件のフィードバック

  1. KK より:

    本ページを参考にさせて頂き、物体検知センサーを制作しようと試みているですが、
    信号検知ができない状態でして、センサーはPTB-802 透過形光電センサというものを使用しています。
    こちらで取り上げているセンサーとは配線方法異なるのか、ご教示いただけないでしょうか?

    • souichirou より:

      KKさん
      コメントありがとうございます。
      カタログを見る限りいけそうではありますね。

      1)PTB-802ですが5Vと12Vがあるようです。5Vの方ですか
      2)受光センサーのライトは光りますか(PTB-802-5DとPTB-802-5D1で動きが違うようです)
       →まずはセンサーが正しく動作しているかの確認です
      3)プルアップ抵抗ですがプルダウンを指定したらどうなりますか
      GPIO.setup(SPW311, GPIO.IN, pull_up_down=GPIO.PUD_UP)
       ↓
      GPIO.setup(SPW311, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

      気がつくのはこれぐらいでしょうか。

      • KK より:

        souichirouさん

        掲載プログラムそのまま使用したところ動作できました。
        (プログラムは別に書いたものを使っていまして、早とちりな質問をしてしまいすみません。)
        pull_up_down=の指定が必要なのですね。pull_up_down=GPIO.PUD_UPのままで動作しました。
        DOWNに変えるとカウントしませんでした。
        受光器は5v遮光時ONのPTB-802-5D1を使用していますが、この場合センサー内部スイッチのon/offと
        GPIOへのhigh/lowは逆になるんですね。

        それと投光器側はモバイルバッテリーから電源供給していましたが、
        接続して何秒かで電源供給が遮断されることも改めてセンサーの動作確認でわかりました。

        初歩的な質問ながらご丁寧に返答下さりありがとうございました。

        • souichirou より:

          KKさん
          無事に動作したようで良かったですね。
          pull_up_down指定は取得する電圧を安定化させる為の抵抗の指定です。
          ほとんどのセンサーはPUD_UP指定で動作しますが、まれにPUD_DOWN指定が必要なセンサーがあるのでもしかしたらと思ったのですがUPで大丈夫だった様ですね。
          後、遮光時ONとOFFではLOW、HIGHが逆になりますね。

  2. てぃんか より:

    はじめして
    一点お聞きしたいのですが
    ブログではセンサーとacアダプタを直接つないでおりますが

    おすすめのACアダプタとかありますでしょうか?

    • souichirou より:

      コメントありがとうございます。

      自分は秋月電子さんで以下のアダプターを購入しています。
      またオン・オフをしたかったのでスイッチも一緒に購入しています。
      超小型スイッチングACアダプター12V0.5A AD-B120P50
      2.1mm標準DCジャック(2.5A) ON・OFFスイッチ付 基板取付用 MJ-R02
      DCジャック付ケーブル1.8m (2.1mm) MC-2376

      特にこの構成でないと駄目という事はありません。
      また電源タップ側にオン・オフスイッチがあるのならば、スイッチは不要になります。

      • てぃんか より:

        ご丁寧に返信をしてくださいましてありがとうございます。
        参考にさせていただきます。

        • もりあ より:

          souichirou様
          はじめまして

          上にある、てぃんか様の質問内容の通りにセンサーにACアダプタを実際に取り付けました。
          実際にこのブログの内容の通りプログラムを書き、動作はしているものの
          必ず途中でラズパイが落ち、黒い画面が表示されkarnel panicとメッセージが表示されてしまいます。

          これは過電圧が原因で落ちてしまっているのでしょうか?
          もし対策があればご教授いただけないでしょうか?

          一応現在の環境も表記します。
          ————————————–
          使用機器:
          Raspberry Pi 4 Computer Model B

          OS情報:
          Distributor ID: Raspbian
          Description: Raspbian GNU/Linux 10 (buster)
          Release: 10
          Codename: buster
          ————————————–

          • souichirou より:

            もりあ さん
            こんにちは。
            もしかしたら過電圧が原因かも知れませんね。
            その場合は抵抗で電圧を落としてみてください。
            受光器のOUTーーー2.2Kの抵抗ーーー+ーーーGIPO5
                             |
                             3.3Kの抵抗
                             |
                             GND
            とすればGPIOへの電圧が下がります。
            詳しくはこちらの記事の「抵抗の分圧計算式」の章をご参照ください。
            元の電圧の3.3/(2.2+3.3)=3.3/5.5になる計算です。
            また上記記事中にある半固定抵抗でも同じことが出来ます。
            本文記事も後で修正をしておきます。

  3. kabi より:

    はじめまして。
    センサーをEE-SPW411(入光時on)に変更した場合のプログラムについての質問です。
    遮光時onと入光時onでは論理を逆転すればよい、というサイトを見ました。
    このコードにおいて、SPW311をSPW411に置換し、さらに
    19行目
    if GPIO.input(SPW311) == GPIO.HIGH:
    の部分を
    if GPIO.input(SPW411) == GPIO.LOW:
    にすれば、EE-SPW311を使った場合と同様に動作するのでしょうか?

    • souichirou より:

      kabi さん コメントありがとうございます。
      そうですね。
      その修正でHIGHからLOWに変わる瞬間をカウントすれば良いと思います。

      上記の修正で動作するとは思いますが、ブログ中で2021年6月8日に追記してる通り、フラグを使うよりも、
      GPIO.add_event_detect を使った方がよりスマートだと思います。
      使い方はこちらの記事を参考にして下さい。

      GPIO.add_event_detect(SPW311, GPIO.RISING, callback=callback_func, bouncetime=200)

      上記のGPIO.RISINGの部分をGPIO.FALLINGとすればHIGHからLOWに変わる瞬間を捉えることができます。

質問やコメントや励ましの言葉などを残す

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。