Raspberry Pi zero 2 Wに exim4 入れて、スマートホスト設定して、Xserver のメールサーバーをリレーホストにする設定して、ボタン監視してメール通知するプログラムをサクっと書いた。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #!/bin/bash GPIO=26 GPIO_DIR=/sys/class/gpio initialize(){         # GPIO26を有効化。プルアップ抵抗ON         echo $GPIO >${GPIO_DIR}/export         sleep 0.1         echo in >${GPIO_DIR}/gpio${GPIO}/direction         sleep 0.1         echo high >${GPIO_DIR}/gpio${GPIO}/direction } shutdown_handler(){         # GPIOクリーンアップ         echo $GPIO >$GPIO_DIR/unexport         exit 0 } mail_send(){         cat << _EOD_|/usr/sbin/sendmail -t -f yuji@noizumi.org From: yuji@noizumi.org To: yuji@noizumi.org Subject: Car Security alert Car Security alarm was activated at `date +"%Y/%m/%d %H:%M:%S"` _EOD_ } button_pushed(){         mail_send         # ボタンが押されている間、ループ         while [ "`cat ${GPIO_DIR}/gpio${GPIO}/value`" = "0" ]; do                 sleep 1         done } initialize trap shutdown_handler 2 # mail_send #test while :; do         # イヤホンマイクボタンが押された時         if [ "`cat ${GPIO_DIR}/gpio${GPIO}/value`" = "0" ]; then                 button_pushed         fi #GPIO 読み出しテスト #gpio26_value=`cat ${GPIO_DIR}/gpio${GPIO}/value` #echo GPIO26 = $gpio26_value         sleep 1 done | 
ボタン監視は、GPIO26とGNDに繋いでやる予定だけど、巷にあるサンプルだと、エラーとかリソースビジーとか出るので wait を入れた。
echo 26 >/sys/class/gpio/gpio26/export
sleep 0.1
echo in >/sys/class/gpio/gpio26/direction
sleep 0.1
echo high >/sys/class/gpio/gpio26/direction
ハードウェアに近いプログラム書いた事無いと分からんかもしれんけど、Raspberry Pi が GPIO26 の用意完了前にデータを書こうとすると、間に合わない場合があるので、その場合は適当に時間待ちしてやる必要があるんだな。
Raspberry Pi zero 2 Wの BCM2835は、ARM v8(Cortex-A53)クアッドコアの64bit 1GHzなので、結構処理速度が速いようで、GPIOのファイルシステムへ書き込みするのに、sleep で wait を入れないとダメになったみたいだな。
ちなみにメールは次のようなものが届く予定。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Return-Path: <yuji@noizumi.org> X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on sv13449.xserver.jp X-Spam-Level:  X-Spam-Status: No, score=-0.0 required=5.0 tests=ALL_TRUSTED, 	T_SCC_BODY_TEXT_LINE,X_NONJAPANESE_SUBJECT autolearn=no autolearn_force=no 	version=3.4.0 Delivered-To: yuji@noizumi.org X-Virus-Status: clean(F-Secure/fsigk_smtp/550/virusgw12004.xserver.jp) Received: from rx7pi (neoau1-133-203-128-250.tky.mesh.ad.jp [133.203.128.250]) 	by sv13449.xserver.jp (Postfix) with ESMTPSA id 4DE0C508907859 	for <yuji@noizumi.org>; Sun, 18 Sep 2022 14:49:32 +0900 (JST) Received: from noizumi by rx7pi with local (Exim 4.92) 	(envelope-from <noizumi@rx7pi>) 	id 1oZnBL-0001l7-0A 	for yuji@noizumi.org; Sun, 18 Sep 2022 14:49:31 +0900 From: yuji@noizumi.org To: yuji@noizumi.org Subject: Car Security alert  Message-Id: <E1oZnBL-0001l7-0A@rx7pi> Date: Sun, 18 Sep 2022 14:49:31 +0900 XSRV-Filter: yuji@noizumi.org Car Security alarm was activated at 2022/09/18 14:49:30 | 
無茶苦茶シンプルなので、donedone 128kbps でも問題なく送信できる。
で、後は半田ゴテで、配線するのみなのだが、半田ゴテ暫く使ってなかったから汚部屋で見つからんのよね。 🙁
【追記:皇紀2682年9月18日21:13】
ラスタバナナの変換コネクタに必死で半田付けし、GPIO26とGNDに半田付け
docomoの携帯電話を挿せるけど、携帯から5V出てるとしたら、raspberry PiのGIPOへ5V流れて壊れちゃうので、携帯電話を挿してはいけない。
先のプログラム走らせて、イヤホンマイクボタンを押すと、メールが来た。
これで、docomo 3Gが無くなっても大丈夫 🙂
【/追記:皇紀2682年9月18日21:13】



