【ラズパイで猫ちゃんカメラ】 その8 テスト撮影用のスイッチ動作(GPIO)と全体

前回 前回はプログラムの自動起動について書きました 今回 GPIOを使って、スイッチの状態を読み取りテスト撮影などの機能を盛り込みます また、これまでの内容を総括した全体プログラムを紹介します 現在、猫カメラとして実働しているものになります お出かけには必須になりました 作ってよかった😁 間が結構飛んでいるかもしれませんが、大きな心でご容赦ください笑 スイッチの機能 カメラの設置場所を決めるために撮影用のスイッチをつけます 以下のような機能をつけます 短押し(5秒以下)でテスト撮影 長押し(5秒以上)でラズパイシャットダウン 撮ったらLINEします スイッチの状態を読み取ってみる スイッチは秋月電子でこれを買いました↓ プッシュスイッチは電源(3.3V)ースイッチーラズパイ のように接続します GPIO26に接続し、プルダウンに設定しています ですので何もしなければ0Vで、スイッチを押せばhigh(3.3V)となります whileループ内でスイッチの状態を読み取ります プルダウンとして設定しているので、何もしなければGPIO26の電圧はGNDレベル=0Vでありaの値をprintすると0となります スイッチを押すとGPIO26の電位がHigh=3.3Vとなるのでa=1となります ctrl + Cでwhileループから抜けて終了です import RPi.GPIO as GPIO button = 26 GPIO.setmode(GPIO.BCM) GPIO.setup(button,GPIO.IN,pull_up_down = GPIO.PUD_DOWN) # プルダウン try: while True: a = GPIO.input(button) print(a) except KeyboardInterrupt: # ctrl + C print('\nbreak') GPIO.cleanup(button) 短押し、長押し判定 割り込みは使っていません whileループ中に50msec毎にスイッチを見に行っています 50msecはチャタリングを考慮しての時間です ボタンを最初に押してから離すまでの時間を測り、5秒以下なら短押しと判定、5秒以上なら長押しと判定しています 長押しでシャットダウン import osをして sudo shutdown -h now を実行するだけです 長押し時の処理にこれを実行します 実働プログラム レビジョン7まで上げてやっと安定しました...

2022/06/28 · Last updated on 2023/09/23 · 7 min · 1371 words

【ラズパイで猫ちゃんカメラ】 その7 ラズパイ起動時にプログラムを自動起動する

前回 だいぶ日が空いてしまいましたが・・・ 前回はLINE NotifyのAPI制限を確認しました 今回 systemd で自動起動 ラズパイを起動してからプログラムを手動で実行するのは実用的じゃないですね ですので、ラズパイ起動時にプログラムを自動起動します 自動起動には systemd を使います こちらの記事を参照ください↓ systemd の良いところ ちょっと本旨とずれますが、プログラムがエラーで停止しても、systemdがサービスを再起動してくれます ラズパイ自体の再起動はcronでも良いですが、自作のプログラムはバグ取りが不十分なのでエラー停止でサービスを再起動してくれるのは助かります(エラー対策の話につながります) エラー対策 今回はLINEに送信するため、ネットワークを利用します 実際動かしてみて、wi-fi関連処理がうまく行かずエラー停止が結構ありました 自分ではどうしようもない問題でした また、USBが死ぬこともよくあり、これは再起動で復活しますので、定期再起動もサービスにしました 手動でプログラムを再実行できれば対策不要ですが、猫カメラは不在時に使用します なので、手動で再実行はできず、エラー対策は必須です 私も猫カメラ開発でエラー対策が必要だと痛感しました (カメラ止まった!猫の様子がわからない!どうしよう!は飼い主には耐えられないです) 実装の候補は以下2つ Python中にリトライ処理をいれる systemdが勝手に再起動してくれる ← こっちにした リトライ処理も実装してみましたが、よりお手軽な systemd にしました .service の作成 猫カメラなので、名前はnyancam.serviceにしました(何でもOKです) ここでは/lib以下に作っています(上の記事でもあるように、/etc以下に作る方法もあります) sudo nano /lib/systemd/system/nyancam.service nyancam.serviceの中身↓ [Unit] Description = test [Service] ExecStart=/usr/bin/python3 /home/pi/Desktop/nyancam.py Restart=always Type=simple [Install] WantedBy=multi-user.target ExecStart = XXXはプログラムの起動についての記述です /home/pi/Desktop/nyancam.pyをpython3で起動します Restart=alwaysでnayncam.pyがエラー時にサービスを再起動してくれます systemd コマンド sudo systemctl start nyancam.service <--- サービスを起動するコマンド sudo systemctl stop nyancam.service <--- サービスを停止するコマンド sudo systemctl enable nyancam....

2022/06/27 · Last updated on 2023/09/23 · 1 min · 164 words

ラズパイ(ubuntu 20.04.4 LTS)に Tailscale を構築

