【Arduino】Arduino Nano(互換機)で人感センサ付けてLEDを光らせる
久しぶりに電子工作をやります。
やりたいこととして、トイレの電灯を人がいれば点灯(電灯スイッチON)、いなければ消灯する(電灯スイッチをOFF)です。
これは最終的にサーボモータを組み合わせて実現するとして、試作として人がいると検知したらLEDを灯すのをメモとして残します。
※追記。トイレ電灯の自動化記事書きました
engetu21.hatenablog.com
1.使用パーツ
- Arduino Nano互換機
↓たぶんこれ?(数年前に買ったものなので、厳密にはたぶん違う)
Rasbee Mini USB Arduino Nano V3.0 改良版 互換ボード ATmega328P搭載 1個 [並行輸入品] http://ur0.work/Wp9b
- ブレッドボード
- ジャンパーワイヤ
- RIPモーションセンサ
↓たぶんこれ?((数年前に買ったものなので、厳密には違う。私が持っているものはピンの詳細が基盤に印字されてないので、どれかGNDとかわからなかったり)
超小型赤外線センサーモジュール人体感知スイッチhttp://ur0.work/9Vq7
- 3mm青色LED
2.構成イメージと回路図
まぁこんな感じです。
RIPセンサーの信号はD8を利用、LEDに関してはD3を使います。
D3を使うのはプログラムで「analogWrite関数」を使いたいためです。
なぜ「analogWrite関数」を使いたいかというとLEDの明るさを小さくしたいためです。
Arduino Nanoの仕様は以下の図の通りですが、D3、つまり3ピン(紫で3の箇所)についてはPWM Pinと記載されています(線のところが~となっており、凡例を見るとこれがPWM Pinを表す)。
D3にLEDのアノードを刺すことで明るさを小さくしたり大きくしたり。for文を用いれば、ゆっくり明るくするといったことも可能です。
※詳しくはこちら
明るさを変化させてみよう(PWMでアナログ出力):
http://jkoba.net/prototyping/arduino/led_brightness.html
実際の構築はこんな感じ。
3.プログラム
大体これで動く。
満期は30秒とし、その際誰もいなければ消灯、一秒間隔の監視で誰かいたら点灯。
実際のところ、これは昔書いたラズパイ版のソースの流用です。
engetu21.hatenablog.com
電灯スイッチをサーボモータで押すため、サーボモータの動作時間を考えると一秒間隔よりもっと短く検知させ、すぐ電灯がつくようにしたほうがいいかもしれない。
そういえば、Arudino Nanoに関してはUSB(mini Type B)でPCと接続することでプログラムのライティングができる。これは互換機も同様。
Arduino IDEの設定としては以下のようにすれば設定すれば書き込みができた。
なお、USB-ACアダブターをつなげて直接電源供給が可能なため、電源周りのセッティングはとても楽。
次回は今回の構成とプログラムにサーボモータを付けるようにして電灯スイッチを押させるようにします。