4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ArduinoAdvent Calendar 2017

Day 22

Arduino+照度センサ+TWELITEで会社のお昼消灯アラームを作る

Last updated at Posted at 2017-12-22

モチベーション

会社でISO14000の活動として,お昼休みにオフィスの電灯を消灯しています(節電らしい・・・.)

いままでは,お昼休みになったら電気を消して,お昼休みが終わったら電気を付けて,というのを庶務の方がやってました.
でも特定の人が担当していると何気に負荷が高そうで,お昼休み中も「早く戻らなきゃ」とプレッシャーがあるとのことだったので,消灯・点灯がされていなかったらアラームが鳴るようなマシンをArduinoで作ってみました(それに気づいた人が消す・点ける.)

本当は電灯のスイッチ自体(こういうやつ)を自動でON/OFFしてくれるマシンが作れると良かったんですが,工事が必要なレベルだったのでアラームマシンにしました.

構成

全体

overall-diagram.png

アラームが鳴るマシンの位置は電灯スイッチの近くがよいのですが,その場所で電灯のON/OFFが検知できるか微妙だったので,照度を測るセンサを遠隔(電灯の真下)に置いて,TWELITEで無線通信するようにしています.

照度センサ

IMG_7679.jpg

illuminance-sensor-circuit.png

illuminance-sensor-pcb.png

  • 照度センサとTWELITEだけの簡単な構成です
  • TWELITEは子機に設定してあり,接続しているA4ポートへのCdsの抵抗に応じたアナログ入力値が,親機(アラームマシン)のPWM4ポートに出力されます
  • TWELITEの間欠動作はMode4(1秒間隔)にしました

アラームマシン

IMG_7680.jpg

IMG_7682.jpg

alarm-machine-circuit.png

alarm-machine-pcb.png

  • 配線が下手くそですが・・・,基板外に出ている配線はジャンパワイヤしています
  • TWELITEから出力されたPWM4をArduinoのA0に入力しています
  • お昼の消灯・点灯時刻が重要なので,時刻はRTCから取るようにしていて,時刻設定やモード変更などのためのボタンをS1, S2, S3で実装しています
  • 照度は現地の環境によってしきい値を変えたかったため,ボリューム抵抗(R6)で設定できるようにしました
  • アラームを止めるためにLED付モメンタリスイッチ(S4, LED1.実際は1つのパーツ)を実装しています
  • アラームはメロディIC(IC4)と圧電スピーカ(J1)で鳴らしています(メロディは「かっこうワルツ」!)
  • 時刻の表示や設定用に液晶ディスプレイ(IC3)を実装しています

パーツリスト

照度センサ

No 配線番号 品名 値・型名など 価格 入手先 注文番号
1 BAT1 単3電池ボックス BH-311P-1 30 秋月 P-00308
2 IC1 3.3V昇圧DCDCコンバータ 500 秋月 M-08937
3 IC2 TWELITE TWE-Lite-Dip-WA 1,620 秋月 K-06759
4 R1 Cdsセル 30
5 R2 抵抗 470Ω 5
6 R3 抵抗 10kΩ 5
7 R4 抵抗 10kΩ 30
8 S1 トグルスイッチ 20
9 ユニバーサル基板Cタイプ 60
10 スペーサー x4 120
11 ナット x4 12
12 ピンソケット1x14 x2 100
合計 2,532

アラームマシン

No 配線番号 品名 値・型名など 価格 入手先 注文番号
1 Part1 Arduino Uno Arduino Uno Rev3 2,940 秋月 M-07385
2 IC1 TWELITE TWE-Lite-Dip-WA 1,620 秋月 K-06759
3 IC2 RTC DS3231+AT24C32 70 Aamzon 3rcccL9A
4 IC3 LCDディスプレイ AE-AQM0802 700 秋月 M-09109
5 IC4 メロディIC UTC UM66T32LK 30 秋月 I-07055
6 J1 圧電スピーカ PKM13EPYH4000-A0 30 秋月 P-04118
7 LED1+R4 LED付モメンタリスイッチ ST12-303FCG 150 秋月 P-02009
8 R1 抵抗 10kΩ 5
9 R2 抵抗 10kΩ 5
10 R3 抵抗 10kΩ 5
11 R4 抵抗 10kΩ 5
12 R5 抵抗 100Ω 5
13 R6 ボリューム抵抗 10kΩ 40
14 S1 モメンタリスイッチ 10
15 S2 モメンタリスイッチ 10
16 S3 モメンタリスイッチ 10
17 ピンソケット1x14 x2 100
18 ピンソケット1x4 20
19 ピンソケット1x5 25
20 ピンソケット1x8(長足) x3 150
21 ピンソケット1x6(長足) 40
22 Arduinoシールド用ユニバーサル基板 AE-ARDUINO_UNI-G 200 秋月 P-06877
合計 6,170
  • RTCはCR2032電池を使いたかったため,こちらを参考に抵抗を外しています

アラームマシンのプログラム

回路図のFritzingファイルと共ににこちらにコミットしています.

アプリケーションモード

  • 次の4つのモードを持ち,モードボタン(modeBtnPin)で変更できるようにしています
    • normal: 稼働モード
    • timeset: 時刻修正コード
    • calibration: ボリューム抵抗の値を表示するモード
    • test: 時刻に関係なくしきい値を超えていたらアラームを鳴らすモード

使っているライブラリ

  • JChristensen/DS3232RTC
    • RTCモジュールの制御
    • RTCの現在時刻の取得や設定がとっても簡単に実現できたので助かりました😆
  • tomozh/arduino_ST7032
    • LCDディスプレイの制御
  • Time Library
    • time_tから時分秒エレメントへの展開やその逆変換
  • MajicDesigns/MD_KeySwitch
    • モメンタリスイッチのクリックやダブルクリックやロングクリックの検出
    • 自前でコードを書くと結構面倒なので,とても助かりました😆

やってみて

RTCの時間の正確さ

  • 今回はじめてRTC使ってみましたが,1ヶ月で数秒のズレ程度でした
  • 初めはArduinoのクロックだけで時刻をカウントするようなライブラリも使ってみましたが,それだと1日で10秒以上ずれました
  • 今回のように時刻が重要な用途にはRTCが必須ですね

引っかかったこととか学んだこと

  • TWE-LITEのアナログ入力の電圧範囲は0.1Vから1.5V(こちらのinara1さんの投稿@2014/06/29 (Sun) 17:45:51より)

    • はじめ0〜3.3Vだと思いこんでいた
  • Arduinoシールド用ユニバーサル基板はArduinoとの接続用ホールとそのすぐ隣のホールがつながっている!!(脚長ピンソケットに直接つながなくて良いようになっている)ので,間違って他の配線が触れないよう注意が必要(AREFなどがタッチしててアナログ入力が常に1024になり続け相当ハマった・・・)

    arduino-shield-hole.png

  • Arduinoシールド用の脚長ピンソケットは結構長いものにしないとシールドの配線がArduinoのUSBソケットに触れてしまう

  • ;が必須な言語を久しぶりに書いたけど辛い・・・

  • fritzingのPCGビューでユニバーサル基板実装の回路をデザインしたけど,とても良かった

    • 今まで間違ってブレッドボードビューでやってた
  • 電池が結構もつと思っていたら1ヶ月くらいで切れてしまう.TWE-LITEの間欠処理の時間間隔とか電源の組み方とかうまくできていないところがありそう.

効果

  • 当初1人で消灯・点灯操作をしていた人のプレッシャーは解消されたとのことでした
  • よかった😆

参考ページ

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?