【Arduino】Arduino Nano(互換機)で人感センサ付けてLEDを光らせる

久しぶりに電子工作をやります。
やりたいこととして、トイレの電灯を人がいれば点灯(電灯スイッチON)、いなければ消灯する(電灯スイッチをOFF)です。
これは最終的にサーボモータを組み合わせて実現するとして、試作として人がいると検知したらLEDを灯すのをメモとして残します。

※追記。トイレ電灯の自動化記事書きました
engetu21.hatenablog.com

1.使用パーツ

 ↓たぶんこれ?(数年前に買ったものなので、厳密にはたぶん違う)
 Rasbee Mini USB Arduino Nano V3.0 改良版 互換ボード ATmega328P搭載 1個 [並行輸入品] http://ur0.work/Wp9b

  • ブレッドボード
  • ジャンパーワイヤ
  • RIPモーションセンサ

 ↓たぶんこれ?((数年前に買ったものなので、厳密には違う。私が持っているものはピンの詳細が基盤に印字されてないので、どれかGNDとかわからなかったり)
 超小型赤外線センサーモジュール人体感知スイッチhttp://ur0.work/9Vq7

2.構成イメージと回路図

まぁこんな感じです。

f:id:engetu21:20190511202135p:plain
f:id:engetu21:20190511202210p:plain

RIPセンサーの信号はD8を利用、LEDに関してはD3を使います。
D3を使うのはプログラムで「analogWrite関数」を使いたいためです。
なぜ「analogWrite関数」を使いたいかというとLEDの明るさを小さくしたいためです。

Arduino Nanoの仕様は以下の図の通りですが、D3、つまり3ピン(紫で3の箇所)についてはPWM Pinと記載されています(線のところが~となっており、凡例を見るとこれがPWM Pinを表す)。
f:id:engetu21:20190511202711p:plain
D3にLEDのアノードを刺すことで明るさを小さくしたり大きくしたり。for文を用いれば、ゆっくり明るくするといったことも可能です。
※詳しくはこちら
明るさを変化させてみよう(PWMでアナログ出力):
http://jkoba.net/prototyping/arduino/led_brightness.html

実際の構築はこんな感じ。
f:id:engetu21:20190511203716j:plain

3.プログラム

大体これで動く。
満期は30秒とし、その際誰もいなければ消灯、一秒間隔の監視で誰かいたら点灯。
実際のところ、これは昔書いたラズパイ版のソースの流用です。
engetu21.hatenablog.com

電灯スイッチをサーボモータで押すため、サーボモータの動作時間を考えると一秒間隔よりもっと短く検知させ、すぐ電灯がつくようにしたほうがいいかもしれない。

そういえば、Arudino Nanoに関してはUSB(mini Type B)でPCと接続することでプログラムのライティングができる。これは互換機も同様。
Arduino IDEの設定としては以下のようにすれば設定すれば書き込みができた。
f:id:engetu21:20190511212327j:plain

なお、USB-ACアダブターをつなげて直接電源供給が可能なため、電源周りのセッティングはとても楽。

次回は今回の構成とプログラムにサーボモータを付けるようにして電灯スイッチを押させるようにします。