2019年10月05日記載
ラズパイで人感センサーIoT化も思わぬ壁にぶつかる
ラズパイを購入した最大の動機は人感センサーIoT端末構築をすることだった。ようやく届いたセンサーをラズパイと接続して動作テストを実施。すると思わぬところで躓いた。本来反応しないはずなのに毎分1回必ずセンサーが反応してしまうのである。



こちらは毎秒1回センサーデータを読み取った結果を「0」「1」で表現した結果データである。こちらを見てもらうと定期的に「1」が含まれていることがおわかりいただけるかと思う。



PIRセンサーが問題かと思い、別のセンサーを接続しても結果は同じ。そこでいろいろググッた結果、Wi-Fiモジュールから発出される電波がPIRセンサーに反応していることがわかった。ラズパイをイーサネット接続すれば問題解決するが、設置場所のことを考慮するとWi-Fi接続は必須である。

そこで取った対策はPIRセンサーがWi-Fi電波で反応しないようにシールドすることだった。そこで下記の写真のようにアルミ箔で覆ってみた結果、改善が見られた。



改善したものの見た目も問題がありすぎる。少しでもセンサーの場所がずれてしまうとWi-Fi信号を拾ってしまう。

センサー情報をラズパイで取得し、その結果をインターネット上のデータベースサーバにポストするプロセスは問題なく成功している。

参考までにセンサーデータを取得するPHPソースを公開する。

$eth = `ifconfig eth0 | grep 'ether' | sed -e 's/^.*ether //' -e 's/ .*//'`;
$wlan = `ifconfig wlan0 | grep 'ether' | sed -e 's/^.*ether //' -e 's/ .*//'`;

if($wlan !== ''){
  $mac_address = str_replace("\n",'',$wlan);
}elseif($user_eth !== ''){
  $mac_address = str_replace("\n",'',$eth);
}else{
  $mac_address = 'nodata';
}

while(true){
  
  $gpio = 0;
  $postdata = [];

  $gpio = `gpio -g read 4`;
  
  if($gpio == 1){
  
    $postdata['mac_address'] = $mac_address;
    $postdata['gpio'] = $gpio;

    $options = array(
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_HEADER      => true,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_ENCODING     => 'utf-8',
      CURLOPT_USERAGENT    => 'pi_pir_data',
      CURLOPT_SSL_VERIFYPEER => false,
      CURLOPT_SSL_VERIFYHOST => false,
      CURLOPT_AUTOREFERER   => true,
      CURLOPT_CONNECTTIMEOUT => 10,
      CURLOPT_TIMEOUT     => 5,
      CURLOPT_MAXREDIRS    => 1,
    );

    $url = 'https://example.com/post.php';
    $ch = curl_init($url);
    curl_setopt_array($ch,$options);
    curl_setopt($ch,CURLOPT_POST, true);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$postdata);
    curl_exec($ch);
  }
  sleep(1);
}

細かい内容は勝手に読み取っても貰えば良いので説明は省略する。他サイトでセンサーデータを取得する方法と異なるのは、直接シェルコマンドを叩いてデータ取得している点である。

#gpio -g read 4

私はPIRセンサーをGPIOの4番に接続した。もし他のピンに接続した場合は読み変えてもらえば良い。たったこの1文だけで0か1かのデータが取得できるのでとても簡単である。

参考までにどのラズパイからのデータなのかを識別するためラズパイ自身でmacアドレスを取得したデータもpostさせている。この辺は好みの問題なので参考してもらえば幸いである。

今後はセンサー端末をどうスマートに設置するか課題となる。今回はあくまでセンサー情報をどうデータで取得するべきかがミッションだったが別の問題が発生したためミッションはまだ完了しない。

次回はPIRセンサーを電池で稼働させ、取り出したセンサーデータをBLE(Bluetooth Low Energy)で近くのPCやラズパイに転送させる方法を目指したい。BLEがPIRセンサーを誤動作させることはないと見込んでいる。

やりたいことはシンプルなのだが、ハード設計素人の私にとってセンサー端末の構築するまでにははなかなかの高いハードルとなりそうである。

【本日(10/5朝)の株式資産】
すかいらーくHD +24,100円→+20,300円(↓)
American Airlines ▲2310ドル→▲630ドル(↑)
NextEra Energy +1250ドル→+1372ドル(↑)
AT&T +3056ドル→+3200ドル(↑)


コラムワード検索
表示件数
ワード検索
本コラムに関する意見
Twitterにて受け付けます @megahit_jp