実はこのシステム以前作ったのですが、先日動作指定なくて再起動したところ下記のようなエラーメッセージが表示されラズベリーパイは起動せず・・・

そこで作ったプログラムのバックアップをとっていなかった為もう一度作ることにしました。・・・内容を覚えていない。

以前のものは扉を開けたらブザーが鳴りシステムに日付と時間が記録されるものでした。

そのへん思いっきり忘れているので今回はまず、「扉があいたらブザーがなる」という機能から構築します。

  1. 準備するもの
    1. ラズベリーパイ本体 RaspberryPi Zero使用 1台

      Raspberry Pi Zero W – ヘッダー ハンダ付け済み – ラズベリー・パイ ゼロ W ワイヤレス

      新品価格
      ¥2,980から
      (2020/8/1 15:00時点)

    2. リミットスイッチ(マイクロスイッチ) 1個

      Kiligen Arduino用10個ミニチュアマイクロリミットスイッチ瞬間SPDTスナップアクションヒンジレバータイプ

      新品価格
      ¥899から
      (2020/8/1 15:03時点)

    3. ブザー

      HiLetgo・ 20個セット 5V アクティブブザー 長い連続 ビープ音 トーン アラーム リンガー サイズ 12 * 9.5 mm ピッチ 7.6mm [並行輸入品]

      新品価格
      ¥650から
      (2020/8/1 15:06時点)

    4. ブレットボード
    5. スライドスイッチ ※必要に応じて(ブザーを一時停止するときなど便利)

      HiLetgo・ 20個セットSS12D00G5 スライド スイッチ トグルスイッチ SPDT 1P2T 2 位置 3 ピン シャフト 5 MM ピッチ 2.5 MM [並行輸入品]

      新品価格
      ¥100から
      (2020/8/1 15:07時点)

    6. 配線  適当
  2. 配置図
  3. 回路図
  4. プログラム
    ※いろんなところから情報引っ張ってきてくっつけただけなので不要なところ多いかも・・・

    import wiringpi as pi
    import time
    import datetime
    BUZZER_PIN = 23
    SW_PIN = 17
    pi.wiringPiSetupGpio()
    pi.pinMode(SW_PIN,pi.INPUT)
    pi.pinMode(BUZZER_PIN,pi.OUTPUT)
    count = 0
    while True:
        if (pi.digitalRead(SW_PIN) == pi.LOW):
            time.sleep(0.1)
            count = count + 1
            print (“count”, count)
            bouhan_data = open(‘bouhan_data.txt’,’a’)
            dt_now = datetime.datetime.now()
            bouhan_data.write(dt_now.strftime(‘%Y年%m月%d日 %H:%M:%S + 8時間\n’))
            bouhan_data.close()
            while (pi.digitalRead(SW_PIN) == pi.LOW):
                 pi.digitalWrite(BUZZER_PIN,pi.HIGH)
                 time.sleep(.1)
                 pi.digitalWrite(BUZZER_PIN,pi.LOW)
                 time.sleep(.1)
            time.sleep(0.1)
  5. 実物写真
  6. まとめ

作ったプログラムはバックアップが大切です。
また、こうしたラズベリーパイ本体トラブルに対応できるよう知識も必要です。

別件で、GPIO4番が当初問題なくこのピンで動いていたのですが、ONしっぱなしになる異常が発生しました。リミットもテスターで調べて問題なし。GPIO17に移動したら動くようになりましたが、こんなこともあるのかと・・・

実用には様々な経験と知識が必要そうです。