ラズパイにtailscaleを構築した。 tailscaleはWireGuard(VPN)を扱いやすくしたものである(ざっくり) 素のWireGuardも検討したが、マンション住まいのため、上位のルーターの構成が不明で、かつポートを開けたり(知識不足)を下手にやってセキュリティガバガバになるのは嫌だったのでtailscaleにした 環境 ラズパイ 3B+ ubuntu 20.04.4 LTS 32GBのSDカード Tailscale のアカウント作成 何はともあれ、まずはアカウントを作る 参考: https://blog.tsukumijima.net/article/tailscale-vpn/#toc3 githubアカウントでログインした その端末の認証鍵の有効期限を無効にすることができます。 → 無効化した ラズパイに構築する前に、SynologyのNAS(DS118)がTailscaleに対応していたので、先に入れてみた すぐにアクセスできた 簡単すぎてビビった ラズパイのセットアップ まず、OSをSDカードに書き込み 書き込みには Raspberry Pi Imager を使用 https://www.raspberrypi.com/software/ 空だけど、何となく erase してから書き込む こちらを参考(↓)にしてwolサーバとしたかったのでubuntuにした https://macoshita.me/posts/wi-fi-router-and-tailscale/ ubuntu はラズパイ 3B+ なので、32bit armhf lts安定版 とした 初回セットアップはこちら(↓)を参考 https://takaken.tokyo/dev/raspberrypi/raspi_ubuntu_setup2004/ 習って、rootパスワード変更まで実施 有線だけで使うため、無線LANは無し(コメントアウトした) Tailscale のインストール 参考: https://tailscale.com/download/linux/ubuntu-2004 tailscale ip -4 か ip addr show tailscale0 で、ipがわかる でもipアドレスはtailscaleのページ(https://login.tailscale.com/admin/machines)でわかるから、コマンドを打たなくてもいいか ラズパイを再起動して、tailscaleが自動起動することを確認した 確認は、上記のtailscaleのページでactive(緑色の丸)になっていることからわかる exitnode の設定 ずっと電源入れっぱなしにしても大丈夫なラズパイをexitnodeに設定する VPNを野良Wi-Fiをセキュアにするために使いたいなら exitnode の設定が必要 exitnode経由にしてなかった時は、接続先がいなくてもVPN接続ができていた おやっ、VPNって2拠点間を繋ぐものなのになんで接続ができて(VPNがactiveになる)るんだ?って思ってグローバルipを確認したら、VPN接続前後でグローバルipが変わってなかった...

2022/06/26 · Last updated on 2023/09/22 · 1 min · 123 words

ラズパイを WOLサーバ にする

こちらの記事で紹介したようにtailscaleを使ってラズパイをVPNサーバとして使っていますが、VPNできたら当然自宅NASにもアクセスしたくなりますよね でも、以前書いたようにNAS(DS118)は常時電源を入れていないので、使うときには起こす必要があります ですので、必要な時にNASを起こせるようにラズパイをwolサーバに仕立てます NAS(DS118)のwolを有効にする 使っているNAS↓ まず、NASがwol信号を受け付けられるように、wolを有効にします https://support.ask-corp.jp/hc/ja/articles/360051678474-Wake-on-LAN-を設定したい ラズパイに WOLサーバ を建てる 参考(大感謝!) 構成は Flask + uWSGI + Nginx となっています ラズパイのCPU温度とクロック周波数を追加していますが、すべてそのまま使わせていただきました 便利に使えており、大変感謝しております! 構築に関して、自分のつまずいた点などを書いています 出来上がり見た目↓ pip install -r requirements.txt のインストール方法 https://note.nkmk.me/python-pip-install-requirements/ 文字化けしたがインストールできたっぽい たぶんteratermの設定のせいで文字化けした 起動など ファイルは大体をPCで作って、FTPソフト(filezillaを使用)でラズパイに転送し、手直しはSSH接続して直接ファイルを弄った ubuntu@ubuntu:~$ pwd /home/ubuntu /home/ubuntu の下にファイルを作って配置する サービス起動 sudo systemctl start wakeonlan-server サービス自動起動(起動時) sudo systemctl enable wakeonlan-server 実行したのでbootで自動実行される サービスのステータス確認 sudo systemctl status wakeonlan-server active(running)になっているのでおけ プログラム(wol.py)のエラー箇所もわかる ValueError(“Incorrect MAC address format”) が出ていることがわかった たぶんwol.htmlから変数(MACアドレス)をwol.pyに渡す時におかしくなってるのだが、検証できなかった なので、MACアドレスを直書きすることにした(当面は同じNASしか使わないし) MACアドレスは:で区切る # wol.py 一部抜粋 def wol(): # addr = request....

2022/06/26 · Last updated on 2023/09/22 · 1 min · 113 words

HUGO robust に Google AdSense の広告を設定

自動広告 Google AdSense - 「広告」 - 「サマリー」 の 「サイトごと」タブ ドメイン名(atooshi-note.com)右横の鉛筆マーク(編集)をクリック 広告設定のプレビューが出るので、好みになるように調整 私は広告のフォーマットは「ページ内広告」のみにした 「コードを取得」を押してコードをコピー これ themes\hugo_theme_robust-master\layouts\partials\meta.html 場所変更↓(2022/09/08) layouts\partials\meta.html にそのまま貼り付ける 固定広告 固定広告も設定 Google AdSense - 「広告」 - 「サマリー」 の 「広告ユニットごと」タブ、「ディスプレイ広告」を選択 プレビューをみて広告タイプを決めたら作成してコードをコピー 広告を表示する場所は、記事の本文前後(参考サイトさんそのまま)とする コピーしたコードを以下に貼り付ける themes\hugo_theme_robust-master\layouts\_default\summary.html 場所変更↓(2022/09/08) layouts\_default\summary.html 参考 ありがとうございます! https://www.ame-kuma.com/post/site02/ ads.txt 以下のような注意がでましたので対策しました 要注意 - 収益に重大な影響が出ないよう、ads.txt ファイルの問題を修正してください。 ads.txt をダウンロードし、 static 以下に配置します 参考 ありがとうございます!

2022/06/25 · Last updated on 2023/09/22 · 1 min · 49 words